From 798bafc8fd1862b80773b5cc59b6c83551e3015c Mon Sep 17 00:00:00 2001 From: Alhibb <63309522+Alhibb@users.noreply.github.com> Date: Thu, 20 Nov 2025 10:33:38 +0100 Subject: [PATCH 1/7] Add tutorial: Mastering E2E Cross-Contract Testing --- e2e-cross-contract/README.md | 267 ++++++++++++++++++ .../e2e-cross-contract-calls.md | 267 ++++++++++++++++++ .../e2e-cross-contract/Cargo.toml | 7 + .../e2e-cross-contract/flipper/Cargo.toml | 23 ++ .../e2e-cross-contract/flipper/lib.rs | 26 ++ .../e2e-cross-contract/wrapper/Cargo.toml | 31 ++ .../e2e-cross-contract/wrapper/lib.rs | 103 +++++++ e2e-cross-contract/e2e_test.JPG | Bin 0 -> 29903 bytes e2e-cross-contract/flipper.JPG | Bin 0 -> 38927 bytes e2e-cross-contract/wrapper.JPG | Bin 0 -> 25258 bytes 10 files changed, 724 insertions(+) create mode 100644 e2e-cross-contract/README.md create mode 100644 e2e-cross-contract/e2e-cross-contract-calls.md create mode 100644 e2e-cross-contract/e2e-cross-contract/Cargo.toml create mode 100644 e2e-cross-contract/e2e-cross-contract/flipper/Cargo.toml create mode 100644 e2e-cross-contract/e2e-cross-contract/flipper/lib.rs create mode 100644 e2e-cross-contract/e2e-cross-contract/wrapper/Cargo.toml create mode 100644 e2e-cross-contract/e2e-cross-contract/wrapper/lib.rs create mode 100644 e2e-cross-contract/e2e_test.JPG create mode 100644 e2e-cross-contract/flipper.JPG create mode 100644 e2e-cross-contract/wrapper.JPG diff --git a/e2e-cross-contract/README.md b/e2e-cross-contract/README.md new file mode 100644 index 00000000..17c77f69 --- /dev/null +++ b/e2e-cross-contract/README.md @@ -0,0 +1,267 @@ +# Mastering End-to-End (E2E) Testing: Cross-Contract Calls + +### What is this tutorial about? What will the reader learn? +Unit tests are great for checking logic in isolation, but smart contracts rarely live alone. They talk to other contracts. In this tutorial, you will learn how to use the `ink_e2e` framework to test interactions between two separate smart contracts running on a local Substrate node. + +You will learn how to: +1. Set up a Cargo Workspace with two contracts (a **Callee** and a **Caller**). +2. Configure `ink_e2e` (v5.x) to handle multiple contract artifacts. +3. Write an async test that uploads contract code, instantiates contracts, and verifies that a call to Contract A successfully modifies the state of Contract B. + +### Prerequisites +* **Rust & Cargo**: Installed and up to date. +* **cargo-contract**: Version 4.0 or higher. +* **Substrate Contracts Node**: You must have the binary installed in your system PATH. + * *Linux/WSL/Codespaces:* Download the latest binary from [Releases](https://github.com/paritytech/substrate-contracts-node/releases), extract it, and move it to `/usr/local/bin`. +* **Basic Knowledge**: You should know how to write a simple "Flipper" contract in ink!. + +--- + +### Body + +#### Step 1: Set Up the Workspace +When testing cross-contract calls, it is best practice to use a Cargo Workspace. This allows you to compile both contracts and run tests from a central location. + +Create a new directory and a `Cargo.toml` file: + +```toml +# Cargo.toml +[workspace] +members = [ + "flipper", + "wrapper" +] +resolver = "2" +exclude = ["target"] +``` + +Now, generate the two contracts inside this folder: +```bash +cargo contract new flipper +cargo contract new wrapper +``` + +#### Step 2: The "Callee" Contract (Flipper) +Let's prepare the contract that will be called. This is a standard Flipper contract. Go to `flipper/lib.rs`. + +```rust +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +pub mod flipper { + #[ink(storage)] + pub struct Flipper { + value: bool, + } + + impl Flipper { + #[ink(constructor)] + pub fn new(init_value: bool) -> Self { + Self { value: init_value } + } + + #[ink(message)] + pub fn flip(&mut self) { + self.value = !self.value; + } + + #[ink(message)] + pub fn get(&self) -> bool { + self.value + } + } +} +``` +*Compile this contract to ensure it builds:* `cargo contract build --manifest-path flipper/Cargo.toml` + +#### Step 3: The "Caller" Contract (Wrapper) +The `wrapper` contract needs to interact with `flipper`. + +1. **Add Dependency**: Open `wrapper/Cargo.toml` and add `flipper` as a dependency. +```toml +[dependencies] +ink = { version = "5.1.1", default-features = false } +# ... other deps +flipper = { path = "../flipper", default-features = false, features = ["ink-as-dependency"] } + +[dev-dependencies] +ink_e2e = "5.1.1" + +[features] +std = [ + "ink/std", + "scale/std", + "scale-info/std", + "flipper/std", # <--- IMPORTANT: Link the std feature of the dependency +] +``` + +2. **Implement Logic**: In `wrapper/lib.rs`, we will store the `AccountId` of the flipper contract and cast it to a reference when needed. + +```rust +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +pub mod wrapper { + use flipper::flipper::FlipperRef; + use ink::env::call::FromAccountId; + use ink::ToAccountId; + + #[ink(storage)] + pub struct Wrapper { + flipper_account: AccountId, + } + + impl Wrapper { + #[ink(constructor)] + pub fn new(flipper_code_hash: Hash) -> Self { + // Instantiate Flipper from within Wrapper + // We use the builder pattern provided by the generated code + let flipper = FlipperRef::new(true) + .code_hash(flipper_code_hash) + .endowment(0) + .salt_bytes([0xDE, 0xAD, 0xBE, 0xEF]) + .instantiate(); + + Self { flipper_account: flipper.to_account_id() } + } + + #[ink(message)] + pub fn proxy_flip(&mut self) { + let mut flipper: FlipperRef = FromAccountId::from_account_id(self.flipper_account); + flipper.flip(); + } + + #[ink(message)] + pub fn proxy_get(&self) -> bool { + let flipper: FlipperRef = FromAccountId::from_account_id(self.flipper_account); + flipper.get() + } + } + + // E2E Tests will go here... +} +``` + +#### Step 4: Writing the E2E Test +We will use `ink_e2e` to test the interaction on a live node. Add this module to the bottom of `wrapper/lib.rs`. + +Note: In ink! 5.x, we use `.call_builder::()` to create valid calls for the client. + +```rust +#[cfg(all(test, feature = "e2e-tests"))] +mod e2e_tests { + use super::*; + use ink_e2e::ContractsBackend; + + type E2EResult = std::result::Result>; + + #[ink_e2e::test] + async fn cross_contract_works(mut client: ink_e2e::Client) -> E2EResult<()> { + // 1. Upload Flipper Code + let flipper_hash = client + .upload("flipper", &ink_e2e::alice()) + .submit() + .await + .expect("uploading flipper failed") + .code_hash; + + // 2. Instantiate Wrapper + // We create a constructor builder + let mut constructor = WrapperRef::new(flipper_hash); + + let wrapper_contract = client + .instantiate("wrapper", &ink_e2e::alice(), &mut constructor) + .submit() + .await + .expect("wrapper instantiate failed"); + + // 3. Verify Initial State via Wrapper + // Use call_builder to generate the specific call object + let get_call = wrapper_contract.call_builder::().proxy_get(); + + let get_res = client + .call(&ink_e2e::alice(), &get_call) + .submit() + .await + .expect("call failed"); + + assert_eq!(get_res.return_value(), true); + + // 4. Call proxy_flip via Wrapper + let flip_call = wrapper_contract.call_builder::().proxy_flip(); + + let _ = client + .call(&ink_e2e::alice(), &flip_call) + .submit() + .await + .expect("flip failed"); + + // 5. Verify State Changed + let get_call_2 = wrapper_contract.call_builder::().proxy_get(); + + let get_res_2 = client + .call(&ink_e2e::alice(), &get_call_2) + .submit() + .await + .expect("call failed"); + + assert_eq!(get_res_2.return_value(), false); + + Ok(()) + } +} +``` + +Run the test with: +`cargo test --manifest-path wrapper/Cargo.toml --features e2e-tests` + +--- + +### Conclusion +You have successfully implemented an End-to-End test for a cross-contract interaction! + +**Key Takeaways:** +1. **Real Environment**: `ink_e2e` tests strictly enforce chain rules like gas limits and instantiation logic. +2. **Workflow**: The standard pattern is `Upload Dependency` -> `Get CodeHash` -> `Instantiate Main Contract` -> `Call`. +3. **Call Builders**: In modern ink! (v5+), use `.call_builder::()` to construct type-safe calls for your tests. + + +--- +### Reference Code & Results +If you get stuck, you can find the complete working code for this tutorial in the [reference folder](./e2e-cross-contract/). + + + +### How to Run +1. **Rebuild Flipper:** + ```bash + cargo contract build --manifest-path flipper/Cargo.toml + ``` +2. **Build Wrapper:** + ```bash + cargo contract build --manifest-path wrapper/Cargo.toml + ``` +3. **Run Test:** + ```bash + cargo test --manifest-path wrapper/Cargo.toml --features e2e-tests + ``` + + +Here is what a successful build and test run looks like: + +**1. Building the Contracts** +Ensure both contracts build successfully in debug mode. +![wrapper output](wrapper.JPG) ![flipper output](flipper.JPG) +**2. Running the E2E Test** +When you run `cargo test --features e2e-tests`, you should see the node start and the test pass. +![E2E Test Success](e2e_test.JPG) + +--- + +### Author +**[Ibrahim Rabiu]** +- [GitHub – alhibb](https://github.com/alhibb) +- [X – @I_bakondare](https://x.com/I_bakondare) + +*Open Source Contributor & ink! Enthusiast* diff --git a/e2e-cross-contract/e2e-cross-contract-calls.md b/e2e-cross-contract/e2e-cross-contract-calls.md new file mode 100644 index 00000000..17c77f69 --- /dev/null +++ b/e2e-cross-contract/e2e-cross-contract-calls.md @@ -0,0 +1,267 @@ +# Mastering End-to-End (E2E) Testing: Cross-Contract Calls + +### What is this tutorial about? What will the reader learn? +Unit tests are great for checking logic in isolation, but smart contracts rarely live alone. They talk to other contracts. In this tutorial, you will learn how to use the `ink_e2e` framework to test interactions between two separate smart contracts running on a local Substrate node. + +You will learn how to: +1. Set up a Cargo Workspace with two contracts (a **Callee** and a **Caller**). +2. Configure `ink_e2e` (v5.x) to handle multiple contract artifacts. +3. Write an async test that uploads contract code, instantiates contracts, and verifies that a call to Contract A successfully modifies the state of Contract B. + +### Prerequisites +* **Rust & Cargo**: Installed and up to date. +* **cargo-contract**: Version 4.0 or higher. +* **Substrate Contracts Node**: You must have the binary installed in your system PATH. + * *Linux/WSL/Codespaces:* Download the latest binary from [Releases](https://github.com/paritytech/substrate-contracts-node/releases), extract it, and move it to `/usr/local/bin`. +* **Basic Knowledge**: You should know how to write a simple "Flipper" contract in ink!. + +--- + +### Body + +#### Step 1: Set Up the Workspace +When testing cross-contract calls, it is best practice to use a Cargo Workspace. This allows you to compile both contracts and run tests from a central location. + +Create a new directory and a `Cargo.toml` file: + +```toml +# Cargo.toml +[workspace] +members = [ + "flipper", + "wrapper" +] +resolver = "2" +exclude = ["target"] +``` + +Now, generate the two contracts inside this folder: +```bash +cargo contract new flipper +cargo contract new wrapper +``` + +#### Step 2: The "Callee" Contract (Flipper) +Let's prepare the contract that will be called. This is a standard Flipper contract. Go to `flipper/lib.rs`. + +```rust +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +pub mod flipper { + #[ink(storage)] + pub struct Flipper { + value: bool, + } + + impl Flipper { + #[ink(constructor)] + pub fn new(init_value: bool) -> Self { + Self { value: init_value } + } + + #[ink(message)] + pub fn flip(&mut self) { + self.value = !self.value; + } + + #[ink(message)] + pub fn get(&self) -> bool { + self.value + } + } +} +``` +*Compile this contract to ensure it builds:* `cargo contract build --manifest-path flipper/Cargo.toml` + +#### Step 3: The "Caller" Contract (Wrapper) +The `wrapper` contract needs to interact with `flipper`. + +1. **Add Dependency**: Open `wrapper/Cargo.toml` and add `flipper` as a dependency. +```toml +[dependencies] +ink = { version = "5.1.1", default-features = false } +# ... other deps +flipper = { path = "../flipper", default-features = false, features = ["ink-as-dependency"] } + +[dev-dependencies] +ink_e2e = "5.1.1" + +[features] +std = [ + "ink/std", + "scale/std", + "scale-info/std", + "flipper/std", # <--- IMPORTANT: Link the std feature of the dependency +] +``` + +2. **Implement Logic**: In `wrapper/lib.rs`, we will store the `AccountId` of the flipper contract and cast it to a reference when needed. + +```rust +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +pub mod wrapper { + use flipper::flipper::FlipperRef; + use ink::env::call::FromAccountId; + use ink::ToAccountId; + + #[ink(storage)] + pub struct Wrapper { + flipper_account: AccountId, + } + + impl Wrapper { + #[ink(constructor)] + pub fn new(flipper_code_hash: Hash) -> Self { + // Instantiate Flipper from within Wrapper + // We use the builder pattern provided by the generated code + let flipper = FlipperRef::new(true) + .code_hash(flipper_code_hash) + .endowment(0) + .salt_bytes([0xDE, 0xAD, 0xBE, 0xEF]) + .instantiate(); + + Self { flipper_account: flipper.to_account_id() } + } + + #[ink(message)] + pub fn proxy_flip(&mut self) { + let mut flipper: FlipperRef = FromAccountId::from_account_id(self.flipper_account); + flipper.flip(); + } + + #[ink(message)] + pub fn proxy_get(&self) -> bool { + let flipper: FlipperRef = FromAccountId::from_account_id(self.flipper_account); + flipper.get() + } + } + + // E2E Tests will go here... +} +``` + +#### Step 4: Writing the E2E Test +We will use `ink_e2e` to test the interaction on a live node. Add this module to the bottom of `wrapper/lib.rs`. + +Note: In ink! 5.x, we use `.call_builder::()` to create valid calls for the client. + +```rust +#[cfg(all(test, feature = "e2e-tests"))] +mod e2e_tests { + use super::*; + use ink_e2e::ContractsBackend; + + type E2EResult = std::result::Result>; + + #[ink_e2e::test] + async fn cross_contract_works(mut client: ink_e2e::Client) -> E2EResult<()> { + // 1. Upload Flipper Code + let flipper_hash = client + .upload("flipper", &ink_e2e::alice()) + .submit() + .await + .expect("uploading flipper failed") + .code_hash; + + // 2. Instantiate Wrapper + // We create a constructor builder + let mut constructor = WrapperRef::new(flipper_hash); + + let wrapper_contract = client + .instantiate("wrapper", &ink_e2e::alice(), &mut constructor) + .submit() + .await + .expect("wrapper instantiate failed"); + + // 3. Verify Initial State via Wrapper + // Use call_builder to generate the specific call object + let get_call = wrapper_contract.call_builder::().proxy_get(); + + let get_res = client + .call(&ink_e2e::alice(), &get_call) + .submit() + .await + .expect("call failed"); + + assert_eq!(get_res.return_value(), true); + + // 4. Call proxy_flip via Wrapper + let flip_call = wrapper_contract.call_builder::().proxy_flip(); + + let _ = client + .call(&ink_e2e::alice(), &flip_call) + .submit() + .await + .expect("flip failed"); + + // 5. Verify State Changed + let get_call_2 = wrapper_contract.call_builder::().proxy_get(); + + let get_res_2 = client + .call(&ink_e2e::alice(), &get_call_2) + .submit() + .await + .expect("call failed"); + + assert_eq!(get_res_2.return_value(), false); + + Ok(()) + } +} +``` + +Run the test with: +`cargo test --manifest-path wrapper/Cargo.toml --features e2e-tests` + +--- + +### Conclusion +You have successfully implemented an End-to-End test for a cross-contract interaction! + +**Key Takeaways:** +1. **Real Environment**: `ink_e2e` tests strictly enforce chain rules like gas limits and instantiation logic. +2. **Workflow**: The standard pattern is `Upload Dependency` -> `Get CodeHash` -> `Instantiate Main Contract` -> `Call`. +3. **Call Builders**: In modern ink! (v5+), use `.call_builder::()` to construct type-safe calls for your tests. + + +--- +### Reference Code & Results +If you get stuck, you can find the complete working code for this tutorial in the [reference folder](./e2e-cross-contract/). + + + +### How to Run +1. **Rebuild Flipper:** + ```bash + cargo contract build --manifest-path flipper/Cargo.toml + ``` +2. **Build Wrapper:** + ```bash + cargo contract build --manifest-path wrapper/Cargo.toml + ``` +3. **Run Test:** + ```bash + cargo test --manifest-path wrapper/Cargo.toml --features e2e-tests + ``` + + +Here is what a successful build and test run looks like: + +**1. Building the Contracts** +Ensure both contracts build successfully in debug mode. +![wrapper output](wrapper.JPG) ![flipper output](flipper.JPG) +**2. Running the E2E Test** +When you run `cargo test --features e2e-tests`, you should see the node start and the test pass. +![E2E Test Success](e2e_test.JPG) + +--- + +### Author +**[Ibrahim Rabiu]** +- [GitHub – alhibb](https://github.com/alhibb) +- [X – @I_bakondare](https://x.com/I_bakondare) + +*Open Source Contributor & ink! Enthusiast* diff --git a/e2e-cross-contract/e2e-cross-contract/Cargo.toml b/e2e-cross-contract/e2e-cross-contract/Cargo.toml new file mode 100644 index 00000000..ecd4c195 --- /dev/null +++ b/e2e-cross-contract/e2e-cross-contract/Cargo.toml @@ -0,0 +1,7 @@ +[workspace] +members = [ + "flipper", + "wrapper" +] +resolver = "2" +exclude = ["target"] \ No newline at end of file diff --git a/e2e-cross-contract/e2e-cross-contract/flipper/Cargo.toml b/e2e-cross-contract/e2e-cross-contract/flipper/Cargo.toml new file mode 100644 index 00000000..213ff000 --- /dev/null +++ b/e2e-cross-contract/e2e-cross-contract/flipper/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "flipper" +version = "0.1.0" +authors = ["You"] +edition = "2021" + +[dependencies] +ink = { version = "5.1.1", default-features = false } +scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } +scale-info = { version = "2.6", default-features = false, features = ["derive"] } + +[lib] +name = "flipper" +path = "lib.rs" + +[features] +default = ["std"] +std = [ + "ink/std", + "scale/std", + "scale-info/std", +] +ink-as-dependency = [] \ No newline at end of file diff --git a/e2e-cross-contract/e2e-cross-contract/flipper/lib.rs b/e2e-cross-contract/e2e-cross-contract/flipper/lib.rs new file mode 100644 index 00000000..b5de4249 --- /dev/null +++ b/e2e-cross-contract/e2e-cross-contract/flipper/lib.rs @@ -0,0 +1,26 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +pub mod flipper { + #[ink(storage)] + pub struct Flipper { + value: bool, + } + + impl Flipper { + #[ink(constructor)] + pub fn new(init_value: bool) -> Self { + Self { value: init_value } + } + + #[ink(message)] + pub fn flip(&mut self) { + self.value = !self.value; + } + + #[ink(message)] + pub fn get(&self) -> bool { + self.value + } + } +} \ No newline at end of file diff --git a/e2e-cross-contract/e2e-cross-contract/wrapper/Cargo.toml b/e2e-cross-contract/e2e-cross-contract/wrapper/Cargo.toml new file mode 100644 index 00000000..3b3ecd85 --- /dev/null +++ b/e2e-cross-contract/e2e-cross-contract/wrapper/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "wrapper" +version = "0.1.0" +authors = ["You"] +edition = "2021" + +[dependencies] +ink = { version = "5.1.1", default-features = false } +scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } +scale-info = { version = "2.6", default-features = false, features = ["derive"] } + +# Dependency on the local flipper crate +flipper = { path = "../flipper", default-features = false, features = ["ink-as-dependency"] } + +[dev-dependencies] +ink_e2e = "5.1.1" + +[lib] +name = "wrapper" +path = "lib.rs" + +[features] +default = ["std"] +std = [ + "ink/std", + "scale/std", + "scale-info/std", + "flipper/std", # Important for linking +] +ink-as-dependency = [] +e2e-tests = [] \ No newline at end of file diff --git a/e2e-cross-contract/e2e-cross-contract/wrapper/lib.rs b/e2e-cross-contract/e2e-cross-contract/wrapper/lib.rs new file mode 100644 index 00000000..3fd6557e --- /dev/null +++ b/e2e-cross-contract/e2e-cross-contract/wrapper/lib.rs @@ -0,0 +1,103 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +pub mod wrapper { + use flipper::flipper::FlipperRef; + use ink::env::call::FromAccountId; + use ink::ToAccountId; + + #[ink(storage)] + pub struct Wrapper { + flipper_account: AccountId, + } + + impl Wrapper { + #[ink(constructor)] + pub fn new(flipper_code_hash: Hash) -> Self { + let flipper = FlipperRef::new(true) + .code_hash(flipper_code_hash) + .endowment(0) + .salt_bytes([0xDE, 0xAD, 0xBE, 0xEF]) + .instantiate(); + + Self { + flipper_account: flipper.to_account_id() + } + } + + #[ink(message)] + pub fn proxy_flip(&mut self) { + let mut flipper: FlipperRef = FromAccountId::from_account_id(self.flipper_account); + flipper.flip(); + } + + #[ink(message)] + pub fn proxy_get(&self) -> bool { + let flipper: FlipperRef = FromAccountId::from_account_id(self.flipper_account); + flipper.get() + } + } + + #[cfg(all(test, feature = "e2e-tests"))] + mod e2e_tests { + use super::*; + use ink_e2e::ContractsBackend; + + type E2EResult = std::result::Result>; + + #[ink_e2e::test] + async fn cross_contract_works(mut client: ink_e2e::Client) -> E2EResult<()> { + // 1. Upload Flipper Code + let flipper_hash = client + .upload("flipper", &ink_e2e::alice()) + .submit() + .await + .expect("uploading flipper failed") + .code_hash; + + // 2. Instantiate Wrapper + let mut constructor = WrapperRef::new(flipper_hash); + + // We keep the whole contract object, not just the account_id + let wrapper_contract = client + .instantiate("wrapper", &ink_e2e::alice(), &mut constructor) + .submit() + .await + .expect("wrapper instantiate failed"); + + // 3. Verify Initial State + // We use .call_builder::() to get a builder that returns CallBuilder objects + let get_call = wrapper_contract.call_builder::().proxy_get(); + + let get_res = client + .call(&ink_e2e::alice(), &get_call) + .submit() + .await + .expect("proxy_get failed"); + + assert_eq!(get_res.return_value(), true); + + // 4. Execute Flip + let flip_call = wrapper_contract.call_builder::().proxy_flip(); + + let _ = client + .call(&ink_e2e::alice(), &flip_call) + .submit() + .await + .expect("proxy_flip failed"); + + // 5. Verify State Changed + let get_call_2 = wrapper_contract.call_builder::().proxy_get(); + + let get_res_2 = client + .call(&ink_e2e::alice(), &get_call_2) + .submit() + .await + .expect("proxy_get failed"); + + assert_eq!(get_res_2.return_value(), false); + + Ok(()) + } + } +} \ No newline at end of file diff --git a/e2e-cross-contract/e2e_test.JPG b/e2e-cross-contract/e2e_test.JPG new file mode 100644 index 0000000000000000000000000000000000000000..30f861e4347858e32d188aa96f61fdb6cdac813a GIT binary patch literal 29903 zcmeFY1yr2RwkO&+L4vzO6Wm>c1Pj4kgG1x)PJrMR+}$Ba)3`gq3DRiL0D<5dVETW~ zx#!NBci){m@7?>>o3-X^imvbbs%zJ8m+W18?|NB&*#cm{msOAjz`?-*Okf|t%MbW1 z8E=pk0HCAc0*rZcc7KVJMiW;;Ot=OZc6R#VDIQA>@7z7 zx7vka`M(}>(29$?T389Izmxq(3D}(&?LXS$<>kfh#l!C8YR$nVBqYSa$<4vd%?2yM z=H}z*ZtBhE=tlRC3f@_|nY)6V-9b){)PGfIYUbqOE=KF&0kRObGPU9}v#{V}Gc)C} zVB_MlFl95f;NfDk;Nh_l;NueHw&F6Q{Repq^M6uz_HecT8*K}74oiDW2TMnHHyAg# zIA}Tk-st}SEs^|uyF}#{!2%*a|-Z_a{LeF zL^=Lq#(&q)|J;`Uhqxs!YGE#H{#Vnm9!_wvdU2ofi#Q(m4{2d?c_U{>3#jsKL z>eVYzj{lzK|CI@UdjcDDu;2Z2h{AqJ{r|!B|7RlqI?XK|VRPFHHi=(W0nz{zBqU@c zL=^$S4_T$SCM3h=^&~Y3Ui6SXfy|sX2H! zn7J94S(yK-1P%oi73~!oJ~}!+GdVFi^Z)Yo(hI;r1wavK5#VS6@HlV?IB+k604kVB zMS_Xyzohj)E;x7uL?mPs)K_TeumWIg06ZK50z4uD5)vXzPQwMj-UASEkZ@_ZB$4sd zOi^fE@VP^h3Q_5#8u|#-XU~8Hzmt)blUI1J zp{b>-0P2CE$n z0GjAK2_Ei6n?aShO^Ipb&5bwzL}#v9pRxW&OL)b4z*A=}5b z9O_x)^NNa1PGz}LdcgLJUo0ygUCI`oIezkh^R-XNVHaQM=}EDjNc8%&-i#NL zj3Rc3*VoSLMWo@Q<3zt^#S%vU=l6c4daH@y0U*cMb4VL}?z`cgcPy{j2;ra4c)zwm zd_R4ePt<#8qiu3hdoZUM8 zUjX%YRASfk?_2wPU-=*MfCS~{5{z6 ziZS`j0Ydx9Ozalk1Fx{*D+a61RMz3E>o@OMV#?R-RzZu4zBXUMve9cSjG9RyfCEAM zT}l<9(JI1jyg4@7jwqVeES4FWK`)&Y!xtSd@bH9g{Em4qkKOqr2`wAfL z2$qN`rz_8$T(z#V86SS1Qh_?|J!#~qktQ_iZbop6Siw8GAQ2iQ48*{}Zr2>@oZStm7_>U( zLG4(I$;5O0_TPPLWx$MUq)`{YI8W)N4da5w4ip9b>Nh>8nxbR;xglMsIkOV<=uF!(!TJgmdUDV?mgf7fDxhy ziB^;h)Qb~w7q>VhYziKJts8ePaCxZ#Dze7<0Xu@y@Ojf;0DgP>1@JBI%^U3n zAP7R&x^J=kjav+b7*XAEcAs=no3H$=JISrEJITeyqA_VOneP2wNkAWj=fI6T*i~6c zMEmSCzjh4o=&h~!D~wRGl|t3tUH%1U0fd?B8X-~rc7e!F@pN1$-}-fy!v2v?KU9>} zRxeA6IE_96fS8lAyd+t0bZ!TwXeo6pR5x)g90(pC(nTic92KOi*sps(S@-SBY09Y* zf3|~*9a87dxe>?nG0J=5uNKsmtjY?A2xCIOvrOh#bqpO$B%kvZUjSA-PLAg59gaNl zod+Z})t{9%2T_aDwhzrhdzF)9Jb*SICx`X4f*l11;F-dPyxwTGlbXE%%)4%v(~eJ2 zCO3P=*Z1&;r+N0K{_Nyv*4jV500uA*J)XP-SeqXm#HwJdYHBdA)uB zz?NoHAH`&6qH^JODw=TKRxFNTS3(S!?ECyKDKGX&6-#Yq+GARhW(zs$)OQ*K3;{}H zP3tIswkq!!^|NgwW2mkIo$N3Z(hdS0G93mYHT8%~NBMiDH#H+oth#r0&%l|(tofMM zUsjV}&gIYFS0H1jsiT^_A}7a2`tXc1vpZ)wPdP}YV0F3imhV0#AzNt5`})}<#By7t zmZ&ewK+aCQ*o9|JcGIqBV_@RaC`Pe~m5T&nkK8P?>Mr?F=PaU>)l+>rTaS*1Ea2S` z_wX2bmDZrW0QMI5)o}zL)d?55H8qqj zw5B@kUJ~()g+p}-jDCC~R#Ur($!mLT>nOf3!8(M_lEBK&@2DN!Yv=YuY*|Cgxv|(zoo7T8uMqVS78Zr2&Br5@!TMuJE2Q**lv|g=KDNx z(-s>Y?Mm>`bMK>xM8%J@h#2HNdvi#JflmxAP5YO7$5%9oY2)N6<2yptlr(K!jb~3M zQ)x+J-&8y5vuPw+5f4NRfF8q~0Wwyr$62NI;Tr0TCiB$h_%gs0wG})^1U9;6#inFI zxHiG!m3gmO&_hJKPnO0{(tyR}2M4H(Mr6nMX6urZa$;ol6t&{W9JI@bv zKGuQnlV726HNOC`s~Z!p_nsxIpL^=cWju;NOYOCFr5^T;Mo@T~#D;sflN_p%a@#0> zfs(Qkr?h!IlFmOq348agBbj>#R=c?|b92fbOXm^=vcaUk+pr%Zg*DeyB zjO6or??J7`T-|=p0-ur6Uh2t-g`bF@ZoK5h^CQk5WnFAB_*f6#X{=+1?Mdbz8Bj^` zr0}8mf;pvECa!h-Oi?4`7Kv_$3Q}m3?D-iR54XJe((@(Y?v~_bUg5CxHuaOoVQP5a z^Ii(B57`p)`(HyxOU_pfM)rU(O%gY?m)N0300V1#I!HfZ05ZP;nv?VGJFPhdg0m#J z_VGoEE=c{VrBzuE)Vk-VM) zfe&R7(8y(0I&8@jiEV`~nZ6WLBsv7*S4k;X2#YP%`HTM20p^uTmSu-(8)KOHs}y_f z7dno*4v#fn{+%xIZFC4C{5me1hc~y0yK*kLVHneq#p-k2=573Dpc}Adtw(3)w@@u>IZY6AWcy|JMDE)s9ws*0PTFL^%vb zV>z*465a!JTM_{Lj}) zERx^ZJ%*z%_E*&m{F7-S0EamDIZU*C?15&ldiUd7U@MTEd2>M>>nLMld90p?wd=j!wKiDA zk=;&`;96LuF8`8v0r;V0rS0f8H!pOLxNj(2U_9G@V)c_o8df+?`#2RPX-Bm5@Fyv^ zm_G0YuykZS_JakqmuJ_pIuTVqzp9)p#}#UB#UQAO;5@|>YvTS}Rbi_&FMwP3I_^Ey zuZls>=umh%GI+di?~)}BgpP+9Q-*JXpt#G>LulOIf|RD}m#>b4~TYs$m0uYIsij9+i>3Y#%IGt^w}<|J$^2TTgYf~-{7csQEUBOOq~-a z`AV;IbIuijI$k(c!;eI6vB<2baPjYhJ#+AeRjkn+U{VQdMK0@R=^5+3@MB+tN>MKJ zrOrZKEdh?H9tKSTqolUBZr>W$pLdV@bv7FmVY1!bT?QT19oZKVKJ0o5X2HP{S^#I4 zV6NU?g7+Uuq567jhPJ+*g{Hf`5L%%fsf$5f_C2(NLeo^(939ecIcN34IUHa3w zYdNv0DNE)`32B#6ul}9PDI}_e>ezhWscZ3WA^aeDu{Z^tNJ)v zwc<9$jXwq>I*uCECYC4Vu?6+3IXo3mKT;g5#7(atJuh5*SQ(z~>iO;8whHkgDPMYc zZhsD$8I4#{ij>UaXz>oe0ulU*$a%1coY2kQ4nx#b^X=Vg9lswe^vVo3B93 zLEG8pO0YGZr|Ar$6Wqf_g8PPq4H?{#ki4$8vF*Yj zB7;5$q4uv`kd6qO!bki(os1KvL2r{i&JjA14r~`SJ8}92_dDK^NQq81FZZuwc%4Xz zxPiv>!#lBI$y`e)(QkhQ&qo?I=WFo4BDl-od2=v-Am7+F{TmH&gq(cqJa$(b;ip5z z5$SMYg`q7MNWhGwdkkM9pp=k))MD8Rg$@Z$-PdGyvE~_Q!vF>wQ9c_Se>QfrN&qAS zwb2yu7^Nq$+DB?_R4RN(Q*-lI*h?N&-3~@5%_413Ua#D{ptxXL{1&vMlN*PaIQlIg$qvX+3 zF;;^SWB1!lgK{knUjP>E+iNN}`5dRb}w~sq>O$FzoUYu)2lI6zT`DpUnkGE1n z@YW)d0SAc^A`)V5@gU>z7r|9Is?)+{eK(mXgb)ow*Nn(R(pWtM*dKy2&*HuZ6Xi|9F*mqVuNd zf5Mq`WM{)@U=%QEEYMx@^dfX8HfdYKQnvLv4{yevV!wJkwi~sK=4g0NcM0Uqk<|*z z7-gUnxnq_bBK%2oWKAJHK5j?B<-vi?b{$U*=}u5#YZTC;)N_FgPYDNp6{Jf>t?j_n zhjYy`7cX~l4Nt0L=RH(2taJSk%9j8^G@<0mnP=~mz7g@`5P9E4l-|heyc`iZNiS)h zvTy%bo!^zU7%H2#Ap{KHvR3_|PQV&Da{{#R!xcMh+1Oq_7))39ZeP^|&pRG8wl!dr zc-F|`?c=2@kQie4GKqgz9#NWetkc(}UrZZk8EPZ-82XeX^~P(|nUZ=Jg?{{qO^gxRX}gOXB9`Q;yv8s$8;P}mH11l3( zsXh{hz0tLyh8zpLZ!=Hn3iFc93!T!KrJI>I-sW>zvf%p*=N@bJ&SXFeb=Zi6O!iw+ z$v~4w{*+3B_PCAj>vWRNqi_~RQ>bD-_DoQDpgCXjCh538_&$`)Be*f_OZPanFzaTk5TmaGDJ{^rFMl`Lc8U+oh1I4ok2=+aA0!g1xm z^R0Cj_wi#3Q39^A!_`f)z@W=;!MKS90%}R(0Afy3EM|2O9(q1ljxwbprrL!JT}OUV zLG2P8@ex2#dpn*Ki;YDeKaDoGE#H)MEN( z-*_+xu-GX>agvctpK%ysW_93}?&riJNG6Q|FG%IR+wus!y(RMXEZ!z#5-sF|z5p!S z*~TP@Jn11qt^hLgKEW*)jU!5ig<8Hi?nRE*o5DsVv4`E8-poABRDu}s_d7|Ub|q2Y z5{o+>@VGZ zc7=OcOwh`Zk3gIght>Q+3)q0SC0@^%o8B^Mm6;$40Wn|;3#{-0c%_`jo8<4`mxg}h z2AL$u9-CUb+8lP%Dn2jGE>fb8yW&q70=A^9)B1Qx;`fY2vc6K)bwW>MVz3O{+%stk zdVAS6qlDo_cp=Rl885?l$NrqTP0ei^E)vn1xS%&&mv-c+0vk|gAdO?Tbj^b~zCYZq?% z-61WR@Gvbf+XjcwG$~Jj|GQXJxm}P^{(Z#G)o(QY!zGt>^p1(BIgmBC@{wX^bk*Pw zxm!tq304`P@7y}F?ive^>_?fAv20pHZ4QI7Unz%alRJ{{0p*oyty&}G#Y z;m*>&q224zH{}}W>@3HMWuFFR0eK1NR~v5FK7<+E%Ug366R7LT^3!s#`a%w(7dkpZ z`={(W+7MNxA{5A90B9k}b{UKQ2E4v}BPk%C(v8o>d01ee^|#p3szC=U60!(slemHC zNMQ4GPc@EkQbgnRb9Yb_q!2U*Y6mHn>9ptRw6Fuk-0j^@qSHTo|M5L`+8VzM$`4I{2S@DPY7L+q{QgkAZlex5 zimkXJ9-LEg@$v8wZOOMt*7Jm)Xv-GVLU_wXj^Qj=y~v+*_}~G~q0bWWP6M*L%BupV zdkDnvgFY^8yghz+j1~OD1fsalbgX+GckEtfMXyhOGv$?#9<*`aa=M!5q8$Hxt%gkW)MUs3)(snQ8eiJMd(0l(DtdG?F%+CfRR#nodiyBifbXyr}lvnJ|dw+x>&Ch zTLC!9IxX5b0dY?jn&3i%PbdIrJunu)NB`F(WUTAS=bz8b4<;`F!_Cu#W0eBt}zYxMMLI=8)Z39^PX~!KTPc56Zy2D13G5Nni2i-c@b^P|GemU-hY_#h$`ko>? zMwwTD7MbiSj8`{U85{a%4TyD_WBpe=F??O&6Krei?rg<8ALc-HXwn$!L##AB`;m-t zLOU4IzND)~k<}eYWy8qfKho#eciOTZPc#B@w^KWF^UOOZS>9^I>&6CxGqm z=_+0}NHYnTE+!0FnXx5nhv0HAj`z=vF$ZB;4^!+JmTUQ-0n;V8e1eFo;-#*VK|N6E$&l~sxd!DCa=w6puoFmbJA_dL#_7(UXFzNhd0F~Vju>14jcuR|1r1!$x!SE z_aUVRG}#L~xf(vuKJ}hBKIh!X10OEQY1@FT`tw#irkb%V8b-U)f-P1DuL<0#G7H}y zD&7aA;Yg1l#C8{vlP@d#^2-YQ>=%YL(O8HMBm@hy668aWPrKkb_L{B8fd;a&kDM|^ z_z~|&e(d1+k1&Mgi80OGy;lsv8ZbwCpdacwSfxoc$ba)@JvWB%*XJ{NC|T^8U1?FU zP_5g5*TYk+_ANwTv9TCAO^Gdcb}G<2D*M&~!{ox1C+~ZmeLe1JZ(l__bd?TxHb(5( zCL*D3cu|6_LgA)UQGk|j-TAyC@aBqJc(B4Bz5rgYd7}-`l2>}aVCkc5&a~5RnR6%}yIY!h@<_dM>YSR= zvEMcBtR8veos`WVG0HDZATJ!BX`Ug!GLizrobYH4ULV^wK@z9_8oeXJK+>;}Id(Gb z&g40IY2m|k9+VwXVLF7RGG$@Ux`=4@-h-{L?dfXiIy3d^i)_;7hLQp0qq<+nT;Xh1 zUa6vd!;+9V&PeG`N2k?qDXT4^zgPro0n}jSePDrxP^hX(VrJnku-fNhZa-Z!cslw<5U~ME^_7w|X`84FX3F4RuZ>u3HYmDgiJMv&~M#j%-rTy76nMyuGFYL6U&1xpopH zaZl~@4;`UNk1uMLR*_zQ8PNR5bd9sbncW=3i|x1)n_Fa5&5O3*5DLHVra!8)1K1A~ z8#@|Ol#}{G7oP{$SeX_^o*TT_U7D%d1$WIU2=G_CxAj@*I0m3xGtEg>)_OtS7iNNg zT6fmm8hOW-!y0$D%NHD+>WpWWZK=#~3|UhWXe=&wNWS?$t({-KmSsM{4>L<0s=dkr z=MHrj?ymHc8|wR@ZQ20+%YF7d^SqBGz}=)fMikQg$eR;{;!@{te%)jl_T>9=)wWe*vHx*%4mUfvaR(m>`7byq@6%I=&rg>IZK8 zLlhE}sSC5}KL}4@W{9KR_c(d`j!7lm@r|p}u9O3w4h0tXwS7k+P2&dzBNW`ST%|Jj zbBzrOz?#r##xl;LXhy()ae@nbatmsITPvRNc1hr|_+kDhjN$#WGqDUFbT3RT8aT5l{&g%K>(`Yyi<((85!>8q^+HORac?wDjx5S zfpgHUS4_>a5<$kd4Xp)-=F9NoK0#`Ph1tf|U-q+l58@qVc8f&;Zyq)dr7ArlEZs=x zsQKrd1G=h)HVQ4v%Z?vg*>vpqtx{D@TvZqfeoN20uz9ko>0Nq<$+o~kM_Rwvn1voc zi|r-v5m>>3B~l`egf&jVx!l7yWFqUba~ntgKAcLz#bYTUV1==4X|XE{HiL4T2tyE`8*rfVAk^ zfQl7R;wv!BWGootfNS`^p;A1Pp`JkH(RcIF1Zu_6gbo*Q)5B}OY(VwFJa?t^TfNh9 z8@qy|?d*pLn>rJP+Fb>+Bx&I1zSNMPk`yxHnFiqmsU>$2^LpK#Elsd3!K^m_rA316 zczp*(=5E553kj4^ZdATf)>(s*eHGewnFwxQ5rA75`RWpXY~Zf6{q>&{`19HR2!mtO zoLg2L)%P%5@&v7>;C4N(@f+=+@ANHTg0nVRchs|V-jF&fK@?>QOM0`R0R2ikV6mro z8Mc)BRqL+yxe7?KLKtHhhh0l@1Q6Y?E7|!1_!l3@L~5lL$*N<0I2DAe|IYY>xnOoR zU1)wZ?~{mT^St&x)b2Ru(?w=Ft z0t_oJ62ARtBcb5RqWxai^Mfhi&Hfbr=T*Kzo)Krg3}h{u!~&@6dd5|;^NQhOQI)~b zgTwmOqIOnz&8@TbR47wwNdgKLcUaPNt=iXf+59T+P$Pj4Z7rR;wVj7=Agy}v{3ji# z6j*^h;Q;$tHU0I~O#}L&FXx7m3{0%b6b3oYa>$joS#zMK)m1q=mjExf)*%OnCLb*- z9^7A5fKl?i61XhDTu~KBKexM~v@giIXFSuDPzE|K*{3doEs3(GrC94hbIuo^fZCF# z_$ldNa+~!lpiN_sDs#Yftb+%RsauV%w6~t7fr5L?8-oI%jiFI3C>_f`;}$O`z8%ayt9R2)JzH;@WyhvJyv>M;+o{8N zOu~TRf)e{USJzR(S35L*)FQj_y~Xf7JDvsGJce7i_;4`CtR`^D{j>Y>H3?Xe@t1|5 zVp*#sUY<8r4rSy;1#dpKzO6oed@*k#wD!_I+}K3AMINm@Zg7Vh4X{`g-Twmk)Hrj* z;>hMW*<=(D=hR=GXm!~1+v#z@@ub7cB};f&*l@illXuoY>e5g?>0KE6X`hx{B}1u3 znDHDtdc10Xf0|EeyTiI zUc%C84yCUq?lJV8_{ZF;<&phV-P^T-4P8r#gPeG|S{S*iAiKjJX#PqMl(5HX_;=&| z#QqM+)VG6jG3FTWVihM`1Dlp~{v{o5pKezf=hBmLfb%G~tgl-%V5O)C(gEqfB{TS3 zjw5fDGU2>R?x7L?$&0{1`+L!xNmNO+L6r3uX{1g7QRB>Cv#A&3@rH+%fUCu{l) z7Hs&!pICwqGsvX`(a^_{dQkhjq!pO5yMCH1a>d~kK7JyFF#2kA6oGiGysp7H?@juL zPH-qAQnlfbD}+8u%TlB5J)p<0iSkR(M`w4wpEXKU!=!|59`r4_mCy;{_vbZ=&aoFr zN8<>%IvaHc$55GF9z{^qiV8&sQYOsltUD$M_gNG-zy|(_K+NN2`(lrnYfg z%{iOKF~dBE>4sOK?hyO1;fTjJO>KG9`LAwb_DAiL99p3`o9AqZou3zI(p-DKok|xn`}zLdrV?5J~?}au8vO0dT#B6 z%3{Jbl*>r^_+W+?udOxc&XYjHGm@PFs;_{_0Dwh`-r@$W;yN;g^0aby{!~)2f#$nQ zX%_CB~u3U=V2KeY6gA=bsulI_91d;MnSUit@ zq6)!er`ziL6lvN>1v-=QBOgSZK77CfV^J{Lzmtgnp`IQ7i@p|&)*H`qj74yS`zBv( zsHKQz)eU{51-?r2x3=>}IAF43_5a1+S*I z)E_HOuTzk^o->_v2D=IHU zbK*1y4$b-clY~eI5BYuURf7q>!Io(UZU(9@q|V7cMT}u&m5RE#Xhq2`FPPPgT=B4d zw2hFdlt+rMFK{WsyPr5V`_Ax`l_wMxAuQAzMNU58-Cc)zTieWU2Zy?yaCMMHa5z`w zl$88P?f@~$Cc)gS)U3h73dam(9n9}>@?3@zZq_}2wKrGad|33zeg=`*u_+@PBXb@a zmPFZC+o=D^d|0^3+ODZD66|JMSkcPyh?xM>lZPc1pXvl2uW2h$lc8o*9g(a zSJNjWACC9nxcdMWsm^_Uv$%M{sP-mJ7gdAUf0y;sWve;hal7n%yV{%k#F$F#Lm~np z+$Bm*K8L8=d>%_-#eOJDMyw7Fup#-C0zM~@JRYkMFe7s0;^iq$oqY6LYyN7bCUBmu z*=k*>X{|;ra-H_{4fSq&#RSzC$~*Y3yqK!K@=V8H;1qv8rn=hw=B#g%q@AV;&O>G* zjlIF;h*VbMAu_Ni*1FAIj^oQ008jJ+o4>?j3sE&F;HifqMfR4E!(rFa?DZI-_7r!O zf@EGRpMmPxX}wF;5eux&S}+f~yn9(QYKNL;wa?BsVoO%ElqFG^nX@SO8X+p?{UYu* zI>)c#y@6V>KagSXn+Y-z0%~g?lbR}NxZqB_A$yzl(w4$)F-H*=R4uj*V1O*LHjxVC ziy6v>a>m%OoN{WH41E#gdj3zy(eEe6%_B4Kjt^bm{YB3~j_MaoX04GJ_-SziCWMIa zF2VA2g3|;V{ZN{Q?|c;RmQ_q3YD2g~9)ek3jE0#&=jmjxE&svb;&RD(HK`fOa)F(< zm;?1ID=&b-M(E8p*@Pz>tBsy1Ze^ln2LTFQkFwp{L4D<#=Xz~NwAOed2&4Rl;G}n+27X(2AJS)z+>d-H zDQG@T(K>0A1ZFs&Gpvj8ZHckH$+x|vUQMC>>hF`?@f?LRu>&E zKA1pW0P=YpDRveI<^);@h0~4_byd+uPEQ^$0In{rp1S;9bMN=(9Dg{h-3Y(5e{du& zE%Am{xBf^6U~t}t^iBnlPM<3$_;}QU9>O~X(zP1~*t*thYjHqvzy{Lt>N1O(Rcbx@DbX;yDY0cjB4TS{`D&v)`vJNq4nF z8k3+3Mah5~O72eNL;=LhM6o6#HvEUrm*^z)N~Vt2sQbbaOZ#agMG-uiP}y+F#L0bv zv7fZl_NgS*^LHZZ+5P&mxgaNs(r=!(YEzH>pP}*@u9~}{gVrS1bz{5~lwzt!YKPh^ zfw~Rt1{S!xv3NZsV<;51PaI9-Z^4sKj#DUlGuIqALoB(N%~wjIdf7gfpPL^`<31yi z2S;P?0I4#z&=$@GBC=$fJ7<1)mqYRh(?m3IJ4Q&`3nUr2Lc6VGB@P#`TaPM=AD-Sd zKX=PvT9zCMTNQ(<21<`~e(CR(g`OH{Wzwfi42GGb_HXl}Pzg+V3-JMYC=jI2_R}jt zX}9fP(nGYDCbhi-t=_mJl7B)0o(KETcIY#n?7|uQ5q)yXy3;p;st6BM1=OJ*vTOEX zh=BAby+ussSlgi4IMNx2j|2d9Z z_(M@OO~15UQ~X&$>{~&#tUzVf%B&9t_XIlQ8Y($5alL#|D!BF3IZ|nf7Ls=}j%l*7 zW;k$@*6|3JKQ3e1j-B6*If~dLcsQe}?aN+`oM+k5xTtitP}UB~nzQ5KwLK4~A0YUA zIsp%#gB_6ZfP@c=M>Xmh{kU}SY)wE9iK6r9XqzW|xcIF=n0${XM=HZ;B@{3@6L}QU zh7xO5G9wBsbV@gzpNXjzU!2WoWgSlf9HHgJ3X};WEbExdh`azk2Hi)(+^I%y$H*yq zBKd%el<2=tbRf?Qen0nH?6{ng_rA1jF(4u|hvXr{jlesgD}ApmpP}uX>mEZ+LToTJ zIX7r5%?MVBfw7XC&Ef=%2wL8^33t2n<$|bW8 zVC^!>kSDpjV9Y*O?}2)C949jE)!2SX9|5(D)`K0=^N_O#EIVn5IgdNr6~RonFgKvh zh&;I4&Bi`_Z#LHzxb+yg3vz~nG650-PNMw9Zd*HzS`2tvZKw4Y$brUy6fxLsx;=^f`XbcCSDDx;= zFQ_EYwUbi(UY`4YqBNa}yp~A-+4;5(LG!bQ!n_g3&WGm74g#9|fz-3bO<7zOU4v;4 zpOfD*`44V!u6JU)3Thl@jid~aMidvX4|!NulchDr&zg1m(Y#XOBChfwQ$PR>ZwWF0 z@S?Bu8TA7{7VxD02WCUze{2q{&B{W<7Dmr%;})}j#E2-~EwX(6-Z`kV2FI#`(xcz| z{mMaIZJR=vjdPtHOxrB*Y~jZ?JgAbxgECIQ${)7iE>s7N7G8Tz(>!U(V1PKc{=>-m zBj1la&Ir0U&qSWv1EQfQ(xKi{!|~}^#^n{OhKH8{S$=Ko$@dls<7mC)*oK1Cy8&|| z`;ec7Ha+zm7m`nbLHqynp)fD%RLJpJlrG37jdR239_vPpxsrv(5Wcik<9Ct~626#L zL~ibs&Y-?R^I5=f%8xDtFKA){`$-Y3JhgP!fR_0cO=*#?h(A~8+$2hhCr+7dGU^aMK+X^QG#=Pp+y514j$v5%{* zEl7A4U-V2gd-bSG*VGmbJ!0C$D0nwFxC4xDGb`B<2fsSoFZZyRo3yOz`rgSY%l4ac zRGL?TTYi=y8QEJ3`3xD$KI`f|lSk`=Zr==bkMLA|#m8m7Xk%Vk;tfr&{<8TF5H*#F z{H~kAj^OXQP60RbvO@^byb+D$Zs&Wt!wDykCmw?GE*4z#I9y}CTQOGhDw-hwIyHufy(W9&LQH2L zoLtp5CZa$*#FTx>C>Y%`K^1VZVv)`A<~|K7(?jDVuvD;OptyCjR)GQB>) zcdw+K<-G>a@!fH-StrY6G1W}=d7}6ybW4*tZEUoTNDg_BaxJ`$v3mmV#k>GmeV%pJ z*Pq2(cZ5a=JfjPd@YUr1Jum6M<>~yJQhFkxyy$>^sL5JU}i&)ONq10dqP?GvWptz4q%J*D4l|_IK@z|dD?u+YR=?EmM-m!x0njmhQoZwZ652m!)1JrvR?Mw zPH+%62uZz4QQMAWU6<26=&&rN^dVE2tz+}-`tmryFB50Y5L0~N&XV<7M5-Kb&DNFt za^*(;V-N7A&OpC;zE+$Gx^{G%qGzxMsw1>sunhlDBy&#yiN$dHYC_psFHzL;g?;{) z=Aqj_>b)=M$xC#6UhVs-zX7+Q?P810*P}i0X^$#V%ac}k-j3gNmOs7z7w0S-M@W-!FET-$eee?V| zb(;OG-@xFHSPvMyl%lw3jyJ*q1*5>P-VVagHkpZ@2?S$J=7Hz$$h3^4D5MahK7%t= z*UF0NuXvIRQpgjgDVAE~YCSZyq_V@oho-{`EZTlPV=iYF|C{P`>QSq2?K+AP-Q zdrif|gF9lLM2CmE?c8g3>H2S!tkn$Av+ZIsb|7uuw@hswu@Q)za1w%u*1_J}UAWQT zgYtLWN_&oHE?xk5$LXXN7y9V?4vHV5*WbkVg$=x>Y62^@X(*y~5np&*nJxjsBI~ zq7Z(j#Lz*%Ei{O{LuQtC!kbhN*8#Qm_D~Ngy7tr(3zyt)#CZsofvN!FEw||TqUis! zfb;*XK=yx`h5y#c+W(~3`2Vb?{;$^aZ$KlM(6`;7>+Wgyv$Mmq1XYsBCSdMQU{mu% zuoAov%Q1zR?2ubmRd0sJBr-@UUdWycTs&jqW~&KhqD>-W)R@G; z8Xs^D+}e%_kW)=iIh)EaDour~+6$!RQpyC=%1UUhp$BYp>Us+8pg7)2%>Rb&l`DL& z3w@P^UTMmXk6rM^#O0Dw$@)y$`iRszYS+f-*fe#ra$9D2 zXRh1Ho_j&Hg>z?0@y$|E(_fzen@`J-Dc|VIKyqPveUz z!Sw&K7|y``&rc=U71wyqo^GEb-rneZrSIB`H8PmAH_A4lWBjq?D2b4`&Ir$sb6hIztcq;I^t1$)mN5nmlo#!{R2#n4fTD+>v{%awco!FT?+RR zG$ON(b4!i^T-Fj%T$vu|;|t4mOX~{#oV>pljiAfeo0?Q{U0N=49gd=jRo?nqL&3SQ zV5Z5{8yd!on}fh>ggWnG=2E+#9~{%lbkB1;TMp^-GAq^<_C%WoaOJvJv{qg}O~HvI z^`hzKmIJaBlHpD1HG74tm>cWW-hc=ns2U{BoY%9p>=9?_!K=it z&>4bIR$h+Y3?)uw7GTo2EU{yYlnv6EE_apcfH0 z%svyptxF2c8onZB>uURwXX^?RyxD&&%2@w0GlOpLHTrmse$8Z-U+YAY=@=MO`r-<2=SlO_GHHj^`${v4 z^RJVGBI?s+Ag}YJR0p0d-FfE*Y5%?q2H7Q7HtnbF@yhUzS@isB@ z)x@x@XK}ny`AlV9d48FE`e*kZfKv_$Rkhp8TD=Nty`xVb5K?ov8~RxwU^lpOi@xiD0fbnOYHs8d>R? z#i<)0P%=Iz^&Oiu0`-XTnr^P#%6LxoM~}dk7M!t~{a+NXBjdY?$Yr1@fC zmdWS#>@pN;Z47hs{8;1|2|XL4Cj;giP$I`yCA9XFs}&>Dz^Y)*cMiFq2)bLpxRHFf zWLp;%6}0aZIu|w}tqbdTG&s_xhTFIN?A73(5a~`;`e3cyVX;{FA@j7xE;ghfcePM? zT&40dnu@pt*X_HAQweX)ClpTx87j?3qDks>pQ#?KZYGhNXerCllH`)%VG|~bX(0%_ z2ej(G_^B+ERe(|jOAI##mqfsPmL9{H!u$KUjMI`|3lT|U387kv^*7=-E0wYb2qqjo z8FURqe6$kP9s;Xa)Nn<%Tmsw__iw%K0U<9Z*3mnoNyH)1lvAlA{m8zPa~Z8L_BhjL z33>cabv3~%j~*N)T)Mw+K2-jd;Vt28<10WKiZzQ=glbnhJVkJjFFfh8b$EzZvb~S3 z>YX_SVmj)zEzLY?KOe{T{nOofG2d^>5zE_3kCC8Ue?Zch+MfKUEX8x(*V>|JGh|P> zJIk%gS)(4Gj}Yi4r@^}EvY}LP@zVzBkU6qj_N(7hur~FgBv5Jj)vy&D3gjcBz)78h zHD9Y_`-0At3V!vf`HpnKMB!XPUh^HX;ltxEd{j2Mmeh+1Mi-DT?$}-JkN2!OdPkgA z-FBl{=%W*2oi~~F6AZ>|klwQS{B-(;-Sl$^AobDbn-UkGir;~l26}7ccn`p&xe799 z9%=tYi(DD;NRX@nF}BBdVY0t!bB46BTHFq+s8*EhKk|W`M(qN7?bDP-L930rN$PyE zVp4Lw6lvo6^<^){-WhEoJwPSe!}^fCK=5Yj@T27$U6jvQ|G{WH_u(W7u$ISbbaI8VmfZx*{}om2whW? zM9XOp|I~ml^J-E%)}P2jLL)x?yvfxP;!&MrDuRdATBgYfrPjvF=5!J>qH*CiQo2d) z5S}eQX^c3(sw=Ky=15&FN5#IK?PrF!89Ur{?fv92cg}MQ?r@qhm0knK@@;d^)rkP? zj%9Xi6z4$GSo*ih9?qtnt)Hx8*h{(udj6ReGsR!|_|-T4PWN(`^599Gdu+`Nc?P^azt&iFxEq9>!TJDZgo|+ZjPF0zIb+jVJ?{{&FEGHMTf63k)CTl9-x)OR z@%j{3$<44T#QSA3n;GPo+bN|agV_FPGdbz(tFhiBPNY&qIXALK9hj?2DO0AOf+YIx zz1>p$iz-ehN*ZSR^nJA*xdl60K?{fCC-`c&5k@SZ_$kk}0mjygvW%k185!pSJv>t8 zI@s}WaWoHmy}Sg$lizhKRBGoh7!EqCuFk_t_w%B9(xbWr!1`VdyuiheW_kX+ z1$JbvK3($F!1|C8brydabZAELVeeiKm*FkCxJQr2Lh_g(d2+V#0v-CZt7Z?py|@N~ zM>*P;s!xq6b$(57l$Q#Mv(Qyp+x|@ISTWbfhv_NSFZ?hg0FQ2|zNKiiai+;jssyEm zwyT2Aun^I*tG+E(;RCb|1W#0EET8a!lJ3Mtb7RG$q6|^&tXc84Ak=wxo6xHcMnYMW?wJFrFEVq=~NFCZ8pS0&EaJ1 zREJq0i<#$W&Nkm8F0HRKv21Ua9|erGUs-2UPd6%&WOs(>-?Vh#-&|neuI#e`N58T) z4Sg=J74#nW^eN-Qs)L8ga}p>S&M-57oFX)6v_=^*L*~yGFr4OiC@(CTN zgVME-yjo^(!sOk<6`?(pxoa+e!;L1sSkiY?$X9kb=bI`Aj`TbOZO}ghsy*z8aQO)6 z8Qh`Xj$X?iKHX07=gl#mH#D9#GF4uw4b=|4ALQ0;9$?gkf6X-LN4n(I@zBiwC5 zvJ19;W|)aZF1_qLf4T+R8JWC|2OryUBvO>=aP#~=3o~nHyZl7XhK);E-QjiGhq@5n zfxC5)tk~!F6a?AUR!s-9E7wU8AS!fSaIm~xuy^p4Jg6Vf>S~0`jW~Hy=6Z!q^V5Hs z;E+C{9{3=;jKcAacYLh@w@p$_lGjT1@Q`^CYLUdGcZgc+bi<`Im`l5@&YA# z$4d?Bxu&_h#k643rxfxZ63trseMBUZUwXtgYT=L1B-AVi>}QaJYFnqhZ7qPIJ*-3(SOuK z?~+p#51a|3cVY9R0*}9kN>*qmW>+AsmB2n_Wz=-W6&-YYgzXhngqc=#BA5iDIG^@8 zcNb!R8`@6lJ$e*j13yk5CYE`{Aq1%pA853oavg+z$_z56P@P8i^x`9@y9emPX|z7@ zBTqX6nl?9Y(RUYcPSG1na(_(+K_Z4}<0#Xb+l1X!&Flo8{QyV$y3f#!|2S>coZPB5xETHpqVGr_s z@0AT9Zx};}7G#w9VeZHcr*FOys9dUmtMueMlv0lv3GBe%rJSssX#wyF#WuRPZ5BwL z2n$@_1K_2t*NkIuh|7Wbnk3YEe%Vw@GR`l1Nz&YyjZ$wHI!95q#v2vYe5yv5Esh{4 zlh%^3bdwXXu+G|JC%tV^lzuv$RjzDnv+r-3VKO#E^lV z9RnG=0QsbKW4t6Zx?eNPH)nsX&$TDi=W3tdxKsIMwju*zWz8r}Paw^(TsQUS1U713 zXCKiqFgCLWj?j^e?3Y#}adXMimc~rz(gbGbpwkIEKkfPSRWxJ5NB|{d(?9zxj~^;^ z2R_LX7>d^k z=xV|Nj>Sce>WHN$$3to!&hKy|dO0X5Z)Th><-}cg<+P7)gVZ+eWQ|{TB3p- z>j;gzzb|*&CG3V^yDVB+bKY&xWpKwha&qjUtAOHa6-Q=<5OnnPHRm963w0l^=>5Ud zy#&3ZNLAfc5^jp9NmuI~HN5?C*=wm>3Nyaw^lg=ypeQ1p!_*VlPE)-|Xc+}UqN1p2 z4SU}hN|iHCb-R zuW46_w`()1PtEYZ9>xnlBtOTbdg4=ZA;IWw?#Mi{=g}m#_kc}!N}!nwM?uKu++2l< zd}3`zj_Q+K!E1WCw&ZiMjL@BO?(enjMIC)uIQviIl4EC!*zWIZo;WBF7>hbu?QJqA?v48h$dZEH4l_SP^dTQ3Y+g+>BP8!Yg$0N4H%>JC@@ zVrm*-6%!ll|Qq_5I8@Ehr{H?M!m}b;tDi4Ly{isaby2H=c}V2kxsS zq5-_k+%-C9Ao5H2-HhUN_T_3&Oeve)HFJSlJ~^zV%3_mW&yskW08QAw(mh)bFRy79 z@4hyAOq2%q>W{Xept#u-%p9w)6-Df7Tn)AI8ynb(4YcP@1ngXS@b)-8Fz)L4DqF8g zpG^Z^f_Vl#lg%~hv2F0YJvl@L6poKQ360~x>*I@#Y2r_SK3FF_q=^HU+79LGn;K3t z6js@!j^#19#?(PvM}L9H-qj}^ff3u2IZ!ZBWpjd)h0&fx-NT)rDDokv#!+YZY5rxT zxc#mDoviO^#M+@$SW=ZyNB(RV{oa%IKgQOQy~1S2PYNjhv1J-VIr=(#MnzF7Ju0+- zefuprY5Q3njgXM%Zm!#?TOUmwaDHspBNXc>XwML(5Y3>(1>GC;FXxP)`+&6kh(mMA zaYvrI-SK2=bVje!EZMKAG$M8t`4H1t_`5f=L`=2_HCuXp35>Xz3-QhW^|EY&LY1Qv zW!-z&k)rcz1S#u#3-<+#Iy1|oOzM2h^IsAc_Ec_Zw^Da)vZ2;t6w7bV@%x`+;tm`; zSy38dl2Sa(N@!J^v2Acl@$?#c{DWWSmEKv3j{Fp%sJQ$r^p>r(`C~gNUt3HzYT!CA zY^zI-^av+r4A~Qb>!L_d@CZ7&(-1v6ENDNgWH3(G1cMH6PCq4S>PpfVW>V;PXjwT% z-aYr}QbUaTiwlfDc7GI-TUNRlsrfJrGd^A{4AaszVbE1`V_I@B103WV6bMfy>!3J$ zvr6YkDXm`j!-85t()UD_cvHAxErBsK@w6%ReXcdA)WBSh92IU9D4K(7UA|;nQ#{2< zrqcWiD(+k>HvRKSU9$@Vfl< z1>k%X?G<=EuVeP;#~i0}E72VPHKaZpzfp5aLRWv*pQlaP1@j;#k)vmuC&BJ7Bd!e%-# zgHcl1G?n&6TaVrIx1N6a3DeVlT$RW+8Caqqx}K}j_$%mO{vfCnCto=E^fpLWGEajt{iqs-=neF>4s ztaxQ(4-b!jxB;J>{HUT&w|{<#I6zOWf|Y{97U5IrsYKWDc6Uo+?an*T2bovf=5 zIzRZbk_4o{d$F=SF`fJWrM7E4P~i&g$cnC1j*ho{$p6)i<)Jg3 zNrb-)AHt~1yfjz#HH2|0gD4&Kh|Q5U(+Q7*h(KC|0$C0Bp?7D;j+f(F1!4za`G)2} zzK%;Wah{lRo(Gq8@;trBlPjkh`t&tcvf$7EE z%EPC(Ov-den$A9dIEp>78l{ZtzB&6N6txd&P1+zex2kF*f(X$Qr7wZA{%{uN_=hEF zKYP=wXk1EMN2#yXDO7EmGICFD31-&qr%J&d)we2P>+OD)ew>5Zpdbr(D%t|NBSByS z)hjoboWqIntmO6z11>a>EM$az+bdPUWYxb;9^bWjuY&RLNATsCVVXEf>DCSGC}jA3 zpEis|11Cn|6}7@;iZlk>YYrO{;3H!o%Z;$BaQI$s03S}6ynmnD)|>&0CzEpBB4T|y z7KF~}*Y>pX1)Vcg1+OSIeX^Bd$Rx^Qgr1|x7#BSvepQ=crXPTL;A6BdG2SgoK^3{k zQKKxU*l=w4PB_n=!u%ntISNBTAfCL(3&)l)GZ81>Z@b2xdDMfQlESnfZ11yVgCibU zfO(hbF_U_peCmCrSD>h(V}Dh35BRiUTrx{$S}~DbC&bmJq@POp#Y!Xo-NK2LMD!_5 zEu_$2=pe7WP&KFk6vx@W+aPys)K_p74Oq|q z0=ti&iXdUohvuBxTPRTO&C4$f3GK-SAC9ua#?0mF%ZzhiOw5C%~bt?ya(nEzEu2nwn+Nyxxf=v|}rr?cQeG85!HJ#G^DHg%C zQYKBLRS9i@%yIf5*J`1)raOo<>xi5reomxW|DX)Ni*_#gW4Jhu1pclTNNLw#+Hbdf z{?>L-SI6E8ynVTO9>|;(1C|%6G>Xw_Z{=~P`nf7p_a>Qk9mk0(>N)~GgvoH>q)F{hf-*s)Xlv`xp9;WSTPwk$I|tSDLw zxQNJF(M87MEOL%kzwxzsvl*sdbs zKLjq?-8wW<&#Cy^#L;LAN?C!d8367W=60tV>eg6k4j$HLyi%ZegNm&$Nf%ab9NViE zSE81LXm+T23S|yP7F5-TadKiP{#k zn#W-108d2dT}I1JXnjtefh?Z{lXzax=dBm0XFWtoi#MCBp- z+>m5VaN{;+q6sI8T8Kx5{}Uns65J`1I@+EJOa72`5hiL$mOR9W9C#6u+F1R3;I%E-gHfqs3eUp43sXun-F|Tm_m52Ac6X*AzAf& zwOhT1=2NLVl)M^=nW|Gu8Y3YDGhpzlY>9u%fUsekQg60Z4+%8SXU>($0o}2V`jgq@ z8*U1d!gbC&6>^B|j>w^M<{xHOWj;!af826Styj-Wh#A{!xSBsX;fn$Fuo@m5HLvHV z%ua8=usVJR6N}01dmnxH#YT6o$VI+&1*27}mH^%0ch`c*vt;ui3zGeqafF4d+1E`~ z9RfiKt{vN64TaTMkH04$*ELKmrB9OYn_=uNauf#`qv~4#R)pB1IYWY9^-c%AK3tM^qyOc*)&M zHm}JG9-rm3a^RWVwuqdz7OGU|JyrwdtJjdN=N6{>&!t?a45|2elnMX7qpF(VJ{7-? z!Vrom0>NAjB>FL`FfYIDiho;S@^ix$(^6QBF#~!eSOniT-R9mFuE|w&H3v%1HY(hZ zqvFmgH8w^xT-R=zOU1H^YNVQYOV-4p8DlN|1rdk7)(f9fUCu`}<6%j&-W& z!{?OMaB-j^&f4ZjWrgAkX2W!cq~2DE;sE^VIX(Y&?IgW*eHyO16^x_F_MgMG3Lx2KA^@FY8lp*+H94E}dli|?ji>D*7wd4abaA1YLH+C|HLS;ASqaRI< zJMvh!QS*C=!@eGGSmzOYL<>c`1uguKHyYmdaY9i3_cTkF<7>vC_CG3$2?_J2;~lW^ zlWRwao%gtow;_fC#w?fGZV%PMR~&yr(R^5KZqC8mtHjhkx1!-!=`xCxd;f^xyRo(X z^BZLFKvw9LxHh_8fY8@a-t1-2c<8qtW_4#?$#k$E$#^h1BAe44K~mPe40fgD!{joK zHG=74U=lnSDkrN+oJ&`=hLV2%=B(~e?u7;hC!bo>e=>?(Z;#*fTAS7i!(fQ-@`~PA zgni@1sI&Nl$QLOVYUoS}a9z>26H0#OFu&R%hHzZ|f$_sl^t^xIYHPEAe1{BvR&tT+dM7`fF%pi~vn|EW zU1uv9IMYLSBV`ODe3)IeLd*k(V-oz(4fWT%2gGL-2ccfx5-0Ag@WVJXsGG1XzVc(!OZjtEn=?V8W4w}=kQCk{$ zWOolBHYqvTym@+pCR$bt{7-DlfA=$r)%5nun0Q{)4a?;G@t@{bch9em%ftNAZ|?z- z5>_Oqrvv?7(_!7jApLfw29@W}S{7U+SqQ_k9GovV=D(tQh!vztem02OdO9tgT*hFsX5fvBi8B$5GEh_{G*uCkKnksxRSWEv5$Qtjg9n;eeA?VSK&&fuFL7> zZa=kfGua=Ue*_TFv^AIl0LfzCY=wRnVX3zOl*OWn%rXN2)J4;kcr!a*!Z#<*-9e$0 zly`o@E3exckB&8)O{cMcs~B!W%&%O%YM%*z8wg*?bA{qajcp(sNRZZ@_W)?jCDB2) zMbHrNCj3HkBNO{SBo_MTgi?`!|NX#%%&M@7{%bZ4DTgq9iMlcG`mHXE_yD_(=SKgg z74rI=;7=O)@6K4C7iSkGngP)olvR=i$dWX);>+S4Eyuk5Nmqc619%XNCH^n@@Z&d= z66R&V0#6k@0d%Z$417Q$wbJO=rXp$?>5)?qv9dTvpES zsj99~q+|GHEe}2dr~<$Jhn50J=qW0j*Rum<{*!63JV^WJSNKF>^(y^~#1rZDll(u@ zPi37d-a@4P>z36Dz7&y2FQ9w&Yr_6#J>&j_>%EfClrpk?So9Bh%m7R2|6GvuL=EGw zujK9r|6NY7oto1STWB^qs|@c?81fu^&ax;^4Jd;~)@h{+`v_$~p5^05j_RJW>rZxk zu)s>svR#13m`CuZ7i9x1k9?@N9AoYQl9Wd;7gc}e!e*yH`uYTaIn2LAe*W=)ZxH`} z6Z<#K`1N-5Bx?ub@9tAA!7c!&AsS(-gRCYgv81ecar7$^#H(r=Am^h0s|lO?*e!wf z1s5eo<-b@q3SNU`Mb077z2~*@j`^fF_=7WYoi)e@{#p(A z*Nb_^m4*~k3Yft5r>Mx|`4F+ZtYRObqX3<&wKMHsmik=QAabsDk-leL%*R>wE|O&b z^egrM#vuQSLm9FF{=W@lf2LlaF5#Jl${FF{LmAgV!d@AbCx*z$ME?j-cK(-5|20KK z1nJQem$yHjo|L`RMLL@wV1II@UfGm@b>t*knGFX1=C}N@a?|p%06Q7jnK-!o_vO}{ z@h-~Sb$RVOmrcePc|p$=z}?yFk3mvhq_sXCt<4&a#CfhOH0EzH zg=D~A2vOgB;htkOZ=~cd0pazvcH8L!dom{&%WCR)F^U%_?m5v`p$najNt(sx7vGftt{!xq003kFJd7{^78*kW0AS=lf&lQ)I1KcwmX`jCKYyJ4pA8`KR#xuyYp5a+V&VR#Nj#{=zQw}-Jzf(Z_qRA4KL-F1AODZ|KeP(- z`42_@k5>OdCoT>yULj6SAx=Rm4qhP+9w81sz&|?%07wAd0%QSlfY;E^9}I^lwsCWF z5@Kg}aAh;Ka5S@IGj{~Ddzm`1bFy);1At;)PNwE|mTpvLmewE#5r&iIb_Obtg$RQ- zuOf${lcc2$NY=;2Qr$;M!`#QtT+o6+OcVnZ=q2O@b^=?vnNoRy?Hyc&yhLdJmbwr$ z{>Nc<8d0E&g_V%n8|lBUfbNOV{FN6^Pfs>aZZ=03Yj#dSK|yv7E_N<1R_GP1uHFuA zre3TLuC#w8@W#^B+y&(126A+u`XfP8Ge>tf5gK=QkcE(ysTHr8g#|CGnJKpgD<`Lg zDXXakHz%tFH@5{pFQ)*P6{i`^U*avy|1RCh-NpWIvMtQnE$uDAmJV*NP;GFs)3E=U z>HjL3P!;`M=s#6I6eIK+AxRfYQ#Z>u&>;Fpp+b?catdnvOF^^obMOG!|IKwk_CJ*I zuQK{yoAdvWwnTvz=0fIwrhZofb9QT z=D%0M-;O{@2fgp_6ouYN^?zXd?=0jW)!fnnTDLu+mH2rHAPGQ1KtM!*M?yqEL`FhF zM#V;h>KGLt>jgSC5k3hq5k3(iDFp*HDLFkkArTE54L##4W)@}=Dt2ymCN2ghW~M(9 zfk8q>MnyrzLqo%3A|oPW`v1H=cL1=FVMyR2;b3S0u-Gtg*f7sM07__+iU4h@|7flM z+F)Se;1Lj!kWo<4pcmA>0Kme)!NJ1AAt1m*+i4g-=y?D&i}iwaHUDZZnr)6jTC2B4QHymkf-rn0R>k_yq)oB;QC$%gD;ft7~X#Y3u0f znOj&|S=)eYUESP0JiWYqLf(G}{TTKsJU-!bVp8&#l+^5;+`RmP!lL4;>YCcR`i91) zuI`@RzW#y1p{ePa*}3_JMaYkh&8?r?JG*=PXXh7}SJyYcZtwoU1p|Ql6V~66{Tp1^ zP+YL^@Nn=*f8c_F^@IjEYy_%K`)Uvz5>T`3!vu;e{68$V7y8n zx5TDyn5CM=7WZ`@+P5H&Tf6N@i%K$XYfztEMQe5R(~8-bs^Vd?Z$&$dKl*51*?7ytH$3gi^ob*CgLiiK@=F5t-Q7fnsrM_%2No;R8DmX^VIU-%;Bf79srnS(_Eax?K|$7w@KJ)m{C{-?L8E zM9I5&YU`5VLci%_w@>1w9Z~9>H%-iqB30L54bHcp(ZaCYkfQDl;RT1w+!mYd;KQMp z$@ijm(rH%I^Ooq#-BH=vT)5YB}Piz%>EL8S0)^%>xu?7rbAyKFmbY9EDA^j?xN zXxk)TM$W=!Ce$g96t#hYc+U_s(P>`K0JrsL*;$J7GL! zF2@HNG0H8`_^I^iY$Q}3)qQ4=;e-xmHYXQ}O$K8AT2?aSWl2|rqq$6XoX>;=dHi@H z8XvXPxL~#{%!9dHRUcRZ(aR9yRfu876#o*91;~QS-2ZWZ$mMlrbKe9apchT?;Tf^?SyOxfYEs=EZq@v7qMtCQ{|D$s{Yd?2tNafS^l~#iCB3QcF!IBlpD2Z{LgO zmq~pFOyg#T9G%ln`MDgK$996UzIT+q!ZSes8PLIPJyVNfJq<3+fDk)^>Ano|u+rqP zCqGcn)9#2oiV?R6x)vFM6x>Uc?U;w;B)|@n2!Ob;op+bl`Flp>5ef~_T5T<@=hWw{ zNqeyoUcZLQXW@5jBP-3%ueNqx_l=2&4hh>RaLJ?*3Ifxf0eS^?yYj82!+5Gv)G2zi zV_A4}1Q3n62?cjyS~*uZ`C@qcXMnq*;H`{Lck3Bjh5ev4LmbA8r!xGsRDrTr6%0vJ zRWB)$!AIgj0jkIh3^$?j&+cN?Jf8D>TuZVR(fX#u_K8f=ZD7Szwb$&oUT8^`+G6v>3D>`U*1<*#iZHaqdNJ+Ju_ zu{8~Tz*%pp2XFTG*OebI{jerTi%Rsk-C;%Lu4fZ6L8L>Qm3h( zr=IVGGj37xNK;$!8#6myTEc{RV%6!0mbS-KfQ`|(qm^83O-c@DXCiYaGT9HEpvD-a z1vC9JWaUDUmAWinvuOlE6#D^!cTU`ma_Z6i)asG09o_KSenbamU>)qVvQ12L6BJ120#K2F`_7>15$ z;!{n2ZI_^PSxY|wA#awRt&4hpG#3rg>482JeEOSEd&kS0n)H0sc~%!XX_(2BPXYqF z63j8LLF@;oNcC6SDgoHbkbRO8Tb!j%g!gJAb*%Oq-Z@g^U*eM?>o<@B2XQ)*ICpYa z<@hl}lLa}918;xL7NrXNp9+jD2A_}+YG9L*D}4}JU9q>TYEYs!K3I}WV|NhfVG&_=*EmFVGvwQJfJ3RP^& zabi)Z$ttjG#w`!o%?_93IJTaf@8!FWT?HLj@;LJKRk>1W*mN2`*$@kl3w!lT>NtB< ztASDN?jsJE16E%L9lI5+hXT$KSS-9@hX5iPL2IoZSk|QbDy#9U7MwtNm|Izw+?};8 z$}%fGFB^UFq;uQ)dA>X1HBpc~Vozr95BYYZ z4yg#};x^HfGN;vV_=098lN7AN|AA-#KJse4@*1Fwz9{1mTbgjBlN~|d$y#|6%0O0W z=Hj~@-9B%!_vrZypcVL)zfWBv^Eakx{d=Y*7&Iso(0@#%Tp;pBv`^pI%8F&rUkSOO z$!$9wje5$sPN?bB`&s@btV4*KlL3hwncjI<@y#m6WU5soU(xk-!@cs-L(RQ7_&yM; zUf_u=z%!gsA>_bZQnn>QWy-Yi3sXzVfJ9Iy?VToMbjr7pi4ho|>P65Ps&ec>79m*FFHH8ij# z)cY_}SefGR#-#Wa9V2#jbg43}=;h^8YrxRj>~U@VAI-H#BA%+OsT7_H%>S;SS&paR zj>q+Gl1tD+gp`QvE?ODiDmxXImbveqUi@_>G1)b3!@7^#fjF6Rk8)U2239>^+yd{_ zg>)4YUXLoQtd_@JQ3u)CjMiGnm0h}dN2-5;m-Z3vQVLPwI$5T{Q|*{n!H=h`jT8La z8_yRIQ0OY-HcARzTwGezw}+e)cdEDvSd?*a-X347Xq02#LYBV1SC36;PnvJ4-nrQX*nVz0Z*w2~Es|F#% zsR8o%H&Rrz%-Auj@D5*qg$D{)?|F1sbAyFJZyh3t*4&wi5@jv1<9qsG08#H8Z(n|wF4PJCau3zq{ z+ln%T$eqD0uBF#)j2OU?;V8WHk){k#KAqd9qm-O%+@Gg3`V!2Y}tDs$%PPWX}gS3BA5Sk}wke%r1CQvCa&a_KqR26Wk- ziMgM>J$y+gA~Tbn=;p42v>;{EKO_H|VzFZZ{wTAQTmd0S&p4;-7 zVZ7;SD&^>>-@=w2`ksRL)5tYLU_C>|wixLBqfUIUkRS%xNVEQPuKt(e+ekv}t!RGi zei2MNWlK?Oyb5z(HB2ULArfZvU&9iH;)|pwYY`PyT(?}N^dk6Q9T0tSoSdA~NXAYp zqQUN9N@cK?7xhf}Myf|Bo?l!)S!CYAIkr=)PN1^9NR*P1U4Z^m&=K|MaKM3iS#~8- z#HD$jLQ%{7i-n%TBWID%lUdqSuha(kVP&_h%YD?39<*}}^~YIomHJlVjM%H>>2E`| zu@hH2B4fpA0U3SCRYeaK$CNc6UCqLKDcB}Sl@)rMt)h1LhDnwNthhpky!AbgDZcu+ zP9yBs}SHhKkVL>hUkQj^># zgHhwBuMXL!-7+M*aTp6<#<|!od)p>{_-(kL$5+rs20f&ABzzx+@)dJE&>vsY@Ye@( zq)^9`cVb)yhD%apXL-FXh4Io;?^heqTD^fqeYSHHIq~6!?Kp-y^d8TETn`ORQViQ} zji#3R>79$!A!R0)!X^B(^sKX*xMf)9HGGPa4Gey%R0z4Wr(F3kGHomdEgLuazNb)GD(RL#K;DP_EhR|{8SsvyH;V5C1*3j7`ea}_TMm0%CQrS*Y`FJd2 z`T3a^g}go7uv(O@h;2=fR7(_|Wi%czNIpxD(kuGgC9nUG52$@txhA^a->M8h7O0++ z&a)QLvJ{b7W%1^|H8W@co_>md;>O2v~~=tWF$WU&pz!VP_1McHTm5zJvv zvve+BzZ?Nm%JQP6k|Y{oq*XdzV4@IhmWi3G-x@EogD`g?`HDE>@Nt4pRj<@khdAKP zL*ZZebq)CyZ1FT30-biHd^SF)MTv?k#@%C~dm zI%vtdQscZd$o4vzU#M`1?HC2z+ULc?#OqK-KruyXNZ9^^@cT0$GfMjzfJ7MZ;1cso z>QHQFQ}Y?n*}L`(AS=-$zf8^iSaWbYtEFF}lkXJx0et|a&(~GO!1joug1!l!U`~ZJ zV($y?_ZJ?;L2JSN<$yj>)6jj*2+-i(w)_Xa1l6?x>j#=^%8RpNXoqm)%0~bDifb-Mp=x*%;DalAmu3Ipsh&NW`u zGC|>2{xl^YuH_mfrSexkQJ?<&jN8woT$B_Q0=O$1E~45=Y;QJawrRn&?Exs;rAI)2160L3Gcswv4X1sp$1 zAm=}A$3jO-p4H)wkPLJn#*5f^#4gKEcgST%>-*q8%67wk!}oG!j5G}&o(xAw1#tyG zgfNOn?&!_ws5=!X10l+ufvdV;4OZmqfYA;SQn0Ju9RD07F;Y8;n`Q2TZOi>wEbCBW zivk0nlU-fGdw|9&VV?)uYP3W*tE)|N30H#g3-^F^4PF?-$|`LC@p4MKkmtf_!<;{s ztdrrhW#7AYeuvSu!{afpgI+Ylz`5-2M-P_SMtn;ODFq{78lt0@ri=y-$gfQoEG)HI z1P9h<{n-0Sz}KOWbcn%%6p3SEL2Zh;M6)9f7lOlzkUwIekUTRDCEgxC-wmz=a0<;O zYZ7d^y41G!W~s3g5UcS*oX+jruN*lNH_vvP*nYZv_$creH!-41hKk{RC3CYo@>?V)2X_Hx-nUEE=?GCNZbP0bfZvY<2^l!1;dtu(#kbRIsJUP1RZ zbnqFem142ZS!6WKfsDdOeG)t^f=|V3c6tsubgp{+Jf1F64t-OW=Q98e1+uTC{#XK3 zZk_pi{w+q-@oE+rXd~Z)1DRf=Ym*2a%i8=Y*3&JO@9$Z=q_X?>Jwi2kmv1CZFJ+2&~G0k$~ zkdHd*N5$+&F$X^U`g#2bA_&JKcqBQ2nHs*cq&D+yu0}`ixNCo0MH+o#sVaV$*l&N; z9HRg(l0rB&mD~#SV9A$MMzSOY+Q#$sj@L@?f-k8GTjY>gq1*lgJYQicBhdQW@>aJ` zFRS%tgPn$&+NC)hk3 zBOpfYXBRK+^e7UklJ>RAiRkmen?JBgRy#4J)+L$K{FEft)}_{r8hw=JI|b(vJ~H(n zm4ATC!>2a9U20~`<_n^-dhJC1COj`$q)&>wCxa@YJ5|AG*ioc^q__xA=~0#}QEO?w z=wP}POR-}vyNd2i`YV2oy4>~bMS8q|Ql|5cARJv-og)?2MxV%j^{<2O!ikt8@@)(4 zNE!H;*hPq_rhu7dp!%3JX9go2)Frr{JGPvw(XMQ$&6Jx}4acH>AA+5X(eAM(B=?ukj$V^~gF6~tZTQJ3A&EsB2%a6ed2^wIlEoV7(b&A>)s)%6v0ug9lW=qcYbfD7E+N5t|>C__Yd++OD3Dz->+ zh+{*ux~7~Y@{+1_+-uk3B_+!`GPK)8o8ecaEj~+^s-WMPclcL6 z0H!$nG0-}ErgiS{@=wMd5r`ai%vZ^s^VFzs+VFBxpCQkTIq4);%$zoTNPhpwn zc#S>*9ratTdZIzal8ypk{Zj<(yh;hkXa^mL7?Gv7SG6z)g%Cel~g~{3) zPdB?EZK?K0Zlhv~tNRuikS=O!aeqs#{vl<>m10Bn?tG1jOIE%?s)?g~oaH0tsLF>y z3Y5X+Uv!(5gF6{97MT|_Pp_lm1IE>FQKxX6JdNic_$7vzVw@*k0eJiFi%1308 zjg#p)Gwde#{-Omf(Ck!?bfI@pnM1PC^Ya)#_#pBu6(W$*>jE9`4(KM9k0jj=m{&fS z={~*rAf579p8DBiUe$14`W&F`KMUiLH1H$H;B0#CJMh&ytA5wJ?#Fbm`nnT}9QY{# z%+4=;s&%+gWwk*7&+TUABWA~=io?u0%6e}~oAbJWVUZ@X;uUGTA;5mJ>PB1M0vvO&+wTCG3 zbzL9!ITYx7`M*7ms}Abe%-TBB0~(Z8v_1ob{Yz#tO_5jX3m(L7(~OeW4b9~m>t{?; z$Lxmvqp^&fay6^vqZyjWMZtN4<&>`Dyu3%ld< zETdqYB&bRl$(bt`86K|0Vsrj1<-856HSXmKQ~0up4RY{}sn# zB?B1>u29w>OMs>H_8`%ikk;zQ{FP^b%*_p!Qwu-$QPZT^<*z{|CVkfh)f8$-z3a1ns1xZG$q{7nFprnjrBg8tf>R>KO>`FX{Gej42q#@xo~ zbwa)_hLBZlyQ2IC$bo`t>NfI-q%f+@_$y5HFZFlI>nAu~2}gUZD^0y_vA3M*ubs&& z4G5H3RajCSHyvcioS0jGE4b92QBlkGtEbm)G_#pk?YHgw{V?VQ{YCGj+MB13X`3cl zEC@%wKkPe3`l1G7qM-7>5W*3$OFJFBH}G-)_?7&q=Q`PA?zC*b8nkK_KT5~^f-^F( zz_pD#DE0bxoiWWZ4UM`foCfUN*eGP3xH8N=1HuCe)`|vKyqFX+VRS(9V0F#Px**zy zr9@U@Ehc@^I&P}*b?07<86ahutzP52r5(}9)cKrE>71ucOM|Bcu?JjZMCI5R2a<@4 zW0mslegL)fpS8l8O!3XhPC$FWK*4Ja{h>9FwUnOS47AzO78$!@V`YmaceJI!B!Ylj zM-oQOfgSXMqP>tqZnyT2O;2(83SdX)0{QtS`y@gPx_C3Pp+jPhcK%`N^`o7}3fbS( zS8||9d3Eq)dPvnSHvACYL>`%H4egJjEb8g&>twmSPh=^C>GO5gCGG~a zzu2Tdt-F@!=quL%!|0pH;?1EWaGMNezL&OE{iK_r=)s}FV{#!H)YotJ4tx7P5|4=1 zi{jy&X-H?;hJ>IJJ;UHeDDUA2gy$_B+3rRb%^9q00wY+S`J0(9?3IFAI^!*CeSEEA z&|bhr`}V*gtABU?k{%)p)hF6z-y?waWw~ %k7FCB9y+mR8-Fe#bWXTcsy^x)y6E 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

(4(L8`c%ycT%U0+%9=E&rZ@V) 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 Date: Sun, 23 Nov 2025 03:07:24 +0100 Subject: [PATCH 2/7] Flipper v6 --- flipper-v6/Cargo.toml | 21 ++++ flipper-v6/README.md | 148 ++++++++++++++++++++++++ flipper-v6/lib.rs | 50 ++++++++ flipper-v6/screenshots/build-result.JPG | Bin 0 -> 32981 bytes flipper-v6/screenshots/test-result.JPG | Bin 0 -> 30096 bytes 5 files changed, 219 insertions(+) create mode 100644 flipper-v6/Cargo.toml create mode 100644 flipper-v6/README.md create mode 100644 flipper-v6/lib.rs create mode 100644 flipper-v6/screenshots/build-result.JPG create mode 100644 flipper-v6/screenshots/test-result.JPG diff --git a/flipper-v6/Cargo.toml b/flipper-v6/Cargo.toml new file mode 100644 index 00000000..01eec9b9 --- /dev/null +++ b/flipper-v6/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "flipper" +version = "0.1.0" +authors = ["Use Ink "] +edition = "2021" + +[dependencies] +ink = { version = "6.0.0-beta", default-features = false } + +[dev-dependencies] +ink_e2e = { version = "6.0.0-beta" } + +[lib] +path = "lib.rs" + +[features] +default = ["std"] +std = [ + "ink/std", +] +ink-as-dependency = [] diff --git a/flipper-v6/README.md b/flipper-v6/README.md new file mode 100644 index 00000000..995d8f09 --- /dev/null +++ b/flipper-v6/README.md @@ -0,0 +1,148 @@ +# Flipper Smart Contract (Using ink! v6) + +Welcome to the **ink! v6** version of Flipper! + +This is the "Hello, World!" of Polkadot smart contracts. It demonstrates the migration from the old WebAssembly (Wasm) architecture to the new **RISC-V (PolkaVM)** architecture introduced in ink! 6.0. + +## Project Structure + +- **`lib.rs`**: The logic of the contract. It stores a single boolean value that can be flipped from `true` to `false`. +- **`Cargo.toml`**: The configuration file that specifically targets `ink = "6.0.0-beta"`. + +--- + +## Prerequisites & Installation + +To build this project, you need the **ink! v6 toolchain**. If you are using a standard Rust environment (or GitHub Codespaces), follow these steps to set up support for RISC-V. + +### 1. Setup Rust Sources +ink! v6 requires the Rust source code to compile the standard library for the PolkaVM target. + +```bash +rustup component add rust-src +``` + +### 2. Install cargo-contract (v6 Beta) +You must install the specific beta version of the contract tool. Older versions will try to compile to Wasm and fail. + +```bash +cargo install --force --locked --version 6.0.0-beta cargo-contract +``` + +--- + +## How to Run + +### 1. Unit Testing +Before compiling the full contract, check if the logic works using standard Rust tests. + +```bash +cargo test +``` + +**Expected Result:** +All tests should pass. This confirms the `flip()` and `get()` logic is correct. + +![Unit Test Screenshot](./screenshots/test-result.JPG) + +--- + +### 2. Building the Contract (RISC-V) +This compiles the contract into the format required by the blockchain. + +```bash +cargo contract build +``` + +**Expected Result:** +The build should produce a `.polkavm` file (indicating RISC-V) instead of the old `.wasm` file. + +![Build Screenshot](./screenshots/build-result.JPG) + +### 3. The Artifacts +After a successful build, your contract files will be in `./target/ink/`: + +- **`flipper.contract`**: The full bundle (Code + Metadata). Upload this to the blockchain. +- **`flipper.polkavm`**: The raw RISC-V machine code. +- **`flipper.json`**: The ABI (Metadata) describing the methods. + +--- + + +## Code Overview + +If you are new to smart contracts, think of this file structure like a recipe: **`Cargo.toml`** lists the ingredients, and **`lib.rs`** contains the cooking instructions. + +### 1. The Ingredients (`Cargo.toml`) +This file tells the Rust compiler what external tools we need. + +```toml +[dependencies] +ink = { version = "6.0.0-beta", default-features = false } +``` + +**What this does:** +- **`ink`**: We are importing the `ink` framework, which provides the tools to write smart contracts on Polkadot. +- **`6.0.0-beta`**: We specify version 6 to ensure we are using the latest engine (RISC-V). +- **`default-features = false`**: Smart contracts run in a tiny, restricted environment (the blockchain). We disable "default features" (like the standard library used for regular computer programs) to keep the contract small and efficient. + +--- + +### 2. The Logic (`lib.rs`) +This is where the magic happens. We are building a **"Flipper"**—imagine a light switch that you can turn ON or OFF. + +#### A. The Entry Point +Everything lives inside a module marked with `#[ink::contract]`. This macro tells the compiler: *"Treat this code as a Smart Contract, not a normal Rust program."* + +```rust +#[ink::contract] +mod flipper { + // All contract logic goes here... +} +``` + +#### B. The Storage (The Memory) +Smart contracts need to save data permanently on the blockchain. We use `#[ink(storage)]` to define what we want to save. + +```rust + #[ink(storage)] + pub struct Flipper { + value: bool, // We store a single boolean: true or false + } +``` + +#### C. The Setup (Constructor) +When you first upload a contract to the blockchain, you need to initialize it. This is called a **Constructor**. It runs exactly once. + +```rust + impl Flipper { + #[ink(constructor)] + pub fn new(init_value: bool) -> Self { + // We set the initial state to whatever the user provides + Self { value: init_value } + } +``` + +#### D. The Actions (Messages) +Once the contract is live, people can interact with it using **Messages**. + +**1. The `flip` message (Writing Data)** +This function uses `&mut self` (mutable), meaning it is allowed to **change** the data in storage. It costs a small fee (gas) to run because it modifies the blockchain state. + +```rust + #[ink(message)] + pub fn flip(&mut self) { + self.value = !self.value; // If true, make it false. If false, make it true. + } +``` + +**2. The `get` message (Reading Data)** +This function uses `&self` (immutable), meaning it only **reads** data. It does not change anything. + +```rust + #[ink(message)] + pub fn get(&self) -> bool { + self.value // simply return the current state + } + } +``` \ No newline at end of file diff --git a/flipper-v6/lib.rs b/flipper-v6/lib.rs new file mode 100644 index 00000000..8e80d3a5 --- /dev/null +++ b/flipper-v6/lib.rs @@ -0,0 +1,50 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +mod flipper { + #[ink(storage)] + pub struct Flipper { + value: bool, + } + + impl Flipper { + #[ink(constructor)] + pub fn new(init_value: bool) -> Self { + Self { value: init_value } + } + + #[ink(constructor)] + pub fn default() -> Self { + Self::new(false) + } + + #[ink(message)] + pub fn flip(&mut self) { + self.value = !self.value; + } + + #[ink(message)] + pub fn get(&self) -> bool { + self.value + } + } + + #[cfg(test)] + mod tests { + use super::*; + + #[ink::test] + fn default_works() { + let flipper = Flipper::default(); + assert_eq!(flipper.get(), false); + } + + #[ink::test] + fn it_works() { + let mut flipper = Flipper::new(false); + assert_eq!(flipper.get(), false); + flipper.flip(); + assert_eq!(flipper.get(), true); + } + } +} diff --git a/flipper-v6/screenshots/build-result.JPG b/flipper-v6/screenshots/build-result.JPG new file mode 100644 index 0000000000000000000000000000000000000000..54fe25ef83aa72f4621b69694a380651c78fc802 GIT binary patch literal 32981 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

=lsuSs+C63_8AIx z`1;!Bn)qk?lFd73XqERsd6NKdWcE`4(-#&nJ95~Q02>BU{I9kD^Ji!OZ{`Y}xar_W)~zi8T-aU< kKw30}I-lxGmhk_4#o_u}2A>TWMf6Y-?!U_c0{+ea4-(IRr~m)} literal 0 HcmV?d00001 diff --git a/flipper-v6/screenshots/test-result.JPG b/flipper-v6/screenshots/test-result.JPG new file mode 100644 index 0000000000000000000000000000000000000000..bfdea526a3ed1e0b7637f9da5b1babbc6b801028 GIT binary patch literal 30096 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 literal 0 HcmV?d00001 From 0596405f455362b18928820e2e33f13d76f79d1a Mon Sep 17 00:00:00 2001 From: Alhibb <63309522+Alhibb@users.noreply.github.com> Date: Sun, 23 Nov 2025 03:46:19 +0100 Subject: [PATCH 3/7] Incrementer v6 --- e2e-cross-contract/README.md | 267 ------------------ .../e2e-cross-contract-calls.md | 267 ------------------ .../e2e-cross-contract/Cargo.toml | 7 - .../e2e-cross-contract/flipper/Cargo.toml | 23 -- .../e2e-cross-contract/flipper/lib.rs | 26 -- .../e2e-cross-contract/wrapper/Cargo.toml | 31 -- .../e2e-cross-contract/wrapper/lib.rs | 103 ------- e2e-cross-contract/e2e_test.JPG | Bin 29903 -> 0 bytes e2e-cross-contract/flipper.JPG | Bin 38927 -> 0 bytes e2e-cross-contract/wrapper.JPG | Bin 25258 -> 0 bytes incrementer-v6/Cargo.toml | 21 ++ incrementer-v6/README.md | 116 ++++++++ incrementer-v6/lib.rs | 103 +++++++ incrementer-v6/screenshots/build-result.JPG | Bin 0 -> 35733 bytes incrementer-v6/screenshots/contract.JPG | Bin 0 -> 23688 bytes incrementer-v6/screenshots/test-result.JPG | Bin 0 -> 29930 bytes 16 files changed, 240 insertions(+), 724 deletions(-) delete mode 100644 e2e-cross-contract/README.md delete mode 100644 e2e-cross-contract/e2e-cross-contract-calls.md delete mode 100644 e2e-cross-contract/e2e-cross-contract/Cargo.toml delete mode 100644 e2e-cross-contract/e2e-cross-contract/flipper/Cargo.toml delete mode 100644 e2e-cross-contract/e2e-cross-contract/flipper/lib.rs delete mode 100644 e2e-cross-contract/e2e-cross-contract/wrapper/Cargo.toml delete mode 100644 e2e-cross-contract/e2e-cross-contract/wrapper/lib.rs delete mode 100644 e2e-cross-contract/e2e_test.JPG delete mode 100644 e2e-cross-contract/flipper.JPG delete mode 100644 e2e-cross-contract/wrapper.JPG create mode 100644 incrementer-v6/Cargo.toml create mode 100644 incrementer-v6/README.md create mode 100644 incrementer-v6/lib.rs create mode 100644 incrementer-v6/screenshots/build-result.JPG create mode 100644 incrementer-v6/screenshots/contract.JPG create mode 100644 incrementer-v6/screenshots/test-result.JPG diff --git a/e2e-cross-contract/README.md b/e2e-cross-contract/README.md deleted file mode 100644 index 17c77f69..00000000 --- a/e2e-cross-contract/README.md +++ /dev/null @@ -1,267 +0,0 @@ -# Mastering End-to-End (E2E) Testing: Cross-Contract Calls - -### What is this tutorial about? What will the reader learn? -Unit tests are great for checking logic in isolation, but smart contracts rarely live alone. They talk to other contracts. In this tutorial, you will learn how to use the `ink_e2e` framework to test interactions between two separate smart contracts running on a local Substrate node. - -You will learn how to: -1. Set up a Cargo Workspace with two contracts (a **Callee** and a **Caller**). -2. Configure `ink_e2e` (v5.x) to handle multiple contract artifacts. -3. Write an async test that uploads contract code, instantiates contracts, and verifies that a call to Contract A successfully modifies the state of Contract B. - -### Prerequisites -* **Rust & Cargo**: Installed and up to date. -* **cargo-contract**: Version 4.0 or higher. -* **Substrate Contracts Node**: You must have the binary installed in your system PATH. - * *Linux/WSL/Codespaces:* Download the latest binary from [Releases](https://github.com/paritytech/substrate-contracts-node/releases), extract it, and move it to `/usr/local/bin`. -* **Basic Knowledge**: You should know how to write a simple "Flipper" contract in ink!. - ---- - -### Body - -#### Step 1: Set Up the Workspace -When testing cross-contract calls, it is best practice to use a Cargo Workspace. This allows you to compile both contracts and run tests from a central location. - -Create a new directory and a `Cargo.toml` file: - -```toml -# Cargo.toml -[workspace] -members = [ - "flipper", - "wrapper" -] -resolver = "2" -exclude = ["target"] -``` - -Now, generate the two contracts inside this folder: -```bash -cargo contract new flipper -cargo contract new wrapper -``` - -#### Step 2: The "Callee" Contract (Flipper) -Let's prepare the contract that will be called. This is a standard Flipper contract. Go to `flipper/lib.rs`. - -```rust -#![cfg_attr(not(feature = "std"), no_std, no_main)] - -#[ink::contract] -pub mod flipper { - #[ink(storage)] - pub struct Flipper { - value: bool, - } - - impl Flipper { - #[ink(constructor)] - pub fn new(init_value: bool) -> Self { - Self { value: init_value } - } - - #[ink(message)] - pub fn flip(&mut self) { - self.value = !self.value; - } - - #[ink(message)] - pub fn get(&self) -> bool { - self.value - } - } -} -``` -*Compile this contract to ensure it builds:* `cargo contract build --manifest-path flipper/Cargo.toml` - -#### Step 3: The "Caller" Contract (Wrapper) -The `wrapper` contract needs to interact with `flipper`. - -1. **Add Dependency**: Open `wrapper/Cargo.toml` and add `flipper` as a dependency. -```toml -[dependencies] -ink = { version = "5.1.1", default-features = false } -# ... other deps -flipper = { path = "../flipper", default-features = false, features = ["ink-as-dependency"] } - -[dev-dependencies] -ink_e2e = "5.1.1" - -[features] -std = [ - "ink/std", - "scale/std", - "scale-info/std", - "flipper/std", # <--- IMPORTANT: Link the std feature of the dependency -] -``` - -2. **Implement Logic**: In `wrapper/lib.rs`, we will store the `AccountId` of the flipper contract and cast it to a reference when needed. - -```rust -#![cfg_attr(not(feature = "std"), no_std, no_main)] - -#[ink::contract] -pub mod wrapper { - use flipper::flipper::FlipperRef; - use ink::env::call::FromAccountId; - use ink::ToAccountId; - - #[ink(storage)] - pub struct Wrapper { - flipper_account: AccountId, - } - - impl Wrapper { - #[ink(constructor)] - pub fn new(flipper_code_hash: Hash) -> Self { - // Instantiate Flipper from within Wrapper - // We use the builder pattern provided by the generated code - let flipper = FlipperRef::new(true) - .code_hash(flipper_code_hash) - .endowment(0) - .salt_bytes([0xDE, 0xAD, 0xBE, 0xEF]) - .instantiate(); - - Self { flipper_account: flipper.to_account_id() } - } - - #[ink(message)] - pub fn proxy_flip(&mut self) { - let mut flipper: FlipperRef = FromAccountId::from_account_id(self.flipper_account); - flipper.flip(); - } - - #[ink(message)] - pub fn proxy_get(&self) -> bool { - let flipper: FlipperRef = FromAccountId::from_account_id(self.flipper_account); - flipper.get() - } - } - - // E2E Tests will go here... -} -``` - -#### Step 4: Writing the E2E Test -We will use `ink_e2e` to test the interaction on a live node. Add this module to the bottom of `wrapper/lib.rs`. - -Note: In ink! 5.x, we use `.call_builder::()` to create valid calls for the client. - -```rust -#[cfg(all(test, feature = "e2e-tests"))] -mod e2e_tests { - use super::*; - use ink_e2e::ContractsBackend; - - type E2EResult = std::result::Result>; - - #[ink_e2e::test] - async fn cross_contract_works(mut client: ink_e2e::Client) -> E2EResult<()> { - // 1. Upload Flipper Code - let flipper_hash = client - .upload("flipper", &ink_e2e::alice()) - .submit() - .await - .expect("uploading flipper failed") - .code_hash; - - // 2. Instantiate Wrapper - // We create a constructor builder - let mut constructor = WrapperRef::new(flipper_hash); - - let wrapper_contract = client - .instantiate("wrapper", &ink_e2e::alice(), &mut constructor) - .submit() - .await - .expect("wrapper instantiate failed"); - - // 3. Verify Initial State via Wrapper - // Use call_builder to generate the specific call object - let get_call = wrapper_contract.call_builder::().proxy_get(); - - let get_res = client - .call(&ink_e2e::alice(), &get_call) - .submit() - .await - .expect("call failed"); - - assert_eq!(get_res.return_value(), true); - - // 4. Call proxy_flip via Wrapper - let flip_call = wrapper_contract.call_builder::().proxy_flip(); - - let _ = client - .call(&ink_e2e::alice(), &flip_call) - .submit() - .await - .expect("flip failed"); - - // 5. Verify State Changed - let get_call_2 = wrapper_contract.call_builder::().proxy_get(); - - let get_res_2 = client - .call(&ink_e2e::alice(), &get_call_2) - .submit() - .await - .expect("call failed"); - - assert_eq!(get_res_2.return_value(), false); - - Ok(()) - } -} -``` - -Run the test with: -`cargo test --manifest-path wrapper/Cargo.toml --features e2e-tests` - ---- - -### Conclusion -You have successfully implemented an End-to-End test for a cross-contract interaction! - -**Key Takeaways:** -1. **Real Environment**: `ink_e2e` tests strictly enforce chain rules like gas limits and instantiation logic. -2. **Workflow**: The standard pattern is `Upload Dependency` -> `Get CodeHash` -> `Instantiate Main Contract` -> `Call`. -3. **Call Builders**: In modern ink! (v5+), use `.call_builder::()` to construct type-safe calls for your tests. - - ---- -### Reference Code & Results -If you get stuck, you can find the complete working code for this tutorial in the [reference folder](./e2e-cross-contract/). - - - -### How to Run -1. **Rebuild Flipper:** - ```bash - cargo contract build --manifest-path flipper/Cargo.toml - ``` -2. **Build Wrapper:** - ```bash - cargo contract build --manifest-path wrapper/Cargo.toml - ``` -3. **Run Test:** - ```bash - cargo test --manifest-path wrapper/Cargo.toml --features e2e-tests - ``` - - -Here is what a successful build and test run looks like: - -**1. Building the Contracts** -Ensure both contracts build successfully in debug mode. -![wrapper output](wrapper.JPG) ![flipper output](flipper.JPG) -**2. Running the E2E Test** -When you run `cargo test --features e2e-tests`, you should see the node start and the test pass. -![E2E Test Success](e2e_test.JPG) - ---- - -### Author -**[Ibrahim Rabiu]** -- [GitHub – alhibb](https://github.com/alhibb) -- [X – @I_bakondare](https://x.com/I_bakondare) - -*Open Source Contributor & ink! Enthusiast* diff --git a/e2e-cross-contract/e2e-cross-contract-calls.md b/e2e-cross-contract/e2e-cross-contract-calls.md deleted file mode 100644 index 17c77f69..00000000 --- a/e2e-cross-contract/e2e-cross-contract-calls.md +++ /dev/null @@ -1,267 +0,0 @@ -# Mastering End-to-End (E2E) Testing: Cross-Contract Calls - -### What is this tutorial about? What will the reader learn? -Unit tests are great for checking logic in isolation, but smart contracts rarely live alone. They talk to other contracts. In this tutorial, you will learn how to use the `ink_e2e` framework to test interactions between two separate smart contracts running on a local Substrate node. - -You will learn how to: -1. Set up a Cargo Workspace with two contracts (a **Callee** and a **Caller**). -2. Configure `ink_e2e` (v5.x) to handle multiple contract artifacts. -3. Write an async test that uploads contract code, instantiates contracts, and verifies that a call to Contract A successfully modifies the state of Contract B. - -### Prerequisites -* **Rust & Cargo**: Installed and up to date. -* **cargo-contract**: Version 4.0 or higher. -* **Substrate Contracts Node**: You must have the binary installed in your system PATH. - * *Linux/WSL/Codespaces:* Download the latest binary from [Releases](https://github.com/paritytech/substrate-contracts-node/releases), extract it, and move it to `/usr/local/bin`. -* **Basic Knowledge**: You should know how to write a simple "Flipper" contract in ink!. - ---- - -### Body - -#### Step 1: Set Up the Workspace -When testing cross-contract calls, it is best practice to use a Cargo Workspace. This allows you to compile both contracts and run tests from a central location. - -Create a new directory and a `Cargo.toml` file: - -```toml -# Cargo.toml -[workspace] -members = [ - "flipper", - "wrapper" -] -resolver = "2" -exclude = ["target"] -``` - -Now, generate the two contracts inside this folder: -```bash -cargo contract new flipper -cargo contract new wrapper -``` - -#### Step 2: The "Callee" Contract (Flipper) -Let's prepare the contract that will be called. This is a standard Flipper contract. Go to `flipper/lib.rs`. - -```rust -#![cfg_attr(not(feature = "std"), no_std, no_main)] - -#[ink::contract] -pub mod flipper { - #[ink(storage)] - pub struct Flipper { - value: bool, - } - - impl Flipper { - #[ink(constructor)] - pub fn new(init_value: bool) -> Self { - Self { value: init_value } - } - - #[ink(message)] - pub fn flip(&mut self) { - self.value = !self.value; - } - - #[ink(message)] - pub fn get(&self) -> bool { - self.value - } - } -} -``` -*Compile this contract to ensure it builds:* `cargo contract build --manifest-path flipper/Cargo.toml` - -#### Step 3: The "Caller" Contract (Wrapper) -The `wrapper` contract needs to interact with `flipper`. - -1. **Add Dependency**: Open `wrapper/Cargo.toml` and add `flipper` as a dependency. -```toml -[dependencies] -ink = { version = "5.1.1", default-features = false } -# ... other deps -flipper = { path = "../flipper", default-features = false, features = ["ink-as-dependency"] } - -[dev-dependencies] -ink_e2e = "5.1.1" - -[features] -std = [ - "ink/std", - "scale/std", - "scale-info/std", - "flipper/std", # <--- IMPORTANT: Link the std feature of the dependency -] -``` - -2. **Implement Logic**: In `wrapper/lib.rs`, we will store the `AccountId` of the flipper contract and cast it to a reference when needed. - -```rust -#![cfg_attr(not(feature = "std"), no_std, no_main)] - -#[ink::contract] -pub mod wrapper { - use flipper::flipper::FlipperRef; - use ink::env::call::FromAccountId; - use ink::ToAccountId; - - #[ink(storage)] - pub struct Wrapper { - flipper_account: AccountId, - } - - impl Wrapper { - #[ink(constructor)] - pub fn new(flipper_code_hash: Hash) -> Self { - // Instantiate Flipper from within Wrapper - // We use the builder pattern provided by the generated code - let flipper = FlipperRef::new(true) - .code_hash(flipper_code_hash) - .endowment(0) - .salt_bytes([0xDE, 0xAD, 0xBE, 0xEF]) - .instantiate(); - - Self { flipper_account: flipper.to_account_id() } - } - - #[ink(message)] - pub fn proxy_flip(&mut self) { - let mut flipper: FlipperRef = FromAccountId::from_account_id(self.flipper_account); - flipper.flip(); - } - - #[ink(message)] - pub fn proxy_get(&self) -> bool { - let flipper: FlipperRef = FromAccountId::from_account_id(self.flipper_account); - flipper.get() - } - } - - // E2E Tests will go here... -} -``` - -#### Step 4: Writing the E2E Test -We will use `ink_e2e` to test the interaction on a live node. Add this module to the bottom of `wrapper/lib.rs`. - -Note: In ink! 5.x, we use `.call_builder::()` to create valid calls for the client. - -```rust -#[cfg(all(test, feature = "e2e-tests"))] -mod e2e_tests { - use super::*; - use ink_e2e::ContractsBackend; - - type E2EResult = std::result::Result>; - - #[ink_e2e::test] - async fn cross_contract_works(mut client: ink_e2e::Client) -> E2EResult<()> { - // 1. Upload Flipper Code - let flipper_hash = client - .upload("flipper", &ink_e2e::alice()) - .submit() - .await - .expect("uploading flipper failed") - .code_hash; - - // 2. Instantiate Wrapper - // We create a constructor builder - let mut constructor = WrapperRef::new(flipper_hash); - - let wrapper_contract = client - .instantiate("wrapper", &ink_e2e::alice(), &mut constructor) - .submit() - .await - .expect("wrapper instantiate failed"); - - // 3. Verify Initial State via Wrapper - // Use call_builder to generate the specific call object - let get_call = wrapper_contract.call_builder::().proxy_get(); - - let get_res = client - .call(&ink_e2e::alice(), &get_call) - .submit() - .await - .expect("call failed"); - - assert_eq!(get_res.return_value(), true); - - // 4. Call proxy_flip via Wrapper - let flip_call = wrapper_contract.call_builder::().proxy_flip(); - - let _ = client - .call(&ink_e2e::alice(), &flip_call) - .submit() - .await - .expect("flip failed"); - - // 5. Verify State Changed - let get_call_2 = wrapper_contract.call_builder::().proxy_get(); - - let get_res_2 = client - .call(&ink_e2e::alice(), &get_call_2) - .submit() - .await - .expect("call failed"); - - assert_eq!(get_res_2.return_value(), false); - - Ok(()) - } -} -``` - -Run the test with: -`cargo test --manifest-path wrapper/Cargo.toml --features e2e-tests` - ---- - -### Conclusion -You have successfully implemented an End-to-End test for a cross-contract interaction! - -**Key Takeaways:** -1. **Real Environment**: `ink_e2e` tests strictly enforce chain rules like gas limits and instantiation logic. -2. **Workflow**: The standard pattern is `Upload Dependency` -> `Get CodeHash` -> `Instantiate Main Contract` -> `Call`. -3. **Call Builders**: In modern ink! (v5+), use `.call_builder::()` to construct type-safe calls for your tests. - - ---- -### Reference Code & Results -If you get stuck, you can find the complete working code for this tutorial in the [reference folder](./e2e-cross-contract/). - - - -### How to Run -1. **Rebuild Flipper:** - ```bash - cargo contract build --manifest-path flipper/Cargo.toml - ``` -2. **Build Wrapper:** - ```bash - cargo contract build --manifest-path wrapper/Cargo.toml - ``` -3. **Run Test:** - ```bash - cargo test --manifest-path wrapper/Cargo.toml --features e2e-tests - ``` - - -Here is what a successful build and test run looks like: - -**1. Building the Contracts** -Ensure both contracts build successfully in debug mode. -![wrapper output](wrapper.JPG) ![flipper output](flipper.JPG) -**2. Running the E2E Test** -When you run `cargo test --features e2e-tests`, you should see the node start and the test pass. -![E2E Test Success](e2e_test.JPG) - ---- - -### Author -**[Ibrahim Rabiu]** -- [GitHub – alhibb](https://github.com/alhibb) -- [X – @I_bakondare](https://x.com/I_bakondare) - -*Open Source Contributor & ink! Enthusiast* diff --git a/e2e-cross-contract/e2e-cross-contract/Cargo.toml b/e2e-cross-contract/e2e-cross-contract/Cargo.toml deleted file mode 100644 index ecd4c195..00000000 --- a/e2e-cross-contract/e2e-cross-contract/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[workspace] -members = [ - "flipper", - "wrapper" -] -resolver = "2" -exclude = ["target"] \ No newline at end of file diff --git a/e2e-cross-contract/e2e-cross-contract/flipper/Cargo.toml b/e2e-cross-contract/e2e-cross-contract/flipper/Cargo.toml deleted file mode 100644 index 213ff000..00000000 --- a/e2e-cross-contract/e2e-cross-contract/flipper/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "flipper" -version = "0.1.0" -authors = ["You"] -edition = "2021" - -[dependencies] -ink = { version = "5.1.1", default-features = false } -scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } -scale-info = { version = "2.6", default-features = false, features = ["derive"] } - -[lib] -name = "flipper" -path = "lib.rs" - -[features] -default = ["std"] -std = [ - "ink/std", - "scale/std", - "scale-info/std", -] -ink-as-dependency = [] \ No newline at end of file diff --git a/e2e-cross-contract/e2e-cross-contract/flipper/lib.rs b/e2e-cross-contract/e2e-cross-contract/flipper/lib.rs deleted file mode 100644 index b5de4249..00000000 --- a/e2e-cross-contract/e2e-cross-contract/flipper/lib.rs +++ /dev/null @@ -1,26 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std, no_main)] - -#[ink::contract] -pub mod flipper { - #[ink(storage)] - pub struct Flipper { - value: bool, - } - - impl Flipper { - #[ink(constructor)] - pub fn new(init_value: bool) -> Self { - Self { value: init_value } - } - - #[ink(message)] - pub fn flip(&mut self) { - self.value = !self.value; - } - - #[ink(message)] - pub fn get(&self) -> bool { - self.value - } - } -} \ No newline at end of file diff --git a/e2e-cross-contract/e2e-cross-contract/wrapper/Cargo.toml b/e2e-cross-contract/e2e-cross-contract/wrapper/Cargo.toml deleted file mode 100644 index 3b3ecd85..00000000 --- a/e2e-cross-contract/e2e-cross-contract/wrapper/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "wrapper" -version = "0.1.0" -authors = ["You"] -edition = "2021" - -[dependencies] -ink = { version = "5.1.1", default-features = false } -scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } -scale-info = { version = "2.6", default-features = false, features = ["derive"] } - -# Dependency on the local flipper crate -flipper = { path = "../flipper", default-features = false, features = ["ink-as-dependency"] } - -[dev-dependencies] -ink_e2e = "5.1.1" - -[lib] -name = "wrapper" -path = "lib.rs" - -[features] -default = ["std"] -std = [ - "ink/std", - "scale/std", - "scale-info/std", - "flipper/std", # Important for linking -] -ink-as-dependency = [] -e2e-tests = [] \ No newline at end of file diff --git a/e2e-cross-contract/e2e-cross-contract/wrapper/lib.rs b/e2e-cross-contract/e2e-cross-contract/wrapper/lib.rs deleted file mode 100644 index 3fd6557e..00000000 --- a/e2e-cross-contract/e2e-cross-contract/wrapper/lib.rs +++ /dev/null @@ -1,103 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std, no_main)] - -#[ink::contract] -pub mod wrapper { - use flipper::flipper::FlipperRef; - use ink::env::call::FromAccountId; - use ink::ToAccountId; - - #[ink(storage)] - pub struct Wrapper { - flipper_account: AccountId, - } - - impl Wrapper { - #[ink(constructor)] - pub fn new(flipper_code_hash: Hash) -> Self { - let flipper = FlipperRef::new(true) - .code_hash(flipper_code_hash) - .endowment(0) - .salt_bytes([0xDE, 0xAD, 0xBE, 0xEF]) - .instantiate(); - - Self { - flipper_account: flipper.to_account_id() - } - } - - #[ink(message)] - pub fn proxy_flip(&mut self) { - let mut flipper: FlipperRef = FromAccountId::from_account_id(self.flipper_account); - flipper.flip(); - } - - #[ink(message)] - pub fn proxy_get(&self) -> bool { - let flipper: FlipperRef = FromAccountId::from_account_id(self.flipper_account); - flipper.get() - } - } - - #[cfg(all(test, feature = "e2e-tests"))] - mod e2e_tests { - use super::*; - use ink_e2e::ContractsBackend; - - type E2EResult = std::result::Result>; - - #[ink_e2e::test] - async fn cross_contract_works(mut client: ink_e2e::Client) -> E2EResult<()> { - // 1. Upload Flipper Code - let flipper_hash = client - .upload("flipper", &ink_e2e::alice()) - .submit() - .await - .expect("uploading flipper failed") - .code_hash; - - // 2. Instantiate Wrapper - let mut constructor = WrapperRef::new(flipper_hash); - - // We keep the whole contract object, not just the account_id - let wrapper_contract = client - .instantiate("wrapper", &ink_e2e::alice(), &mut constructor) - .submit() - .await - .expect("wrapper instantiate failed"); - - // 3. Verify Initial State - // We use .call_builder::() to get a builder that returns CallBuilder objects - let get_call = wrapper_contract.call_builder::().proxy_get(); - - let get_res = client - .call(&ink_e2e::alice(), &get_call) - .submit() - .await - .expect("proxy_get failed"); - - assert_eq!(get_res.return_value(), true); - - // 4. Execute Flip - let flip_call = wrapper_contract.call_builder::().proxy_flip(); - - let _ = client - .call(&ink_e2e::alice(), &flip_call) - .submit() - .await - .expect("proxy_flip failed"); - - // 5. Verify State Changed - let get_call_2 = wrapper_contract.call_builder::().proxy_get(); - - let get_res_2 = client - .call(&ink_e2e::alice(), &get_call_2) - .submit() - .await - .expect("proxy_get failed"); - - assert_eq!(get_res_2.return_value(), false); - - Ok(()) - } - } -} \ No newline at end of file diff --git a/e2e-cross-contract/e2e_test.JPG b/e2e-cross-contract/e2e_test.JPG deleted file mode 100644 index 30f861e4347858e32d188aa96f61fdb6cdac813a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29903 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 %k7FCB9y+mR8-Fe#bWXTcsy^x)y6E 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

(4(L8`c%ycT%U0+%9=E&rZ@V) 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"] +edition = "2021" + +[dependencies] +ink = { version = "6.0.0-beta", default-features = false } + +[dev-dependencies] +ink_e2e = { version = "6.0.0-beta" } + +[lib] +path = "lib.rs" + +[features] +default = ["std"] +std = [ + "ink/std", +] +ink-as-dependency = [] diff --git a/incrementer-v6/README.md b/incrementer-v6/README.md new file mode 100644 index 00000000..770f1e90 --- /dev/null +++ b/incrementer-v6/README.md @@ -0,0 +1,116 @@ +# Incrementer Smart Contract (ink! v6) + +Welcome to the second level of ink! v6 development! + +While **Flipper** taught us how to store a single global value, **Incrementer** introduces two massive concepts: **User-Specific Storage** and **Identity**. + +In this contract, we build a counter where: +1. There is a **Global** count (shared by everyone). +2. There is a **Personal** count (unique to each specific user). + +## Project Structure + +- **`lib.rs`**: The logic. Introduces `Mapping` (Database) and `env().caller()` (Identity). +- **`Cargo.toml`**: Targets `ink = "6.0.0-beta"`. + +--- + +## Prerequisites + +If you set up your environment for Flipper, you are ready to go! If not, run these commands to enable RISC-V support: + +```bash +rustup component add rust-src +cargo install --force --locked --version 6.0.0-beta cargo-contract +``` + +--- + +## How to Run + +### 1. Unit Testing +Check the logic before compiling. This tests both the global counter and the user-specific logic. + +```bash +cargo test +``` + +**Expected Result:** +All 3 tests should pass (`default_works`, `it_works`, `my_value_works`). + +![Unit Test Screenshot](./screenshots/test-result.png) + +--- + +### 2. Building the Contract (RISC-V) +Compile the contract for the PolkaVM engine. + +```bash +cargo contract build +``` + +**Expected Result:** +You should see `incrementer.polkavm` in the output. + +![Build Screenshot](./screenshots/build-result.png) + +--- + +## Code Overview: What's New? + +### 1. The "Phonebook" (Mapping) +In Flipper, we stored one `bool`. Here, we need to store a number for *Alice*, a number for *Bob*, and a number for *Charlie*. + +We use **`Mapping`**. Think of it like a phonebook or a database. + +```rust +use ink::storage::Mapping; + +#[ink(storage)] +pub struct Incrementer { + value: i32, // Global: Same for everyone + my_value: Mapping, // Private: distinct for every user +} +``` + +### 2. The Address Type (H160) *Important v6 Change* +In older versions of ink!, addresses were `AccountId`. In **ink! v6**, we use **`H160`** (Ethereum-style 20-byte addresses) to be compatible with the new RISC-V engine. + +```rust +use ink::primitives::H160; // We must import this! +``` + +### 3. Identifying the User (The Caller) +How does the contract know if *Alice* or *Bob* is calling? We ask the environment. + +```rust +pub fn inc_mine(&mut self, by: i32) { + // "Hey Blockchain, who sent this transaction?" + let caller = self.env().caller(); + + // Look up this specific caller in our "Phonebook" + let my_val = self.my_value.get(caller).unwrap_or(0); + + // Update only their entry + self.my_value.insert(caller, &(my_val + by)); +} +``` + +--- + +## Summary of Messages + +| Message | Type | Description | +| :--- | :--- | :--- | +| **`inc(by)`** | Write | Adds to the **Global** `value`. Everyone sees this change. | +| **`get()`** | Read | Reads the **Global** `value`. | +| **`inc_mine(by)`** | Write | Identifies **YOU**, looks up **YOUR** number, and increases it. | +| **`get_mine()`** | Read | Identifies **YOU** and returns only **YOUR** number. | + +--- + +### Artifacts +Your compiled files are located in: +`./target/ink/incrementer.contract` + +![Contract screenshot](./screenshots/contract.JPG) diff --git a/incrementer-v6/lib.rs b/incrementer-v6/lib.rs new file mode 100644 index 00000000..f4ec2c0c --- /dev/null +++ b/incrementer-v6/lib.rs @@ -0,0 +1,103 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +mod incrementer { + // We import Mapping to store data for specific users (like a database) + use ink::storage::Mapping; + // We import H160, which is the 20-byte address format used in ink! v6 (PolkaVM) + use ink::primitives::H160; + + #[ink(storage)] + pub struct Incrementer { + // Global counter: This value is shared by everyone + value: i32, + // A map that links an Address (H160) to an i32 (Their personal number) + my_value: Mapping, + } + + impl Incrementer { + #[ink(constructor)] + pub fn new(init_value: i32) -> Self { + Self { + value: init_value, + my_value: Mapping::default(), + } + } + + #[ink(constructor)] + pub fn default() -> Self { + Self::new(0) + } + + /// Modifies the GLOBAL value. + /// Everyone sees this change. + #[ink(message)] + pub fn inc(&mut self, by: i32) { + self.value += by; + } + + /// Reads the GLOBAL value. + #[ink(message)] + pub fn get(&self) -> i32 { + self.value + } + + /// Modifies the USER'S specific value. + /// Only changes the number for the person calling this function. + #[ink(message)] + pub fn inc_mine(&mut self, by: i32) { + // 1. Identify who called the contract (The Caller) + let caller = self.env().caller(); + + // 2. Get their current value from the map + // If they haven't used it before, default to 0 + let my_val = self.my_value.get(caller).unwrap_or(0); + + // 3. Update the map with the new calculated value + self.my_value.insert(caller, &(my_val + by)); + } + + /// Reads the USER'S specific value. + /// Returns 0 if they have never interacted with the contract. + #[ink(message)] + pub fn get_mine(&self) -> i32 { + // We need to know who is asking to return the correct number + let caller = self.env().caller(); + self.my_value.get(caller).unwrap_or(0) + } + } + + #[cfg(test)] + mod tests { + use super::*; + + #[ink::test] + fn default_works() { + let contract = Incrementer::default(); + assert_eq!(contract.get(), 0); + } + + #[ink::test] + fn it_works() { + let mut contract = Incrementer::new(42); + // Global value checks + assert_eq!(contract.get(), 42); + contract.inc(5); + assert_eq!(contract.get(), 47); + } + + #[ink::test] + fn my_value_works() { + let mut contract = Incrementer::new(0); + // In unit tests, the "caller" is usually a default account (Alice). + // 1. Check initial state + assert_eq!(contract.get_mine(), 0); + + // 2. Increment specific value + contract.inc_mine(10); + + // 3. Check if it updated + assert_eq!(contract.get_mine(), 10); + } + } +} diff --git a/incrementer-v6/screenshots/build-result.JPG b/incrementer-v6/screenshots/build-result.JPG new file mode 100644 index 0000000000000000000000000000000000000000..8f4be7cf3f5e8f762fafd968f56cdccc80ad5266 GIT binary patch literal 35733 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 NZTA1@!27rGzX08@t&#u$ literal 0 HcmV?d00001 diff --git a/incrementer-v6/screenshots/contract.JPG b/incrementer-v6/screenshots/contract.JPG new file mode 100644 index 0000000000000000000000000000000000000000..69e44faedbab76df8d94f01ba4ff28f26899b9a8 GIT binary patch literal 23688 zcmeFYbzEIdvNpP~;1C>wvmwD9f=dV<+})jxy9W}I;1b;3A-KCkfZ*=#?)L3h=AAin z=H5H!+;hL*{o`Ak-t_9#ySl5ox~f;#)6X-{E5J)BF-b813JMC)hkStNRp=E_Hw#k$ zkdXms0RTV%V4-*cXh;qo0HCD4SOBn)JQU$j)>=K_R3NJzeW2N48Z1kCS}#D+*LJp%Txd{tEB?|B$@ZUBgi`g{KGQib~dn;`#> zRR69{tjw$&JS;3ctZZb=Y&`6&JS=a4e^mwm!oUYW0+0mWK|a4}I4ps=lan0}6O)Z2 zqk*xlp$VgrEttv8z>bN9k(mkL6LhmPFtRdnA~Q5Gv#{ZRbKKbahRnj4|BV`l46}@# zh>5v{golHPl83Cak%yHLxA7Z60aPSDHy$^z9oWRlfXoeSZR5z}#!vA(bsk9mw_+v= z0X_#~Qy#_lVt>|v-0@TV*%wz=S4LMhMq39nCKhgPZYE|{CRSDkNDT%@cN-@IHwGI= z(4Pd}n>ZRdSlBsP*xHc&M$o{}*4c@l!r9rvn8(z>l*7>2n1jL4fX$eJg~ix_!N8b} zg~6DO&G;<`3m2;?iy_6I%^Ms2)w-RtgZ1xi8yhj1Set-NY@8e+(qLhtVEUue|5I&3 zMD$mq|5E%A9wBvjL>x>EoJ`(BlE80+3gLu-l}-6?1I@_J#mUF?PxbhieiOz&bo76= z=l_R^p_|Y_&Bc!@Nw|*2ua?M6B1JqqGf$UOGo<~5h!>B z1SCWxY-D6?S|WTR+W+$P+y-DEKovrf!$460&=^oK7*Nk$04cL=u_-0J=@a#5-dO_uM@kb0kuJPlog>h{W19! zFrHb?k)pxAsJVbo8Pgpz*%4{i*V;H6L(64-w35~s5SE+Yy^j1f6VuW|xE4#JWU)}h zj>^Jephe3>nQrSnvBY*6w(XwT4*{y|uk z|2{bWNcY2Yd3DOr{&Nxlef)<^T6g?ueVD8>{ zRzxBP#0?~o?&~|VtFDGI^=t*pcVoYrx4IM+2+_8fafGOXiBcti72~H?rgOBor`8g* zsi2J#FRRyCIEfZ6E^%>h@f7D-f*#nB`jV~@-(e1j34Y<`r&B!diqtwfJG4pbuL~oX z({eX>kGA@@r~%Fn5q^`Odx+Tj#Sl*4UJF%YT|>CsSbC#s;+nB!ahDwZHw2+guLZGI zUYtQ=16ghm;T_eQo_WnQ#t7ei9LhCP(d!in{dOVwHh;7itkk=9OrxUMfWp6-`dTOQ z?laRq1V2joHqcxEvmnV#^G#7FJC&F~5ts>#_X^^$G}zSTJwZ4aFQ7mEf|^k>rj*1* zV|}=P$jweiITU|iGjSBu$HppR4#q>T zI;29d{ut5LlZ_EHlNr8${tR%wkZJJ))mPOwPL$c^RmW_ENeAHH_y6$6z&0W}ff~^s zwMu^sIufs$I941JcjbID!1BT?wwM)E>Gw3a9NH7!Xocc3hcB?4sTX~?_ z!|+qUn3q*6y!pO-9HtCMmlUzrgt&0mBR4~T>Z*LM@|~eAH|V~xv!@gECI&da=y}9G ze)QE%H<4W3*PxgHS-kGau#3Zt=nRzigImu#>easFKzYKeOp|Gt!;_B<{&L7;^OW(o4&@2_vjv)r{>7)0QEYFG- zSWM%p@irBGoqIcHCj=sZFE7HDM;0M?;DDd8)~{-6tV-;{z?q;z`GgU;ST9v`lt(uW zYlPz~GrlrbbyIu@<8Hql2maX=C5^QZB`K&`Eec>O{QHUZZ^i=DFDt%?eb_nS;{^2k zPKi9-J_EmG%=Sw1XMe_BK^vJddeFjW8$er;A z(L5Zd{8%sYCTwj;WX&L5Xoi5(n67G0(^ylhuzL9KNkmF42s z)dy;@u~G))KmjAN@qE)Vbspiv=?#^Y&1WsMV7T6BvREcg<|nPNkoq0*{B$(5?XJ0O zJ#bxBQ&ZHGH{;pam{vTv%RK}-^rc>!`QkIcAUr~HSy8cPo8O%$T{Z+I%~Z?Z8;!sk zHACkgk5S6~#1!wf)X1{)ijq~1l1Da;a3K(@VxEjO@V-5ad&KLqu!Zc`#uP5>=c*hD z2c^RX+c{0ngVCrx?C^}7@w@Y<77>Uo(@mTHxdl4K`^rJ5!$}C^&VHOD?qO0Pt*|Z8 z6`o*f@QG0Do#Q#0IKlMEPrS5~*nL;LTBX}?;`*q`Po5ZweCxFJx9%`oe9rw_)vc?q zMzhBbF7Ee{wQj7lFgmaL6cw3)5l}%dhqJYH?2T?oNnHbmJB9tL_C}kFYt?Ri>>Yn@&KANZ_yQQ zM}L#B-~YBB$iulk1CwRHlnTn9fg-*1Jb74$XQ24Y<1_I1eU$00&v*G5n3ci&7iEBG zzFuyU>9mqKUDqe~K&k}=&vIfro@C?oYB}uk5hQ8k;>d_6rP zT^Zl?qKL#Awe|00O{4;aEu>@FV@^{+7C70lstM~MhSb3hiY&9@dk${H)It`MV1XwF zsh`?yrTIGJXaKhwt%qkpF%xFH?dx*=yWup(tn6aN08CAef$UqI;?cr#LBq@=$_=Qt?m2_`w+`%G1?HojHuK4XKY7mH8m9=B?cWJcTu^i1mvTrq zVyj`!(OYkPtoky{GIIaAWI9PMN0ex~e6IogROWE!T&1e!YZwt14?=BAzLks0uEYr2 zDqBJxRCm_l@#LK^YHSSFh>`%OtlMGYxG=sL4Isos9Oi+MD|)x%s;ri3g?mCdEt7BI zifK7i*kRaw&kH_7IX!^31|#8xGjTJdqB-h*k+duos6nF6^!u+ST=v(LyVs(;g8~!f zz6EmEq5^(&g9PW~yVuXamD2n2G**(d-%SB!>puB2;Pnjby#Dr=9RWx*uCfLNCXx3z zM=cd*q&D9qAa@Z+U>fDaXMjq1))TQ5YNC}q5f+-e?7vYWWq)no!M}jLgeiq$hk6_9 zoqsk`t<*BHTHYGSeU$YL1xt1`ULzrfb29+uW9WiEA~*hy)$9A7ScXhJ9rJO-Qij9s zE-OAvioQ=PJh8~l-V>2yp`AvV5Gs&<Sy%IsEXYcs$A`-RQu@=V3WdKXGjLkrU1D{Q7&Mg;-k z5Q(^(&1Gl$f&QRhK%I{8Pw-lLzj{=Oy$KLbmz9A--GbO3ANHl4QF}w2A@1@t3 zH0DiJN>=}%1_5&&mrUw?6DEV!QlrC_7kaw^YTUc&@l_ub+le?1T@Ge z$-(6HIo>!I9~yPICWghKRw)XVCMwNT;u)OBe%*M<7QR@^?~XGy`fmL065{0vf3u<+ z#y7sQjiZO8vhi(KE{8S4?}^QJ(21e&_KW6eg=fuq2RV3ymz00%M;%V#y;8P3wQ&3c#!VekQ{u0wD^)&~+b}TSs{ifu8z^`?9;vML+FP9n|-W)lJ z92yic8SWI^L5g{B>--Z>UqH#G>8G46OQe-yD-3~Ci_zXb49XF#IFhOhy~!w0?fp2F z*b41PqDb`iJsAow^{I&g;?E{~4bYZxk&6tMi{JZ^+lH)_wnM*C$zEDJWW}^!=g?gc zfhXF(ba_Nu&ZQis7*5AZn^-v+ChiZiWP!>N>h!h4mZ`Z&Ic#=cCG&(860AIQ(&ihc;M-e4oGld2u~;;QSR8iFNlRCE(3AE(kF zb2?8;(TxS?jtx7<84@9(vS2?llv)L~sGxoPsT%pdvS5A>>@Z^H0FtXgc;EiPe8!gY zfUmrVrH4&)bMY}RX!RaE^pnS_+py*({cF64f`P$00vJp#y3cI{+uS66PReSCnfo3; z#+`_z)>U|t_U!shtIo1Sb;{XnWP%&Xztb5<#;u^i30tfQVsvNLl-R|Qnxy`evSETN z_g@k-MlyQYa*mI(aopd5CeD6Xq&Iz;KJqRzf7j()vzuOxr+6;fw$FWx!BQqL?jU2zc* zqrtsgM9iMw_?c|RL;#)Q?1+<+J*~!6fv=Dq`9pRRhH}MmEVLSKgHsDxvgw#-3X$)o zOYt~_l;wq8$)12w`+D@g{DOId%H)IEw5Cb&wB7nZUDTqc#EAoQm$CkxN?nd*hNKa1 z&m!)Vi5t5c2mPjTyu>^Py(?TVmb@7F!j z=Gskm{1w<@+#59b@X;g9=E`_#HCJGpT2||~m|qPEB^Nd@;fcB6O90jSlc!KOay$>2 zkTsNBU2w(QxajCwP)M3o6c{8^AG29EUP2Wm;WKBbjNAJimb9{5pSQt}XY?kLbu zMa$NHeE%gZW8I*K*D$yC*8zEh^en?_-9!v0X9hjSw*@1jiu}V~d>rv7tYyfs{F=`6 zUFjixqRrF8ce9vabqkg>0g(mo^aiOpbjA0OnuG+TxV8>rP) zs~n}DjvgQ8iH68wIsb0V`shvSxO9cTmEZd@QJbJKe+So>tPb85qgFiHhme;BNi?=k zDRQJK8bNMmBhj>yVU74is*0cDy1qCNqOx{M)iPVSs9wp(E*RB*Gg9=nOGi1Ooy1m# zyulk=>C*q=<7qwRo1#BRBET4AMiZ~N6!a^~lXW&3gq=UA#E273Jp^-e~0k)DB6&AcZVre^?8H{0REfYjcnmM!tBFOHM>WsCt=pHBFO zzLCoN89P#y`d(mK*~;8>ukb4hMcf1;XkRsm`=Q@p`L&jae#m0ZEu+P}kDrtf$ODUt zTDjVKTgGuJb=$)R(9kmyt9$r!aWJ@tvL6gW=2`?Cwt~<Ju+#0koKr zWiP3d)TFY~VDDlPwDg~N17s1|7btCDr2~nQ0)u^3uwrnu=1y69lC)#af0~H-l#Oz% zB!tIzz7^(ChkSi*wynEQ{l&#Scxk8CdC$Of`!g`AsAx&E^)6j}%WILZ_(vljerWg`{D>@rW<%?I1~Oh{tbGm4%39immy0?qEjD#}O*RTI z&sp%suR9(GVoy>hH{J?XZ2%Z%tL{YS0Sr6Z9z?K$!*#wdA6!mzYss~w>n?(QMrU*J zA9X5b?~HbJ7tt_==vp+og2*xK7?e~^+M zUWuP!h-VFGZaLK#vmc=iLm8W7oV(w5-W2#EBA0=?Sv zbhWsaDYz&>wKaCh({g$6i1}(f<~weCnU_9huQ&XsDhVfP&mF@+WfXiM%0L)U$@_|>p@Y>~eCdCOJpI$di= z=asYBDckxy6M|c`BGS~W7kLgPqnVYFapy2NS)`pzgc7T29e449heFCerY!^a+CHJT z3RiWHglDA|_BAxEE+J||t!Jc@SqnG2EjVtQ%F(My2T-XmN%vLKR(nI%-wmyT)jvMY ziyPfS>6v+#3W`1C|4u}?l%vNvhqU*h_tNcJ;7we+4~^f)w}I7P`*%n>6w)4C3Wl<* za0#N;Wm;;^Zs|{Wzz-5@EgS#Pfs(AA$(Bht$SYNw;a$a%mzu%)2(CpCZf}=IvP3iJ zUMYt31k+v%^sR|3kO&(8+#V z9L9HFHA zKyH;sbFrT`)ePNl?KDqa!hWw@Q}fxS7h3{H*#n?X!`8QRI*k2Q>A6VRimJDQ6q5aT zu89`b(tc%V-t_7%(M*YF|isy?)|iNAMbiykW#pq zqTrQ??&9y-R2I9&#gRBQUic8%jCWrpCo24Van_;z-P=uFcsh`ElUq z)-P-a!mE3CmSc#D5qI)`=UDjl!H#wNOI26 z+oX56f=G7F#JkRg7gJGha?&Nq5Yu1TyNadK1(U3VO~ zNF%(7dpDlgDLKUm1}D_In~M+Fhxm)BopdYKO>>mUDqNMwJ{`_%ATkp73w|q;y1~lb z(OkUBGAgl9jjP2tNX4!DDmd6@5YWR`dCqZxg3B38hoZ{)V_u99iadl22L4A`?$7fF zPOYF6>eXX@#tXHEr7LiJM|85S<9ZS)^8Q_RUn~#D!y);t)O-!PPhGdGhgzE)=Auxg z~T&vi1xR z3&N} z@eqK;Uqx7vVS&vgOAFnxzRmM!T}G!INhRjfuR<>zg-&TpLWka4X0-G1sVD=NRxbMAZCGg>R5 zF$zsNis&c*2J$4B64!71@iKS)?0l?1@5XZPXlV$Pil1Hk0fw$2Qk=L$i?3$ueDc01WI6HWfCsNm=*x3=}Erf-}Z^RCap7aD6#8DAN1;o?}= z^8lRw&t2AS#`)2N(oo6ylp!Qs95Q@X8PYGKcngx*4V95CSXke<2v;(~JJioFAE36Nfp1vaMVPhkOKjBz?gbx?xNr&NYH#_2J}kG44t*iSo?>kJ9X5bvUC} zsW`EK$c~4-LP={GYgN6^ewT+z{O8i=J;~rhyjnqACW|z zcOsCF8NauMPUV4@yK-_x>=W`}U)~o-tZD^A{5QnDF5aFh&QFccK*TpNpOy))rLLDN z?!JK?*}~P?(?vwx94AUSgI^Zqi3f%%Y1f^iRy&&<)7|?}Z2Mq~51%JY;s%lHm|?g; z9MSo1rgwYN$MhWv$74^>j5(j+Rd#2%fZEkKa92aa0oXPW_i4kfi$pxXuyS@kIA5edsKIL*DXQ%k zU-&Eh!6PyB>aY4Z4lMqX8~Q5l7yK&I^5r7NQ<~pXjVt3!qA&+wKFeeaF0RCCn`QJ; zoIkZ@qm1fdSuo^#f3s2l`G#}j7Smco`~+{lisb-tJH(7bcBCiK>FR9ADULJ4_SG1N zr$!|m>I@PmwEAa3>VEjJY^By8j6S`5qN@zAi)#xV+=MA=c)Sm2o`F|^4A75EnG4{S z5wybVfiv%Ey{a~CSCg8BV_1IWZT=6(TB5YB2$DN*RNoE2K%(cYW;VOz0XL#>Ts^Q z?TK*82~1R1_fG6G~m}{6CQRw14z#Bpx1~75x&dadXI_C zUQv0KKl25TsjheLB9+wHMg+}xn^Rv;F|a+=jGFY`hlf9=wtOl}5P%vsyh->$NKb-pYUQS$hOS!6 z`}F$HIc--$Y}$MEq^^YTWwHhd;ySE@N}|*h7CbP<2S}=~7v!SW%j^24Iyw^^vM;5T zmt7jvH?tI3LbE+}77LM!Fk-hHc%FgrH$}e2;ghXAC!Vcyngp+F+`QoMt;0ByCb%^2fDpg=U#- z7HBa;p!x+}L8&~UAVrm$3K^z$O`U?4@_Um)aUP0Wt6Dn;id(tix;E?Wl%@&a5&~Ib z--=aVgtCG4D;&b>Y_Gz^r*gu;aMczuVx)yS&}Gq83-75(tiZ?`zk<+CiOWH2B&FJf zW?J|~ync0b-w$eQqh|Bt(lJC>8&+H@TCd)YRMxDckn=9h=$*UIL;E^zZ>3wt4;eFS z6ZcF)>M`k!S>MDuhO;IASdWnGgTGt;oPTS%sIM%{_GcHTZXalas zChc?v;7OI|eEFuGv!6yAj6Ul)3OD*a16Xq(DqxPQ{nyXgEtk=}s0T}A3U^)Z^x_JT zr6s}6Y?w6E#V~Q!=j5z3j|iP^nm30|k>V)M`1w~BKWmEXw4-Y?gENb{Cj zzkwRD%n4mh_Gp&ye7iIC46HWnPY_uN&t3Dkb_!xP5v(J9Q`Q>D1cT6YshT=RaveSdcJ< zSSiEC^mb_MylXTz%O~Zy%J6U_C%k~_ zw}RMfWSlc4uU$Yt+Vr+MT5|6xeM)Ypzx#~%V1h|I*!Eqga_NR-_e)lFJI0Li)5c%&Sbmqr7=li)3a1eP{yDdHoy0jh6 z%M3Gx{SQ^J9hu2~Z*cTV;!*3oU?(f#BmD1mgHnUIBH z;i2EFNl7BCX}gOuhyS!eQs%=anIvvGa-_Fma$s@A2XWx0jR=h3C^?J;o*{CPnn~sG z$Rt5XwAQ7%xYcw7RfO7VQBAR4VG=uA{~1`%o-Y0m`?H%GtD~V;)=RT~Ys{ox%9^+OBr|JKgPkt1 zg0oM`(P;C?-b>wY?jx=;kpcQH?MsS)Q*=)s@Y>`kf5QZTG%>nqS6pR0u!%Mt8|7xIXIY z>_uG)W88r8W7j~2R~MCJzk)xZLu4v9hao?<`xM*a@}jPs;nC?JbEvefVm9-81wV9r zn9~v->NC_~Lk5y7Jq)%ltu=vjOKa4}rm-|6Vu>ogi{VK~ADQ3gufxC-6udr>3Ax&% zYHYBoPT782Ou@>=g*2;}ssX1W#%Z((U&b*yD#Kax)DSSSMRDW4nw_|$Q8nlp7s##f z^F-{)J;MLzy6qc~AM*O}ti}&)!a1t5y(muv zf>~uO(zW_&iQA7fa@#LEqu@7nQm_k6XFsc-4Ob;XJO-RBa=O#5D7IR>`oD@;{ZB=y zz9**geP4V$z7o9hp|KTQKbCt2$^xE&%UM3AD#B=>6YOVe8(mK#l&~A@9G5C0 zP1%FBoTlAv$@DA=WRi;6}F+$fFH4+bQFH{*(FYfTSG}rPR?$`P1v4- zt36q)i~qtv5cvYOA#+w_a?FnBwDc9PUfkm=(kM2}rvtBi`xuf1G#)!zWPUv9@kl(m zaqC0Xw~YP>IMC(zl=^lOD``@>laN5yM$yb>)sRuw+q)v|Y`nmqIwP}H5}&{0 zbh^)9(?-`B#omg)D6(+%A!`Yikn|E^O_7tZ+9d`XEMn!w`K7&P_8NA5vD>pSZS?pp z$Jdfr`kr;<@POH-Ww^y+oz$0Lw^uiY&jmN)R#&AMAa2}sTlgI>b)JLIh{o}6E z_}#%Xu!1wOD!58{id#aQccqP|XZ|$ce?b*rGfQ6q)8%i9y18k8=GecTqn)NS^>C

x>)7&nxebU2$ea-Pe!kY}#&gJr9c!FcIm;W0i)!GhMFL?Vhc^Aa2>HFA0wP1Pa5( zI17W9ld7-=6PPGjA!2d43y1ie1_BIwVv`$p=u$=dzWWZc$cH>(;je3^T;pn4b@so3 z{c2XT7BPwY>s4G+U)pf(w(~n-9(O6qZw!QYr}|z)xY2~ zi%iMcn@eq`=L|0)M5pb~yO$}p$8x`)4w2yNHbMNP$}9d*Mf5S`NcTofrgf6xh_Qsh zq&kow%Zi&JCUQ<(oKbk4`<;h_7I)EfB4b>BCkjtsl9@9$>0Xo@&XmA1H7LB}bM57p zKwjEj;-|UKff>H+LPMP249F#JP-MEkZ1%5^%<}JRI2YY7(k`w~l*wke(?=2V^ALJp z4dQo-CbTL1s5oLc$8>93YeclBKO&g(RHw4QP#Ek%G*OCy=NF=k;KfoYZ4%7VlQ{N- z3>IG)rAy*0Q6-dLFDMEgxRbwpYU-Z8J2Z;@($!FQr4lmsp+ul8SNw_@q*LTvN5f|p zumv)rG$6!|*4uBjNR_xOz`@dx;Wp$P#W|Z*#vNWbhO0oc-$N+vv$!$mea&wWz3I zrM0%D&Z>aE%(zx#5l2%LN*xyodV8xEaN5=4Ad(k>is-}?Gj=#q5L#Mf^_GKyfKmQa znB`xDTrU1JU;i#%fs1G0?ndyAR;ma%^OA8O zv_H>Keb<(n&<8(0SCO3fU2*Rj5EBTgxA0)ht_vSDUqa+$rX;$CHJU4)(vAJJr}_QH zS?oKlKZ24UtDWa|v%-{9{G}lN&XBvwRgpTlRN6M&$?`s9zOlxQ(yXp;S2iR$Gx_7u z&<>S*20A6C&@9OKvm`#($N&UvtozuY9J7s@SH+_nO?hV>7Z=el7?-zb5hX`>R7XjC zGmm`HS&Prl(l;6|@nfPI_1%c}7$c!_ec~$S!(3%y+dw<#NN6GSOHO0rS*~pkZ$@|n zS68^t*>P_j5Hdnc;?EBNm?+5=sQx$5>A|X1aUbI3jo5KV>DWV^Z7Jd2g+!@L5E-@5 z1;-95OyXDyqwpk)5kt2^D>XwovCKNUM;52{Vhv66 ze5d--l3Bxh4n$a{HV&~#qTwJl2ggY-ZYM3O1CjY%fv*zW!-ws zxy(j;uvi;V%e77sam7y&)LA!XmLy$&PqjJM$q_7qmO{}53W+~?;bJ>7IijRpT67g^ z`@y+toPz@~lO1(yP7;F^@9THKPZGe2Y(J1iLxU_%o`JYEbWz{^yxS*u*MdFyT~$5H zIyK{SqhJg_S)ECEMXo`VdzFS2=MnTFv&Ryv)p-yYdtEk`1sg8w{B!@(z4#Kj3bJD| zAbBill_~1U8EoO5wSXJA=UDKVOR>wBOTpLU1sAEl4xcC5*7J*@wT#Sz_z`Ej+#+J$ zJBZjEogmEK>t%;;k=vzf#Pg0e3V5jkK3zHf~U0g;azn335?G0HToo^%+dD` zU}Khu3>f>iInI-;5(r{p#W!sQUHaA+5-9~WXV#&Tc8;lQ?6}5qGJy*k7sMS|LcYxP zlPi#ecwG@r&|yN9yhyVaO4?s<$p{=Dn9`NK5sjLYq@wb5JC_AcDW6)F&N2jf zWkhENGsm$!8$YmZL=i~4r14FJIkv+mY*s(exN4}j5>^KIqtlv z<*8ktTHJwWU~2l2-UGQ@*%V3pV?-8#z{0qJOBA;2w+vJH4>rQa0$*T5!VN_oTo9a6 z*wn_c360@05x>;i5lE2|!-?+HE0gZBbq}ITL|ijeml-L?-+f z5OToa*H;>cIug(X(lwr;Ax%E?v>q8a3zb&UT192iC{hwIl;tBz^SfecuJqHcHRlbL z!i;z@umuDJq*E24>NQQrH)vB#qso`w!cHY5N0007a7{9=yTlA~cSp9aRYTJl1z>Puk*kO4T)Zem(po9Zes}9+bMN?C%RBgu7Gx z%}XV#y@3By?FU9sf`0T%iND1%Tvq)hU{APTWIqF+f~D`BYFf>~zm71a41B4OLVmEW zn+m~$T*Od`8DFH}grWztyB8nXd^#7!DJC_K7_p)kA9%Ve%BOE~mbYZOk*UI{<5(z^ z4_z&JO^AIFSg1LPQcr>Q^Jg7 z6i}VMPI!?$#VW~_jG2X7@!bWvDYH(ec;0;uk+T)8oPiG-@rE)TCaaamK43w($^wC!&GY{Vem0Ib+$bnRg(^DMnT{sVSjfTNQ!>c35|JKBH<6|$;X~>51m##aBanb8JN*4Adp%AS;({tbYP4IGK z$hwXFh^#q`W>Bv$js+rWRp6SUP0D%@Wlc)b_Gc|s|b^I5{%)d@J> z_H%UDGT|X-Wz|?!tGoRt1K<54h--+cJDGgQQ}|4>+&{sdfB5R%VFL|@HcYJzf$UQ~ ztWie(Q5CAAN}^}*Y2JKOuz3*?8=s&1TM{G8?iUU`_S4}W`}u{9tt^}swU^@$Vd5$$ z$i@!eF95OYv3UE%^fH}d0a{c&pWMnYs`j-T~GN`tlxN!}p*$pN!F)bP1B)#=# z{%mLHKiiBiu1of4toer>);nvJwD#@41n_*mP-8Jpi%~IzcO@d~@i41?=Y*;$!zBMJ z+mj_vJK?8mQv6T8j-N21wHBRkbsj$cG7HNM0yZv*;WekNnFOn1JEnH4W{cCc+?U>) zM%(Co6QyMhK!Pz!m60jBu{nDN?mhdX;GRau)+>WONn@sm`fa#Kn}}IGPIWl2QF(nK zsAjwJ8B33p?Qa)@CY88qYW+A}V|^VG(+4LFn4z4nds&$0GAt{`?6wD?_R!j=H@*F2_SS6meqyS`nK!Q%)BSwJp2)ge zzR5BuUxM(*OXG<8jrD2{xamOsrr4|P4>jY<@}7b9bt&KDHz;G;0lF8o@RTGTBy_o% z(R!P=z7ZY}eB|UXspPL}@m~*IQ$Iw__?wfVwQ3roxaEy;Lo*O-ghN7jQE(~s&zu;X zh*jAGKE%&Lwle2+y$cu>=7;Sl&v8&ZT>|P>ei%jYpqx%9C@pZq)yrp#H>tCj99rcc8idI?wR0apTf|L*T>k zEQTz-ZeVIcFq9AK3ajsj8DEN%a%hOnfge_<QRBia;c|9I>pTuh|QAtB7o24kv+v zCr0yh&Z(-vt22dm=uzu-d5Qc7@rWvku^579VCR;llYeUX?_LvaiJ{pBKMV}pZL#q-fi|WLC z@l^W^_%R5U#XVq#)&}J^Ptb$)tE#`19)jwj_fC37nx!!?KM9yFc=c}fh~vn;KP9OZ zh=bOinOoR<`&NwxDLAwI>w07Wo-G|MJQ8!U9PIj=SIZ}%Vm|GJdw8K1`V?m+=-)9C zS@?Iq*@|z*JTT!DiT1%R>rl%Oa@U3ER&~ND;PG6?oCPa=g zHNALK=A}9zu3ekTYf@ENS1FTkvo%3F;@nFwFH-ATvm)?4(KfL7qP6ldRdW8|>Rq?% z4{jmHXg>kl@wuGkyvwXdYsFfKDaq94{+~<@ zp&x#}TY2fuwadP!cm{r_g{nC~D4p}oRE}chXV|9*AH%Q0unsH>4(?r`4iDFv)X6#5 zZwDC_+|jV~qCw1L(1Z-h_h@h&7q~T54GG89GVd-Yfdu0q?jVp2MlLiN>^66gWB+cD zOG^^+6Fg+u3_Bt~!x@oYQ~mALx_o^trsb;uO7f_8b>~RsD7`TuDEcqaiRK$m878oF zhtLwEb{o9>d5Z$;A+{EJ6Eq_Nhr%k&XlIA^!m#pWacKF=($wA2zMNM5k!fA^r;hnC z3xcLv`p{7=cmty7{*}oBzBlIASolZB6jgO5R>9cLEV6A-QBrXPNcBi$T22kq?wt;>Y$dHG-3U0Y01UDYuvy$z?4K=N-EIMZw2Z+ zdO2oneb42)8k|MGc$rALhL!b@^@pizd)d&Jb@k!qp~QsnD2>ZTXl{LLRUF7%7b$uY z0UcMkj;e9RjvGLL-~8;~P{)b6r1fIp>|ITgGWU$7euKPaf=k$M zdFG08EYOl?vF&|*yW>Iq6V;wpdYGI!ux}OScPhm#5CVHlYhMDYE62(+={7`|%=*|2 zKFvDhjMvCsW3@e(zJ+kr&$z-v^Wd z->i|PPb-&WaV@_f;%H#SuJ+-TQxuL#e2D%J&=$yie}|t2?9?pKLv2`5UQ-hW-9s6O zBTQh^C`4oiIUa)zrMNFOew>j=w~uTUzfEf*nW2V>v!jkN%+h07bfeXIrYUZDhnqNc z%3{9CY5)D5M?_uQ8|V^sOXfX6i!+?*gK2b|`!)iTJu!4y%SAw_Mzz2e1rdzY`C|Ds z3qCT*a$}Vf{$ben(7f5^hPJB+cDgt5AQtG1Yn#OoBi{OvGWJ0kDZ;_|ef5~mnSpW% zbrehmZKKq9gWciZ$#H(eX2~h0BSLSX#P9>zxGT(@xs&9^SRckt9>&gL*xc84fe5wi zsVaDgq8#_5l@x>srhQ08%QikAR|O--eSG(RTniLG;e;fy;)yi+Zz#myl;;0hF;p(G z&&lOM=K?mVst-N{IEH_zjG{aoFI@a7ey!_C_0 zgH!f0M3;A@hMQk`5qO0`VY48gARfr}HDUKSW4)D4mY93V61P`@t&@AH>=U4XKs#E# zjVZtq5Qb*S>y3MNBwbWn6|rZLu9=h4JwVj!SYsWbmE|ucr;z4xY*9fL#VJM)1C6Lk z>kG|Isvw=EH?4P04A~2B?K@Yi{&=j)gtUw2;XH0WO}me2a!hG^0I4}xZXLPHw^|ErVp3~EAK*Km+3ASk`dp-C5z z-V~AEQEI3Xz|cd7fHXlsdM{GMAT=P6(2LXrq_178I3?25#-gD0Vv+p@`_nkHC z@A|Q3&HK&wuJ?OH)@}=l-uAPiM_(omj+y*o;jior$Is7m{$Fd&f3G)~e^j4UnT65f z%`^s%kdyCu8&;oYxCx2PKd%>|63lG>9Dv3vM2#x&u(Q69&)T6^220;R>d-7h#mucs z34n1($Oo^}iQs5E5Ta*~`?BSSedb-VCi~0hX__8xu1PG$e&H;HB=1@V*T6+eXF8IK zUOjwxU{b&p6oPnWOsLR#8{k10&66fOpgD9H5aZ$N*xWVa!IN#=!Lvlb=dh>AY3Fl( zX&M7BTPe`TyqFkiTk2-*Ikaly(qqkhux;3{DM+SZ07>#@gZuJ-8|K3dWWP)cj9i90 zDa0j>@U~f34Th9>P((^tn2{dxJzo3d6lt_=VH4{I*DocB^yC=kL zG1;zK)k}5k7H>4G^GZr!)qHMM=sdL;>?IQd_d|?8Enz30FdaW6qh)VFIu7@9FbE%Y$5L$s7Sj*Ei z0^_q3UQnKc&O=g2ZPa|hjATt;8weNVT)s3zWN;id>wshz_8PV zFkAWDSu~CzgR4 zL1-3dp}Q4-qMDKZwEkvFmhr1s#PI8qH6ayY=z~UZBEn->B-hr1WX-~x%0Dd_(hX0( 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 literal 0 HcmV?d00001 diff --git a/incrementer-v6/screenshots/test-result.JPG b/incrementer-v6/screenshots/test-result.JPG new file mode 100644 index 0000000000000000000000000000000000000000..ac84a6fddd694e0c12a119f241f304f99cb4c842 GIT binary patch literal 29930 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 H|IYshOg>IY literal 0 HcmV?d00001 From 82ad9e7f6530d41eda3594fbbf880d7e2159a417 Mon Sep 17 00:00:00 2001 From: Alhibb <63309522+Alhibb@users.noreply.github.com> Date: Sun, 23 Nov 2025 04:23:57 +0100 Subject: [PATCH 4/7] ERC-20 v6 --- erc20-v6/Cargo.toml | 28 ++++ erc20-v6/README.md | 109 ++++++++++++++ erc20-v6/lib.rs | 186 ++++++++++++++++++++++++ erc20-v6/screenshots/erc20-v6_test.JPG | Bin 0 -> 29779 bytes erc20-v6/screenshots/erc20_v6_build.JPG | Bin 0 -> 34098 bytes 5 files changed, 323 insertions(+) create mode 100644 erc20-v6/Cargo.toml create mode 100644 erc20-v6/README.md create mode 100644 erc20-v6/lib.rs create mode 100644 erc20-v6/screenshots/erc20-v6_test.JPG create mode 100644 erc20-v6/screenshots/erc20_v6_build.JPG diff --git a/erc20-v6/Cargo.toml b/erc20-v6/Cargo.toml new file mode 100644 index 00000000..b90ba787 --- /dev/null +++ b/erc20-v6/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "erc20" +version = "0.1.0" +authors = ["Use Ink "] +edition = "2021" + +[dependencies] +ink = { version = "6.0.0-beta", default-features = false } + +# We need scale/scale-info for custom Errors and Events +# We point "scale" to the actual crate "parity-scale-codec" +scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } +scale-info = { version = "2.6", default-features = false, features = ["derive"], optional = true } + +[dev-dependencies] +ink_e2e = { version = "6.0.0-beta" } + +[lib] +path = "lib.rs" + +[features] +default = ["std"] +std = [ + "ink/std", + "scale/std", + "scale-info/std", +] +ink-as-dependency = [] \ No newline at end of file diff --git a/erc20-v6/README.md b/erc20-v6/README.md new file mode 100644 index 00000000..1ae6c1e0 --- /dev/null +++ b/erc20-v6/README.md @@ -0,0 +1,109 @@ +# ERC-20 Token Smart Contract (ink! v6) + +This project implements a standard Fungible Token (ERC-20) using the ink! v6 framework. It is designed to run on the PolkaVM RISC-V architecture, replacing the older WebAssembly (Wasm) execution environment. + +This contract implements the industry-standard logic found in major cryptocurrencies, allowing for minting, transferring, and delegated spending of tokens. + +## Project Structure + +- **Cargo.toml**: The configuration file. It specifies the dependencies, strictly targeting `ink` version `6.0.0-beta` and the `parity-scale-codec` for data encoding. +- **lib.rs**: The source code containing the contract logic, storage layout, error handling, and event definitions. + +## Prerequisites + +To build and run this contract, your environment must support the ink! v6 toolchain. If you have not configured this yet, execute the following commands in your terminal: + +1. Add the Rust source code (required for compiling the standard library for RISC-V): + ```bash + rustup component add rust-src + ``` + +2. Install the specific Beta version of the contract compiler: + ```bash + cargo install --force --locked --version 6.0.0-beta cargo-contract + ``` + +## Building the Contract + +To compile the source code into a deployable package: + +```bash +cargo contract build +``` + +Upon success, the following artifacts will be generated in the `target/ink/` directory: +- **erc20.contract**: The bundle containing both the RISC-V bytecode and the metadata. This is the file you upload to the blockchain. +- **erc20.polkavm**: The raw compiled RISC-V machine code. +- **erc20.json**: The ABI (Application Binary Interface) describing the methods and types used in the contract. + +## Testing + +Before deploying, it is recommended to run the unit tests included in the library. These tests simulate blockchain interaction to verify logic. + +```bash +cargo test +``` + +## Code Overview + +### 1. Address Format (H160) +In ink! v6, the standard address format has shifted to `H160` (20 bytes), which aligns with the Ethereum standard. This ensures compatibility with the underlying PolkaVM architecture. + +### 2. Storage Layout +The contract persists data using the `Mapping` type, which functions like a key-value database: +- **balances**: Maps an Address (`H160`) to a Balance (`u128`). +- **allowances**: Uses a composite key of `(Owner, Spender)` mapped to a Balance. This tracks how many tokens a specific third party is allowed to withdraw from an owner's account. + +### 3. Events +Events are signals emitted by the smart contract that are indexed by the blockchain. External applications (dApps) listen to these events to update their user interfaces. +- **Transfer**: Emitted when tokens are moved, minted, or burned. +- **Approval**: Emitted when an owner authorizes a spender. + +### 4. Error Handling +Instead of using `panic!`, which crashes the contract execution, this implementation returns a `Result` type. This allows the contract to fail gracefully with specific error codes: +- **InsufficientBalance**: returned when a user tries to send more than they have. +- **InsufficientAllowance**: returned when a spender tries to withdraw more than they were authorized to use. + +### 5. The Allowance Mechanism +The ERC-20 standard includes a workflow for delegated spending. This is commonly used by Decentralized Exchanges (DEXs): +1. **Approve**: User A calls `approve(User B, 100)`. This gives User B permission to spend 100 tokens. +2. **Transfer From**: User B calls `transfer_from(User A, User C, 100)`. The contract checks the allowance, moves the funds from A to C, and reduces the allowance. + +## UI Integration Guide + +To interact with this contract using a graphical interface (such as the Contracts UI or Polkadot.js Apps), follow these steps: + +### Phase 1: Uploading +1. Open your contract explorer or UI. +2. Select the option to "Upload New Contract". +3. Upload the `erc20.contract` file found in `target/ink/`. + +### Phase 2: Instantiation +Once uploaded, you must create an instance of the contract on the chain. +1. The UI will prompt you for the Constructor inputs. +2. **total_supply**: Enter the initial number of tokens to mint (e.g., `1000000`). +3. Sign and submit the transaction. +4. The contract is now live, and your account holds the total supply. + +### Phase 3: Interaction +You can now call the methods defined in the contract: + +**To Check Balance:** +1. Select the `balance_of` message. +2. Paste your address (or the address of another account). +3. Click "Read" to see the result. + +**To Transfer Tokens:** +1. Select the `transfer` message. +2. **to**: Enter the recipient's H160 address. +3. **value**: Enter the amount to send. +4. Sign and submit the transaction. + +**To Test Allowances:** +1. Use Account A to call `approve` with Account B's address and a value of `500`. +2. Switch to Account B. +3. Call `transfer_from`. + - **from**: Account A. + - **to**: Account C (or B). + - **value**: `500`. +4. The transaction should succeed, moving funds from A to the destination, initiated by B. diff --git a/erc20-v6/lib.rs b/erc20-v6/lib.rs new file mode 100644 index 00000000..0c73d7ba --- /dev/null +++ b/erc20-v6/lib.rs @@ -0,0 +1,186 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +mod erc20 { + use ink::storage::Mapping; + use ink::primitives::H160; + + /// Custom error types for the contract. + #[derive(Debug, PartialEq, Eq, scale::Encode, scale::Decode)] + #[cfg_attr(feature = "std", derive(scale_info::TypeInfo))] + pub enum Error { + InsufficientBalance, + InsufficientAllowance, + } + + /// Result type returning either success or a custom Error. + pub type Result = core::result::Result; + + /// Event emitted when tokens are transferred. + #[ink(event)] + pub struct Transfer { + #[ink(topic)] + from: Option, + #[ink(topic)] + to: Option, + value: Balance, + } + + /// Event emitted when an approval is created. + #[ink(event)] + pub struct Approval { + #[ink(topic)] + owner: H160, + #[ink(topic)] + spender: H160, + value: Balance, + } + + #[ink(storage)] + pub struct Erc20 { + /// Total token supply in circulation. + total_supply: Balance, + /// Mapping from User Address (H160) to their Balance. + balances: Mapping, + /// Mapping from (Owner, Spender) to the Allowed Amount. + allowances: Mapping<(H160, H160), Balance>, + } + + impl Erc20 { + /// Constructor: Initializes the contract with a total supply. + /// The entire supply is initially assigned to the caller. + #[ink(constructor)] + pub fn new(total_supply: Balance) -> Self { + let mut balances = Mapping::default(); + let caller = Self::env().caller(); + + balances.insert(caller, &total_supply); + + Self::env().emit_event(Transfer { + from: None, + to: Some(caller), + value: total_supply, + }); + + Self { + total_supply, + balances, + allowances: Mapping::default(), + } + } + + /// Returns the total token supply. + #[ink(message)] + pub fn total_supply(&self) -> Balance { + self.total_supply + } + + /// Returns the balance of the specified account. + #[ink(message)] + pub fn balance_of(&self, owner: H160) -> Balance { + self.balances.get(owner).unwrap_or(0) + } + + /// Transfers tokens from the caller to the recipient. + #[ink(message)] + pub fn transfer(&mut self, to: H160, value: Balance) -> Result<()> { + let from = self.env().caller(); + self.transfer_from_to(&from, &to, value) + } + + /// Internal helper to execute valid transfers and emit events. + fn transfer_from_to( + &mut self, + from: &H160, + to: &H160, + value: Balance, + ) -> Result<()> { + let from_balance = self.balance_of(*from); + + if from_balance < value { + return Err(Error::InsufficientBalance); + } + + // Update balances + self.balances.insert(from, &(from_balance - value)); + let to_balance = self.balance_of(*to); + self.balances.insert(to, &(to_balance + value)); + + self.env().emit_event(Transfer { + from: Some(*from), + to: Some(*to), + value, + }); + + Ok(()) + } + + /// Approves a spender to transfer tokens on behalf of the caller. + #[ink(message)] + pub fn approve(&mut self, spender: H160, value: Balance) -> Result<()> { + let owner = self.env().caller(); + self.allowances.insert((owner, spender), &value); + + self.env().emit_event(Approval { + owner, + spender, + value, + }); + + Ok(()) + } + + /// Returns the remaining number of tokens that `spender` will be + /// allowed to spend on behalf of `owner`. + #[ink(message)] + pub fn allowance(&self, owner: H160, spender: H160) -> Balance { + self.allowances.get((owner, spender)).unwrap_or(0) + } + + /// Transfers tokens from `from` to `to` using the allowance mechanism. + #[ink(message)] + pub fn transfer_from( + &mut self, + from: H160, + to: H160, + value: Balance, + ) -> Result<()> { + let caller = self.env().caller(); + let allowance = self.allowance(from, caller); + + if allowance < value { + return Err(Error::InsufficientAllowance); + } + + self.allowances.insert((from, caller), &(allowance - value)); + self.transfer_from_to(&from, &to, value) + } + } + + #[cfg(test)] + mod tests { + use super::*; + + #[ink::test] + fn new_works() { + let contract = Erc20::new(1000); + assert_eq!(contract.total_supply(), 1000); + } + + #[ink::test] + fn transfer_works() { + let mut contract = Erc20::new(1000); + let bob = H160::from([0x01; 20]); + + assert_eq!(contract.transfer(bob, 100), Ok(())); + assert_eq!(contract.balance_of(bob), 100); + } + + #[ink::test] + fn transfer_fails_if_insufficient() { + let mut contract = Erc20::new(10); + let bob = H160::from([0x01; 20]); + assert_eq!(contract.transfer(bob, 20), Err(Error::InsufficientBalance)); + } + } +} diff --git a/erc20-v6/screenshots/erc20-v6_test.JPG b/erc20-v6/screenshots/erc20-v6_test.JPG new file mode 100644 index 0000000000000000000000000000000000000000..c6e089875adc8834d970af6c6ac50b8d82ceaada GIT binary patch literal 29779 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%0A6-cEhb^A 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 literal 0 HcmV?d00001 diff --git a/erc20-v6/screenshots/erc20_v6_build.JPG b/erc20-v6/screenshots/erc20_v6_build.JPG new file mode 100644 index 0000000000000000000000000000000000000000..062a9c44cad024c99f4f00ea80259c9b701b3d9a GIT binary patch literal 34098 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�de>jwQn(l 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 i%R1a;7=a_%3x`gBV^{ed$ Date: Mon, 24 Nov 2025 10:41:49 +0100 Subject: [PATCH 5/7] erc721-v6 --- erc721-v6/Cargo.toml | 27 +++ erc721-v6/README.md | 106 ++++++++++ erc721-v6/lib.rs | 282 +++++++++++++++++++++++++ erc721-v6/screenshots/erc721-build.JPG | Bin 0 -> 19539 bytes erc721-v6/screenshots/erc721-test.JPG | Bin 0 -> 25154 bytes 5 files changed, 415 insertions(+) create mode 100644 erc721-v6/Cargo.toml create mode 100644 erc721-v6/README.md create mode 100644 erc721-v6/lib.rs create mode 100644 erc721-v6/screenshots/erc721-build.JPG create mode 100644 erc721-v6/screenshots/erc721-test.JPG diff --git a/erc721-v6/Cargo.toml b/erc721-v6/Cargo.toml new file mode 100644 index 00000000..4ba07bef --- /dev/null +++ b/erc721-v6/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "erc721" +version = "0.1.0" +authors = ["Use Ink "] +edition = "2021" + +[dependencies] +ink = { version = "6.0.0-beta", default-features = false } + +# Using the correct package name for encoding +scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } +scale-info = { version = "2.6", default-features = false, features = ["derive"], optional = true } + +[dev-dependencies] +ink_e2e = { version = "6.0.0-beta" } + +[lib] +path = "lib.rs" + +[features] +default = ["std"] +std = [ + "ink/std", + "scale/std", + "scale-info/std", +] +ink-as-dependency = [] diff --git a/erc721-v6/README.md b/erc721-v6/README.md new file mode 100644 index 00000000..7175e244 --- /dev/null +++ b/erc721-v6/README.md @@ -0,0 +1,106 @@ +# ERC-721 Non-Fungible Token (ink! v6) + +This project implements the ERC-721 standard using the ink! v6 framework, compiled for the PolkaVM RISC-V architecture. + +While the previous ERC-20 example dealt with "Fungible" tokens (where every token is identical in value), this contract implements "Non-Fungible" tokens (NFTs). In this standard, every token is unique and identified by a specific ID. This is commonly used for digital collectibles, real estate, or unique gaming items. + +## Project Structure + +- **Cargo.toml**: The configuration file managing dependencies. It specifically targets `ink` version `6.0.0-beta` and the `parity-scale-codec` for data encoding. +- **lib.rs**: The source code containing the contract logic. + +## Prerequisites + +To build and run this contract, your environment must support the ink! v6 toolchain. + +1. Add the Rust source code (required for compiling the standard library for RISC-V): + ```bash + rustup component add rust-src + ``` + +2. Install the specific Beta version of the contract compiler: + ```bash + cargo install --force --locked --version 6.0.0-beta cargo-contract + ``` + +## Building the Contract + +To compile the source code: + +```bash +cargo contract build +``` + +Upon success, the artifacts will be generated in `target/ink/`: +- **erc721.contract**: The deployment bundle. +- **erc721.polkavm**: The raw RISC-V machine code. +- **erc721.json**: The ABI metadata. + +## Architectural Overview + +### 1. The Concept of Uniqueness +In an ERC-20 contract, we only tracked how *much* money someone had (`Balance`). In ERC-721, we must track *which* specific items someone owns (`TokenId`). + +We define `TokenId` as a `u32` (a simple number). Token #1 is distinct from Token #2, and they cannot be merged. + +### 2. Storage Layout +The contract uses several `Mapping` structures to maintain the state of the system: + +- **token_owner**: `Mapping` + This is the source of truth. It maps a specific Token ID to the address of its owner. If an ID does not exist in this map, the token has not been minted (or was burned). + +- **owned_tokens_count**: `Mapping` + Tracks the total number of tokens owned by an account. This is useful for external applications to know how many items a user has without counting them one by one. + +- **token_approvals**: `Mapping` + Stores specific permissions. If Alice wants to sell Token #1 on a marketplace, she "approves" the marketplace contract only for Token #1. + +- **operator_approvals**: `Mapping<(Owner, Operator), bool>` + Stores broad permissions. If Alice wants a game to manage her entire inventory, she sets the game contract as an "operator". This allows the operator to transfer *any* token owned by Alice. + +### 3. Events +The contract emits events to ensure off-chain indexers can track the history of every asset: +- **Transfer**: Emitted when ownership changes. This includes Minting (from `None` to User) and Burning (from User to `None`). +- **Approval**: Emitted when a single token ID is approved for a spender. +- **ApprovalForAll**: Emitted when an operator is authorized or revoked for an owner. + +### 4. Error Handling +The contract defines a custom `Error` enum to handle logic failures gracefully: +- **TokenExists**: Returned when trying to mint an ID that has already been created. +- **TokenNotFound**: Returned when trying to transfer or query an ID that does not exist. +- **NotOwner**: Returned when a user tries to transfer a token they do not own. +- **NotApproved**: Returned when a spender tries to move a token they have not been authorized to use. + +## Functional Logic + +### Minting +The `mint(id)` function creates a new token. +1. It checks if the `id` already exists. +2. If not, it assigns the `id` to the caller in `token_owner`. +3. It increments the caller's `owned_tokens_count`. +4. It emits a `Transfer` event. + +### Transferring +The `transfer(to, id)` and `transfer_from(from, to, id)` functions move assets. +1. They verify the token exists. +2. They verify the caller has permission (is the Owner, is the Approved Spender, or is an Operator). +3. They clear any specific approvals for that token (approvals do not carry over to the new owner). +4. They update the `token_owner` map and adjust the `owned_tokens_count` for both parties. + +### The Approval System +This contract implements a two-tier approval system: +1. **Single Item Approval**: `approve(to, id)` authorizes a transfer for one specific token ID. +2. **Operator Approval**: `set_approval_for_all(operator, approved)` authorizes the operator to manage the entire portfolio of the caller. This is efficient for marketplaces or gaming logic where multiple transfers occur. + +## Testing + +The project includes unit tests to verify the core logic without deploying to a chain. + +```bash +cargo test +``` + +These tests cover: +- **Minting**: Ensuring tokens are assigned to the creator. +- **Transferring**: Ensuring ownership updates correctly and balances change. +- **Security**: Verifying that unauthorized users cannot transfer tokens they do not own. diff --git a/erc721-v6/lib.rs b/erc721-v6/lib.rs new file mode 100644 index 00000000..8372a207 --- /dev/null +++ b/erc721-v6/lib.rs @@ -0,0 +1,282 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +mod erc721 { + use ink::storage::Mapping; + use ink::primitives::H160; + + /// We define the Token ID as a simple 32-bit number. + pub type TokenId = u32; + + /// Custom Error types. + #[derive(Debug, PartialEq, Eq, scale::Encode, scale::Decode)] + #[cfg_attr(feature = "std", derive(scale_info::TypeInfo))] + pub enum Error { + NotOwner, + NotApproved, + TokenExists, + TokenNotFound, + CannotFetchValue, + } + + pub type Result = core::result::Result; + + /// Event: Transfer of ownership. + #[ink(event)] + pub struct Transfer { + #[ink(topic)] + from: Option, + #[ink(topic)] + to: Option, + #[ink(topic)] + id: TokenId, + } + + /// Event: Approval of a single token. + #[ink(event)] + pub struct Approval { + #[ink(topic)] + owner: H160, + #[ink(topic)] + spender: H160, + #[ink(topic)] + id: TokenId, + } + + /// Event: Approval for an operator to manage ALL tokens of an owner. + #[ink(event)] + pub struct ApprovalForAll { + #[ink(topic)] + owner: H160, + #[ink(topic)] + operator: H160, + approved: bool, + } + + #[ink(storage)] + pub struct Erc721 { + /// Mapping from Token ID to Owner Address. + token_owner: Mapping, + /// Mapping from Token ID to Approved Spender. + token_approvals: Mapping, + /// Mapping from Owner to how many tokens they own. + owned_tokens_count: Mapping, + /// Mapping from (Owner, Operator) to boolean (Approved or Not). + operator_approvals: Mapping<(H160, H160), bool>, + } + + impl Erc721 { + #[ink(constructor)] + pub fn new() -> Self { + Self { + token_owner: Mapping::default(), + token_approvals: Mapping::default(), + owned_tokens_count: Mapping::default(), + operator_approvals: Mapping::default(), + } + } + + /// Returns the number of tokens owned by `owner`. + #[ink(message)] + pub fn balance_of(&self, owner: H160) -> u32 { + self.owned_tokens_count.get(owner).unwrap_or(0) + } + + /// Returns the owner of the specified token ID. + #[ink(message)] + pub fn owner_of(&self, id: TokenId) -> Option { + self.token_owner.get(id) + } + + /// Mints a new token. (Creates it). + #[ink(message)] + pub fn mint(&mut self, id: TokenId) -> Result<()> { + if self.token_owner.contains(id) { + return Err(Error::TokenExists); + } + + let caller = self.env().caller(); + self.add_token_to(&caller, id)?; + + self.env().emit_event(Transfer { + from: None, + to: Some(caller), + id, + }); + + Ok(()) + } + + /// Transfers token `id` to `to`. + #[ink(message)] + pub fn transfer(&mut self, to: H160, id: TokenId) -> Result<()> { + let caller = self.env().caller(); + self.transfer_token_from(&caller, &to, id) + } + + /// Transfers token `id` from `from` to `to`. + /// Requires approval. + #[ink(message)] + pub fn transfer_from( + &mut self, + from: H160, + to: H160, + id: TokenId, + ) -> Result<()> { + let caller = self.env().caller(); + + // Check if caller is owner, approved for this token, or approved for all + let owner = self.owner_of(id).ok_or(Error::TokenNotFound)?; + if owner != from { + return Err(Error::NotOwner); + } + + let approved_address = self.get_approved(id); + let is_approved = approved_address == Some(caller); + let is_operator = self.is_approved_for_all(from, caller); + + if !is_approved && !is_operator && caller != from { + return Err(Error::NotApproved); + } + + self.transfer_token_from(&from, &to, id) + } + + /// Approves `to` to spend token `id`. + #[ink(message)] + pub fn approve(&mut self, to: H160, id: TokenId) -> Result<()> { + let caller = self.env().caller(); + let owner = self.owner_of(id).ok_or(Error::TokenNotFound)?; + + if owner != caller { + return Err(Error::NotOwner); + } + + // Set the approval + self.token_approvals.insert(id, &to); + + self.env().emit_event(Approval { + owner, + spender: to, + id, + }); + + Ok(()) + } + + /// Returns the approved address for a token ID. + #[ink(message)] + pub fn get_approved(&self, id: TokenId) -> Option { + self.token_approvals.get(id) + } + + /// Approves `operator` to spend ALL tokens owned by caller. + #[ink(message)] + pub fn set_approval_for_all(&mut self, operator: H160, approved: bool) -> Result<()> { + let caller = self.env().caller(); + self.operator_approvals.insert((caller, operator), &approved); + + self.env().emit_event(ApprovalForAll { + owner: caller, + operator, + approved, + }); + + Ok(()) + } + + /// Checks if `operator` is approved for all tokens of `owner`. + #[ink(message)] + pub fn is_approved_for_all(&self, owner: H160, operator: H160) -> bool { + self.operator_approvals.get((owner, operator)).unwrap_or(false) + } + + // --- Helper Functions --- + + fn add_token_to(&mut self, to: &H160, id: TokenId) -> Result<()> { + if self.token_owner.contains(id) { + return Err(Error::TokenExists); + } + + self.token_owner.insert(id, to); + + let count = self.owned_tokens_count.get(to).unwrap_or(0); + self.owned_tokens_count.insert(to, &(count + 1)); + + Ok(()) + } + + fn remove_token_from(&mut self, from: &H160, id: TokenId) -> Result<()> { + if !self.token_owner.contains(id) { + return Err(Error::TokenNotFound); + } + + self.token_owner.remove(id); + + let count = self.owned_tokens_count.get(from).ok_or(Error::CannotFetchValue)?; + self.owned_tokens_count.insert(from, &(count - 1)); + + Ok(()) + } + + fn transfer_token_from( + &mut self, + from: &H160, + to: &H160, + id: TokenId, + ) -> Result<()> { + let owner = self.owner_of(id).ok_or(Error::TokenNotFound)?; + if owner != *from { + return Err(Error::NotOwner); + } + + // Clear approval for this specific token + self.token_approvals.remove(id); + + self.remove_token_from(from, id)?; + self.add_token_to(to, id)?; + + self.env().emit_event(Transfer { + from: Some(*from), + to: Some(*to), + id, + }); + + Ok(()) + } + } + + #[cfg(test)] + mod tests { + use super::*; + + #[ink::test] + fn mint_works() { + let mut contract = Erc721::new(); + let alice = H160::from([0x01; 20]); + + // Mocking call from Alice (in unit tests default caller is usually same, + // but for clarity we assume Alice calls this implicitly in this mock env) + + assert_eq!(contract.mint(1), Ok(())); + assert_eq!(contract.owner_of(1), Some(H160::default())); + } + + #[ink::test] + fn transfer_works() { + let mut contract = Erc721::new(); + // Default account mints ID 1 + assert_eq!(contract.mint(1), Ok(())); + + let bob = H160::from([0x02; 20]); + + // Default account transfers ID 1 to Bob + assert_eq!(contract.transfer(bob, 1), Ok(())); + + // Check Bob is owner + assert_eq!(contract.owner_of(1), Some(bob)); + // Check default account balance decreased + assert_eq!(contract.balance_of(H160::default()), 0); + } + } +} diff --git a/erc721-v6/screenshots/erc721-build.JPG b/erc721-v6/screenshots/erc721-build.JPG new file mode 100644 index 0000000000000000000000000000000000000000..aae7ef284ac8a8272158757a474220e4995df4ee GIT binary patch literal 19539 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 literal 0 HcmV?d00001 From 41f0f7695eb1c9cce63f30bb1b8a2914ea43a063 Mon Sep 17 00:00:00 2001 From: Alhibb <63309522+Alhibb@users.noreply.github.com> Date: Mon, 24 Nov 2025 10:44:14 +0100 Subject: [PATCH 6/7] erc1155-v6 --- erc1155-v6/Cargo.toml | 25 +++ erc1155-v6/README.md | 132 +++++++++++ erc1155-v6/lib.rs | 271 +++++++++++++++++++++++ erc1155-v6/screenshots/erc1155-build.JPG | Bin 0 -> 20757 bytes erc1155-v6/screenshots/erc1155-test.JPG | Bin 0 -> 30038 bytes 5 files changed, 428 insertions(+) create mode 100644 erc1155-v6/Cargo.toml create mode 100644 erc1155-v6/README.md create mode 100644 erc1155-v6/lib.rs create mode 100644 erc1155-v6/screenshots/erc1155-build.JPG create mode 100644 erc1155-v6/screenshots/erc1155-test.JPG diff --git a/erc1155-v6/Cargo.toml b/erc1155-v6/Cargo.toml new file mode 100644 index 00000000..8d198ee0 --- /dev/null +++ b/erc1155-v6/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "erc1155" +version = "0.1.0" +authors = ["Use Ink "] +edition = "2021" + +[dependencies] +ink = { version = "6.0.0-beta", default-features = false } +scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } +scale-info = { version = "2.6", default-features = false, features = ["derive"], optional = true } + +[dev-dependencies] +ink_e2e = { version = "6.0.0-beta" } + +[lib] +path = "lib.rs" + +[features] +default = ["std"] +std = [ + "ink/std", + "scale/std", + "scale-info/std", +] +ink-as-dependency = [] diff --git a/erc1155-v6/README.md b/erc1155-v6/README.md new file mode 100644 index 00000000..3c8f1bf7 --- /dev/null +++ b/erc1155-v6/README.md @@ -0,0 +1,132 @@ +# ERC-1155 Multi-Token Standard (ink! v6) + +This project implements the ERC-1155 standard using the ink! v6 framework for the PolkaVM RISC-V architecture. + +ERC-1155 is known as the "Multi-Token Standard." Unlike ERC-20 (which requires a new contract for every new currency) or ERC-721 (which tracks unique items individually), ERC-1155 can manage any number of fungible and non-fungible token types within a single smart contract. This makes it the industry standard for gaming and complex financial applications. + +## Project Structure + +- **Cargo.toml**: The configuration file. It targets `ink` version `6.0.0-beta` and includes the `parity-scale-codec` for data encoding. +- **lib.rs**: The source code containing the hybrid storage logic and batch transfer mechanisms. + +## Prerequisites + +To build this contract, you must have the ink! v6 toolchain installed: + +1. Add the Rust source code: + ```bash + rustup component add rust-src + ``` + +2. Install the contract compiler (Beta): + ```bash + cargo install --force --locked --version 6.0.0-beta cargo-contract + ``` + +## Building the Contract + +Compile the source code into a deployable package: + +```bash +cargo contract build +``` + +Artifacts generated in `target/ink/`: +- **erc1155.contract**: The deployment bundle. +- **erc1155.polkavm**: The raw RISC-V bytecode. +- **erc1155.json**: The ABI metadata. + +## Architectural Concepts + +### 1. Hybrid Storage +The core difference between this and previous standards is the Storage Key. +- ERC-20 Maps: `User Address -> Balance` +- ERC-721 Maps: `Token ID -> Owner Address` +- **ERC-1155 Maps: `(User Address, Token ID) -> Balance`** + +This allows a single user to hold a balance of "100" for Token ID #1 (e.g., Gold Coins) and a balance of "1" for Token ID #2 (e.g., a Unique Sword) simultaneously in the same map. + +### 2. Batch Operations +In older standards, if you wanted to send a sword, a shield, and some gold to a friend, you had to make 3 separate transactions. In ERC-1155, you can send all of them in a single transaction using "Batch Transfer." This significantly reduces gas costs and blockchain congestion. + +## Function Reference + +### Read-Only Functions + +#### `balance_of(owner: H160, id: TokenId) -> Balance` +Returns the amount of tokens of a specific `id` owned by the `owner`. +- If the token is Fungible (like currency), this returns the wallet balance. +- If the token is an NFT, this returns `1` if they own it, or `0` if they don't. + +#### `balance_of_batch(owners: Vec, ids: Vec) -> Result>` +Allows querying multiple balances in a single call. +- **Input**: A list of owners and a list of IDs. +- **Output**: A list of balances corresponding to the inputs. +- **Constraint**: The length of `owners` and `ids` must match. + +#### `is_approved_for_all(owner: H160, operator: H160) -> bool` +Checks if an `operator` (e.g., a Marketplace contract or a Game server) is authorized to manage *all* assets belonging to `owner`. + +--- + +### State-Changing Functions (Write) + +#### `mint(id: TokenId, amount: Balance)` +Creates new tokens. +- **id**: The identifier of the token type (e.g., `1` for Gold, `2` for Silver). +- **amount**: How many to create. +- **Effect**: Increases the balance of the caller and emits a `TransferSingle` event (from `None` to Caller). + +#### `set_approval_for_all(operator: H160, approved: bool)` +Grants or revokes permission for a third-party `operator` to manage the caller's tokens. +- **True**: Grants permission. The operator can now transfer any of the caller's tokens. +- **False**: Revokes permission. +- **Note**: Unlike ERC-20, ERC-1155 typically does not support "approving" a specific amount of a specific token. It uses a "trust the operator with everything" model, which is more efficient for games. + +#### `safe_transfer_from(from: H160, to: H160, id: TokenId, amount: Balance)` +Transfers a specific amount of a specific token type. +- **Checks**: + 1. Is the caller the `from` account OR an approved operator? + 2. Does the `from` account have enough balance? +- **Effect**: Deducts balance from sender, adds to receiver, and emits `TransferSingle`. + +#### `safe_batch_transfer_from(from: H160, to: H160, ids: Vec, amounts: Vec)` +The signature feature of ERC-1155. Transfers multiple token types at once. +- **ids**: A list of Token IDs to move (e.g., `[1, 2, 5]`). +- **amounts**: A list of amounts matching the IDs (e.g., `[100, 1, 50]`). +- **Constraint**: `ids.len()` must equal `amounts.len()`. +- **Effect**: Updates all balances atomically. If any part of the transfer fails (e.g., insufficient balance for the 3rd item), the *entire* transaction fails. Emits `TransferBatch`. + +## Events + +### `TransferSingle` +Emitted when a single token type is transferred. +- Contains: `operator`, `from`, `to`, `id`, `value`. + +### `TransferBatch` +Emitted when a batch transfer occurs. +- Contains: `operator`, `from`, `to`, `ids` (list), `values` (list). +- This is highly efficient for indexers, as they only need to process one event for multiple asset movements. + +### `ApprovalForAll` +Emitted when an operator is approved or revoked. + +## Error Handling + +The contract returns a `Result` type with the following custom errors: +- **NotOwner**: Caller tries to transfer tokens they don't control. +- **NotApproved**: Caller is not the owner and not an authorized operator. +- **InsufficientBalance**: Sender tries to send more than they have. +- **BatchSizeMismatch**: Passed arrays (IDs and Amounts) have different lengths. + +## Testing + +Unit tests are included to verify the logic. + +```bash +cargo test +``` + +These tests confirm: +- **Minting**: Correctly updates balances. +- **Batch Transfers**: Successfully moves multiple assets and updates multiple storage entries in one go. diff --git a/erc1155-v6/lib.rs b/erc1155-v6/lib.rs new file mode 100644 index 00000000..28629439 --- /dev/null +++ b/erc1155-v6/lib.rs @@ -0,0 +1,271 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +mod erc1155 { + use ink::storage::Mapping; + use ink::primitives::H160; + use ink::prelude::vec::Vec; // We need Vectors for batch operations + + pub type TokenId = u32; + + #[derive(Debug, PartialEq, Eq, scale::Encode, scale::Decode)] + #[cfg_attr(feature = "std", derive(scale_info::TypeInfo))] + pub enum Error { + NotOwner, + NotApproved, + InsufficientBalance, + BatchSizeMismatch, // Arrays must have same length + } + + pub type Result = core::result::Result; + + // --- Events --- + + #[ink(event)] + pub struct TransferSingle { + #[ink(topic)] + operator: H160, + #[ink(topic)] + from: Option, + #[ink(topic)] + to: Option, + id: TokenId, + value: Balance, + } + + #[ink(event)] + pub struct ApprovalForAll { + #[ink(topic)] + owner: H160, + #[ink(topic)] + operator: H160, + approved: bool, + } + + #[ink(event)] + pub struct TransferBatch { + #[ink(topic)] + operator: H160, + #[ink(topic)] + from: Option, + #[ink(topic)] + to: Option, + ids: Vec, + values: Vec, + } + + // --- Storage --- + + #[ink(storage)] + pub struct Erc1155 { + /// Maps (Owner, TokenId) -> Balance + balances: Mapping<(H160, TokenId), Balance>, + /// Maps (Owner, Operator) -> Approved? + operator_approvals: Mapping<(H160, H160), bool>, + } + + impl Erc1155 { + #[ink(constructor)] + pub fn new() -> Self { + Self { + balances: Mapping::default(), + operator_approvals: Mapping::default(), + } + } + + /// Mints `amount` of token `id` to the caller. + #[ink(message)] + pub fn mint(&mut self, id: TokenId, amount: Balance) -> Result<()> { + let caller = self.env().caller(); + self.mint_token(&caller, id, amount)?; + Ok(()) + } + + /// Returns the balance of `owner` for token `id`. + #[ink(message)] + pub fn balance_of(&self, owner: H160, id: TokenId) -> Balance { + self.balances.get((owner, id)).unwrap_or(0) + } + + /// Returns balances for a list of owners and ids. + #[ink(message)] + pub fn balance_of_batch( + &self, + owners: Vec, + ids: Vec, + ) -> Result> { + if owners.len() != ids.len() { + return Err(Error::BatchSizeMismatch); + } + + let mut output = Vec::new(); + for i in 0..owners.len() { + output.push(self.balance_of(owners[i], ids[i])); + } + Ok(output) + } + + /// Enables or disables an operator to manage all of caller's tokens. + #[ink(message)] + pub fn set_approval_for_all(&mut self, operator: H160, approved: bool) -> Result<()> { + let caller = self.env().caller(); + self.operator_approvals.insert((caller, operator), &approved); + + self.env().emit_event(ApprovalForAll { + owner: caller, + operator, + approved, + }); + Ok(()) + } + + /// Checks if an operator is approved. + #[ink(message)] + pub fn is_approved_for_all(&self, owner: H160, operator: H160) -> bool { + self.operator_approvals.get((owner, operator)).unwrap_or(false) + } + + /// Transfers `amount` of token `id` from `from` to `to`. + #[ink(message)] + pub fn safe_transfer_from( + &mut self, + from: H160, + to: H160, + id: TokenId, + amount: Balance, + ) -> Result<()> { + let caller = self.env().caller(); + + // Auth check: Caller must be Owner OR Approved Operator + if caller != from && !self.is_approved_for_all(from, caller) { + return Err(Error::NotApproved); + } + + self.transfer_token_from(&from, &to, id, amount)?; + + self.env().emit_event(TransferSingle { + operator: caller, + from: Some(from), + to: Some(to), + id, + value: amount, + }); + + Ok(()) + } + + /// Transfers multiple token types in a single transaction (Batch). + #[ink(message)] + pub fn safe_batch_transfer_from( + &mut self, + from: H160, + to: H160, + ids: Vec, + amounts: Vec, + ) -> Result<()> { + let caller = self.env().caller(); + + if caller != from && !self.is_approved_for_all(from, caller) { + return Err(Error::NotApproved); + } + if ids.len() != amounts.len() { + return Err(Error::BatchSizeMismatch); + } + + // Loop through all tokens and transfer them one by one + for i in 0..ids.len() { + self.transfer_token_from(&from, &to, ids[i], amounts[i])?; + } + + self.env().emit_event(TransferBatch { + operator: caller, + from: Some(from), + to: Some(to), + ids, + values: amounts, + }); + + Ok(()) + } + + // --- Helpers --- + + fn mint_token(&mut self, to: &H160, id: TokenId, amount: Balance) -> Result<()> { + let balance = self.balance_of(*to, id); + self.balances.insert((*to, id), &(balance + amount)); + + self.env().emit_event(TransferSingle { + operator: self.env().caller(), + from: None, + to: Some(*to), + id, + value: amount, + }); + Ok(()) + } + + fn transfer_token_from( + &mut self, + from: &H160, + to: &H160, + id: TokenId, + amount: Balance, + ) -> Result<()> { + let from_balance = self.balance_of(*from, id); + + if from_balance < amount { + return Err(Error::InsufficientBalance); + } + + // Decrease Sender + self.balances.insert((*from, id), &(from_balance - amount)); + + // Increase Receiver + let to_balance = self.balance_of(*to, id); + self.balances.insert((*to, id), &(to_balance + amount)); + + Ok(()) + } + } + + #[cfg(test)] + mod tests { + use super::*; + + #[ink::test] + fn minting_works() { + let mut contract = Erc1155::new(); + let alice = H160::from([0x01; 20]); + + // Default caller mints 100 units of Token ID 1 + assert_eq!(contract.mint(1, 100), Ok(())); + + // Check balance + assert_eq!(contract.balance_of(H160::default(), 1), 100); + // Check Token ID 2 is still 0 + assert_eq!(contract.balance_of(H160::default(), 2), 0); + } + + #[ink::test] + fn batch_transfer_works() { + let mut contract = Erc1155::new(); + let bob = H160::from([0x02; 20]); + + // Mint 100 of ID 1, and 50 of ID 2 + let _ = contract.mint(1, 100); + let _ = contract.mint(2, 50); + + // Send 10 of ID 1 AND 5 of ID 2 to Bob in one go + assert_eq!(contract.safe_batch_transfer_from( + H160::default(), + bob, + vec![1, 2], + vec![10, 5] + ), Ok(())); + + // Check Bob's balances + assert_eq!(contract.balance_of(bob, 1), 10); + assert_eq!(contract.balance_of(bob, 2), 5); + } + } +} diff --git a/erc1155-v6/screenshots/erc1155-build.JPG b/erc1155-v6/screenshots/erc1155-build.JPG new file mode 100644 index 0000000000000000000000000000000000000000..69dd104df60624d665edc989b25a35a3b0f5c956 GIT binary patch literal 20757 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 XU3|<&g73eNP5(At{eSNEZ;k#Js&B*| literal 0 HcmV?d00001 diff --git a/erc1155-v6/screenshots/erc1155-test.JPG b/erc1155-v6/screenshots/erc1155-test.JPG new file mode 100644 index 0000000000000000000000000000000000000000..42ba7c47c6da181e1f4a2791202f28a626562b89 GIT binary patch literal 30038 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 literal 0 HcmV?d00001 From 2063c3c1bb555ff7d3ec977b8ec9d6209202c090 Mon Sep 17 00:00:00 2001 From: Alhibb <63309522+Alhibb@users.noreply.github.com> Date: Thu, 27 Nov 2025 20:26:57 +0100 Subject: [PATCH 7/7] Secure Poll Contract --- erc1155-v6/README.md | 132 --------- erc1155-v6/lib.rs | 271 ------------------- erc1155-v6/screenshots/erc1155-build.JPG | Bin 20757 -> 0 bytes erc1155-v6/screenshots/erc1155-test.JPG | Bin 30038 -> 0 bytes erc20-v6/Cargo.toml | 28 -- erc20-v6/README.md | 109 -------- erc20-v6/lib.rs | 186 ------------- erc20-v6/screenshots/erc20-v6_test.JPG | Bin 29779 -> 0 bytes erc20-v6/screenshots/erc20_v6_build.JPG | Bin 34098 -> 0 bytes erc721-v6/Cargo.toml | 27 -- erc721-v6/README.md | 106 -------- erc721-v6/lib.rs | 282 -------------------- erc721-v6/screenshots/erc721-build.JPG | Bin 19539 -> 0 bytes erc721-v6/screenshots/erc721-test.JPG | Bin 25154 -> 0 bytes flipper-v6/Cargo.toml | 21 -- flipper-v6/README.md | 148 ---------- flipper-v6/lib.rs | 50 ---- flipper-v6/screenshots/build-result.JPG | Bin 32981 -> 0 bytes flipper-v6/screenshots/test-result.JPG | Bin 30096 -> 0 bytes incrementer-v6/Cargo.toml | 21 -- incrementer-v6/README.md | 116 -------- incrementer-v6/lib.rs | 103 ------- incrementer-v6/screenshots/build-result.JPG | Bin 35733 -> 0 bytes incrementer-v6/screenshots/contract.JPG | Bin 23688 -> 0 bytes incrementer-v6/screenshots/test-result.JPG | Bin 29930 -> 0 bytes {erc1155-v6 => poll-v6}/Cargo.toml | 2 +- poll-v6/README.md | 239 +++++++++++++++++ poll-v6/images/get_results.png | Bin 0 -> 92609 bytes poll-v6/images/poll-build.JPG | Bin 0 -> 21632 bytes poll-v6/images/poll-test.JPG | Bin 0 -> 16371 bytes poll-v6/images/upload_success.png | Bin 0 -> 132595 bytes poll-v6/lib.rs | 175 ++++++++++++ 32 files changed, 415 insertions(+), 1601 deletions(-) delete mode 100644 erc1155-v6/README.md delete mode 100644 erc1155-v6/lib.rs delete mode 100644 erc1155-v6/screenshots/erc1155-build.JPG delete mode 100644 erc1155-v6/screenshots/erc1155-test.JPG delete mode 100644 erc20-v6/Cargo.toml delete mode 100644 erc20-v6/README.md delete mode 100644 erc20-v6/lib.rs delete mode 100644 erc20-v6/screenshots/erc20-v6_test.JPG delete mode 100644 erc20-v6/screenshots/erc20_v6_build.JPG delete mode 100644 erc721-v6/Cargo.toml delete mode 100644 erc721-v6/README.md delete mode 100644 erc721-v6/lib.rs delete mode 100644 erc721-v6/screenshots/erc721-build.JPG delete mode 100644 erc721-v6/screenshots/erc721-test.JPG delete mode 100644 flipper-v6/Cargo.toml delete mode 100644 flipper-v6/README.md delete mode 100644 flipper-v6/lib.rs delete mode 100644 flipper-v6/screenshots/build-result.JPG delete mode 100644 flipper-v6/screenshots/test-result.JPG delete mode 100644 incrementer-v6/Cargo.toml delete mode 100644 incrementer-v6/README.md delete mode 100644 incrementer-v6/lib.rs delete mode 100644 incrementer-v6/screenshots/build-result.JPG delete mode 100644 incrementer-v6/screenshots/contract.JPG delete mode 100644 incrementer-v6/screenshots/test-result.JPG rename {erc1155-v6 => poll-v6}/Cargo.toml (97%) create mode 100644 poll-v6/README.md create mode 100644 poll-v6/images/get_results.png create mode 100644 poll-v6/images/poll-build.JPG create mode 100644 poll-v6/images/poll-test.JPG create mode 100644 poll-v6/images/upload_success.png create mode 100644 poll-v6/lib.rs diff --git a/erc1155-v6/README.md b/erc1155-v6/README.md deleted file mode 100644 index 3c8f1bf7..00000000 --- a/erc1155-v6/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# ERC-1155 Multi-Token Standard (ink! v6) - -This project implements the ERC-1155 standard using the ink! v6 framework for the PolkaVM RISC-V architecture. - -ERC-1155 is known as the "Multi-Token Standard." Unlike ERC-20 (which requires a new contract for every new currency) or ERC-721 (which tracks unique items individually), ERC-1155 can manage any number of fungible and non-fungible token types within a single smart contract. This makes it the industry standard for gaming and complex financial applications. - -## Project Structure - -- **Cargo.toml**: The configuration file. It targets `ink` version `6.0.0-beta` and includes the `parity-scale-codec` for data encoding. -- **lib.rs**: The source code containing the hybrid storage logic and batch transfer mechanisms. - -## Prerequisites - -To build this contract, you must have the ink! v6 toolchain installed: - -1. Add the Rust source code: - ```bash - rustup component add rust-src - ``` - -2. Install the contract compiler (Beta): - ```bash - cargo install --force --locked --version 6.0.0-beta cargo-contract - ``` - -## Building the Contract - -Compile the source code into a deployable package: - -```bash -cargo contract build -``` - -Artifacts generated in `target/ink/`: -- **erc1155.contract**: The deployment bundle. -- **erc1155.polkavm**: The raw RISC-V bytecode. -- **erc1155.json**: The ABI metadata. - -## Architectural Concepts - -### 1. Hybrid Storage -The core difference between this and previous standards is the Storage Key. -- ERC-20 Maps: `User Address -> Balance` -- ERC-721 Maps: `Token ID -> Owner Address` -- **ERC-1155 Maps: `(User Address, Token ID) -> Balance`** - -This allows a single user to hold a balance of "100" for Token ID #1 (e.g., Gold Coins) and a balance of "1" for Token ID #2 (e.g., a Unique Sword) simultaneously in the same map. - -### 2. Batch Operations -In older standards, if you wanted to send a sword, a shield, and some gold to a friend, you had to make 3 separate transactions. In ERC-1155, you can send all of them in a single transaction using "Batch Transfer." This significantly reduces gas costs and blockchain congestion. - -## Function Reference - -### Read-Only Functions - -#### `balance_of(owner: H160, id: TokenId) -> Balance` -Returns the amount of tokens of a specific `id` owned by the `owner`. -- If the token is Fungible (like currency), this returns the wallet balance. -- If the token is an NFT, this returns `1` if they own it, or `0` if they don't. - -#### `balance_of_batch(owners: Vec, ids: Vec) -> Result>` -Allows querying multiple balances in a single call. -- **Input**: A list of owners and a list of IDs. -- **Output**: A list of balances corresponding to the inputs. -- **Constraint**: The length of `owners` and `ids` must match. - -#### `is_approved_for_all(owner: H160, operator: H160) -> bool` -Checks if an `operator` (e.g., a Marketplace contract or a Game server) is authorized to manage *all* assets belonging to `owner`. - ---- - -### State-Changing Functions (Write) - -#### `mint(id: TokenId, amount: Balance)` -Creates new tokens. -- **id**: The identifier of the token type (e.g., `1` for Gold, `2` for Silver). -- **amount**: How many to create. -- **Effect**: Increases the balance of the caller and emits a `TransferSingle` event (from `None` to Caller). - -#### `set_approval_for_all(operator: H160, approved: bool)` -Grants or revokes permission for a third-party `operator` to manage the caller's tokens. -- **True**: Grants permission. The operator can now transfer any of the caller's tokens. -- **False**: Revokes permission. -- **Note**: Unlike ERC-20, ERC-1155 typically does not support "approving" a specific amount of a specific token. It uses a "trust the operator with everything" model, which is more efficient for games. - -#### `safe_transfer_from(from: H160, to: H160, id: TokenId, amount: Balance)` -Transfers a specific amount of a specific token type. -- **Checks**: - 1. Is the caller the `from` account OR an approved operator? - 2. Does the `from` account have enough balance? -- **Effect**: Deducts balance from sender, adds to receiver, and emits `TransferSingle`. - -#### `safe_batch_transfer_from(from: H160, to: H160, ids: Vec, amounts: Vec)` -The signature feature of ERC-1155. Transfers multiple token types at once. -- **ids**: A list of Token IDs to move (e.g., `[1, 2, 5]`). -- **amounts**: A list of amounts matching the IDs (e.g., `[100, 1, 50]`). -- **Constraint**: `ids.len()` must equal `amounts.len()`. -- **Effect**: Updates all balances atomically. If any part of the transfer fails (e.g., insufficient balance for the 3rd item), the *entire* transaction fails. Emits `TransferBatch`. - -## Events - -### `TransferSingle` -Emitted when a single token type is transferred. -- Contains: `operator`, `from`, `to`, `id`, `value`. - -### `TransferBatch` -Emitted when a batch transfer occurs. -- Contains: `operator`, `from`, `to`, `ids` (list), `values` (list). -- This is highly efficient for indexers, as they only need to process one event for multiple asset movements. - -### `ApprovalForAll` -Emitted when an operator is approved or revoked. - -## Error Handling - -The contract returns a `Result` type with the following custom errors: -- **NotOwner**: Caller tries to transfer tokens they don't control. -- **NotApproved**: Caller is not the owner and not an authorized operator. -- **InsufficientBalance**: Sender tries to send more than they have. -- **BatchSizeMismatch**: Passed arrays (IDs and Amounts) have different lengths. - -## Testing - -Unit tests are included to verify the logic. - -```bash -cargo test -``` - -These tests confirm: -- **Minting**: Correctly updates balances. -- **Batch Transfers**: Successfully moves multiple assets and updates multiple storage entries in one go. diff --git a/erc1155-v6/lib.rs b/erc1155-v6/lib.rs deleted file mode 100644 index 28629439..00000000 --- a/erc1155-v6/lib.rs +++ /dev/null @@ -1,271 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std, no_main)] - -#[ink::contract] -mod erc1155 { - use ink::storage::Mapping; - use ink::primitives::H160; - use ink::prelude::vec::Vec; // We need Vectors for batch operations - - pub type TokenId = u32; - - #[derive(Debug, PartialEq, Eq, scale::Encode, scale::Decode)] - #[cfg_attr(feature = "std", derive(scale_info::TypeInfo))] - pub enum Error { - NotOwner, - NotApproved, - InsufficientBalance, - BatchSizeMismatch, // Arrays must have same length - } - - pub type Result = core::result::Result; - - // --- Events --- - - #[ink(event)] - pub struct TransferSingle { - #[ink(topic)] - operator: H160, - #[ink(topic)] - from: Option, - #[ink(topic)] - to: Option, - id: TokenId, - value: Balance, - } - - #[ink(event)] - pub struct ApprovalForAll { - #[ink(topic)] - owner: H160, - #[ink(topic)] - operator: H160, - approved: bool, - } - - #[ink(event)] - pub struct TransferBatch { - #[ink(topic)] - operator: H160, - #[ink(topic)] - from: Option, - #[ink(topic)] - to: Option, - ids: Vec, - values: Vec, - } - - // --- Storage --- - - #[ink(storage)] - pub struct Erc1155 { - /// Maps (Owner, TokenId) -> Balance - balances: Mapping<(H160, TokenId), Balance>, - /// Maps (Owner, Operator) -> Approved? - operator_approvals: Mapping<(H160, H160), bool>, - } - - impl Erc1155 { - #[ink(constructor)] - pub fn new() -> Self { - Self { - balances: Mapping::default(), - operator_approvals: Mapping::default(), - } - } - - /// Mints `amount` of token `id` to the caller. - #[ink(message)] - pub fn mint(&mut self, id: TokenId, amount: Balance) -> Result<()> { - let caller = self.env().caller(); - self.mint_token(&caller, id, amount)?; - Ok(()) - } - - /// Returns the balance of `owner` for token `id`. - #[ink(message)] - pub fn balance_of(&self, owner: H160, id: TokenId) -> Balance { - self.balances.get((owner, id)).unwrap_or(0) - } - - /// Returns balances for a list of owners and ids. - #[ink(message)] - pub fn balance_of_batch( - &self, - owners: Vec, - ids: Vec, - ) -> Result> { - if owners.len() != ids.len() { - return Err(Error::BatchSizeMismatch); - } - - let mut output = Vec::new(); - for i in 0..owners.len() { - output.push(self.balance_of(owners[i], ids[i])); - } - Ok(output) - } - - /// Enables or disables an operator to manage all of caller's tokens. - #[ink(message)] - pub fn set_approval_for_all(&mut self, operator: H160, approved: bool) -> Result<()> { - let caller = self.env().caller(); - self.operator_approvals.insert((caller, operator), &approved); - - self.env().emit_event(ApprovalForAll { - owner: caller, - operator, - approved, - }); - Ok(()) - } - - /// Checks if an operator is approved. - #[ink(message)] - pub fn is_approved_for_all(&self, owner: H160, operator: H160) -> bool { - self.operator_approvals.get((owner, operator)).unwrap_or(false) - } - - /// Transfers `amount` of token `id` from `from` to `to`. - #[ink(message)] - pub fn safe_transfer_from( - &mut self, - from: H160, - to: H160, - id: TokenId, - amount: Balance, - ) -> Result<()> { - let caller = self.env().caller(); - - // Auth check: Caller must be Owner OR Approved Operator - if caller != from && !self.is_approved_for_all(from, caller) { - return Err(Error::NotApproved); - } - - self.transfer_token_from(&from, &to, id, amount)?; - - self.env().emit_event(TransferSingle { - operator: caller, - from: Some(from), - to: Some(to), - id, - value: amount, - }); - - Ok(()) - } - - /// Transfers multiple token types in a single transaction (Batch). - #[ink(message)] - pub fn safe_batch_transfer_from( - &mut self, - from: H160, - to: H160, - ids: Vec, - amounts: Vec, - ) -> Result<()> { - let caller = self.env().caller(); - - if caller != from && !self.is_approved_for_all(from, caller) { - return Err(Error::NotApproved); - } - if ids.len() != amounts.len() { - return Err(Error::BatchSizeMismatch); - } - - // Loop through all tokens and transfer them one by one - for i in 0..ids.len() { - self.transfer_token_from(&from, &to, ids[i], amounts[i])?; - } - - self.env().emit_event(TransferBatch { - operator: caller, - from: Some(from), - to: Some(to), - ids, - values: amounts, - }); - - Ok(()) - } - - // --- Helpers --- - - fn mint_token(&mut self, to: &H160, id: TokenId, amount: Balance) -> Result<()> { - let balance = self.balance_of(*to, id); - self.balances.insert((*to, id), &(balance + amount)); - - self.env().emit_event(TransferSingle { - operator: self.env().caller(), - from: None, - to: Some(*to), - id, - value: amount, - }); - Ok(()) - } - - fn transfer_token_from( - &mut self, - from: &H160, - to: &H160, - id: TokenId, - amount: Balance, - ) -> Result<()> { - let from_balance = self.balance_of(*from, id); - - if from_balance < amount { - return Err(Error::InsufficientBalance); - } - - // Decrease Sender - self.balances.insert((*from, id), &(from_balance - amount)); - - // Increase Receiver - let to_balance = self.balance_of(*to, id); - self.balances.insert((*to, id), &(to_balance + amount)); - - Ok(()) - } - } - - #[cfg(test)] - mod tests { - use super::*; - - #[ink::test] - fn minting_works() { - let mut contract = Erc1155::new(); - let alice = H160::from([0x01; 20]); - - // Default caller mints 100 units of Token ID 1 - assert_eq!(contract.mint(1, 100), Ok(())); - - // Check balance - assert_eq!(contract.balance_of(H160::default(), 1), 100); - // Check Token ID 2 is still 0 - assert_eq!(contract.balance_of(H160::default(), 2), 0); - } - - #[ink::test] - fn batch_transfer_works() { - let mut contract = Erc1155::new(); - let bob = H160::from([0x02; 20]); - - // Mint 100 of ID 1, and 50 of ID 2 - let _ = contract.mint(1, 100); - let _ = contract.mint(2, 50); - - // Send 10 of ID 1 AND 5 of ID 2 to Bob in one go - assert_eq!(contract.safe_batch_transfer_from( - H160::default(), - bob, - vec![1, 2], - vec![10, 5] - ), Ok(())); - - // Check Bob's balances - assert_eq!(contract.balance_of(bob, 1), 10); - assert_eq!(contract.balance_of(bob, 2), 5); - } - } -} diff --git a/erc1155-v6/screenshots/erc1155-build.JPG b/erc1155-v6/screenshots/erc1155-build.JPG deleted file mode 100644 index 69dd104df60624d665edc989b25a35a3b0f5c956..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20757 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 XU3|<&g73eNP5(At{eSNEZ;k#Js&B*| diff --git a/erc1155-v6/screenshots/erc1155-test.JPG b/erc1155-v6/screenshots/erc1155-test.JPG deleted file mode 100644 index 42ba7c47c6da181e1f4a2791202f28a626562b89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30038 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 diff --git a/erc20-v6/Cargo.toml b/erc20-v6/Cargo.toml deleted file mode 100644 index b90ba787..00000000 --- a/erc20-v6/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "erc20" -version = "0.1.0" -authors = ["Use Ink "] -edition = "2021" - -[dependencies] -ink = { version = "6.0.0-beta", default-features = false } - -# We need scale/scale-info for custom Errors and Events -# We point "scale" to the actual crate "parity-scale-codec" -scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } -scale-info = { version = "2.6", default-features = false, features = ["derive"], optional = true } - -[dev-dependencies] -ink_e2e = { version = "6.0.0-beta" } - -[lib] -path = "lib.rs" - -[features] -default = ["std"] -std = [ - "ink/std", - "scale/std", - "scale-info/std", -] -ink-as-dependency = [] \ No newline at end of file diff --git a/erc20-v6/README.md b/erc20-v6/README.md deleted file mode 100644 index 1ae6c1e0..00000000 --- a/erc20-v6/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# ERC-20 Token Smart Contract (ink! v6) - -This project implements a standard Fungible Token (ERC-20) using the ink! v6 framework. It is designed to run on the PolkaVM RISC-V architecture, replacing the older WebAssembly (Wasm) execution environment. - -This contract implements the industry-standard logic found in major cryptocurrencies, allowing for minting, transferring, and delegated spending of tokens. - -## Project Structure - -- **Cargo.toml**: The configuration file. It specifies the dependencies, strictly targeting `ink` version `6.0.0-beta` and the `parity-scale-codec` for data encoding. -- **lib.rs**: The source code containing the contract logic, storage layout, error handling, and event definitions. - -## Prerequisites - -To build and run this contract, your environment must support the ink! v6 toolchain. If you have not configured this yet, execute the following commands in your terminal: - -1. Add the Rust source code (required for compiling the standard library for RISC-V): - ```bash - rustup component add rust-src - ``` - -2. Install the specific Beta version of the contract compiler: - ```bash - cargo install --force --locked --version 6.0.0-beta cargo-contract - ``` - -## Building the Contract - -To compile the source code into a deployable package: - -```bash -cargo contract build -``` - -Upon success, the following artifacts will be generated in the `target/ink/` directory: -- **erc20.contract**: The bundle containing both the RISC-V bytecode and the metadata. This is the file you upload to the blockchain. -- **erc20.polkavm**: The raw compiled RISC-V machine code. -- **erc20.json**: The ABI (Application Binary Interface) describing the methods and types used in the contract. - -## Testing - -Before deploying, it is recommended to run the unit tests included in the library. These tests simulate blockchain interaction to verify logic. - -```bash -cargo test -``` - -## Code Overview - -### 1. Address Format (H160) -In ink! v6, the standard address format has shifted to `H160` (20 bytes), which aligns with the Ethereum standard. This ensures compatibility with the underlying PolkaVM architecture. - -### 2. Storage Layout -The contract persists data using the `Mapping` type, which functions like a key-value database: -- **balances**: Maps an Address (`H160`) to a Balance (`u128`). -- **allowances**: Uses a composite key of `(Owner, Spender)` mapped to a Balance. This tracks how many tokens a specific third party is allowed to withdraw from an owner's account. - -### 3. Events -Events are signals emitted by the smart contract that are indexed by the blockchain. External applications (dApps) listen to these events to update their user interfaces. -- **Transfer**: Emitted when tokens are moved, minted, or burned. -- **Approval**: Emitted when an owner authorizes a spender. - -### 4. Error Handling -Instead of using `panic!`, which crashes the contract execution, this implementation returns a `Result` type. This allows the contract to fail gracefully with specific error codes: -- **InsufficientBalance**: returned when a user tries to send more than they have. -- **InsufficientAllowance**: returned when a spender tries to withdraw more than they were authorized to use. - -### 5. The Allowance Mechanism -The ERC-20 standard includes a workflow for delegated spending. This is commonly used by Decentralized Exchanges (DEXs): -1. **Approve**: User A calls `approve(User B, 100)`. This gives User B permission to spend 100 tokens. -2. **Transfer From**: User B calls `transfer_from(User A, User C, 100)`. The contract checks the allowance, moves the funds from A to C, and reduces the allowance. - -## UI Integration Guide - -To interact with this contract using a graphical interface (such as the Contracts UI or Polkadot.js Apps), follow these steps: - -### Phase 1: Uploading -1. Open your contract explorer or UI. -2. Select the option to "Upload New Contract". -3. Upload the `erc20.contract` file found in `target/ink/`. - -### Phase 2: Instantiation -Once uploaded, you must create an instance of the contract on the chain. -1. The UI will prompt you for the Constructor inputs. -2. **total_supply**: Enter the initial number of tokens to mint (e.g., `1000000`). -3. Sign and submit the transaction. -4. The contract is now live, and your account holds the total supply. - -### Phase 3: Interaction -You can now call the methods defined in the contract: - -**To Check Balance:** -1. Select the `balance_of` message. -2. Paste your address (or the address of another account). -3. Click "Read" to see the result. - -**To Transfer Tokens:** -1. Select the `transfer` message. -2. **to**: Enter the recipient's H160 address. -3. **value**: Enter the amount to send. -4. Sign and submit the transaction. - -**To Test Allowances:** -1. Use Account A to call `approve` with Account B's address and a value of `500`. -2. Switch to Account B. -3. Call `transfer_from`. - - **from**: Account A. - - **to**: Account C (or B). - - **value**: `500`. -4. The transaction should succeed, moving funds from A to the destination, initiated by B. diff --git a/erc20-v6/lib.rs b/erc20-v6/lib.rs deleted file mode 100644 index 0c73d7ba..00000000 --- a/erc20-v6/lib.rs +++ /dev/null @@ -1,186 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std, no_main)] - -#[ink::contract] -mod erc20 { - use ink::storage::Mapping; - use ink::primitives::H160; - - /// Custom error types for the contract. - #[derive(Debug, PartialEq, Eq, scale::Encode, scale::Decode)] - #[cfg_attr(feature = "std", derive(scale_info::TypeInfo))] - pub enum Error { - InsufficientBalance, - InsufficientAllowance, - } - - /// Result type returning either success or a custom Error. - pub type Result = core::result::Result; - - /// Event emitted when tokens are transferred. - #[ink(event)] - pub struct Transfer { - #[ink(topic)] - from: Option, - #[ink(topic)] - to: Option, - value: Balance, - } - - /// Event emitted when an approval is created. - #[ink(event)] - pub struct Approval { - #[ink(topic)] - owner: H160, - #[ink(topic)] - spender: H160, - value: Balance, - } - - #[ink(storage)] - pub struct Erc20 { - /// Total token supply in circulation. - total_supply: Balance, - /// Mapping from User Address (H160) to their Balance. - balances: Mapping, - /// Mapping from (Owner, Spender) to the Allowed Amount. - allowances: Mapping<(H160, H160), Balance>, - } - - impl Erc20 { - /// Constructor: Initializes the contract with a total supply. - /// The entire supply is initially assigned to the caller. - #[ink(constructor)] - pub fn new(total_supply: Balance) -> Self { - let mut balances = Mapping::default(); - let caller = Self::env().caller(); - - balances.insert(caller, &total_supply); - - Self::env().emit_event(Transfer { - from: None, - to: Some(caller), - value: total_supply, - }); - - Self { - total_supply, - balances, - allowances: Mapping::default(), - } - } - - /// Returns the total token supply. - #[ink(message)] - pub fn total_supply(&self) -> Balance { - self.total_supply - } - - /// Returns the balance of the specified account. - #[ink(message)] - pub fn balance_of(&self, owner: H160) -> Balance { - self.balances.get(owner).unwrap_or(0) - } - - /// Transfers tokens from the caller to the recipient. - #[ink(message)] - pub fn transfer(&mut self, to: H160, value: Balance) -> Result<()> { - let from = self.env().caller(); - self.transfer_from_to(&from, &to, value) - } - - /// Internal helper to execute valid transfers and emit events. - fn transfer_from_to( - &mut self, - from: &H160, - to: &H160, - value: Balance, - ) -> Result<()> { - let from_balance = self.balance_of(*from); - - if from_balance < value { - return Err(Error::InsufficientBalance); - } - - // Update balances - self.balances.insert(from, &(from_balance - value)); - let to_balance = self.balance_of(*to); - self.balances.insert(to, &(to_balance + value)); - - self.env().emit_event(Transfer { - from: Some(*from), - to: Some(*to), - value, - }); - - Ok(()) - } - - /// Approves a spender to transfer tokens on behalf of the caller. - #[ink(message)] - pub fn approve(&mut self, spender: H160, value: Balance) -> Result<()> { - let owner = self.env().caller(); - self.allowances.insert((owner, spender), &value); - - self.env().emit_event(Approval { - owner, - spender, - value, - }); - - Ok(()) - } - - /// Returns the remaining number of tokens that `spender` will be - /// allowed to spend on behalf of `owner`. - #[ink(message)] - pub fn allowance(&self, owner: H160, spender: H160) -> Balance { - self.allowances.get((owner, spender)).unwrap_or(0) - } - - /// Transfers tokens from `from` to `to` using the allowance mechanism. - #[ink(message)] - pub fn transfer_from( - &mut self, - from: H160, - to: H160, - value: Balance, - ) -> Result<()> { - let caller = self.env().caller(); - let allowance = self.allowance(from, caller); - - if allowance < value { - return Err(Error::InsufficientAllowance); - } - - self.allowances.insert((from, caller), &(allowance - value)); - self.transfer_from_to(&from, &to, value) - } - } - - #[cfg(test)] - mod tests { - use super::*; - - #[ink::test] - fn new_works() { - let contract = Erc20::new(1000); - assert_eq!(contract.total_supply(), 1000); - } - - #[ink::test] - fn transfer_works() { - let mut contract = Erc20::new(1000); - let bob = H160::from([0x01; 20]); - - assert_eq!(contract.transfer(bob, 100), Ok(())); - assert_eq!(contract.balance_of(bob), 100); - } - - #[ink::test] - fn transfer_fails_if_insufficient() { - let mut contract = Erc20::new(10); - let bob = H160::from([0x01; 20]); - assert_eq!(contract.transfer(bob, 20), Err(Error::InsufficientBalance)); - } - } -} diff --git a/erc20-v6/screenshots/erc20-v6_test.JPG b/erc20-v6/screenshots/erc20-v6_test.JPG deleted file mode 100644 index c6e089875adc8834d970af6c6ac50b8d82ceaada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29779 zcmeEt1yo$kwr1lHf(Ew`8iKn84@s~PG`PDp-Hkgz5?lg}yIZgzP2&W22-di}2M?Oz zzxU3)vu0+Ey|-q~n)S}<>aKH6o!a$%dzbC%`ZM!q1wi;-RzVhkf`S4tc{~AsR#8`E zJZ!B103{^=8vp>n2B4#e0Z<=fSO5UZ`w&|I`ePjB@uQxe@z*Z^9{@ld*rWN|^QVv3 zl8*sEv-kM**VF$v0MZ}i72dpgBmyG_?QcwyJTjIYgZ|HWEiCqLakN*0000d3ulT=M zMT!55$p2vVU*^Qe!zU=p%PY#qPtPMD$|EGo&ja}H-2(um0UrSJ00qFC$MY`>N2j!L zad8mk=7u2EV;~~U~Ugn2X0<29&UiRl!t?}xu?}@mFs0Y{qZ0TZ3?*X=lIE#8nF#Iid z(Z~2-x49W4#homyMAhHP{v*ZXl?1~-%Hr|B=BvOJ{Q@TL%|gD1`p63{B0Tt}YS`uCBHgqE@C>f@T&Lf}Cci{1%+N zycVXMrWX9XoEH527Q%wOulTHZ%^3b6-opH!(j8o#?Efa)!kpXE-V$sHadCcRgO{6u z`|pMR_mcTY(LaU$cjRw zBhLL_%KUFh_}iUFqkDYspCQu&|#H;XZQwgp`2rDG>!J6(t2J1vxbx^9yQPCR%a|1}+9B7FKo+b}D*qer`5C zW;S-VzcN9=!p44r^MnK!mxPUmf`;vX`}p$%K!goAM=eJ~VE~{Kp`a0={OJNbf9z5* z9=qzldh352D5z-Y7?@btI8SgN6Tk@ps3>S?sOV@I80e4vG>Y%za{xLK2Js7CY0PJ8 zrdSM)Bzys}IoQBARqdqeW4{>r&71;po{*7KP*O3yWM*My6A%;#O zj~bd<+B&*=<`$M#);6|w&MvNQ?jD|ApT7hJhlGZO!{Xu-5|ffsQgie23kr*hOTJat z)WYi!^$m?3on75My?y-y;}erp$myBcxz)Axjm@p?o!z~Y)3fu7%d6klH-F(m0igXI z)<2Q`SGb5CaiOB4qoHH{g$o7M{V|{sp<}$@#Uz$i!!mVz#=sYVP4Xr-r>Y$X$glp3 z)XZt@2^pinD$~hd(Ef((e+^jR{}Hl(0{a)PIlxmilt<;E5dowCmw0|gI)XUhjVY_~ z!^26;#HAS}Mi?n)B&iQW1ukt{mk90J=kBDhu4a`alJBu6)O?Fr8KcLzCNeQE7`MfV z#*2T)y>IX%T$J1|hOP2HlQy|heEIHm&fM#_jij5Q7&@mS48MP2)TX)~XuD5yySkz9 zzvYO@Ht}btNVu%(TO3taa%NT=*tfjbzp3iG&x?=utK9!N9u2DZfq>~Qb<3@)J-hH@ z*M#s(Ph)bb0=?oie1z9hxb4ecw85K%$<-R7H}hno-IaAUEC?NcCID7erfSFFj%zHg zB5*}vomHVj!tW-!xR_GHX`Pl{>vWU)9^gaH+ArZJA5wMVKmsDfWU^|pP5#2xl-snW z@A7k7{W7xxirPlz<{zjZa8lvfzrc8)Pacm>0MgO4ARh_fRt%6A( zeFg<6jgWiYH1ASZ+?=@0xB_)v!hEo4pf+V+555EIddE%L?o9%`r`%>4l5P+j-JUcU z!$%kVF`>g{{Lq8aC{^p+A5@S;pgi^@jW9Tem-e z%8Qu@%^LX435B{z#)MSXF8h8u+7<1{J}Mb3dUP#j%H1Bj{67G~+FLON z>q(bG*+I+PB{`aYy4^Jna`q4)ef6eJApdyP;REq}zE;(u-B-SRzPCf^^0(CmU5+@Wb?^GvfYX`8DhNwnj=bPK+rKfSfm>yx8B5h zaA1v?INlJAKPHWoF^{Uyl>HFV^5cm&gg!m;349HT+qveAiz`;5X##JK-g;+q6_y~4 zK>(y2HTsm0E>7(wKymJQe10f9LJp<3^D?csS>K7s67*D+UyNKIFAx_CY>jj)E7*kg z-rVDQg+!W7R0hST$`)`g&$P}n@^ZZEreLHU-oof(|M@IE(kk()Cs9k!LbPb+*lK)J zKBF@C-RU|pA3CFd;nXgJ0IyJX3)%r~(v(0ok#MD6$ITXWIS2>e^mD zw-0p2VKf(WZhCi3+->^HzeJ1074AXg!&uUG- zmf#g~mmzSNg0_mj$C_0jiF)fNnu@#cR_)A@W~F}s9a!F0spUO!?xwb$#d_u0itKM~ z(LqgHaW>XN$;?<^rv=B1ZK{QXWux*&@#5bQ)L^Ef@#xf%{y>>dH&4$h5I)E~rfUni zcrbl#b2vQlXn0aTh7l(|ZZ|3+Ut)~y+*4bMJ$#aZvhm;8c})!1EQGvPoJZexL&LO6 z*08yT&ipJ4cIkYC%t-ka9k-J^SZESgBGIDxkM;G8zi`>-|2kW=Q&YJQA^F||g!5h( zk9~W(Igbt=@uE2=jUeyv$P1o!t61{QNRtLT(zYUljU@_o<%YZ<^N9LUpkVE%Z)r^r z@Y8d?KLDGJ312Cd-^_kcb|olH<BUG zLGHm9XmOF5VlXVh;f3GU>J!bRd7W+u{^j9frmZ~Zr%?8H^VsNRjPmoZHLod5BDYD4 zRm2A;hy#h z=g{Sii`%JKPsD9^I%<$p=WVA*51XNW$Ca?&R8K*Hor1aGX4cHnySgotL6~OJwqY5c zublF$GEiHvbXjHXy|6Y&A9sf{H&KN1OSKh7N6f8%`wvEQaR*sDlkcNz6UWDutB5sQ zZb(*B<>I_bud{~7nTlvwowwLVs2!FP2=R^x=epzmu#3hO5D=TLiE$FuQ?ho9*Im%< zj2Tx^B~SbBX zxJroK@+lgcQ3sEiW=cp>ayEbW>9V9V51a+E_ZdY@Fbhmi!N5?cH z17nhFz2K&Ah9iTyw%%Z16!584mXrvMMS68MWskGEfyb3{wJy18bsM}se2dzXGgH8p zd>B3NF0ws-LH*4rLOiaf!L}U~TAx<+{S=ttMff!W!aN&>LA6^gTkDil`l7I#0|NvE;!^s-Z%OgZ*J#=mH5cC1TI}( zF0sEN?i|$qUjKBOoU_Wv@=d<|OqmEL+=YVqiBH(Dd!SL=5HIQtOB0zOTj z9{4AsTUfsB)K?h(0jzK%*NP4`T8{T`^pg?Bgf2~B)Lu;;h=ti^PiyPLzUC>|6qV$jSSnCA=#;27J4nsIyAo!wW=Si|5Re*95OP^sVmH2M*o<^P zQ6dp4rBJi0p&dUI5n=KN27L9Z$@NfQ>(r>56qHba7S>de2`y zu%hj#wWcECp^D? z2aakhrp^Gs(b(nK-k2wBB{i*Q} z;0H65tV1A7km9`Mjl2o*eKuRqQ#yT8`^_KF#!tHt(RCna{WR^}$K3gLrY^0d684-^ zbDN`(L>k(8MB(z4=jgg_k{s`JN^{InHyq>V;puE9V{Vg;%{5R1Fo_E~E z_f2w{wCYpZ@}a$`Epfa)Jwy@D1-vXwo_ZsBU8$~;pud^(>=}Mr-Yq@{i(NcamIxT} zRm1MV5B(mY)59iQlq7Q7c+1>N3(kmQiVbVbidiG&)WxMVkF_@>2J?LY^q#K3eEdCG z{sp3C#%;fj=cgT#iw~8$VC{Pq1DH=+%fs|z<-bTLUi66GS5IXQXUV-~s&@?hZQr#1 zGbY>XaP$qkoi?KF-lom?$4a+1x&ZAR?R+CNbwbs{-A532gTouA_HgmZ?r>VeTpI2O{Y#7};pk#H5N zWdJXc%1EdhE)7;Af*3+Rl8FH8& z#`C3@uk&wTm@7}6hgCujj%#o8;jJ}GKu^;%wS*r}%W~o`v4Uv=CM{^d&h6S%_gx>C zALoqBvr5f@zQQB#n8Ntpl)oTq=%W;S*t=1m&OUFj+V2&0AzmmGN}6_@>!j^EYbU;T z?AWiDSLEsIHBDSuA!M~aDX0|!gu@dOEP9KokkiGMK zCivrJmef!%cH7ipZvw@K3kk<8sMnhP0r!g&4p;=`R(+C2LMqamJv%h|pwLt}nX~;g zS{kSRYZ6SM@PVCsU(GkIZU1f6#GN*{*l@0gqY}K*x?o?irEyx}Anenm^L-$&)4{;s z?x?9)rC`V1y{-;sIQaC#J{9Q!PXEFHkJ!rgc=h=x?!xSFVZl}*LQ7Acq2~oeUHUZs zBk=e|-y69n4I`jWd$ZgeTXkuY24l70&z}Q%{4!V%kD|r)Oy_>*K2`<8Wt-`rqmG;T zgxs)Ur-P=}5Av@8s7{*>7$VJv(2Wk@_ZHYCC<#u6HlVBZPW=GK8t3YheXt0+xuEiX z`;};72*|Y5Xl5}D2k0&9E5@7gO*PEi7CVkjMJZW4QX^_rMCyB-QuuTH$7VNCCpz>4 zzDGNeXXjJi$+*W({r$8XlYQmApB}+vvtscqNY5}|6l0^`ow_-k4sRt0%jTsjAODEQ z`O8L@^!_JeJ!AYVOf-=t=YJovWzkVK)J>ebe4jk=EGT7DamPuq&@wE067q5PYg#1A zunQ3mI?GE-Pt>S`h}vfh0dWC`aTj^@__^V%Pg!!q0sp(;HF~0OU4+)knbEJssT_?E4_;LP{!X{on}a>twtJc_3Yvb>xPl zj#nLAD9p5Sclu_sytqtgZSu$hX1vH^3w*5r_--b@LbLG`uKj=jonz%aw5Z7B)-wt# zI5ehALQ^eIaP>IAPD`p^22_iZGV)C}h;e94`~ihFPKr?S5a_X>{;X8(iwr2$*2$1J z8Q+h?kxBONK0nZ=8RJqVhyMV|fbC@{yY>o)Ed+zf7t;Q&|8qGT?TT^k{@%^ zTT|}6DoxlX1SO7pfDGYd&95gE@e3#rvD^=10uD)EAWw(7DiraZM1XU7)5n%SxgZB* zH`lc%o>t@6sSz9jl#E=Zj=(7YWqm zck2&8ljQ81K>GS7`o>u=Y19gDQ|IXd?p2HKQGpA$-(@E;#c%kV@rgoC1kco&uS8mlj4G z5D2W3;p?AMl3ZNEL|BC>1Vw+ae(sV5N$AznvlWGYg)=p`)gu~HvJ*!rFLaX*(M!-V z_{^m1i4f@c$*3WD-xI%WJ1W86g$u#7HQr&QB(Jd0DhO^pP)r_IK(iB%b*tfxr&eHD z%8QUh4KW3&or>`92PUF~LZ1h%1z*OPPn}B`%ailjX|tQrR=V6nyo(Ecc+kW`;=3Y~ zd!*5wUKgg+{}As$~aue(+VN2NJx&6K%esJWu#V<2Uob6o~Z)AbYFOgtPz< z1)6dh)MEIXp8Cs*IvNUpsmyKrb)$gp#Ku@HOL?@kYtc!l`_egu@RFG>nWEHgxT32l z*M2@XoK2QQO$PA)OweXpW5-SVN@b%&R^@5M`0QJ#Ix*oFtf&(NBU<`)5ydy{xysPZ zX+dg3TIiAS2OD$wpL*CuOr(P!3=?_|Vv{=pqWPQva5uEZ+y-5!tC$oi$=AgHm6&t_prx5nGoNp4JJZ#4+!; z)!Na}r&|}tQb3W_l?LY-VKe6F(ChWM@a=-O6U}B;G>PHLtYZC6jFAG`ngO*=&u}fY z+JIWZPaj9btfG1+jzwFTjfpR)x;veGB2;&enSW1xz$u@Cr2lTLNDGREd0yzg08dG@rqZ)X5uR7?R_L%97- zj0u#`^>($L*yf@xZ)436=uEq)iRMyy+r8VtQSYyHigjc%m4=pvf?!Wh>6^wK`)jjT z^wCm$ovaHnvz%AKs|LYoj(*ub0#uPy8H*Dzdier*A^pTGQ^(UHAmiO3Lc)O+WhY*n zmL`)+)bQM~^An|IP?Ra)Jl6Z$b=ITbLOTl2Z?j&Ue! zZj9ogkKod(dkO#S_F&shDukk!4&EcT#_6m)=5lYfbzeEWnK2Y)W%4dc?^Q$&wd}!N zvWOY}x_|Q%Q3G4Une+GTqiaZUIZM)(!;Pf2*+}Ft=kVT~&-|ta1239z-@x^DY^_hP zV8iO6*S-M~BFsFy5%Q+5(PE!h06(;yNQFsGaaQEfrJu~{ zjp89<>iNZ`XAP=hz){mP=jliaAF*Pi{#nnoxl`)P%dJ1ra_L_`Tj! z)BHtM?GZE0hWWGrid8s!^pvZwj31&Bd;tXAe`R3Qdc$a$wV{1|+SKYaFFP*kF31N9 zdj<<^dT1-9wSPnpJ!OhE<{Xgh!2;obbNu=BJ*=Laz>XaDJM~KGOkV{7e!u4Ua>}a7 zMAl4Q`U&81giA!r8whI2CEf~;DVf}Ei~Fu7Ln<2}L!yfEe<5Ii?uB|a5x0^>mQYXp zl_kS2MTQOcc66)K1rI;jW*An}I0v)0B@UXReWaP%PgbD61cn9Zu!4Zx=EOEN0bcuz zW4S4DY6Cq8J+bQ>_57o|qoDYAlV;r%*C4a#Wk$srGOW zZ`AKmWl<#kv>?h_i9M7lL{WGkhi+eZGFtcb6Bi2}pXc@Mh^%nsvfnwnW zw%I#3KHeMxrPLZ{=uM_|@2GoaS6u1f1YxdjKhG&E&AtxD^T`m$TTw4|u(D-W0qPtu zm3c%e+#iTrT;6WVSks)r&&f_y9L*igX-ets?_ibz>di4agmPZwF)pIFhmxZo;X-o> z`Q#3~=-rMKu?n>K*xhPr9j$Z?I*IGj6HGcE2SXLCsj;US4-KL*6;`~EpuJXx@S|n< z6b|)=EnA#*p##97sAvvo6V)&CZ#fwwx|ZilKuY$7qqUUgSmd z_iYCnvL)R&CF0I;kDxuDE`y)F2StE_CpdW5x-dR}_8 zj+>uG-eTUTj4UoXW;z-R&#ZNT&zVT@u)ui_gxc;WSP_&=m8 zU%xF8Do-REEKGBFecgN_bmV*|=Jp^`$l!6vxmusPM(vT8y7E~d++QG>g8J*nfFHwJ zO3&VhuWhYK@D0CgQb!PTHex2z<&5zCxSep@$8#*^PBAB8ww`%D=x%xa$((Id`nnMV z7``dc0@5FEMoq2A@q`wWcd63XCJmj@fx~q_H#qQLX-WeFAGFu%=o^y+kOe&u}@|7{kNbJx#y@n>_@dc~$ z2Fq?_DaX4avg@=jL@C9&SFg1&lHN`jf~W0Yl&v$oNMH3>v54z+)+5%_A9TeVsyh+? zg-P_j4_B@!c+M+wJ>9j!S%2yxgJzC#LSF_aXlYxG%3z|a47($F{6mirOtFTj*KR)c zc(b+2o4m$XBw=`v*Bod;z|kAco4zek6>g$)%hWcHw>`UdtMGMz|A6|^TFl+G$Fo~V zj9NYsg|v)?^K2t1l7JnE1uep&(NMZCbhVxXV`g0X#l-ZO3LUK%4%c4|J5vcRhjJdc z4h{~#AK4QVizt%?Gd|VTre~*&o*ezPa&HHPHm<{$M|!2ngIy@dTtB~?$kX>nZ|4M} zs-@q}(437*>_P=@yHg5(7EByirXURZCBhO4=>ho(u_6HT^vm7w?#~9(;PZmXi-HO8 z!B*9?5E4~y7|r{8e0cSc zYz^0gOTZh)3_d!$?yX@NBH zsN~{sDHkE5nc;zO<;<8BMUIW+!X1NSCz5Rvs(hTwl#W#K+h~~OQ>bP z;%yBQ((?y%kiP$%Zi+Bjr?I@4xS7BE=^|9-!UD&2ZdKgJ>x%2KO64@51gbyrogvSdF5{F)9=0SKr$Mv>6v#k>* zL+$Zq_XLx$MYxCQ@sLx?j`Q|lO7I$_d%^zzLIn){lrzfb6g`4>nI|BeNSzFPjgF%V zf`Lv4dnfGtX^w;APsHsUNTH4PqE5yq{cU|>+SIrfk@)=Sw-d*w_{;ot-{N-lT&K>p z5kh1&hHt;JdA`tcY47VKiXAPm@JQ306ew+SgqXvtZ8El66Fc;4BLjKLs;c8DINT9~ zy>>f5*F+|dMME9bvZ5CON36OM@5a6OnsyV3U-om9XZRdT;StAf`S}$sUF~a?rs!Bk ztbK@+Pplr~O6;H{WsI64dt7Eawghr0zd_S&r9?DM`k0p)@6AajPRtu&YwZ}+R?nlL z62=~d`n2&fZhBg+TmdUDW@o4r+V+QzSc)sO+~Kic#%R{?RXUx)Z&~U&@mYm3j;Rud z$heg#;$_*o>Ttz~U5<|LaRVx;2K5*bt_CYrqd;IWraOr?EpsTm>$~M?j_u(E4kuT| z;Q>?qJJqy=F6`Uufs#%dn#=^R`7ZTQ@d$Jz!l43&C~*{z?Ai57jWv9>i1bNmy=lCQIz{bg!ZphKmUoUTrZzhk5 zD`b284#3XcNz+yB997bIL)CL#JLBK-4%N#J_(&ZS=Cj^UPAIpz7p6rtwTKGWe-Y=E zvpJw=PUokTO9rg_r|kE>e=Ag6L7+S}-}!(#{$k>AEm%LIfzzBwUqw_dBsQh%{V>oW zWOH%y0-#xHOte2eF{}F)qow(*-yzD`-BSGhAcd?h89CeU7Xyc!lf)G37{}fyvuXwm zk9Iy)c_$^L#Po$F_y1YYaJFc}WW4}2cDNj)+n##a3>aEd`aOK!v5fX0kA z&%7^>r6xlHP?NC)c|{H9Ckmzd!4TSK*9we#xw)yGL?M ze`k8*x%GhGQ*1X(ST`c9>M(#YwT{(Q{gQhA>yC^8flgl9-ez3g@qTlB(oFr7ZiqJ} zzfl$LoJWmBHG1sy{j~XmWLRHaay$+Wt#bYy28I}%it;s6uoqr1NYGU`BY!jBi*_vh zFFbvWbe`W%e}j|~PasvUB&%wA^4x`?1J91G(+oVnxC~k#KQ)x>BU@R<4+WY)tl$bV zbuCa~WS^$=Hj&VRTf4|{c+s~zX~ei7>mfv2<)igxM6IuaI(P_;=&7YMJxW0TeCFra zH_NZBPJUfx&ZRC7a22L7^5qVD3dH8EL=95&$^e-uXxxgrb9JRl6^eh<^oo}^$|$Cw zE6=|<;>Da%25dt-%67z+IH$w8TtZE&BIm2rlgJCj!X#hMKQ66o^1WVcsygqMS&dTZ zBEJ&O(|}hIzV+mgl|P!zlxQL0j?W3XefRnB%{1i4`NDEbb=_o{Wld|46(Ys0QTUBi z&JlsCUAiRQ_aGv_@gkz3nw*A~RHuptK;V)5p2x28G(6b_kJwjsgH@;QTd6!Dnbni* zs#RI}ehEw^=PDoRXRr66){l!1ObbHu0`nJ{FVEhBOR;NOc7*{clfdq*zsCf zMcqjmEBjkfS0k*S_VZ3(YI9AqW5+ZHy@iaH?YlzpgwBADXHC&v!5*3GS~Wk7)v018 zDoi7YboCiVlE~3lfgHOHpJ~6Lei6^~GC8BWq2l|kFQ0h`u|mXd;8L|h80UFZ8n!A9 z-piS-Mj22UCL@)?erykbr5B$T^+b=KKObwP5?J>Iai{S^gW@;A^bn8~a$shA69gGGhr`fsuLIRr4negG=O!g^Gaq|0`HEM4u zR&5+MBh&nt{;IcVRNuJd2Q5~fuEh*r{Mv-gwiIWnpDuPLikA2Le3d&BMmfO8Z)!u;#n&x<2*Hv^t!>Tb#eL&X}(`)=|5A9d_Qdixk7zs!1eqhfj*{t5&CD z*#=s^?t~0Detnx7r!fs5J-8>^e;=V3V`P}`Bp@096GpEiHSQNt$Kn9c|3cZ9)AzzH zxK{#YJ++;7J85^g`P@xKaY?JZfu*kSNW16R1#oMW#-&u6&-T%e9X2y=kSuywdX8rw}PLw1Sdu9St|FfVROi7dcRB$sWuWQ-0ua9e8^4 z#`fSJC5-Ic9EVcPYc))9lia{9Zyfk*f-crAT$QyS#8Rz_2 zBU`E2B*LTGnPNgQRMeFU3YtJ{bVBD?jYA*SyxGz1PB8F;r9!GM#4>jFCtoQ)KXDfp zFmvXdqQH91_l>ujyLaw=_?$k_{b}_g-Z#vJvT}sIkB}E)fPj+Xo7R$qu+5mB?(DK* zMEzmB&K`pe^^mM3RM=)mHJI873n-4Jw>#3}yA4DXR)JK@j+BYs5y>HcTpCT)YyKezk)y!5-gwvY8p=a>)c97sCjH5MODixhJZ2G0^s? zf9qtd@9#s8)g%0!rP?sbtmuogG%~MxOEQh>Q?-G&7oe~V1LxQG!ERLEU_l!6T*Sgwj~9s6lHR8y zR)%k4$<+(p$i^nA`(1ePZ=`_#+k-} z;~V5X1L8pux9`^r0dp!TuspOU9<)KKjVD1zS^T<7J2@8^^?`zc$Q}9UILMRLS?wHI zbVA<94dkcNwZRNwgYkUi;nw$ArXf5KdO3q(Yu{ZPM}pxscR&o!qnGGq)bYKaesHgX z^JH9D0M9PDc@&yJvx5&<;hcG0WCdA7&zuIw61{B+GO`M z!ihZkN4nP(-rH{NMvGKm_+es(t-B|+$gNSnS%AC=I*2>oU1Tw%o)#acBHLvv>UHne zPA$%Fa;3^#)2coCkOGIX3V9~f#3vttg+K8{H502JMx!r%sgUGNjqyqh!(y^9Nm2z) zc-`GMQEsTu)C~(7CAr?Du-@K{Zw5U7GXZB}xp1mjq!}YHb2Uh`w_{E#gG5bV#zCF3 zy9*?^G5#fPYXfTjwRM&j-w9+?1NT)|k~;W4Hy@GK)ZbjpU@OG>LXp?1{l}C1bLP1? zm|j?IVjlCaqb#YEKY-^B*EIsC)S%t$r44|>%(^(sdUi2H{6)?}Cpw=l5eeaahPp_; zjK^6DccFrL8^S8Ql}_&K)CPup^{m<4KQ`h<5$HDd2pV3d^U)if}t{AY1mhqa3A3Y;6# zj*N-zUFrsgiu^1-5bBIDDHqq>xmuR&rzJkZ1;geTCBgFRh}eRloO&25&}y+hMC&Pk zLp6UiNSURJC*MZr8;h!81Tj{Lc-)a^k=kpL;8?T9br34S`6c3(H_h9b?r`2Q-F5rb zFj=ZhRCIy29|&_W?KF5x>A~E&Vs&c&OjxEt^syP~>CwA3TGj)Nh@Nx#C z^#VsfSe4uxGjcT)K%3?qu&XbiiYfj;NA6Wdo-~)SIplVBpNlJ}^Ukpq8=W*#Bf_PdtckNC|ytN&qYy7uARafazGnCJ&$ul14+<%KqL{?MeV&bcWF1 z3a8x0oT07ZK5|PiXCZSvp)2`fe;m=>{3d`Y7^&UTR3+$>;ED5=>%ogAP)sfww-OP)KtD#!fMCAzDm z$E_rvrE}B*Ovu0t=w165r~BBgCoXfaU#<>zd}5l79g9+XZB) z&{o58#XNhuGLk zDp2nt|A&bLDI30GE$$#R|7^T^G*o!)?ORiG+8RR@*Ud;A2sW3Ti9Fh?3-Qd2)Eb#5 ztoHA}m_M${kPQA?8?XQA`|P+{Cx&&g6}r0KC@sY*G$A&(CShF`x4tBX z^|fO(f9C5wyUd`qc|)fy4| z`I1oo4GK&aJ&3YLSrVR}$u(xQWShA6=6mA{2J#6Btv2_92*q=dC$V76 z%qTqK>0R$&2Z57=9Q|5!9e$GN6Sji75^MM3C7t=<)~&AWdZm1OuBIdykCOzyx{;Co z?xoYBkvu~%)53wQ<8OS01Hi`5b8Qn98RuyuwxHA@+al-I9MbYGcOC_j*wPY_nRXou zd>jgKWNTK5-d>CVl9N)NC{r+NGfHGBU!)C0O5$J5(u;5VFawD)Z6LwbRDI%UE@0;O_;# zWsqH!)nTs=V)8B)p%6jC^cS)z3vK?GKS(=~viU_%X8S!CxFD#`NtneIBUqZ!;H=kC z<nQ?wC6x+8m9JrUX_346qA1ena1;uWBW-SmnLASL9bCXG zYilINV6nLNbHiT^oS~I75BmdHeK{^$EO6$qW-c5<)6N`k+2hkD3>jWNI2!TT?-rBr zN9I;>iks#bD_7|)hb%lNrpPcKKs9uaA>jeQ8v1C~Np{5ba~Jdtlo3!8w-cO&Q79v0 zkC$kOs-eOPX&*CM3%!s{g}2IyhVVy_vjGn0fk3z1vS3-2Jh`bAM>HCZc_hIIg0sS` zxi)xf7SYMa5nG47kZ(al=S2lb4Bx&OB_1s_FqAPh$D5u3f0}kXTlB=CqB&HZ*C7+r z|6Kdj$+J94@{(3jsjd~y*y&6>Oex{^z3(0mrOGV)hcWeU&*M)6h>hW`(5g#M-X_1K ztGacR2X$wEdGyH0x!Mz12j%19 zvU1#-$Ps*N>_VT#zEUZ>Ir>$_-TL>saT>6C84isTz6UerUk$AAPTALI9^s>%qNF1^ zp5oXiU5DuE1J6br^1m2dFwYA{Ij(t^Lb3ac-gPoR&^j+Oz~j2VpoURLq7xM6xt8aA)6KBheFHrogK&M&SGlR4e{@Fd@kVa>bB?JQEVNsLnYtIo z+R@FO2ib!(=<+i$oNllpCiGx8hk_EK-tttci9(J7)6ztjIQY|y!9A~u&Q1G|P>^E= zM=5KeaUFGfnQgB2FoPzUMkHmR*pWS3Ud8>4fk|ZIiYv*md3UVbYM3A`mFAiFGOOOv zz)JpyGPE$wXI>`O$0#FWAM5JS3UX^MXq^TXGg%-}ox^NNI_2e-^}gBuI%RfUPh9#0ogb-@XgYr=&n7B(q1Im)o#~U@81hHTjKoZP0s^SjTn_ zvYV4NN<4%dXM0BR2axDQ__zt-)k}X-Ha7OOFK{@_6Fsu3VvQjz-~3z?Ju90usL&&q z@mG0bQRSjOV-nXG1RiV>eVg{Ac)!h!oC3&HPb&j((a=;9)~KC2l$apium3f?~uY6CTS9yNc7!gnhMm*LWux6fgUi2poaAZwz< zAT?HL2~nQ_SC%XAEOgb#syyyB4_8I-L4|KFnqJj$9j8D)I}TVFgv$5rob5)yhBMz2pNh^phhur!Zpun7laq= zYk76>&qTn&(Xdj-bu`;|G#dRo7oF!H=SMgHm|yc=l;U2)@x)ZekxRM*Zc1aYYjd_*RY(YN=R_X4s2I3@8O+O zdo#9xZ?fYRbE4W-6TYk*P$51T_F|IB56-n%4{{3R>BUV%|2{uCHO$tjJ|U<-b62YC za$B0z@a+14>CF$HR->Wk$#m|~1n=i_gR&()v=QyXK$6cJzJKYV1GnveIzkI{Za-iv z3cC}X>(F1&MOPg39RGN`%Q>`1I&GRLmEpi>hCPBKPN)POdwt}1xSAGFAV=dRSZZ)z zP(hn!)QBIg@$#bnbm&V01u!6BDfp+j%#*H@MO~vsr9xcll%tGkb4)WDjE`HsYdmh& zfbC4NCoEp2e)>Ab)9cQ#hrSc^XEwNCP~jk19HFc&w}os>vQOO)!gPQFFw?hGfkTj8 zip0=JPX;8B@hf74Z)B_==e5S6YUFbu7OZ)zZl`c@aRydh&8F{X^SBpw$+za9&3wQ& zZeVfC96GvX{k3I+wsDf`A&sk~;99Gi!9Yg9orn@swHZQ#dHJfx+gco%K+0*TL!~5e zlWtYIihE4-;cRbf>A9!}dW`;p7)CJfONU#H#FuY-06)rY4)0{FS35ygF09UbGZU`nxCM7DP$ zoITFi7w2MKuesJ-dFFiI`TU;1?1Vh(YbC2_6f1`G$0`iNNSXa z^c04k@DJ^q8ENdF4m`?{ zigrLbkp%6T@9SbnS%LipWLUV>r~gLIHb$lE;jl)hiqbUX^6K?-VQNZ|&S$_%K7}iPPLiQb;?IeKn)@l9?CG~QW-LhzgWmRC zlF-@i{<5@)iEFXauB{{^F=XHO>yuDr=YCVQS4%a}zq)9{!;O|VjF(2~1)iskcyfgm z+07ZakcDq&_lwaI&NO_5?uyROeE&LsZEQ{W#X+#=ScTc@GX2REb{rpo7IUmrqd=hG zx>tJr=-@A4)|0uHnse{|1!M@n^~+^Zjkv8A9VH)586j4m0I{M6N5^L`HY87_%T|3& zjX*ywztP;Y3At#~Mo>9;l$rD-VKHFlj*J`Ile8D|I;SjOy>y3fUcw|_DKIlCc6cZJ zL7~eXXY8>}&w39yTlHjE)nBM6W{qw7VY3ONzd-aMHkH_mA5a5d9SpAbj~Biv1VxVdr49?KcsKUr0c^p2HMrJ06P}n zisGY?Le_H0hKu7}lIRTljTxTG898uKr0P&di#~sXtfkcPxTgYZVKe=1KNqRN#LBF9 z>_A@NaJ{^%s~s%@%T()o*^j6XS=Jw0Ns&~Q5$fO*Q;r#RZOWB4d));E8XN6*L7gw& zZO`sHj*?*wIfYO*Hyw*!w8c?~I$!KPPYY&_L?lzDWCQdGyWMxO=)PIc$`0wTbhFx{FGj39winKLymy> zx){++5Svgl(%iwV?`YI@W7tucGZuj78+`qV4iy)l)LkXMfe{tny)(L{j@k5{@l`2f zP6@Q2nyEAmL4UZ(pitbAzXLU8C+hUcBB40LiAM>dV9J~7)|@*a44{mRms1bd7?H}m`H*dr_6}QnQ0+Fco>FrO=mo?r#wPdL*9Qt~9^EGiE1WykWe9xpLv=LM1 z5_bms<*cWQ`kZ!lPa{nmxjJ3W$8eDeKG3|cr20ts6Z9~KWdRy(h2w*Y5Y5R2`br$A zi0?HxWVE0zoU>lb?p2VhhQ1TNGh4>Vq@jzkua}{$8E=<{J4 z@~T_aeE1`^FHBypl8DC@e%`1tU0V85xbu76#l^eOXWF%odnUY4cck65C`HKZ^H7Hz zYyEVv084t-0~G!X&QPz@>zPHeD38~+VHG8rCC0l?=X#vINxhp1(!K^DGL*N3yB^6% zY~z-y3Tr;u6R`g?nvhEuSE}3M?>p{se66epSW)~XuG3G~Bs}|Gad{S_u9#=2y3VR> zDRTT%@1{-^ncAM0)XcqLTz@Rw!v9<3t>pA7(8=N%f5O?`IFb3n&Y!cFTU4x55JuYg z)Iq~(6$@M{4vj}n(1LHYHXRX_jMK~GUtGB|t}7??rw^?7A)X9>0ZM?LUc(~~!7gU; zk$K+F=b38RPkA#sjej3WH46zyNUr2*ZIELTli7s0l;&{43cwSF^pzW;AP-3848MZV zN>K7BdpvNr%P?_Zmbb*7ddQ*KrZS%{PO<;JC@`M`hPSe+}}Sh*c<9LeohJ$ql;AEJ@)@kIBQ+dBMx_%=1bg zNBU6)=XC-9FX4)`Wyc$LUr{sjjF%)2nIE_GYjygf!0J9{TIar28Yo)n*p*C};C`|? zs8l&4WD6L^obLSy@3`;fLaBwG2Y(uNHNX-sDOj-kT77ECEn%#CPJ(?#qG)JJdEKeNSi-GI z*F&#UcnU+L>eSNBW~b6#_00xm3cXhl2#+a)Izj@BWoA$P)!bhLdwd{^%x;Ar-E(z% zfq4c7n3l9|gl=8a)It4~?V`6m6xm-NAJ%7(WwA{MZ8YT`_Ij^?{qHSjPC?yc;><#2 zQmu@)5~4NAEXh{y);&|Tp9Y-F(Y}yZZ#|a&`XPYZr7~vl#Kk6ZN$fJ~EZ^n;631phq69e9Pe-O^l8YAvC*m3N1Hoh~2X_TF2?_28ld5+ALk+9kevG;|OuS#r{(p z^e2RPJAL=H_cR3N6zD{H6?LoNfFG+pVJn7;8>HPA=~0%5W?9+BloXIJr8^zZ;OqzW z!Y2p%OKMbW$dPC;QPXO`o)cUg}V&P4adi4>FO9#~WFE^OTji z^d)d_b7I3C0}6XC*2be7lVRbR+=qy4S`RX<+$LFYy1so=b2@xrW# zsRp&uZdb?MuP%`!{*&wM)p-(>r5e85*hpx;tJ_mqT>!X;@LAyGgaX#TPI>;PeCPi$ z4lUFY(Db^)x-lm7r94@VPSo7`_be~w#yy??Cw$Ost#-r=~?$neA@qW>Lfa;Eeg5G4Rbuy3r!st5dvL$NFhg@aX|LOZ+Q?*4 zb_-Fk_{yo0!pSXm$A~18x6-6dno(18qd$)|9}V;w6%J!{X0o0S_>r5UKl-O<4m;w0 z`q<_!axuGNhXMlb7CsFlFQ9Pe8YtXycto0vpb7c2VFx{0`q)lin?nw!5FD|!Zul2U z@KL0nlFhyo=fp!r>e#@w9wwnenM`)ooj2!| zty5;=V+S2`h^T;3&m?5mFmF)$JhEtKR%IRJBM)1yj)!g7`^bLL&Hs_RXh%!JC%axI zIr~A6M<`z8;13O|O?oDHg=11FA~!X9V0$tvd$FfpU;G8(?mg>t24acoEsQg;khQYiuL$T-Elgk#DN4fO(MG4%Fd&64a`rvRQN^TPa=8iT` zmL0@T54IpwW>oRJinSFna~w;Cc!f|$aDZavWcdOuh)IqldoT0w|6l**cR)My z-(YPweN{eFEC^9avCALp_X~ zZbJ_aEhe(~0oZjeZc?v+yM$G^Uy7TL6~>YYMffv)IJDQ!`rX+EXac%7vr3d{5I)l1 zpsoC6SK;?tXO55tCOlWx=s`M^U_YWD@+5^1(}+w8{(kmJJ7E2O z5&HK(e!6%wy3Cr%;0`KwOB)hC32~zM3+NLyeye#`S0ej?bC}F$RO-m^g`d^wkilbJ zW*2}cs|=f4WrQv=f4cscbEVOY_~VT}85c^v-6!tvroFzw?JW&5ocv*%q_XbVfMc=$ z?c0#WIhHvS?>>I;a$>C|MuKS6@51BVpD3<%8}*y^pCm_${He5Av`>KqRbtKHB{jd; z{!;E!A;CjMmg@OZ`+;jeXV08e=AGv-J6h%*WAJN!Zm|SZ(8mjgZUpum_PF?W+%5`s z(8IP=^m&TAad3jHD^rA!5gVZ@m{^Ur1bOrqv)eOlcT;;vNXO> z`@T``#^$76!~oBuk$o2W8`-tolHDAp#$&Tm2dUz)Is}-pcirWSk!LEs=7^@rGd{oZ zfb?6|^!n}3z$w_Qdc5|$SkFTP{OYgGOe)M(QdhlZ!6ZcPa0#cIa{UyB#&BM)e(8~Q zpA8l__mk9h`c#dDd1uu&_(BcH-Jhq>pQtx68HBG{x8UE^{`2u>!o<+Z@wi$2sFe=2 zewGUkw`AN789#e}I&-xi)xLnD<_FD&>KlZR)6fF6t9%^^9&p(R%4df`al#&HZmSdU)<%0A6-cEhb^A zvdTqzf)*`#Z?-*$r^~3tvz*=t@X!=GU4`~VzWnN1wky)G*)2D7iUVGhf55DW%5Js7 zWy7WF<6tPN8eP8asA}!wD3w~8!Ju`Htv5aNTpftE8EfRB-Ko$QGM-#l7cg@{!N8$J z?d`|#F1O+A&sd4%zlA>suBxe__R>eE7xq<}e*d*T8NwZx>^8&$7y=yM^n=fNMos%HnCN1Bbl7X(6WvAw|8Ru)v^*BWn9E^?mT z(Dtngx2Yc}RQ+O3zs>5U-(=v3{$aPdtNS&_GwciKRtRL(Y%d%y%gf7Z#MXww{dQwu zZ{iOGbnZ7@mX@CH-OJvEyx6i^zMAIZ@|sCKb9aa0)6t!4LGnqdm^{)geR%*H+ts6b zxqSxIV__0kA!DLR4u|gUTxmJRUBh{EL$KC^_yK0@$Ha;Xj!G*x_RL>kyoazVD~OT$ zne7`9dG?Xal>E4Gxh&@uDD$Ii|5dTWZ>{qU1@yoVPF}~Y_AZ4uNiXobXfjjg{ma13 z4#Yf|r5Q7g8-~b3-qD7bFSfIMCdN@sEe@T0NihZ-{=q#tO7A?4zp8BfIC+{B1Eg;x zkC~Uw6CPzinZn!COXP+I>S~+{4D1cm^WFFxMO4ORUeD|R!tn;A6m-wqS_i{xRdPaC z{{qO(mv%E)`YrbGME zOQy*Y-6lF(m*VtWr4902y;x2l`{xj|L>G=XK^GIk<_K2)+t@ape0mC7l^+iKK_vC5sGTB)-nwpdt%y3F0B9I*Ek{z@k!yV3gMLG7`f}nXT^fTra z;AA_u`~`GlGW=MM-`R?LWj2;J#pq30L`PRzzqPi*ieO*_O0P`QIjub`Ni1J9elw?P zMA_S!sbyGd*~x!W&?WG}kY06TgD~0H_;XarRDOLzaHx)XZSw%tv$^NVK#vw%T5GS) z&h=vDpw|=2ZHqZoP-7L5ZjTx~)dhi%EptM4gff7ARMr#K_edqo&v+&N@`V4KC{U}t z9XUU=Xn|C$Y$#brzpEY5s%<>^v2MG`3>ida8L0oC)D8}5CxHVuvdqo>`AswDDsFq9 zDzUSEi{n|t=W^=_`x>YFMm}v0ws&lzwEiEiS>zb}qG-7P=qw zO2K;1Yr8lL540bDuLRhS34B+U!t0XAs7!OM*s1+xhB=Q5rxuz2-5LJB%)s>NMK3d1 zPTQt?(bIj)B3s+GTaWSdesDms+4AUAr0h*)_wD@FfY2arch;(J&=z9{hE@?IQxxuo zMIzWeoLG!4!!G((&%JO_)Ad7Xw?8W^VtIUf@fx5=4A7}T@OPbIC-}pN0^i;*BS%v* zA{VoW@lt?z9ez^yUd~?Vn2lTc)!3VOcOILDj_FVO(Mcx#bP*lj=;jVdp}M<`{LnG+ zv4^~SN7VQ2r>dG%=DlDv$rCa7F$b)|KdAM;Uk}srd|8|JI zOSoLN1Xk6*5DobY;Pg$=p^+ROq*O6VV^DZ>)tr#2iFYA4d%2@cAKTWRkE&+FV z`D{lu=UKg4=i0&kFW5w@saP!~g{7~{P0Rf?#-g%tQSP&K!WzU%U{1ZLQu?yoKY!4* zSYX81J2$X2rJ^_HVW)ic$KEiOumo9Qv@}zfScXVcUtlgPOE~wN_i9NaCtQ}I7I~PJ zLrM{!AZBL74&-qCY7mp{CddW#(Coz|89Vu$Wd3O26*TcICZefC|St<*^4la ziq6Oir^Vvh}BK#fb|; zT$$TiYqD2vBu5>0C4bi?!J2@SgWWuoE|N3F@K$}F8X%A%fl^C}nm8uU;>l2CL&wa@ z<$Xuh-og6%F&eeZrSw)WtOS4SuG;QH(~UT&CE%b7TS^ejC-^e{_z}`z3XNW)c$XH- z41~4kfyYF`yGLWOhlj#Lj=M17{C@#ga%cDaQnQ3KhgD9w^`X8ux4}}^rQNH_`8Amu z_sEW~YT)M|4aMX7X`S)rVRa*&xY#`ID&}dXLz7!J9f@nH-i(_@rh|62E)!lY$39fD zUHXhzinR3cU1DP#ceydtff6)P>eAk=Z4}@C1pfuhGrzBHK%<^#Rf=H7uTg)LHn$~; z58HM1;0_t29pBh`b;*vUt4R8WSGy?dG>ee!mhoasJo}smgNAQOd=0(Hf8}Kw8;Qr< zX_BC|{pOv1+C4@&lc_N!Ywni(o7hT4XmfDF*NgO}6Q{Q?*DVuygoF2evUo=$J}UPE zw#ij**08EiR-5Zd1Fv^N}fI?s}oq)_z?0tMuax#$GHGW{;O31h71Zr+n?geaM8rX5;kQST}A zZeI*Gh=|ovtjYRs6I(AP^4ghY9qi24x(3mKf`z-)pu70wNR~7bB_YX09Xm8>B)3kkVf-YO+ zQ2Z+iYZZFYLs(J-#Bchn}h9 z_+j(Bp{&h!TXD%#8W6|5uJiy%<{AeXhZHUGrfKKw4OOeXcO@_K z6s&-?xF@H4eENBDU7W68wT;(i8#9!@fG9RhA2}rLzC%Z2%OHGS#S#JDoU)dGsx`hZ zN+Nj9gaN$q7I&$$4CV{x9N#$mS5gT2LqTvx8;+V!N^Zq+AA!TW_=97bPDYRnCWk+g z8Nrd8qwUw$DH<)*Zyi_!L`2!mDwG(Gucw|Aw~o-U88;z=Xo|j}54;J=GfV3q>|Txp z-xO^Ya|q;>nl=&qe8y)~>11%ZL^Q>6BWN^g=kcNS=4HV|YakVnUuBc-*F!&!)@Pgs znnzh8A~Q3GW#*>+PTm*LxA$7}e*w};gVY<(HcruT@1cIGG&d3`-Ki=VV|#XKqoHJB zYxVoMR?tV0gm02Lj?IgI0l?5M;+cC)GU!K)q<;Y_PF3s|#*7G03UbXyuEL{}be;9* zZn6%>mc+=@J=ciTRA+^E+WRkB2vk5LqpUN_tkgo|kW7s=0mF#;K(OCj$I;oJ_|J0( z!f3TYKVzyXR>U8<2G5pD6HM8TUSG~&If8$J7)L@Kz}&J{Di5l!A27&}B?Z3P%Xt1x zknNs=Jon;quFh)XuKt&MNXcG^&%p_Qc4p%kW&>gwYwG!aI!GaJAvhZ(G(4~kCPKU$ z7jS;~E*br})gr8^CTF_N6|=jqSymB-lm#}(dw}E8#XvPc$b{uE^YCvAnBR)gOil+()Ds?7OY3vP8npdK&i@bhj^qBL7 z&*OiEz%;3VlYi3H?N!F zX8LlTGLZX4xedGt-Wcd#pc2$e*vL>0G6~0%44Wk%yZUO{Mtwe(R=WF~q7L<|s9M&} z`Ky{ICj{HghSAbAk76jUgG;Qkq+jE+W?(~PcKl*jWAFwoKfuBrxk;|3bF}d~{<<~c z;-t?vV*gaQ9C}(XCfBg(Y{f>{_@VJsWwF?GPxF*|@6P)#fN3le+EBHMe)HbzDSW!# zQ-CUxs75kHxVJ344EPnpGc?Q?4SZNgG* z^fk~av)tb6YW@|PF^y!PST26=7AUix!;#^qG0L0q-qQ!9K8}*^G=2BLc{_A*`LZ3< z(y*PS1F78mGsSET7l)DdA}*iLOHH&iO@ZJnq4i31-=i7+RkO<7$V(8##Sed!9n|?4 zU`}xLOLu**J@JTxzN+FQhv`d|NsNBK@oZxx~x#=ehuH0DNUS0U38= zNV)cK!^ie_CgvE+%!4Hq^Ax&=dPB`r9(QeA!*G{O`QSo4>#Q4cI%lM*si- diff --git a/erc20-v6/screenshots/erc20_v6_build.JPG b/erc20-v6/screenshots/erc20_v6_build.JPG deleted file mode 100644 index 062a9c44cad024c99f4f00ea80259c9b701b3d9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34098 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�de>jwQn(l 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 i%R1a;7=a_%3x`gBV^{ed$"] -edition = "2021" - -[dependencies] -ink = { version = "6.0.0-beta", default-features = false } - -# Using the correct package name for encoding -scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } -scale-info = { version = "2.6", default-features = false, features = ["derive"], optional = true } - -[dev-dependencies] -ink_e2e = { version = "6.0.0-beta" } - -[lib] -path = "lib.rs" - -[features] -default = ["std"] -std = [ - "ink/std", - "scale/std", - "scale-info/std", -] -ink-as-dependency = [] diff --git a/erc721-v6/README.md b/erc721-v6/README.md deleted file mode 100644 index 7175e244..00000000 --- a/erc721-v6/README.md +++ /dev/null @@ -1,106 +0,0 @@ -# ERC-721 Non-Fungible Token (ink! v6) - -This project implements the ERC-721 standard using the ink! v6 framework, compiled for the PolkaVM RISC-V architecture. - -While the previous ERC-20 example dealt with "Fungible" tokens (where every token is identical in value), this contract implements "Non-Fungible" tokens (NFTs). In this standard, every token is unique and identified by a specific ID. This is commonly used for digital collectibles, real estate, or unique gaming items. - -## Project Structure - -- **Cargo.toml**: The configuration file managing dependencies. It specifically targets `ink` version `6.0.0-beta` and the `parity-scale-codec` for data encoding. -- **lib.rs**: The source code containing the contract logic. - -## Prerequisites - -To build and run this contract, your environment must support the ink! v6 toolchain. - -1. Add the Rust source code (required for compiling the standard library for RISC-V): - ```bash - rustup component add rust-src - ``` - -2. Install the specific Beta version of the contract compiler: - ```bash - cargo install --force --locked --version 6.0.0-beta cargo-contract - ``` - -## Building the Contract - -To compile the source code: - -```bash -cargo contract build -``` - -Upon success, the artifacts will be generated in `target/ink/`: -- **erc721.contract**: The deployment bundle. -- **erc721.polkavm**: The raw RISC-V machine code. -- **erc721.json**: The ABI metadata. - -## Architectural Overview - -### 1. The Concept of Uniqueness -In an ERC-20 contract, we only tracked how *much* money someone had (`Balance`). In ERC-721, we must track *which* specific items someone owns (`TokenId`). - -We define `TokenId` as a `u32` (a simple number). Token #1 is distinct from Token #2, and they cannot be merged. - -### 2. Storage Layout -The contract uses several `Mapping` structures to maintain the state of the system: - -- **token_owner**: `Mapping` - This is the source of truth. It maps a specific Token ID to the address of its owner. If an ID does not exist in this map, the token has not been minted (or was burned). - -- **owned_tokens_count**: `Mapping` - Tracks the total number of tokens owned by an account. This is useful for external applications to know how many items a user has without counting them one by one. - -- **token_approvals**: `Mapping` - Stores specific permissions. If Alice wants to sell Token #1 on a marketplace, she "approves" the marketplace contract only for Token #1. - -- **operator_approvals**: `Mapping<(Owner, Operator), bool>` - Stores broad permissions. If Alice wants a game to manage her entire inventory, she sets the game contract as an "operator". This allows the operator to transfer *any* token owned by Alice. - -### 3. Events -The contract emits events to ensure off-chain indexers can track the history of every asset: -- **Transfer**: Emitted when ownership changes. This includes Minting (from `None` to User) and Burning (from User to `None`). -- **Approval**: Emitted when a single token ID is approved for a spender. -- **ApprovalForAll**: Emitted when an operator is authorized or revoked for an owner. - -### 4. Error Handling -The contract defines a custom `Error` enum to handle logic failures gracefully: -- **TokenExists**: Returned when trying to mint an ID that has already been created. -- **TokenNotFound**: Returned when trying to transfer or query an ID that does not exist. -- **NotOwner**: Returned when a user tries to transfer a token they do not own. -- **NotApproved**: Returned when a spender tries to move a token they have not been authorized to use. - -## Functional Logic - -### Minting -The `mint(id)` function creates a new token. -1. It checks if the `id` already exists. -2. If not, it assigns the `id` to the caller in `token_owner`. -3. It increments the caller's `owned_tokens_count`. -4. It emits a `Transfer` event. - -### Transferring -The `transfer(to, id)` and `transfer_from(from, to, id)` functions move assets. -1. They verify the token exists. -2. They verify the caller has permission (is the Owner, is the Approved Spender, or is an Operator). -3. They clear any specific approvals for that token (approvals do not carry over to the new owner). -4. They update the `token_owner` map and adjust the `owned_tokens_count` for both parties. - -### The Approval System -This contract implements a two-tier approval system: -1. **Single Item Approval**: `approve(to, id)` authorizes a transfer for one specific token ID. -2. **Operator Approval**: `set_approval_for_all(operator, approved)` authorizes the operator to manage the entire portfolio of the caller. This is efficient for marketplaces or gaming logic where multiple transfers occur. - -## Testing - -The project includes unit tests to verify the core logic without deploying to a chain. - -```bash -cargo test -``` - -These tests cover: -- **Minting**: Ensuring tokens are assigned to the creator. -- **Transferring**: Ensuring ownership updates correctly and balances change. -- **Security**: Verifying that unauthorized users cannot transfer tokens they do not own. diff --git a/erc721-v6/lib.rs b/erc721-v6/lib.rs deleted file mode 100644 index 8372a207..00000000 --- a/erc721-v6/lib.rs +++ /dev/null @@ -1,282 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std, no_main)] - -#[ink::contract] -mod erc721 { - use ink::storage::Mapping; - use ink::primitives::H160; - - /// We define the Token ID as a simple 32-bit number. - pub type TokenId = u32; - - /// Custom Error types. - #[derive(Debug, PartialEq, Eq, scale::Encode, scale::Decode)] - #[cfg_attr(feature = "std", derive(scale_info::TypeInfo))] - pub enum Error { - NotOwner, - NotApproved, - TokenExists, - TokenNotFound, - CannotFetchValue, - } - - pub type Result = core::result::Result; - - /// Event: Transfer of ownership. - #[ink(event)] - pub struct Transfer { - #[ink(topic)] - from: Option, - #[ink(topic)] - to: Option, - #[ink(topic)] - id: TokenId, - } - - /// Event: Approval of a single token. - #[ink(event)] - pub struct Approval { - #[ink(topic)] - owner: H160, - #[ink(topic)] - spender: H160, - #[ink(topic)] - id: TokenId, - } - - /// Event: Approval for an operator to manage ALL tokens of an owner. - #[ink(event)] - pub struct ApprovalForAll { - #[ink(topic)] - owner: H160, - #[ink(topic)] - operator: H160, - approved: bool, - } - - #[ink(storage)] - pub struct Erc721 { - /// Mapping from Token ID to Owner Address. - token_owner: Mapping, - /// Mapping from Token ID to Approved Spender. - token_approvals: Mapping, - /// Mapping from Owner to how many tokens they own. - owned_tokens_count: Mapping, - /// Mapping from (Owner, Operator) to boolean (Approved or Not). - operator_approvals: Mapping<(H160, H160), bool>, - } - - impl Erc721 { - #[ink(constructor)] - pub fn new() -> Self { - Self { - token_owner: Mapping::default(), - token_approvals: Mapping::default(), - owned_tokens_count: Mapping::default(), - operator_approvals: Mapping::default(), - } - } - - /// Returns the number of tokens owned by `owner`. - #[ink(message)] - pub fn balance_of(&self, owner: H160) -> u32 { - self.owned_tokens_count.get(owner).unwrap_or(0) - } - - /// Returns the owner of the specified token ID. - #[ink(message)] - pub fn owner_of(&self, id: TokenId) -> Option { - self.token_owner.get(id) - } - - /// Mints a new token. (Creates it). - #[ink(message)] - pub fn mint(&mut self, id: TokenId) -> Result<()> { - if self.token_owner.contains(id) { - return Err(Error::TokenExists); - } - - let caller = self.env().caller(); - self.add_token_to(&caller, id)?; - - self.env().emit_event(Transfer { - from: None, - to: Some(caller), - id, - }); - - Ok(()) - } - - /// Transfers token `id` to `to`. - #[ink(message)] - pub fn transfer(&mut self, to: H160, id: TokenId) -> Result<()> { - let caller = self.env().caller(); - self.transfer_token_from(&caller, &to, id) - } - - /// Transfers token `id` from `from` to `to`. - /// Requires approval. - #[ink(message)] - pub fn transfer_from( - &mut self, - from: H160, - to: H160, - id: TokenId, - ) -> Result<()> { - let caller = self.env().caller(); - - // Check if caller is owner, approved for this token, or approved for all - let owner = self.owner_of(id).ok_or(Error::TokenNotFound)?; - if owner != from { - return Err(Error::NotOwner); - } - - let approved_address = self.get_approved(id); - let is_approved = approved_address == Some(caller); - let is_operator = self.is_approved_for_all(from, caller); - - if !is_approved && !is_operator && caller != from { - return Err(Error::NotApproved); - } - - self.transfer_token_from(&from, &to, id) - } - - /// Approves `to` to spend token `id`. - #[ink(message)] - pub fn approve(&mut self, to: H160, id: TokenId) -> Result<()> { - let caller = self.env().caller(); - let owner = self.owner_of(id).ok_or(Error::TokenNotFound)?; - - if owner != caller { - return Err(Error::NotOwner); - } - - // Set the approval - self.token_approvals.insert(id, &to); - - self.env().emit_event(Approval { - owner, - spender: to, - id, - }); - - Ok(()) - } - - /// Returns the approved address for a token ID. - #[ink(message)] - pub fn get_approved(&self, id: TokenId) -> Option { - self.token_approvals.get(id) - } - - /// Approves `operator` to spend ALL tokens owned by caller. - #[ink(message)] - pub fn set_approval_for_all(&mut self, operator: H160, approved: bool) -> Result<()> { - let caller = self.env().caller(); - self.operator_approvals.insert((caller, operator), &approved); - - self.env().emit_event(ApprovalForAll { - owner: caller, - operator, - approved, - }); - - Ok(()) - } - - /// Checks if `operator` is approved for all tokens of `owner`. - #[ink(message)] - pub fn is_approved_for_all(&self, owner: H160, operator: H160) -> bool { - self.operator_approvals.get((owner, operator)).unwrap_or(false) - } - - // --- Helper Functions --- - - fn add_token_to(&mut self, to: &H160, id: TokenId) -> Result<()> { - if self.token_owner.contains(id) { - return Err(Error::TokenExists); - } - - self.token_owner.insert(id, to); - - let count = self.owned_tokens_count.get(to).unwrap_or(0); - self.owned_tokens_count.insert(to, &(count + 1)); - - Ok(()) - } - - fn remove_token_from(&mut self, from: &H160, id: TokenId) -> Result<()> { - if !self.token_owner.contains(id) { - return Err(Error::TokenNotFound); - } - - self.token_owner.remove(id); - - let count = self.owned_tokens_count.get(from).ok_or(Error::CannotFetchValue)?; - self.owned_tokens_count.insert(from, &(count - 1)); - - Ok(()) - } - - fn transfer_token_from( - &mut self, - from: &H160, - to: &H160, - id: TokenId, - ) -> Result<()> { - let owner = self.owner_of(id).ok_or(Error::TokenNotFound)?; - if owner != *from { - return Err(Error::NotOwner); - } - - // Clear approval for this specific token - self.token_approvals.remove(id); - - self.remove_token_from(from, id)?; - self.add_token_to(to, id)?; - - self.env().emit_event(Transfer { - from: Some(*from), - to: Some(*to), - id, - }); - - Ok(()) - } - } - - #[cfg(test)] - mod tests { - use super::*; - - #[ink::test] - fn mint_works() { - let mut contract = Erc721::new(); - let alice = H160::from([0x01; 20]); - - // Mocking call from Alice (in unit tests default caller is usually same, - // but for clarity we assume Alice calls this implicitly in this mock env) - - assert_eq!(contract.mint(1), Ok(())); - assert_eq!(contract.owner_of(1), Some(H160::default())); - } - - #[ink::test] - fn transfer_works() { - let mut contract = Erc721::new(); - // Default account mints ID 1 - assert_eq!(contract.mint(1), Ok(())); - - let bob = H160::from([0x02; 20]); - - // Default account transfers ID 1 to Bob - assert_eq!(contract.transfer(bob, 1), Ok(())); - - // Check Bob is owner - assert_eq!(contract.owner_of(1), Some(bob)); - // Check default account balance decreased - assert_eq!(contract.balance_of(H160::default()), 0); - } - } -} diff --git a/erc721-v6/screenshots/erc721-build.JPG b/erc721-v6/screenshots/erc721-build.JPG deleted file mode 100644 index aae7ef284ac8a8272158757a474220e4995df4ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19539 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 diff --git a/flipper-v6/Cargo.toml b/flipper-v6/Cargo.toml deleted file mode 100644 index 01eec9b9..00000000 --- a/flipper-v6/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "flipper" -version = "0.1.0" -authors = ["Use Ink "] -edition = "2021" - -[dependencies] -ink = { version = "6.0.0-beta", default-features = false } - -[dev-dependencies] -ink_e2e = { version = "6.0.0-beta" } - -[lib] -path = "lib.rs" - -[features] -default = ["std"] -std = [ - "ink/std", -] -ink-as-dependency = [] diff --git a/flipper-v6/README.md b/flipper-v6/README.md deleted file mode 100644 index 995d8f09..00000000 --- a/flipper-v6/README.md +++ /dev/null @@ -1,148 +0,0 @@ -# Flipper Smart Contract (Using ink! v6) - -Welcome to the **ink! v6** version of Flipper! - -This is the "Hello, World!" of Polkadot smart contracts. It demonstrates the migration from the old WebAssembly (Wasm) architecture to the new **RISC-V (PolkaVM)** architecture introduced in ink! 6.0. - -## Project Structure - -- **`lib.rs`**: The logic of the contract. It stores a single boolean value that can be flipped from `true` to `false`. -- **`Cargo.toml`**: The configuration file that specifically targets `ink = "6.0.0-beta"`. - ---- - -## Prerequisites & Installation - -To build this project, you need the **ink! v6 toolchain**. If you are using a standard Rust environment (or GitHub Codespaces), follow these steps to set up support for RISC-V. - -### 1. Setup Rust Sources -ink! v6 requires the Rust source code to compile the standard library for the PolkaVM target. - -```bash -rustup component add rust-src -``` - -### 2. Install cargo-contract (v6 Beta) -You must install the specific beta version of the contract tool. Older versions will try to compile to Wasm and fail. - -```bash -cargo install --force --locked --version 6.0.0-beta cargo-contract -``` - ---- - -## How to Run - -### 1. Unit Testing -Before compiling the full contract, check if the logic works using standard Rust tests. - -```bash -cargo test -``` - -**Expected Result:** -All tests should pass. This confirms the `flip()` and `get()` logic is correct. - -![Unit Test Screenshot](./screenshots/test-result.JPG) - ---- - -### 2. Building the Contract (RISC-V) -This compiles the contract into the format required by the blockchain. - -```bash -cargo contract build -``` - -**Expected Result:** -The build should produce a `.polkavm` file (indicating RISC-V) instead of the old `.wasm` file. - -![Build Screenshot](./screenshots/build-result.JPG) - -### 3. The Artifacts -After a successful build, your contract files will be in `./target/ink/`: - -- **`flipper.contract`**: The full bundle (Code + Metadata). Upload this to the blockchain. -- **`flipper.polkavm`**: The raw RISC-V machine code. -- **`flipper.json`**: The ABI (Metadata) describing the methods. - ---- - - -## Code Overview - -If you are new to smart contracts, think of this file structure like a recipe: **`Cargo.toml`** lists the ingredients, and **`lib.rs`** contains the cooking instructions. - -### 1. The Ingredients (`Cargo.toml`) -This file tells the Rust compiler what external tools we need. - -```toml -[dependencies] -ink = { version = "6.0.0-beta", default-features = false } -``` - -**What this does:** -- **`ink`**: We are importing the `ink` framework, which provides the tools to write smart contracts on Polkadot. -- **`6.0.0-beta`**: We specify version 6 to ensure we are using the latest engine (RISC-V). -- **`default-features = false`**: Smart contracts run in a tiny, restricted environment (the blockchain). We disable "default features" (like the standard library used for regular computer programs) to keep the contract small and efficient. - ---- - -### 2. The Logic (`lib.rs`) -This is where the magic happens. We are building a **"Flipper"**—imagine a light switch that you can turn ON or OFF. - -#### A. The Entry Point -Everything lives inside a module marked with `#[ink::contract]`. This macro tells the compiler: *"Treat this code as a Smart Contract, not a normal Rust program."* - -```rust -#[ink::contract] -mod flipper { - // All contract logic goes here... -} -``` - -#### B. The Storage (The Memory) -Smart contracts need to save data permanently on the blockchain. We use `#[ink(storage)]` to define what we want to save. - -```rust - #[ink(storage)] - pub struct Flipper { - value: bool, // We store a single boolean: true or false - } -``` - -#### C. The Setup (Constructor) -When you first upload a contract to the blockchain, you need to initialize it. This is called a **Constructor**. It runs exactly once. - -```rust - impl Flipper { - #[ink(constructor)] - pub fn new(init_value: bool) -> Self { - // We set the initial state to whatever the user provides - Self { value: init_value } - } -``` - -#### D. The Actions (Messages) -Once the contract is live, people can interact with it using **Messages**. - -**1. The `flip` message (Writing Data)** -This function uses `&mut self` (mutable), meaning it is allowed to **change** the data in storage. It costs a small fee (gas) to run because it modifies the blockchain state. - -```rust - #[ink(message)] - pub fn flip(&mut self) { - self.value = !self.value; // If true, make it false. If false, make it true. - } -``` - -**2. The `get` message (Reading Data)** -This function uses `&self` (immutable), meaning it only **reads** data. It does not change anything. - -```rust - #[ink(message)] - pub fn get(&self) -> bool { - self.value // simply return the current state - } - } -``` \ No newline at end of file diff --git a/flipper-v6/lib.rs b/flipper-v6/lib.rs deleted file mode 100644 index 8e80d3a5..00000000 --- a/flipper-v6/lib.rs +++ /dev/null @@ -1,50 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std, no_main)] - -#[ink::contract] -mod flipper { - #[ink(storage)] - pub struct Flipper { - value: bool, - } - - impl Flipper { - #[ink(constructor)] - pub fn new(init_value: bool) -> Self { - Self { value: init_value } - } - - #[ink(constructor)] - pub fn default() -> Self { - Self::new(false) - } - - #[ink(message)] - pub fn flip(&mut self) { - self.value = !self.value; - } - - #[ink(message)] - pub fn get(&self) -> bool { - self.value - } - } - - #[cfg(test)] - mod tests { - use super::*; - - #[ink::test] - fn default_works() { - let flipper = Flipper::default(); - assert_eq!(flipper.get(), false); - } - - #[ink::test] - fn it_works() { - let mut flipper = Flipper::new(false); - assert_eq!(flipper.get(), false); - flipper.flip(); - assert_eq!(flipper.get(), true); - } - } -} diff --git a/flipper-v6/screenshots/build-result.JPG b/flipper-v6/screenshots/build-result.JPG deleted file mode 100644 index 54fe25ef83aa72f4621b69694a380651c78fc802..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32981 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

=lsuSs+C63_8AIx z`1;!Bn)qk?lFd73XqERsd6NKdWcE`4(-#&nJ95~Q02>BU{I9kD^Ji!OZ{`Y}xar_W)~zi8T-aU< kKw30}I-lxGmhk_4#o_u}2A>TWMf6Y-?!U_c0{+ea4-(IRr~m)} diff --git a/flipper-v6/screenshots/test-result.JPG b/flipper-v6/screenshots/test-result.JPG deleted file mode 100644 index bfdea526a3ed1e0b7637f9da5b1babbc6b801028..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30096 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 diff --git a/incrementer-v6/Cargo.toml b/incrementer-v6/Cargo.toml deleted file mode 100644 index 3516a573..00000000 --- a/incrementer-v6/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "incrementer" -version = "0.1.0" -authors = ["Use Ink "] -edition = "2021" - -[dependencies] -ink = { version = "6.0.0-beta", default-features = false } - -[dev-dependencies] -ink_e2e = { version = "6.0.0-beta" } - -[lib] -path = "lib.rs" - -[features] -default = ["std"] -std = [ - "ink/std", -] -ink-as-dependency = [] diff --git a/incrementer-v6/README.md b/incrementer-v6/README.md deleted file mode 100644 index 770f1e90..00000000 --- a/incrementer-v6/README.md +++ /dev/null @@ -1,116 +0,0 @@ -# Incrementer Smart Contract (ink! v6) - -Welcome to the second level of ink! v6 development! - -While **Flipper** taught us how to store a single global value, **Incrementer** introduces two massive concepts: **User-Specific Storage** and **Identity**. - -In this contract, we build a counter where: -1. There is a **Global** count (shared by everyone). -2. There is a **Personal** count (unique to each specific user). - -## Project Structure - -- **`lib.rs`**: The logic. Introduces `Mapping` (Database) and `env().caller()` (Identity). -- **`Cargo.toml`**: Targets `ink = "6.0.0-beta"`. - ---- - -## Prerequisites - -If you set up your environment for Flipper, you are ready to go! If not, run these commands to enable RISC-V support: - -```bash -rustup component add rust-src -cargo install --force --locked --version 6.0.0-beta cargo-contract -``` - ---- - -## How to Run - -### 1. Unit Testing -Check the logic before compiling. This tests both the global counter and the user-specific logic. - -```bash -cargo test -``` - -**Expected Result:** -All 3 tests should pass (`default_works`, `it_works`, `my_value_works`). - -![Unit Test Screenshot](./screenshots/test-result.png) - ---- - -### 2. Building the Contract (RISC-V) -Compile the contract for the PolkaVM engine. - -```bash -cargo contract build -``` - -**Expected Result:** -You should see `incrementer.polkavm` in the output. - -![Build Screenshot](./screenshots/build-result.png) - ---- - -## Code Overview: What's New? - -### 1. The "Phonebook" (Mapping) -In Flipper, we stored one `bool`. Here, we need to store a number for *Alice*, a number for *Bob*, and a number for *Charlie*. - -We use **`Mapping`**. Think of it like a phonebook or a database. - -```rust -use ink::storage::Mapping; - -#[ink(storage)] -pub struct Incrementer { - value: i32, // Global: Same for everyone - my_value: Mapping, // Private: distinct for every user -} -``` - -### 2. The Address Type (H160) *Important v6 Change* -In older versions of ink!, addresses were `AccountId`. In **ink! v6**, we use **`H160`** (Ethereum-style 20-byte addresses) to be compatible with the new RISC-V engine. - -```rust -use ink::primitives::H160; // We must import this! -``` - -### 3. Identifying the User (The Caller) -How does the contract know if *Alice* or *Bob* is calling? We ask the environment. - -```rust -pub fn inc_mine(&mut self, by: i32) { - // "Hey Blockchain, who sent this transaction?" - let caller = self.env().caller(); - - // Look up this specific caller in our "Phonebook" - let my_val = self.my_value.get(caller).unwrap_or(0); - - // Update only their entry - self.my_value.insert(caller, &(my_val + by)); -} -``` - ---- - -## Summary of Messages - -| Message | Type | Description | -| :--- | :--- | :--- | -| **`inc(by)`** | Write | Adds to the **Global** `value`. Everyone sees this change. | -| **`get()`** | Read | Reads the **Global** `value`. | -| **`inc_mine(by)`** | Write | Identifies **YOU**, looks up **YOUR** number, and increases it. | -| **`get_mine()`** | Read | Identifies **YOU** and returns only **YOUR** number. | - ---- - -### Artifacts -Your compiled files are located in: -`./target/ink/incrementer.contract` - -![Contract screenshot](./screenshots/contract.JPG) diff --git a/incrementer-v6/lib.rs b/incrementer-v6/lib.rs deleted file mode 100644 index f4ec2c0c..00000000 --- a/incrementer-v6/lib.rs +++ /dev/null @@ -1,103 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std, no_main)] - -#[ink::contract] -mod incrementer { - // We import Mapping to store data for specific users (like a database) - use ink::storage::Mapping; - // We import H160, which is the 20-byte address format used in ink! v6 (PolkaVM) - use ink::primitives::H160; - - #[ink(storage)] - pub struct Incrementer { - // Global counter: This value is shared by everyone - value: i32, - // A map that links an Address (H160) to an i32 (Their personal number) - my_value: Mapping, - } - - impl Incrementer { - #[ink(constructor)] - pub fn new(init_value: i32) -> Self { - Self { - value: init_value, - my_value: Mapping::default(), - } - } - - #[ink(constructor)] - pub fn default() -> Self { - Self::new(0) - } - - /// Modifies the GLOBAL value. - /// Everyone sees this change. - #[ink(message)] - pub fn inc(&mut self, by: i32) { - self.value += by; - } - - /// Reads the GLOBAL value. - #[ink(message)] - pub fn get(&self) -> i32 { - self.value - } - - /// Modifies the USER'S specific value. - /// Only changes the number for the person calling this function. - #[ink(message)] - pub fn inc_mine(&mut self, by: i32) { - // 1. Identify who called the contract (The Caller) - let caller = self.env().caller(); - - // 2. Get their current value from the map - // If they haven't used it before, default to 0 - let my_val = self.my_value.get(caller).unwrap_or(0); - - // 3. Update the map with the new calculated value - self.my_value.insert(caller, &(my_val + by)); - } - - /// Reads the USER'S specific value. - /// Returns 0 if they have never interacted with the contract. - #[ink(message)] - pub fn get_mine(&self) -> i32 { - // We need to know who is asking to return the correct number - let caller = self.env().caller(); - self.my_value.get(caller).unwrap_or(0) - } - } - - #[cfg(test)] - mod tests { - use super::*; - - #[ink::test] - fn default_works() { - let contract = Incrementer::default(); - assert_eq!(contract.get(), 0); - } - - #[ink::test] - fn it_works() { - let mut contract = Incrementer::new(42); - // Global value checks - assert_eq!(contract.get(), 42); - contract.inc(5); - assert_eq!(contract.get(), 47); - } - - #[ink::test] - fn my_value_works() { - let mut contract = Incrementer::new(0); - // In unit tests, the "caller" is usually a default account (Alice). - // 1. Check initial state - assert_eq!(contract.get_mine(), 0); - - // 2. Increment specific value - contract.inc_mine(10); - - // 3. Check if it updated - assert_eq!(contract.get_mine(), 10); - } - } -} diff --git a/incrementer-v6/screenshots/build-result.JPG b/incrementer-v6/screenshots/build-result.JPG deleted file mode 100644 index 8f4be7cf3f5e8f762fafd968f56cdccc80ad5266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35733 zcmeFYbyyrtw=X(4L4yW&3+`?q!2<+$XYj$@B}i}y5Zv8u2AALvAUF)}!QJihe($&C z?7Q#toPExI?sNV)-BVN5-DT@nt7@&TwfbfLWexCFPD)k^00RR9FnT=!FYB;tk{(v( z0Dyu5fDr%yAOqlGgaELwDI@>@MlQ?>0RNhXdHtzmWd0QcFaQA9;eC>SJV$%I7JUr> zlKt1ezn=cz1MuOqjI4yjD-Z~AaQ{FO_Z6|6IQV}}HzdUWBMrwX001N;{9F3pP=)#a z7m)uK)qi6rPIgWnK@JW|EFfJV{;x8Gcz6*6Jstj77h+G zV-{mGE)EtmE-o`Z9u9s^a}E=#e>QJs`me1!xH{SXqir)&HlQsK1hjK;eno?Wjf(B> zPXBkc`3lj$Hu|5!|4QR)9>I@JKw}r+r`I6**Py;q!ota=_Adj?%E`|!%=RDh3A6nL z#=q<6e{awKr_d4=HZv78{j2ZxPJcJA3UvJ68*N)F(Z3gvzv+9u{5$bl@hjK8dGkh? z?ccZg{|4b7cV3z9wcNk5=xa%e{~wP3lNV1UjDm&wiZKcv=36u@0z4u@0z86u#ANi8#H6&O?+B<^sc0GAGchv}QLu5bF>=x~ zGBN&D2@Dc4GRhkiTvSwCMiK%N#{cs1(gnamhJl0ig@d62z+%C`VZprg0?1!QD#EL% z{!3c_^MHYcgGWF_LVkmS`kJBfEdUk<4h|L`4gmrFRZheBzCH)QVV5fjL$`;mZ{FCV{v;KxsrQqnTAa;j?T z8k$<#I;Lhoa|=r=YiAc%H+K(Dui&pCp<&_QA`%k6Cncx+NKMPjFDNW3E-5Xmt8Zuo zLz3qX_=DaT&y z#Tn(Pn4D)81RWfLo49r)WN783At;qG$R?h8fr*jO4O#lIM%=IX@s&Vizz|JtpXa0% zQRd;!h0;_~QA?;aq)k3N&=s?Vt{b!{{v(3man*-ULGB^nbFB#2p+{3r54%NPQ*Bi#SM8m+(jxNKjr9-r#5&dA4l5csO6Hfe zR_-eBmlZA@X?ER^wF!;}x1I?~*@Pv5#WpO!QYCwfw-D`+-ixyL%)eSa2gF#tX7P)Q z_P^yE%xXaO=GaPBWKQo?KH;gA`3yKmnT75p9;vQM`m?q`BW~R`{KXV_yUAo=zD3qj zj;G$pPz$*`p7gPL{yBQm-n)q&cDI=-&P;!3#U&`e@MSAmkoujIy3uvZOJC zN2b%H0Vusbz3+5-#=G_=6upZv@*-cxs>pRuQPNxNTPtN*|MI2B!$A20RRc6+(0 z$8pHMo7;*i?ghh(FP5dVdG>%fNKgA18>9E7}OI_RVry z-}f~xC0{3}89~HA$?Kn-z9l+rtzq<(j@hK1&IPemTs;uFMlu*oxEy?U)l{hwuE#$Q z81s-ej^h~GDP6k7QJH!K@>UjFby`gw0_z{>vT1)FWn#00gzl_wu9Z3;s1tFsZfs9o zy#UyfA%EVhmD`lO05qQ4F2TEbr1o<9pRGnq7b181SrmTW6;q2j3+#<6eosz2j`w%H zwjos+-tkR;EV08{w6B606Cjym!%weVxUEsjS={Hvmyya!NkokdQ%F(acTq#B&JMB+CR=?&-w+*n?(f&IgzqQmvDZkUSld36gbuAN2W{x1>GlZeKnx53-LH zG;5ZUxtMZ>3%s4n)c26?)0s{=U#|Q);+R)i^)SRT-B8XcAWpGH4d}v2oTJaF3hs5& z=?v%g6^2^zrP;Q)9`Yg1583KS0)n?Qf2Hbe*#jIum8dGP0&k9<{c{+ntRFi=UjSP! z=Qhw!I<{V4TPhQ@vbA?qm@7SGg&X$h?6rP{N9_$Mt9luxzpeY>BwU7ncRNQYacYS!GYgi zv`1?T-QU(){=~M4t@}1Tl$zfPMt~6Dz@_<4f0F1?tE$w@ZXp8I(ILy&I3v1wObWv< zY5X<;U1hUh5N|vAo4YHhaD-`u*{LhHr>_BoP9cmlCVo8%BuBB%g%n1F+2cn`&dUU( z8!3$``aYi+T3aW*r&$DN-Y?M##)D}6Z|x6G1ntpptELPl8XlUV#Kf5&f1QKK*0?$b zfI`ketM0-WT)KRG?Al#Z%i|svLN@e zE3&-Q>!Lq3?%PLHueMasXt@34MT)Q+ZUVwMP(FPG3)VECO_mt|au}1Toys5Q52gL` zGJzZNgu-0K2Ra$o_qKdB0~8OR_R9+A+?EFbS)EDFu|@m+N?7|?e^Ri}6=#K*Y;e;^ zH*M{N2cCAiIJ*D@85l|E?bQ)1k7DZwLLlDbsY8vOmD8WI(E?OFD9V|s@W3!(yE|!I zZ$`H|o0IeB7NmyEsrrMdQQa#c8(+nrN8t?};EW2J_gJ4RzZxgmVM+*+g_bF7WMeKC zD2X-~_14p;VtF@B%QRCv3~iZV#qSwd`|wp*>ac|!QoKQ|ER}RDSY{l2gT)<9@f~Z< zWb46>R8Y0ilDdA{=Odc3{8O;`tgHtpCwc)NUImwHI7I28m{&x=>*XJ5-gMO^#4T@b~?+b0?q`AE%EWXv%dxB0aWanNqK{ zI#N&b2pPr?(LBK?91dI+VM?12rc1%B8ZCn|rjP0#ft~FTz$L0UkHx~gn+=<#gFCf2 z-S^w8VV9YN4cm2za*)>O6Ed~;LbAkpU!n5Gk#?ZrcA>OUm4Zb@!xWomVt);u>m(uf z$D`X5=iddhE={#N`x@U`Xfy0GrA$rm46B!E0x%_HilnRmoX?MX<5!wo$MG)M;cufk zX7QVk!ECu+Rr5^yyx$Pf`4u{$Lz;%ykwKlXL1pkMi{36uoB%z>KP&?q!D`>{-K=K+ zjbLL@_H`t3^-BsTJwmtQ1pUt`5PXhFPPZOWGz0jh7~ ztHh^zF`{3%5(6ijM?g4QSpp3pX~l#UQVYH0=fltoES3Q2`LQlUvAeenHf{V zg_{vVU(H?NgT#?&V3EgbOQw3$Na9AAy~eU8es%+0TO_DWGY|#VGRQhYn^}mvVpd>y zHLpvpD&DtQny)4jkF>*K7X*K26k0QFsu=VkFJ0n|<{8T_^DXOz_E5AWj2!Nv$W(L- zS8(*dAr5uS+DXfo1UG{(am&=?9^1!1#P$j@*C=r7v!O>sw^0!iL?Q`QFuiSzFn*!f^p7r3$EMM}+vLN(5T!M{ur6}2_} zG~H-5?>ba8XTc38D0%}M(d5bxq<7y~PgtuKRlH61XyU2L5yFqUnHDp)GSmfe)mQoa zmc@Q$+i2`LT|fE{u1pI%uRrm9nL4uLVRF7c)uz+lJm37%jJ5?qS%%rAYuK8-EGY(u z>MM@YwxZ0QHU32W!6y+c#_Mfb>Cj>r+Stw}b^3MEYFwm0-qFbpWRfPvWt;vpPCF>W z%(1myNc|L??^|`isjs^~X?6e0?NFm%o_*p_k6`P<6G3K>q1X9izI58K{#DC~{m7T= zB$f777op(FJ&8R~OtCq==VvCYCWTRo{x4{|4uhN3R256hAAq(u?-B>>;Z50?tMJsk z5|{>uo5ua*s|Z5C3Eb_& z4U$+;Jx}E=*^Sf8&{SAw!QNDwB zVNABZ074f}E*5jYTdRFfn$4bhK1q5Ui&UAWp1izcEzh&f#NLkDTs&l?b|iUt%_uNH;A-!)V5HB-=gH^67JPqWUIVKH z^7ftM)mSbe2NA9#ZRep&q3zIo_#^I1U(KXe`^CZK##!!>gIKB&<%Xto^A`Z?`jUq zO8Il8-3t~QooOQ43Ka$1Icz102m%T~TV>EZaX1`Gg)9vkW=^rCR}{1((#F@(lqGna zz!|=(LX%oVEhDxHvxJn1dILq8KA25KpH)Gcqc+z3SJ#8$f~dI)yW@@1(q*|QR^2o+ zw??qaMUsa31G6SJb3zXijPioh8v>EVAVft5eLJ&zt;uN~eIeNp;Eer|t*INd+L^PT z;HryRntRB#oe{O%+v-Y)f42p&*n5LQWaNSHLBRGw!@SVm+hSwzDx7WjMYtJ zLxbMwXhZ`fFb;57xYGvw>$7s%$cM?)rN=Qoh1 z3#km;bFLK}ONPWlc?&IB&D=f(jI}POl%QrL2*u2h_)$#&r(?45YmIJlBZz@5A1REd zL1Rwr9@iD^Y(3ypbRCe~FpuYzRJ%5x5%?z&FRh}-fKoL{#%YUw^wIUVV(sO-8lIhO zM^J&%R)6>rr)QXV!6-F)`E-9)f!RjF;{DOH7iRU<&2w?--hF>+`CaycPITeTck#r- zsfu*2DIwW`k9X>kk>Mbgt)`YVe#&Th;RJSdalr&7fTlf+z zP2C?naj+fSKcXV_rV;Ipl+em!Urq%%5qlZv)E zSwY8EIBqXQc_@MzFxr4qH@Qy?@!&^ER`H~Sz5)id8wiH0*wn~l#vri{!yLfSSe* zm7nevuG%LtPp?Hf=T`K}$V?pj#ecQq!QzR9EhL?H*>9w;l^W zLyUI>V}9`qlqXf^aA4g{*X|yBd8r)W!OwP*mRSoQ(CJS3@g7KRc zj*<8{OHjQQqtb>g)Knkw+I4ar)saSJ@n|U67|tap181DHX_WTKPwW)&(tj@H5yy>1 z=inJTWzx=eT_(C-@1w9gLTUg|g%Ab3m}MbW&eS7c$sSwR5}d+2r^)Hr;Uwu$cr*-f z803`la*il`Kb<}B-l>IUAIg#s^(`L_w)-6MadUJTg5qrfEwLmruSOUTTWgtAsL=V0 z-6wn`Z1(xEX(d;dh66rf-WEb#S^zej)4bOrJGuYk)}Sm2!2NeY`r$UoNpQDDLEVMdJlndcoeHtaiPS_AxV_%?uRG7FH0XNj~mVXo|#jU#x6I0Dz592VmIEv z+rNAte63TIz7f_DbA8-@Rk^7iSV^O<@pJSyInPg-71x`Jz&rO}Q>e;+X(+a-6VGtj^Fkhm}a?l=GhYHWmpl z_jHroc+PE!IQOa1@!?#P)1i}Z7_d7JqluDnzAfLmKJpAK8&;8Jc>%1w0OF^3wyb=T zL9VtC#n4XyH7mpX%l>bHF&ZI{gONFOyxqj1UL@F@A~rvo z?ceT;Qp{F1v}?0a*U2a}Na0d$nGI>06da27xC>)Nkt&Sk->j70k)KsO(H$rxylebj z#l0Ib0~Y4BEi|UdLMgpdbRL*(Zbdik)k$uqnT=a%Z_r7Hj^MLM)=5--NpSaEJiE9j z*|cM~-X48SGpO8HyrsG@Ype+}izW9clM{bpXwP?qp4U$Q%`Dvi2;&18$+v0MBhKBj_^_mZ5Q%kMDZNg# zX!3u?vU<|j;HnhZt1Au5S5CpmCJhK>ulodKbaHH}tJ0+i{JKRZE3avP;O&=N*LgMb z9A@$N44>B2i1fCby@^{~lDJ(asXf-{9vl>Q12mIvw)+f+tjmhYYCV-;<@VNBeK!IyKxKOz^=%_!}9cJ3gsW7vEBE? zZLTbP?kvYlzV|nrEqWAuRU59W>-SrHI!)o14l{KJ;RIGg?;L~Yeos}orV}$+va<0A zp?a`7Zpkwbm$OPqO)6qY3u|(%A28iL<19)$`=dzRo7ukw*ME`l^kmrhNY&wm)8M|D zR$JDbvX1$qTMe9!MfsL7s_YUjKqL$gq}>Qzt-izY#W{Ha0RHr6!tSH{fs^yj5=U&} zkuOkQ04@+c2mTUP7gE9VJA1p!c0un(ii&e+xeUh?n&)Ptu}7r(tYL3;q2`;Nh=)|EwMc-WZ(h^aTEKRg)Xez1c~_Pc_Tja#Np*DMb8a`B0Q8HE0;$q;prk6Cbr}?mU&1-%69M{##{RI&CY$1zV>4>5L zUo(OmK}af~0dMy9!*Un%gZgM2nM)8uTmRyYz@L2j1jpabdc4II2ly?#(N8Hp z$)*patoqnc&Z@;VagNv|N6K}_qlnDy_SUJ(k@Ur#W^V-#=!UKbfgJvNzNT2~aFYRy zL?g(1_5!kLY`ENc)i}2KH)#K|R*)*N?VhnTf>SG3B%JE?77HA>l_mIhU4Sy|n)kmT_zngmAdG_R$(~4M+qisOn#>iqN1rEl=YXc}Qo{MRXT6C&n%@-( zyCYKk76W={7ZJfqGaw$z6$Q30b?q{XHjNE=;>Ev{=n5ezQ%ssvuS@tU(S)Lkh zsK#xrlh@-&Sl@ZV2|4}pBrVUK=-je8BY$!aegS-95psvK_#Zl6<-UQ?mgph6o!_1| zW5O`L4Nn<*^|1JT4WrGpxR6h?sdaL*e#&%)CvtJIDB+WhN2Tz2IO4Is21Pz~$&wSt zN&!aV|5zc;r#nYR@V5m~z$w*fg9_Z#troUDeo(^1z%T{it|dlPADq?r8?--rJ$pS~b6$N*r$t zW@*tB4U^(je6NqTdf9*Ev3u`k@pT)Bx=8zG?3CtrLv6q~fdCMRpT;6;ZS#*6@W*0~ z=XNM9a~a_nqE-MBeJKshu}#|VzRMN3>@Sl+{nLJ6dK;&_ zl@&2(H!KG-s_C{Q;Xz;*S(4_@6z7#&ji277XmvlX8!BfN3aVZJy=c!oN_}yi+4)P~ z#^$dW-VJ(~xR{JbFPJe`!0b zpT<&|1lYZa5@AOogpao=9>0HX3D%g~a{G@m#KZ%9?+p@U(gn5|f`_){ovmzWj_k=e zN5f~rO+?lC*W$c2af)awpA&QUz(hWpdGD`a)65I)Cc5_PGB{Y9(Q?1T;@z36Lg34q z4!vUkCPn)1$iUy!y=2itTE1y&cUn~j49PxH(WdRp#K~Wat~*i14p@U{c0lB0`c09_ z%95Xkze*BLN=z_FO)-Nk_D^kcyzV#mGVjrG!x5WeLsQ(_ix1W%hi``9W0a_QN+l_% z|JFY&|BkHX7-0XSW*YE+bQVBf1jAne_C1JYrzzAkCqg!drjI&@g^(J_>L`8yPvb#i zl1DZfq$F3@mZWLj-q#}2w%WS&``)l6p>rSp;7th04=8wB>hZX|6Ji`XJBN|iOl^&h*#}<>+b#GXEz~)Js z-XvJ@2{QffM>bi^tYNle1`eh51!ba5{n=w29w0`hG3?Icagg*KNe<)QXXP4JW)`{d%X{m`N8!8Y814?d6bwQkI6cF(yr?0W~ko;5$7(lP^; zQw?x&Nf8d$*Q&U?Ai>4FcOC#IKX-CGSi9}WE8V^mqB)%nA+1QR{nO&KIQ&r-8%iNf zol8x?U!I(-0mk}q2+9RZf%=T2DChwea2){hfGWC!{+6P2XMf`o(R7mQIWYJI0OF|o zfc+~Zk~3v!u_3mNE6$_x1lfA-el|s9CFi=19%>e`BCn;5tu+GNukWZ z!{Wp9TvRUPhhB>Lp}U+B+7D88ViEoWWvHcnaZX3gX?7UMRrx)jN3?r8e#A3x)osIL z5kjylQr0*ZX%XBTx7f|i#~bYfR*@$Cx;tXp?>F^a?qI_CV{prYD%E&{4O>312;vL` z(#EDZOzL(w$>s4lRX3-Tb9`x)NZ^CZ%3)e?b|Fo7+t($+(V5>E_-R0@T{V+%Psx`Y z)qE$lZudFhO6a@M{Z&EpZpnn#wl! zvc|?f=(3eyW}S|1U3*AH0d4Q3Ef$z`XfY!RwJB!UG1XPXx%XWb@$_SAUpaK>jc)(s zG011z4Nz7PLns$NGy;pfmsZZrwDgCyAuMrtGNs3h&p#vkkL9jz1RJaO|C z;l@mmwTAn93;e_)9V_KzE$GS-gwYv-!sA7r>nQGI!MvT zuG_$1=7i@|IDeMVyPG4z#HTlzqS$b{-6jiSNlJREt8kX4O#HRnAVX>fC!Fw+308^Q z?nwtdWpEMPG`BkTV4hyo7yhGf+nQ6hLveT^(5>{ihsKMj*k-+?;TxMPshHB#@s&;F zH#*rJWmMx;TC`mK8l>7WL6rRR+sIc3m|5CJT`XXMu;i@FazUoH@()-7cnX~0&@u6@ zeg$&0{TmgJSk(!aGhF7h%+b-_Ifh{;VBSz_gr)a`z@I{eGQz+E{XBMj~O2&?@}vBGAF?? zMAF{Xp6%MVFX06+@XOTd!rczZDRbmxKu%s?tooqD)|DtG)7`lkI?on*$uz>hApxqY ziWtBNj4tW;2%F<#|NQ|aVzbAAIQ%g0G$jl;Y5JWrm4JzEjjtwhkf}BH#5piQNVBzR z=EU~u=$*2!sH|~=?B@{>MTAU&COY8<*0oh?pYHp&jv7*V*J79ryEPH~uclDYT0=Ot zx|yrG@(?|0#<_Ed@Wkr&?F*m>$^PJe$?-La55a@4P zPBJlQcEJb2M$!h1)5HyTC62OIZ?Kq8o@gb{*h(hHoxRhhc1v&tN*N&=y$w*rAQpgw zBV_aMynpO_min$^P-;_Yuj=qzb zVsphyCXP(!yCBHVy&LhA(T8j@I&h2~o@uQR&KwtHA> z4$H?^Zh;!#O%JExUEDO|3ew@xjFki@pn?`CixxXR&VjM~PioUr>~!x8?;j&Icj}gf z{0&pB(di5^wR`N>eTn7n!tOu3%7|V7oKL*yhUY<)_l!_BCOjDb+VAb@Qq8YYmR~9( z+tnFdSqQC2aKaqjTc?Z_9W-b7*||mKB~Wc{O^t~LS-S*|AS+TV`k*!#pDJ$>BwdfM2;p`}8vAZhAC0dS&yF1zdkYvJ~U-+%{8 z!wK3S*&=*EQ_6^ML8MNb@>qWW zT0Kd8XDK~>hy5eXJ0gSN^>S451l>vzpjGtOxpXWnMB%2I-h|BraRQN3hPJcNoHUV! zZ`%v|hzmQ(lM1Z+>x(vc@Oj3$QcQ8oWh%nRdMk>l{Kl~TdJDM=P9Q> z#NRytpSfJ7Pb}A3(>Bd|g*wPu+!0T5hrfd-UV@AE&dGz+Sqlm-CO*?@ui2DRh!)1T*0X-^e@383=_qF-IGi zE*XEFY)1&JdlX3~2;i3IM};Bk(!MO*pTSLCFtGoA&j~#31<>@Vlq6|6i;iJby`fkg+2O8p_%%F*X)O!@g4gRA9rRkk!kZIRPjTtsO zv#j3AgK|QPsjm=?HO4B+A59B4PNJ$ovOA?>-&_r`J>2$%*y^-@G(ghMiXrhg31$i< zt>269iv?`s(9eNGANbF!iAI11;0ehE$X0DSKKj-w2Oj8ruQqtF==5 zba)5ZD}czQkO#Mw%MljkB=z@m5QQ4_&8vA1z@Zo5O+rFqQh(+DPSR?<@}qKX(3VJE zH6K`2H!s;JH|9!Zm@5&Ifw6!Wn#Db%&dT9hY}iM8>E`AR#>bH-_WLtLeJD#>(1qYo z;5^f^c21tUth4wLXoX%`VZuQ9fyA;MPrQpfNo|@Nom?XoIOCE|yocphzO+aaBCQA8 zb*6Vz9e#DNcUX}dw6fy4)g;y2T9-u&jG|_aL{0K}yX}^|{|3!5xHPYT=qV<%(i*>( zwGiX-B8T}0lLIN zJnM+}c8H%0a89?d2`PSaH!XiJHLHulM(!qr%SFP=Nyd-Y^E`w8Oa#XMs0~=KwG+63 zavcQjsZNL^D7XB+Og~Tuw@)5cu}u7m#GU=~r$UxCfEtjXB)U_rEKUd!C7EC&g7eJZ zyFpxrcSr>(w-u7&Iq}2&)=0wr0weif4q?aHg>;8iuoHR~JrC8?>)Tb;B}yd*3J!%u zZl1?W@ze~^Y!1>U1sa6pVgl z={a&f73o*JHAY3BH_2J!7$R$QxHXlbfV1lAc>Yb^?tgpx{Fi;MxX~FxMx7;pWO96< z-ZXi6#JZ)Ex47`Fr{>GA^T()eC&&IVp{=R84W4|PpdnMRrNRr~+D~%hDQ9TPBaD3i z#xZl@B%)g_zxCh+0QU^{5aVafF*)S&ICqyG@1ZFj#Kf@HXxSGuoZLqr$1NfLaV>OA z(d&w|_6vQG3k{?-`0xf3Zxg9WmaW*4+77+x*!cn|E#fgC*Vk|x-?B1%p*qXeFB!n*x2Ci1hpgWz`_&&9((A5@AEm5PRYvq_7FDo=Op~Bn(#Ej6E=7U!4AL6 zbcYI#pd3CL=NKErhXI|c+ybrTKXFjW7XZ%pn#_>79|@$(SZ(#+jXtb)lLi)K^2;v1 z?j*wa#}x`H`@Fv9j6Y-Uc#&G{6VWCYx}uK`kJbMyRMGWLr2rKKsr{J8=7i}U+^A_& zDtUGF$`e^4lNc%KCJ7x-22w7BqkM?GiQi1XSh~C^vVIoGmhYU2cS%Z{lC?zW-8rzq zVqF3$6w{cU%8!f$mzY6(Kkr4- zKtgC%5VgU`gE?)pl zL{bHMnGnOdyB}#5A=P9XX0z&=iV5>QwDB``Y`wo^C~rO^C2Nv^wvxxB5bUILwCFOO zO*VFRpnGz|Dej3%@li&E1WAv`Rf^=K23AA}kn60J9XaknyFCBKW3Klu(UF;*Ou!z0 zeCOHfeLsQZ0o|4*@KruD|-hf~8b(yQNx8cayt8Iy3u6V?^ z<(Ygdy2(ex3ZXBfoMkC!bVVk4V{i9v!R?rZ(tO<=z!lhZCRMq9B&M4{KP@`@nFjam z$|y<@#z$ikwBXfBW1ZU_?}x@I7Vg2A^6SWOns3L$Jp^II*}vwscAWxvy)OHlXH(qk zJaB%d6{LlnwWX-VyfHjV*!aZNp`PMK9Dpb@hR7(=U^dgZc!p%a_}Gr~DCkF@(-BxK z3v!2#<0{-JTe43bO0*6kG;z*=8FTWUBJN4kc5$>FqSEJq4konJ4X=8HBJqpN9mjX$ z1y(*v)=xCrEPf=L3a8!s zL*<4E5Q~e((&N{}OEG9{`k?coVsS9eet zs}^7wxtm~@RKb2ieMkG%5{lfBdQAv|UH+QcGeXgkA^#o@z}S(Ge>L4qWfn%7i4+RdA@)r3z3xA3~6K@C3 z^j1>)Os3E@)0ie`WpT_!soyg!YY8ruilzXa3o>~(md)xp!rO|5h@}<1wv3Ff21nII ziE3=#FhlhvbCZI3k5sm5HwjkEmXJhXx-ToO8N7~B6{3{aMJR1qj^N!Tgf!@u`!1ht z1&C#|`A*ck`hPnfNzQ$3@Lpv*Qq~((A*V?6<^{&m9LAme3Z^-|+xNAxjv#9d?H9V$ zl#BaGBVQDO5UsMb^2_+AsU?T~ykp=r$tGQ)5~kIeHOL=!=>yl$PD_tFv!l=^LK>~n z*Q~8-kpsmDcO&zjoCWEej#$RF>$>u9ZT&rRddW_5n+dYQrj^oSA(uAE-? z7^B%l+%_;VLN^=XkEU(Ew=7CaUYoot;{aV3o;-z7g*Y7A2Vo2kyjDqo#b}<^XgO`r)+44=Z+{kBEc`6>Rt1k*aD2Xv zxB7GyYZ}t$Y#xh5n{txCkS-XnjI{ldTuVe>@He0pZCf}iO~O2XgnVSFIS@0t$GMjN zIOf%nFrA6XS8xVYv3b6(VUF6Ar5#D8)XXD-3s9E)-wR(nRV8uLT53pQgIuigPgy#G zH}u~bK@iMh4u;a+*KG&FXxAZ;dtlh;c_{Tn+Fl>zSiQQo9lfoKwPA;cm138Hzc{ur zh$uQfM&jBKAqDy1lgM`&>ocltZ(U}c&}VjM?Pm=x5pUz2cv$7HHUzIauE zH@kFIx7$&mDS5)D=-bk!`-(&l|48UTYHG80qmk$_~%EURB~SkS!Iic2Swh;XUlF!T8WLWWdoibjZ{>&742oFp^F< z!mP=`t@vdVI9cfXvs?UbS2$mhtEavZ{T{b-c`BdtPXw&uUjRLuaHNPF`aF1g@$E-X z_IHuELm$rX60kRn1=%Jz#uO+L3#b&Uv*n)WQIJDb z5LFh&%Kf?_ez^Y4a)<`MpDPL`&TCFxk_`x75$DYywAUOe%<;PEwyM2b z*yg4-eP(}?mKpBL`pGK z;yMQ-C}P`Hj7YaLw0N5Py;3U4vv|UVQVSL}6Z-nkqV2B1afKzE*+w2E94kSd?%*#? z@#a{bJN%VfNnd@oPa_m38n!M;EC_L7DkXu-9*OdGX*5k)3U!CQL-y3Yt%Im7k}BUa zV%wyZm8Jbl=%aKMni8P$vMfX!6mfMjUj?fOBjZ**E@5N97%9A#1@2lCne&V#LnaP@ ztBMh&xAUvoqpsGFYBUCt+NoXrwMzyRbER7hZ?E5og?PaQ9)Vk@g;m96&-dEeNiTqU z+bSADw4U(mR78&8__@4?k3;%<++C2n_YZe=O3DxrRgQ0-fVN29Hyt{n65?g*v!E+NvaA~CZi_p% z4$)v?3wvRXe#b6q#1dVPYn$|TPO-y5lUSV?%_$=JU)bPXDYUrm;7oJ2IcfNVPv8|!EJKSviux{FH+ zO+G2_&`~z$9Ha%V2R6m=EvxWE>7fN~Dl79ps8a3G&fh?gM?1e{GhD!t!EEm7n@4(j zmRMfTc}2%w`}PjCSGFzhuzSHe2n;C4VB)$oy(`IU2A}EetK2*Yh}9Y#>iAY4@yBua zv-zh$h=s?vI{5|qNNtg1C5?4&M?SV1vDlfXyV#!nIHEIVU9v-#FrK$a(yQqnT$|!n zdIvoalx@dPIZcWh{9|ij958>UJ3>5OxAovCPKtmxs^!rFUHv&Lm=bQ6qiv@nIa=8E zp#2>zk|>)=VI}V!4&zc*~+kO;N?VeWLKAOLyG>F%F;VEG@|-7^BA9Q_4Ux*nX_L4P;-3 z=R5FNR=KO30o#ZQi?WSdJhSdtEbQxLCg?uUc;?t*@NWuSS9*g~#!i&mY9Z;qqu)L_ zq|40fyR*?4ZF!l8ly$zEor#6;|CB+a*K2CML%>Zfz%DJ&lyfsZ0Hdc`MI0_cyz29# zgzKqBcC~!*2fLe;PE$)edpBvAl|R~r^B%;U9w*|5ZVl?BWOr9AtW3@5sTZ8;6;&M* zIB1)c*H!+EeY21Hj>Y>aU>)-xkn!RLU-03O^VX4~L+Lqqhf?dJ!9idrEWaLm&a@=2 z$@MmgbY^Lvg4k^m{Lv3Iq3TtsrLtxeQyZ>9mIY38Y}?#2ubvA8Fp#&X z7gNO|(YTc^bB@KPoTzV@xxFPD8yd2nCufWze>oFvq7Z%zF)4Ek?%IWmSig$YSCu(k zNwg`GH7y>(C^3&XXWFRErLq{2r4cfH==Rh^&v48VVT}NRk7*J#gzx)_pPajHpl;tl z7F-IBjHAB1IisXK92h`pE%C$zwRJVv0KPDzaM`|}zWv1*|#?-CED-gj@P1ueBhS6pjU z4TLmRB`Gtavr;#_#gK=JdhpZn7LvfjDU+rno`l)xTiaTQUHsI-*WIAk&m69prl;s* zW@l#=L+ESM#UN|;jMMI2TTNja+Xj3#a}xjlExz--O% zZ`5u<3Se_tXeg#jz5P&V0}bYQC-1PL zhRwR6c7|gXn-ZOWxm%DIAUtdsG6y*^gWM#ab)zm1*NUG!2LVyHnF+~V37sEBJn*K7 zUjWz(+Lp=Ai;Mc!PD@kwmAXjdU`wOoID(4WvL3Cv`2JQR)yHjF!XWRy_bc=-^6=U@VgVgCYLcLS#HrlK|xHZ`*`~?L94v03E1@%gG53?lTUy8>>Xu)iT@~vIdtJk?^M0A zg_%yiyes(dlP^W5al3c+Y(>|aj;|@;|EcaRgW8PVc)?I8E(MA^!HO1lX(^iGPH?y2 zE~P-B#jQY*;;uzPaCdh~aCdj@=6~;g*u8gl_TH7**$-zjd1sRM%$sv^p6B_=b10}i zOo*asxk#RrjC-$#mxJe$rW2fF33b z)F;Oei&rfa%-|eNisXoeVB*vS&9Jrc9?w_gMsl=Ql#8|^mfvoM^x3Z3l*b@6fM92V zvtnhzp=I8LF^C?2@NI(;G622LSxQVN@10qQH&XQg8ZAu)$J-NmL{1d;|I{Dn|L%L# zx#9U4YuIPJy2yP^($6Jkh9C0l!t+xplp119(2Y@=UaL!Ox{z%I{oP|JUQ2c4*i1#j zqDKQ!=Et7(%xj(P2r;;d}qh zT@f0|=a@dfEGFBhUvL#xlx5(WwO!2C)vND?8~R5|G8T3cbmWeq#ATf60Sugx4ArH5 zHQ*A!)4>UX%z(_ypTlw7LXvz_Gg$BUdqw@2*>f^+{6pvIf99$2GVu=(zA)W3=+WDr zbyLN5OXKG_djI%*9`h5)HG(y{qHMv&6ZKXjDfg>Lp|(I=vKf(-7D|Ewa*z~>O*zSV zeF#;afr1ZxXam^l8+>?|y<(^&((z2ip^C5eZdk6~-Xdd_0S12hrJU-vBhi6Hm1%SY zkQ3_PvO)HY82odt99@bk5^ym_JnJ~9=}7PJbt$G%oAiKtpqQ{P4ZBSz-iM(}UfsVN z!uBK2G|3jT1V32#{=8qD1@UpDfq~qwm@K8q@SlPR(Zx@@4G>SJsfobv!v^y#MF8yo z?G(ZwdNyeqv}sm9jqm1Ah6RM#`ltM=$|`hbi;7{wyX4 z-3Qp0=9VHh_t;i})8SA*|HiOo<}D~dcFg{mTrh5VvDa}rEFf>#D*6Lw_Q@t1N=ZK% zX;V_n&)c#26>0=MGF@47YAy0}+z%SJ`v@S$FM}O1-q-sxX3Y<*>{{b|2(Yd#w#?w5 zo@d!!;0#XTGgKGFByYZSPIKyLq~{~lImTu-|7o&roN8s*C0mwydp&t*hvWS~@f}_4 zui{VE&V%f7s`jMT#YdHyys6`3 z9a;K^p{d2A>3;xAC9$JB+@r)W4Ai-S#X%u4st%pXNd=p}Ya#b~u+tCJovH4}kKo9> zol%c`#RNE4O5LxMzbGsMXCalFA%>Da%n|~z?czU1GbHGZ6#wAS{YeWDO`FV3)QM%8 zu4|0tPL$WK^?8!aUjg@0MSZ+C8k5gFu*_sev;TS_Qaa@2s(fUT7%|H=}ji8j<3>rtw%>=Q@Qwu|^ECLj{`b z8DMXsc{aU0v<47z#al7zo|zZA>8oftt;y@*QS=q~%Z+FV)6a{~NXCi>6URsLT4~ zD(&lXGqQLaa?8tQ9O#MTB5j_EJ-Je7k~Qo$gX+HOAlIX^CB=X!0>iER40#TK{AHcu zBfbVh37{P&L3u(H6PjNce)GmMGm^f3~l=DoeM=`Brkv zL&$XIZmIqOs*>92vA&KM4ZR1|eKNsS==BkkAfACZm$&WP(p z)ATtVnQ)0k998^Fgp$+lKLFZO7w6oC*x0V}kMaa>W9imE)1mn;2k#j(l24t*?gmxA zAp_CBb<}MAzC+o`YnuAqw)DXHV@_WzW$psx_@MDKnU3OB--04kwaA1hvwQ&w z5$|e-Dc`iziu6<3=`D}F3L0d%c?&prN0c-n^4`)k?!y3mGGcngj$9lSVpUKB88n2_ zi;KJKKE{`2Tphvumm)+w_5Xfi{}a~+b7MA0!rb+M@rq6F2TWwq>09K(DT#l(bqQ{nks>fe zjFGmC)q^Hg5mii8t??W-?YLUg4I8~Y-;VN09s38ktsV27HspGS+#l}Y*>fGr-BVgc zLi~#MSLj=mTyJ!sP0bRT@tx2NCh2-0npntJsr^3IE+cz=tFLK&Rpk^vIN4PP;=!~w zm6X{ZFxRX_f876#{wszZG&PvJuYQ0Nz?o`w8xu;tUNJK;B#W8c=MuxcuQ66CmEqbZQ8QQBdLmLs9NM?D(fE0hMp_0E36S1?s6$vPxlYh%m7gr{m;|s_) zF^5t~oOTDch&&@=|32Fu_Q%=Vn14E?M*_Y!vl0}ust#-rb< zEij@X@(z$(r=3wtW&S`Lv*@{&I?ip*U@c~j{8hLzx{iwO>e2+Rm8e&XD$uteRwD(V zYUq9>8i(=6z06$6|51V%s+}wW78Ncp6$H~v% z@~Bi!H}QcS%g4fdM$F{+^~YMm9SI&ZDS4{T5>%6rodj?Ib=NyahJk&%h%tHEt)MY! z{JSjuCdj(IhQmak$-C`e5zz%M(GB}iE)kMdBLRU`K$32Cdsz^|nV<>1kDgl6vz@fPUg2Q-;gON-!o8Y z3g|xN{s?{>w><}c9mRc3Cxs~H(k0mJBrw>TjVEt^uoyR>UdTCMaK44TFvqHsv#R)r zFSn*5D7*Q;NU&tuT%WZE#j343(F=YTDkCv{av z!=-n)>8gJ{%W0$?^Hb4$o}J^Ltvdv5M3!_k z7J)p4+;s%JQIuwBXj`r%DPAJKSJHjlN?S~!JN4gHWPZ^9NSzjDYfax?`r_cf%%&kd z3ssU+t)1R!r2dk|NM4IR<5P|y-_SqYo+{K2zzu^L%S^Y;^B;)>Bp43|JEkpwl4;zl z*D_4Jj@9r z?x-2!WADo#;Prk9J)c|NEKZ=GN^>)ZIw^Kz*vgRG!_NV0loGlm_jvI3K7MyH5qKB^ zujeQ~cK8-N2B&ag57R?Y3tibQqx4{&%TH$64c$m3mfupZjNu`rMh7lDmDdA>GbfcMnm(k_L9`n5JnL%x4o?~8OuzHJb02IfS6&{tI2S)Bs0qu+ z#N|)*G3{ns%1AEnMjTf0MGLCcf|R6HpiT8r!Exi5P4AGAF=bJadU*l}6`LLf;dR5p zZ3Em+JK!=OU<@H}dr!ny!%r^|ym<1A(t?OG@0=%2EL+ZQe!ICY?xfAVV{kxfjCiGt zMx|tFOK5yZUhq8Als`AIVAT5OPbfWHOLRaFv|ZaA+(Pt_8OD-_&`!P8-HiU2OWUC; z1iav0FQ)~K8a5Tf)` zt$S$=Tnp&-Mflrfoqf5?y!(DLxhAex?nw8IBfrf#fna;uc0ipJBC$nNpnWc0@ZgQP zUgZQ?KAusi!6NP9Vd{H#Z-XtN@2b}3V;GF;eyC{ObjcrabCfp9#( z-TjH7(Cl!TTCxNljg#nXg*XQDp{RO{!qtN>Y_%UyQb^{w`n@c{`h8asr4R?7WQaye)r}-P`@bLvbZSl9L*9$;j|v zuHcHK3zU>=B>Y`{pvo0@*0a}}MNu=Lr~ArTGs+5>zh3_O)|$#0 zKqK|~|B%Qk{pG@b0JL6vty^8sz8HYOj!%mq+2{*!4c{{t9KjVI-6|EH=}(rDY6ejPP|S0Dg=V z0BP?v=mr#6PcdHGdy`1>)B3OA(U|ASVbo=WNK|qJOaA`_rs;o0t&IZ8?O+_G_L+=z zF=RPsTap$~0-PaBM*a0W+AU6!Dyu3f(oqmzz(D7jlS zn1m|0r{+zcauGa?F(eDEFnI4Sz1M6eG8vv{e=kQgNrQan-nR$0t7%PJc+b;_%19eD zUrbB2>PPFQ&h?E?Mv8oL+th< z!lsKsU45zviZ$WyyAy=RNvQyD*$`E?VjDMjQ8YBt2l|+f zceLPsOvJH$pXYk3K+pE3qUH5kJuXEt>4{bA`OM7=uqJp8>{kYgR&ZbpXSYTr==cX1 z9+c2?c2-1+9~dVqOMXGA3nV<4hyPUINE%+`uPAquuPzRMwZ1_r+ldSa+lSW$u47Mp zS>eJ-Pt`s=j=i2-v`#pEa4FUc5#g4l;Zw!`Rs(#Km_!h zde4L7A<#xN#a@(j4B3um;}}xRR7rcx_-8p? z$b-=_9>){2X*h*8i{5^p8LB(aP`fkNo^d=iYtBM2fAwDd1zDXps?`X@$eJg}19s8G zw3&ZgHMgRzqwMUnpD;@9`(|kL(>;C~r?2krrzh&BZaK@=(ex+D|8hDE4qf!2+A7$! z)!+C;s=~dsG?EvL>Zdj8)D8FgQ6W=bnK+C_+e=(213a?dQEnE8-JBvSxzTb+fE$BmZiQ#KZ-&tJVzaju|O z@oyG2q#Y5yZhB7lLk`9gM#IdGdLi0dJ&V{!8|C@HUcsNPJ8)?T0*av|sMd0e>t4>+ z+cn=&bk~4Kv20fvR%ADrKYZIA^bIuF&QxuJ#?E{{Rw%PAD8rJQ2#ewQq(z z>vf#SDAP`ZUq{jJ0!%Ct0(s{eB{94S7C%jL0B1r}io3DnQuCTqlWC9Kwk=}WZvVcFdIO*u%%2uB+-Oy{$6`6YnrUgB zqEJJXXV8*v$87c=iIbh22{^ieyF+8qmMEf09*O7$(kyEiBhCFd($_+fzD>S!THp4i zhUTodW7nrsL3gUSTj%J5)&!YsX&jW85ca+7UrcaOHv}m?_m#j8_x}JLX6@IPFY)6` z-iyXcqS`YOqoxjNG^yS)Lp0T?W6~e%&Fti@aVg!kz8A1;UUVRR8o`Jn8l!DHOb&Bw3(NcIh3V< ze8bq)!D_3`+aN&*wlj~^ZkwIQOPleTTtR!~$foICO1a*?zExS-qV6!F2x2%A2L|Tl zNi~vrnxUI#3Y^CemgyUAZ_yB}s-EMF<^a3t5k!A|hH$at9;&g0en~-^4~B|&f>K~G zTj0^Pje~hIo4YMlFhd>za^j^0_5Dq$>yy~oBYYJ5{gRY*C}jJmK}*b8nD)i6Jb3#a za6^VnWa!vl@eeQ>&{=@6<)VjA-8g-38iVmH7Od1#!eIDIJ!3fS$)B8`D!+X>;u2m< zE?PKz$oF*$;X5X0qX;}U6l><&XNUyEFqph`dL4#A%8{9IK5ksHFOb$6RMScrka4Dt z6;8MGUUo_?2#A)mQL1~VAvc}YTLIY~%cO#QhN%y3l@)8NHO7*v0`^4BQv3q7KO43M zhL7w~^Upr1J*U{3Bn#+h>>vBN@tw641Ag`py%EV&OiWn96)qDrqB|FBdVv+}B{v0( zG-+yI6esC@-kxU<*+p^-mL}{2(Cz{a{Ry*sA=Wsp`SlxvhO`MQCpP&qR!hS>Y^bz} z83ZymdV6yMB)5X~)jUhf3@)Q=LnjvaQA}Qh11Og>x1-`{MJk6*cg#30=U95YD=LT@ zP5=~olpKasw8X6?^&z#0rWx>l@Uyj({|x@qr}>I?Q1fGe2-rg=Sw1`FlP8YVEdZ5W z3TVX}l5u6=1|MAKpa%`72NCrsd2XK&U@hdvXaj9I$QwS&Q)alW#QW1^S0zi<&VIAR zEE_nIkRJiXDWm_D?>t;h`|ab85HtmgmfhPU+*>va?t(V342d@`5QK!UbzvLA=_-x& zp;U#RY!nhtpQ_>xW4><}w`grh;{OA532rnCv_k8fCZike(}gUenudt}6pakMaTRon z|Ept>i8)E46d=~^!I((Tys$mPNzJciGDM^|U_eC0Jx#?r^Fltw3D)FYD9?fql=wCN z4gXj=(lRUYr7W}f9b<~xK4%=O(sI6*MbUyIik3W@*|Itl{KkgCPNoXr%0Ze+_>+#g3nhUP zcJhP&Na)StM+!#InmE1NKf;^aLi`APwhKR3ww6NP5}F{t6C)Vo=~U~}?%xxm2V{Ou zBC4=0gfG~>-~ZFoZV`t6s;`?io3!(KBYhU34xK;XJDR_K{*o+A1=OFZJN@3Iv{OT4Jz2_x^(wC#MI+Fd1X=ithZaBALa- z0*njoCo@BorCatwh)7f4`5-N z_EX;<=8zZ`@3RSz1U( zU7M24#Bn)66m#aBB#hth6o0(L_L#7|9^^#&GMU+%W1@S)M8x#r(%pj-@g4&TiB`S8umm;Bb{ZOzM=DjV|&)b z59|RoM_!cIWMiYGy>yNa8tfe0MJ_O?A+UcDn(-h_lLX2|m$Uy)@r?{aD)fKF8yoK% z6UAodglBtcFA2|K3cD-K1HB%J|Bm&$c~+Ngllc^RA5>tY-6R{_q*OaL@pZkx7ISEO zkiB;vg_|KG%DkQhVTu^%@z`F~vR;mO!MjuG^_rWj=kT$v-lec8{T}gGLQQ}HZJCj&}w%yp?J=FZos$K zTU{8tK!Kv+lsxs9jpL(9#_3h0``XrLg^_M0Z8_q}heZux`}vm!R=PjSAyJ!O<@=>q z`8@Bx5dQ-(iF3XL{#eC0(0LgD4!IWpyb#t*?Vtv?D0j(fD)0F{f~NkSw@;{|G$(&A z?aO!UNn2G4@4}=)o1Um4vKZxAhEVF^Af5eYcSZvQ)Fl1ip*R06n)Cnn_wN!riDp~k z40;l!>65&-REO5CQK-?2`JTB{rc7-3$|&qvQekzT6XkYb(y_O=-ZV)7v%6Eh#)&5m z7cV=oQVBXc7Qt9v zbgM{4lvTm`_wOf9D%r#Ni^iRnuMzDG@}a!kfM9|38QkBUPprS^Lry%f%7)91m4V_r zF%RHh5JlGQU*P~w6{KpIc+*Y6G{U6Rd|KtO^qCVJ**gb=4cq7I8QDR$dc`Unfm%Tf zWJ-NUPAh~*3qhxl(FJVXZ7kW!PerUeD zGSo-8tbnXFfy#JU2PU$m4(ny!B~jrXOiw(C@mbFfF9qayi0*R^-TQf>VG4K%Kel=w zPL(VcU02;BK<;VdLzPP&=DU=9us+Aujc@S6NDY5M|Ic*CE=qyUX6H=?N31wpUWBPA z77!FW_GlSaV84}L&@!M_bKaB_<=~dgL67t#DZrZ%^eYQ<{kuYnQm`Q-JzX+eUOrwu zeewXRDeaQfy#kzvb*|(LF0SRM4guLI&vV7rqIQEAT)8xYiE_zkdN3%}55y%2u3jXo z>o{=c(o1A~VQTv6T$}Y~EdVqE5m?N;CH#`FyZ(8xE&XK5P>90)&^ z_pJY!j8a6s?3+$#%h&qVf=+T|?U`sZ*Yr*B+kTVILdz=qd-!UL!}ANCqqlIbF%t2# z<65lxqFCDMO%Fl3f4NG-o2cfn^-i*ZLnZwOL^=`JNuqK%{(^+4ll8sdKcP!en6YRE zYqvB&e|#E;yb)U39f7-rd@b);JJ;fD1Mb}*wC*;L)5`U_FpBU(ShylPPqAfUG8zCs zK6>TrSLackj?pr^GrM{9eL=yl#iPrLouu7PTAW5b)xkzmi`W*ow5drko+g3DV!L;I zU?-FMZ{TjHZ3YQ-qI=oR&T(XzvJDtPz19x|)68%G1E4HxBixU+^CXc5GnEp z4$gUbm>wBa4*!QPlNS-iQx^|9nzhhI1!ugcnEpfcY$Z;*J{E$#dTV-XJ#sit=|0|W zH&Az`dGkWkaJJQy;bx&dgFWEd>zRYh3VQe6F(d%Xq_@bZ7UIHXm-*w}Tmi++m)fxqLR38MMC5Bg} z>KM!GV3E8hO#xir*EqZM7qx1qAOYKR1 zDi!r$y}DE;hYvR9deZ%Wu*oP;JjR8uh(NtYD2OlnlPplI|lW@sns3kS5N9jrt>cByHKt)Y0+#ji{7;pdWt2f}rm#|2)zpUFN`;a}-CNj%#8jMC0LBfA;CL;!2yJ+`Fj zE5Y<`K_k*O1zND&EBH3yw$1Hn_`LAzpI`ugMyNrcn^f_i5&_<@`*3t$StJ*{c=Xjo$UPp zqD!4iN97P4-^uS4ZC1Y2Z z`e##R0d8#m(t)7jF;1P89Db#4(4J^ozcKP&WvcDepk^%k&VQ9vl#U59}xwjX_ zkJ-=uxq1^e8nyL?tn6-RV_dE!d0wUkd?*(Mf=DL)njL^|g*$6rpw2M^{$7x6aeKx0y@-2%-0_&88h-2BMIxxnHL8U31<=IdXhJ4H0HyGRm=1>8o`R~#g7$}9RDp#?AV|V2Ff==1413Wrh9FG zmw~zRYqaLNq+{&wBQYHex1yaWqwib|8^^qn7Ue{m_b>!Fz`?zkQp5G4y0s_e7X&*z;ncK7JE`oyU$_xFs`BtEuz^VFRb3TPYww?a32$uU)Db13PyM+ zn;DvERgqVQ#Cz}qLFL3B5>w_eD|+&g8SMi_+Z4(wj&}p4Z6cG`DsS$LcIBtcYySa2 zhBY8J=gE6-OCXXO%o?qszg4yUtgWil_<*GL8R20z`ub{;T>0Yl&*nE?Z^;Z0&`8Gl zN{Y%M>^@dWva;+2qnRuGs%r-sFM}7+*?nC)ONU&<*pqoYyM7$3)4C9J3H>mJ@L}=?A6)?=HJt zFvyia7B1hN__O2WXk{^9z{iVB7`wJY`LX?N6p5o_dE4mbJ`B8z!*5i-q0;cg{vtL` zIrZ<3k#R*^PeOP-0H!i2^tS5t2&Ntk_4kfZGH7a(Sn^9cJ8y~Hbnkph?d;vFm*G8( z2?w7l)|!X}VAt1kyds?EMdrX@TlEEAP#80V)&Cv4z;W z5Eno^T!41-Bo%xvY*CI$NGMKg?pv1~`6(R_SvQ7o8UCEce}He1k5R{a}jj!ACUq+RcA1H^Icll-(RWbd!xw+uGk+f*4F*Mp) zK&4D#W3a&rCJipnt=KcdF%;FA&2Or&g$Udr*eq;Hqwi(HF>C6t@4o|4uKR^@9R6zv zb;!e=IU8iY8H;_4UoVmf>&(3m@eE%Xg|ovK!81 zwf%}Iegglg01nvA&s<@t5G>dabJU0U0$VSLyWqMm}j6a<}OfD`l3|&WK}TjI-0tieye4!cM!iWzu(`wX%F+FNH#y4%BPN;(V*?kK3p97Uw>9`OGgxp67 z25+sLOAYn-yuZe-3nQ|x!X!Iq*ieDRl$mVBa(Y0Wk7T-*@_RBq$E)3ox3Q`bQy`Yy z-&OuUmpbT2F=f9#wV33L*K?8e4R7wzt9rK8GcmV z@aekqZP9+hL55mqUDiqkOmxau3e1HoF8=`QViB8NPG#UlB?yBhR%Ekn0;2|Nj)XaD znX|&$`5pPh*^B!#SZm4=NsoF5v`3l|o*TCne^RL!zql>ltFD4~h}`XJqns@9NxkfY zD<_RxafU*e3Kynll=J9#p*M+&%HcU$^EE$VZ<^@Bs4FLvR+v`krk|d+I>HVLp9psW z4G7rHaOV$Ho~iHvtJLWZ7>W0iitzBf7h)ai;ECUp;vcndBWRt0`dnlA#Nl(aRDa^M z{5n|8AgjR;$m7EKfoy-Ev!V)j|2t@UOMychZd=GRMEn459sMdu#)uT&6@(z&1au}G z=r6}4F{l}~RPc5DT8F_Bd`NLCYWS@>26joed}m0E-c7Mrek0K#=iU%Cr)N}6?{o!?c@2;&-h zt>eH$r%M5TF0zHc(&n_aGZx_HAY9zvu2CV4aPzSMl9J=8Dg$F<1F)`2?xK@IrK$l| zaT-$$wU@v=yt9E6#cN*+%0>m&oI1AfX3w7C;GEi~BjG$3(wG?B4(36ePM!Vw^L6$q zP}#N!7HizT$-1#LIeX5)`q$HfS$^Z&EDE)C}B0$763jyKuQAa+v_-8DrJ8TA^%le{i%3^is~t#O95 z{!RBJFvr{j7MIgH^Vmtsx2;_n_YRVlW00?2|M}FrtRf_i zv=6VjhM;NA@dtoZ4H?%T<-)eAL#-1y4u!q$C3I*l-neDB%|kh}=1muDpFQMEeGpAL z-T(9!+j)A{sJs*~H+2K-_)+ac< z{?owSrg^#T53;toV^;sofka^6(6+|PHOb%GbBqw zVs-!68}3MoJH{2R2@)-5SR)Hvl^^T$XHrc;94Z-Sj*B90Ji?fRHv}j%NSK}P-#%~f zM(i-2B^@6>R~+gdB#b;j3wn2N@)p+m3FMoTOocX`(SXcR?nO%L5F1-TONXdLxs9r0 z-E4xw{cK#kArJ&5DubKqUB&f(zzD%x1WdpCVjK=1-Vi6i0{N9(M@xwMW&B|B%g5jp zIc8XI$4uA-PnGZ3RPl=nG3aPoB(J{>Gfh&*IFMq%y{i;7nz)9j^kl(vhqb_m0BQca zm61Wo0;m=e0$d9brLG;b-YP0N*uA+owwvSRG`;V33?G0m5k{?@`4k-@dOQ-?=zqH> zE@7x2Th8wJVFcY&Wd>ZSEYUw!NJ2vDGQX3G&FGvP>)q9GC@(5!zF@GA z)>bt4RZyT|V-WBJqci6)$7IY|KLKHpb}w4F45u4-^(n7;%r7PGg?G1(=PA{w5UErJ zxD%T}qaCl`#A^NAg${;>%?@6t2yzI{IWN6wpS*k$}QbvnS znj<8Hjik}qA#~0OM&3YvR{t}an;r~z(0hcdG zSX;`D{z|8Slko-v`9Q|pP7OtQ`yYjQ~8 zGUcBdv`2~mjsX3tZzcA76--`#I7%0{%iA*->mOiWO5gmmFy*|O^JFijcknek^8bO zl2Nv>DK8CvucU5(N59YrV8ugF%VAj6721ELD8i_$cuclyq#l>O(d@hatlAQ*+1#dS z9&V*@6|=|lX(aT*o}VAng@u(Hx31}D4X9&!N6~skB*SU(3XD7X(m{M!JbXWRqiRZo z{s9gn0>Ww-&aQk5q3Dx+7)hM@aC(X#6scePyu~&vw9d+P;9oMEv~GTjNm{ND@3lbQ zcKZMwNgD=epN2$dUKr~htrCjsVeI92 zBJwXw%QvyyH$FjP<6M%=soPKK=krcP-^=bi4{m!4?;R3!{U3=5xK*0Te!(;{vFKh5 zS(4LVE!5@)xGBVJz|m&elkK565V8iT>34go*6er=S`@})HYC0y4+i=bS@4{Ab96`G z^CAANs^cK-nXC|h-(PQ#Zt%c@-5a~$m6MfOMnmDFAJUZap$0>O!DOIUQF5d4AsN@_ zG66+*^)Fh}g^kb|6h=on@2)N_#rm@miixM3rbi8m1KY)e2gvf%oIq1(`K`0{C@jXq z7TDRjl)dHZGHMOKs|B^q71h+V)HQ^`=Z^^udR;54P5)?BcXW^q^7oHtd)I1TBpitT zumt%v{AylgY*AwPTuO%@%WLI%u`7;?$6&hz_YPh^;k-J=dlXMpj+t8_vk3Z2^phB# z6Y+{fl*c8G2T(8@Xh@p5I*$OtQI^}zv%VkknU@NbS&LVtZnJ%Gqj37dlYP=jOBtV; zFoB8HIHFC$J%c%zUzmFGc!55x^;GWi+;|7#3#+8Ht* zWL=R*&tC)htVLyZYv^Sew?1M&d`T@{psx$|_^|+;SaX0|ct+6)kBc@?nuVeNZJslO zCUhy4aYP@YkhlzB<_UzVt4;73bF-%o<4RM*>x{mA&MOlyZDQYV2tXsWMjGi zr^YzA7O{gCyu*<84s||82D@AwUEC)3E6xAlZIH3K`SwL+!!*^)=+qiN^ht>ab&OB= zYV7?tLc{+JG%Y5#LDIuTxc5bLhVPh5}0q7tTNHZ z^TpzpSaq0f4QFHkLx>Vr#g3)QiApiUxvqdTA8s7KxmK#ITUwn6LGaah6(d-x-rOJ_ NZTA1@!27rGzX08@t&#u$ diff --git a/incrementer-v6/screenshots/contract.JPG b/incrementer-v6/screenshots/contract.JPG deleted file mode 100644 index 69e44faedbab76df8d94f01ba4ff28f26899b9a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23688 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%0Dd_(hX0( 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 diff --git a/incrementer-v6/screenshots/test-result.JPG b/incrementer-v6/screenshots/test-result.JPG deleted file mode 100644 index ac84a6fddd694e0c12a119f241f304f99cb4c842..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29930 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 H|IYshOg>IY diff --git a/erc1155-v6/Cargo.toml b/poll-v6/Cargo.toml similarity index 97% rename from erc1155-v6/Cargo.toml rename to poll-v6/Cargo.toml index 8d198ee0..18911bbc 100644 --- a/erc1155-v6/Cargo.toml +++ b/poll-v6/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "erc1155" +name = "poll" version = "0.1.0" authors = ["Use Ink "] edition = "2021" diff --git a/poll-v6/README.md b/poll-v6/README.md new file mode 100644 index 00000000..271ef452 --- /dev/null +++ b/poll-v6/README.md @@ -0,0 +1,239 @@ +# Secure Poll Contract (Built with ink! v6) + +![Status](https://img.shields.io/badge/Status-Completed-success) +![Tech Stack](https://img.shields.io/badge/Polkadot-ink!_v6-e6007a) +![VM](https://img.shields.io/badge/VM-RISC--V_PolkaVM-blue) + +## Project Overview + +This project implements a decentralized **Voting System** using **ink! v6**, the latest smart contract language for the Polkadot ecosystem. + +Unlike previous versions of ink! that relied on WebAssembly (Wasm), **ink! v6 compiles to RISC-V** to run on **PolkaVM**. This architectural shift (`pallet-revive`) allows for native Solidity ABI compatibility, higher performance, and a future-proof execution environment. + +### Core Features +* **ADMIN Access Control:** strictly restricted capabilities (Start/End Poll) to the contract creator. +* **State Machine Logic:** The poll transitions between `Closed` → `Open` → `Closed` states. +* **Double-Voting Prevention:** Utilizes on-chain storage Mappings to track voter participation. +* **Ethereum Compatibility:** Uses `H160` address types, making the contract compatible with Ethereum wallets (MetaMask) and tools. + +--- + +## Architecture & Logic + +The contract is designed with a strict separation of concerns between the **Administrator** and the **Public**. + +### 1. Storage Layout +The contract state is stored in the high-performance PolkaVM storage: + +```rust +#[ink(storage)] +pub struct Poll { + admin: H160, // The owner (Alice) + is_active: bool, // The State Switch + yes_votes: u32, // Counter + no_votes: u32, // Counter + has_voted: Mapping // Anti-Sybil mechanism +} +``` + +### 2. The "Ensure Admin" Pattern +Security is enforced not by `modifiers` (like in Solidity), but by a Rust helper function that panics or returns an error if the caller is unauthorized. + +```rust +fn ensure_admin(&self) -> Result<()> { + if self.env().caller() != self.admin { + return Err(Error::NotAdmin); + } + Ok(()) +} +``` + +--- + +## Prerequisites & Setup + +Before running this project, ensure your environment is configured for **ink! v6**. + +### 1. System Requirements +* **Rust:** Stable channel. +* **cargo-contract:** Version 6.0.0-beta (or newer). +* **ink-node:** The specialized Substrate node supporting `pallet-revive`. + +### 2. Installation Commands +```bash +# 1. Update Rust +rustup update +rustup target add wasm32-unknown-unknown +rustup component add rust-src + +# 2. Install ink! CLI v6 +cargo install --force --locked --version 6.0.0-beta cargo-contract + +# 3. Download the ink-node (Linux/Mac) +wget https://github.com/use-ink/ink-node/releases/download/v0.1.0/ink-node +chmod +x ink-node +``` + +--- + +## Phase 1: Building and Testing + +We utilize Rust's built-in testing framework to simulate blockchain interactions off-chain. This ensures logic allows the Admin to start polls and prevents double voting. + +### Running Unit Tests +Execute the test suite to verify the logic: + +```bash +cargo test +``` + +**Expected Output:** +All tests (`admin_can_start_poll`, `voting_works`, `double_voting_fails`) should pass. + +![Placeholder: Screenshot of terminal showing 'test result: ok. 3 passed'](./images/poll-test.JPG) + +### Compiling for Release +Compile the Rust code into a `.contract` bundle (which includes the RISC-V binary and JSON metadata). + +```bash +cargo contract build +``` + +**Successful Build Output:** +Look for the generated files in `./target/ink/`: +* `poll.contract` (The bundle to upload) +* `poll.json` (The Metadata/ABI) + +![Placeholder: Screenshot of terminal showing 'Your contract artifacts are ready'](./images/poll-build.JPG) + +--- + +## Phase 2: Local Blockchain Deployment + +This section details how to run the contract on a local development node. + +### 1. Start the Local Node +Run the `ink-node` binary in development mode. This creates a temporary blockchain on your machine. + +```bash +./ink-node --dev +``` + +* **RPC Port:** `9933` (HTTP) +* **WS Port:** `9944` (WebSocket) + +### 2. Configure the UI (ui.use.ink) +We use the hosted interface at **[ui.use.ink](https://ui.use.ink/)**. + +1. Open the URL in Chrome or Firefox. +2. **Toggle the Version:** Ensure the sidebar toggle is set to **ink! v6**. +3. **Connect Network:** Click the top-left dropdown and select **Local Node** (`ws://127.0.0.1:9944`). + +### 3. CRITICAL: Wallet Setup (The "Rich Alice" Fix) +*Standard development nodes come with a pre-funded account named Alice. However, browser wallets often import the wrong "derived" path, resulting in a $0 balance.* + +To pay for deployment, you must import **Alice's Raw Private Key**: + +1. Open **Polkadot.js Extension** (or SubWallet/Talisman). +2. Select **"Import Account from Pre-existing Seed"**. +3. **DO NOT** use the mnemonic words. +4. **Paste this Hex Seed:** + ```text + 0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a + ``` +5. Name the account **"Real Alice"**. +6. You should now see a balance of millions of units. + +### 4. Upload and Instantiate +1. Click **"Add New Contract"** -> **"Upload New Contract Code"**. +2. Upload `poll.contract`. +3. Select **"Real Alice"** as the deployment account. +4. Name the instance "My Poll". +5. Click **Next** -> **Upload and Instantiate**. + +![Placeholder: Screenshot of ui.use.ink showing the 'Upload' screen with the Green Checkmark] (./images/upload_success.png) + +--- + +## Phase 3: Interaction Walkthrough + +Once deployed, the contract lands on the "Interact" page. Here is the lifecycle of a poll. + +### Step 1: Check Status (Poll Closed) +By default, the poll is inactive. +* **Message:** `isActive()` +* **Click:** Read/Call +* **Result:** `false` + +### Step 2: Start the Poll (Admin Only) +Only Alice can do this. +* **Message:** `startPoll()` +* **Caller:** Real Alice +* **Action:** Click **Call Contract** and sign. + +### Step 3: Voting (Public Action) +Simulate a user voting "Yes". +* **Message:** `vote(choice: bool)` +* **Argument:** `true` (for Yes) +* **Caller:** Real Alice (or any funded account). +* **Action:** Click **Call Contract**. + +*Note: If you try to vote again with the same account, the transaction will fail with `Error: AlreadyVoted`.* + +### Step 4: Live Tally +Check the vote count. +* **Message:** `getResults()` +* **Action:** Read +* **Result:** `(1, 0)` indicating 1 Yes, 0 No. + +![Placeholder: Screenshot of 'getResults' output showing (1,0)] (./images/get_results.png) + +### Step 5: End Poll +* **Message:** `endPoll()` +* **Action:** Call Contract. +* **Result:** `isActive` returns `false` again. Voting is now disabled. + +--- + +## Troubleshooting Common Errors + +During the development of this contract, several specific errors were encountered and resolved. + +### 1. `StorageDepositNotEnoughFunds` +**Symptom:** The UI refuses to instantiate the contract, claiming the origin doesn't have enough balance. +**Cause:** You are using the default "Alice" account which has $0 because the derivation path was missing during import. +**Solution:** Import the Account using the **Raw Hex Seed** (provided in the Wallet Setup section above) to access the pre-funded developer funds. + +### 2. `WASM interface has not been initialized` +**Symptom:** A Javascript error popup appears when trying to sign a transaction in the browser. +**Cause:** The Polkadot.js cryptography libraries inside the browser haven't loaded before the UI tried to use them. +**Solution:** +1. Refresh the page (`Ctrl + R`). +2. Switch the account dropdown to a different user and back to Alice. +3. Ideally, use a browser extension (SubWallet/Talisman) instead of the UI's built-in "development accounts." + +### 3. `Module(NotAdmin)` +**Symptom:** Transaction fails when calling `startPoll` or `endPoll`. +**Cause:** You are calling the function with an account that is not the contract Creator. +**Solution:** Ensure the "Caller" dropdown is set to the same account that instantiated the contract (Alice). + +--- + +## API Reference + +| Message Name | Type | Arguments | Returns | Description | +| :--- | :--- | :--- | :--- | :--- | +| `new()` | Constructor | None | Self | Initializes admin as caller. | +| `start_poll()` | Transact | None | Result | **Admin Only.** Resets votes, opens poll. | +| `end_poll()` | Transact | None | Result | **Admin Only.** Closes poll. | +| `vote()` | Transact | `choice: bool` | Result | Records vote. Fails if closed/already voted. | +| `get_results()`| Query | None | `(u32, u32)` | Returns `(yes_votes, no_votes)`. | +| `is_active()` | Query | None | `bool` | Returns `true` if voting is open. | + +--- + +## License + +This project is open-source and available under the MIT License. + +*Built with ❤️ using [ink!](https://use.ink/) v6.* \ No newline at end of file diff --git a/poll-v6/images/get_results.png b/poll-v6/images/get_results.png new file mode 100644 index 0000000000000000000000000000000000000000..d7abbf66e5bf575d827ccd0abc08d1fb72d0f2ab GIT binary patch literal 92609 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 Xg{x3svF9O+^U-6t|JxDqpQZl+`7<4j literal 0 HcmV?d00001 diff --git a/poll-v6/images/upload_success.png b/poll-v6/images/upload_success.png new file mode 100644 index 0000000000000000000000000000000000000000..2530f27dc5dfe3ce28ffd7e56e067314808f44f4 GIT binary patch literal 132595 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


NAVWB_#nL&6P>HU!6z5y1jX5i_eDLHI%N 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

R^rV7{85h0osi-p@kwx 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

nTyf2hxf05a@OxCdN{coI`CR_lOx*Tp zD_^c#u5HwG)JjbWEyUIqCUS?Vf+oWXXHYOBB89yZs#g3hD~ZZYsNb8yL!uaERon<@x#z+(XL59AiX<7^CZ-<$2h2x3GU#3lNHx=%} zwH2RN_=^p-PI*SSM)_NljZOD*EhRv^=f0)}J?6RN`uM}52cDg6I%CicI$ZM`;8u9f z8Xm}acTbF3Je$6FpwOkKZ-nNAN$6HAx^R)}cZ%)=-kA5ih$<(V=H`m%;vsSzj|jFO z55PsOo6a%`uErk9xjN}OTp!p@pCP2NuW^(thj;}nDz;%|z}>Ga>1?Rsita>x<~?|{ z$5#U@GK{ItqRt*YxyI~uXgq90m!K3&5ZWP=HWGcs;PC6WrYIu)v;NxpqeYwl;vK*M z_3~3pN61|TF2s?9nYR|sFD@5Ji;UeoDU$Fo^IK{zX#4J2sMBr;ViR(L)_c$#*G-y% zXVOK@|74X))}7YvV+uIC=2sz^+j?9RK=G>0sS`4eYO}Bwlv0*njp<2tzQEs-0&)V2 zjr3785(FS!d5y-6hv$2Pj%JVQ-tq)MH#=W`~->tdc>npzs(WhZ)e5(xSkAZ;+x z5bUqtbe)kcnkIfFOJ%WkWS@Zthde&Ja^!nX`f6}Kuj)Ni;LNw=-WHRGVnYUO4up9b3fuRL(B{~YPFB%gtz^ZT zAD%dC#yB4wMW@fCjjy0a2`xT2T2?=;XQ_PwaQ&1jCFaLg)SBI;<)&6_1()nh&4(ZB|x!*Y7I?gqkf&>18HA3XWA)(NLns^%->O8+_|fXigHwSi-4YC>xqv5w#Y zO_Sao;nYJ5ft466g40)H3C^Y8*q-Ni((tcEjk3A#F4+zv(EENld^}` zWWMi8(iYGyZjxs2&J-CnXhpJY{E0bAAyhv0tr$*X81AaDs-rPvp-oXUWKqOALHBqe z#GXx<)>5CkyQyX#xVp+977Bs5<~gvnz{_wzJ{##h-w&X;#(R)ZC&`j+T-crleWx6^ zMfWGdU0;&BZCiqO_|$_S7U

RNAyp09ERwDye8Mjcz`jkmZgSh>XW)lY(r| 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 Dv=pix literal 0 HcmV?d00001 diff --git a/poll-v6/lib.rs b/poll-v6/lib.rs new file mode 100644 index 00000000..1b101c40 --- /dev/null +++ b/poll-v6/lib.rs @@ -0,0 +1,175 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +mod poll { + use ink::storage::Mapping; + use ink::primitives::H160; + + #[derive(Debug, PartialEq, Eq, scale::Encode, scale::Decode)] + #[cfg_attr(feature = "std", derive(scale_info::TypeInfo))] + pub enum Error { + NotAdmin, + PollNotActive, + AlreadyVoted, + PollAlreadyActive, + } + + pub type Result = core::result::Result; + + #[ink(event)] + pub struct Voted { + #[ink(topic)] + voter: H160, + choice: bool, // true = yes, false = no + } + + #[ink(event)] + pub struct PollStateChanged { + is_active: bool, + } + + #[ink(storage)] + pub struct Poll { + /// The boss. Only this account can open/close polls. + admin: H160, + /// Is voting currently allowed? + is_active: bool, + /// Total "Yes" votes. + yes_votes: u32, + /// Total "No" votes. + no_votes: u32, + /// Tracks who has voted to prevent double voting. + has_voted: Mapping, + } + + impl Poll { + #[ink(constructor)] + pub fn new() -> Self { + let caller = Self::env().caller(); + Self { + admin: caller, + is_active: false, // Poll starts closed + yes_votes: 0, + no_votes: 0, + has_voted: Mapping::default(), + } + } + + /// ADMIN ONLY: Starts a new poll (resets counters). + #[ink(message)] + pub fn start_poll(&mut self) -> Result<()> { + self.ensure_admin()?; + + if self.is_active { + return Err(Error::PollAlreadyActive); + } + + // Reset state for new poll + self.is_active = true; + self.yes_votes = 0; + self.no_votes = 0; + // Note: In a real app, clearing a Mapping is expensive. + // Usually, we would use a PollID to separate polls. + // For this simple example, we accept previous voters can't vote again + // or we manually assume a reset logic (omitted for simplicity). + + self.env().emit_event(PollStateChanged { is_active: true }); + Ok(()) + } + + /// ADMIN ONLY: Stops the poll. + #[ink(message)] + pub fn end_poll(&mut self) -> Result<()> { + self.ensure_admin()?; + self.is_active = false; + self.env().emit_event(PollStateChanged { is_active: false }); + Ok(()) + } + + /// PUBLIC: Vote Yes (true) or No (false). + #[ink(message)] + pub fn vote(&mut self, choice: bool) -> Result<()> { + if !self.is_active { + return Err(Error::PollNotActive); + } + + let caller = self.env().caller(); + if self.has_voted.contains(caller) { + return Err(Error::AlreadyVoted); + } + + // Record vote + if choice { + self.yes_votes += 1; + } else { + self.no_votes += 1; + } + + // Mark voter as "done" + self.has_voted.insert(caller, &true); + + self.env().emit_event(Voted { + voter: caller, + choice, + }); + + Ok(()) + } + + /// PUBLIC: View current results. + #[ink(message)] + pub fn get_results(&self) -> (u32, u32) { + (self.yes_votes, self.no_votes) + } + + /// PUBLIC: Check if poll is active. + #[ink(message)] + pub fn is_active(&self) -> bool { + self.is_active + } + + // --- Helper to protect Admin functions --- + fn ensure_admin(&self) -> Result<()> { + if self.env().caller() != self.admin { + Err(Error::NotAdmin) + } else { + Ok(()) + } + } + } + + #[cfg(test)] + mod tests { + use super::*; + + #[ink::test] + fn admin_can_start_poll() { + let mut poll = Poll::new(); + assert_eq!(poll.is_active(), false); + + assert_eq!(poll.start_poll(), Ok(())); + assert_eq!(poll.is_active(), true); + } + + #[ink::test] + fn voting_works() { + let mut poll = Poll::new(); + poll.start_poll().unwrap(); + + // Vote Yes + assert_eq!(poll.vote(true), Ok(())); + + // Check results: (1 Yes, 0 No) + assert_eq!(poll.get_results(), (1, 0)); + } + + #[ink::test] + fn double_voting_fails() { + let mut poll = Poll::new(); + poll.start_poll().unwrap(); + + assert_eq!(poll.vote(true), Ok(())); + assert_eq!(poll.vote(false), Err(Error::AlreadyVoted)); + } + } +}