From efc2a0ee180e0f569c113319ede299455d13111f Mon Sep 17 00:00:00 2001 From: hcastc00 Date: Tue, 2 Sep 2025 17:16:58 +0200 Subject: [PATCH 1/6] Add Starknet category and Solo Staking guide to documentation --- docs/user/staking/starknet/solo.md | 100 +++++++++++++++++++++++++++++ sidebars.js | 11 ++++ 2 files changed, 111 insertions(+) create mode 100644 docs/user/staking/starknet/solo.md diff --git a/docs/user/staking/starknet/solo.md b/docs/user/staking/starknet/solo.md new file mode 100644 index 000000000..0ae62c8c5 --- /dev/null +++ b/docs/user/staking/starknet/solo.md @@ -0,0 +1,100 @@ +# 🚀 StarkNet Validator Solo Staking Guide + +**StarkNet** is a Layer 2 network built on Ethereum, designed for scalability and performance using STARK proofs. +This guide will walk you through the **complete process of becoming a StarkNet validator and Solo Staker**, from wallet setup to running your attestation client and validator on DAppNode. + +We’ll use **[Argent Wallet](https://www.argent.xyz/)** and StarkNet's block explorer interfaces for all on-chain interactions. + +--- + +## 🛠 Prerequisites + +✅ [Argent Wallet](https://www.argent.xyz/) installed +✅ Access to a synced StarkNet full node (e.g., [Juno](https://github.com/dappnode/DAppNodePackage-juno-generic)) +✅ Minimum STRK balance: +- **Sepolia:** 1 STRK +- **Mainnet:** 20,000 STRK + +--- + +## 1️⃣ Create Accounts + +We’ll use **three StarkNet accounts** in Argent: + +- **staker** → Holds your stake +- **operator** → Runs the validator +- **rewards** → Receives rewards + +👉 Create them directly in Argent Wallet as _Standard Account_ + +![Argent wallet create account](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/argent-create-account.png) + +--- + +## 2️⃣ Fund and Deploy the Accounts + +- Fund your **staker** and **operator** accounts with the required STRK amount. +> On Sepolia, you can use the [StarkNet Faucet](https://starknet-faucet.vercel.app). + +- Deploy your **accounts** in Argent Wallet following these steps: +![account deploy](https://i.imgur.com/LzwWHl0.gif) + +--- + +## 3️⃣ Export your operator address private key + +The _starknetstaking_ package needs your **operator** address private key to make the _attestations_. +You can obtain it from *Argent Wallet* following [these steps](https://support.argent.xyz/hc/en-us/articles/8802319054237-How-to-activate-deploy-my-Argent-Starknet-wallet). + +--- + +## 4️⃣ Stake STRK + +To interact with the contracts we will use the block explorers [Voyager](https://voyager.online/) or [StarkScan](https://starkscan.co/). + +1. Open the [Staking Contract on Voyager (Sepolia)](https://sepolia.voyager.online/contract/0x03745ab04a431fc02871a139be6b93d9260b0ff3e779ad9c8b377183b23109f1#writeContract) or the [Staking Contract on Voyager (Mainnet)](https://voyager.online/contract/0x00ca1702e64c81d9a07b86bd2c540188d92a2c73cf5cc0e508d949015e7e84a7#writeContract). +2. Connect your **staker** Argent Wallet. +3. Scroll down to the `stake` function. +4. Fill in the calldata: + - **rewards_address** → Your rewards account + - **operational_address** → Your operator account + - **amount** → Amount in FRI (1 STRK = `1000000000000000000`) +5. Submit the transaction. + +📌 **Staking contract addresses:** [StarkNet Docs – Staking](https://docs.starknet.io/resources/chain-info/#staking) + +![Voyager write contract stake](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/voyager-stake.png) + +--- + +## 5️⃣ Install the StarkNet Staking Package on DAppNode + +Now that you’ve staked, you need to set up the validator client on your DAppNode. + +1. Open your DAppNode UI. +2. Go to the **DAppStore** and search for `starknetstaking`. +3. Click **Install**. + +Once installed, open the package configuration screen and provide: + +- `OPERATIONAL ADDRESS` → Your operator account +- `PRIVATE KEY` → The private key from your operator account (exported from Argent Wallet) + +The attestation process will start automatically, and your validator will be live. + +--- + +## 🧠 Notes & Tips + +- You can **claim rewards** or **increase stake** later from the same Voyager contract UI. +- Make sure your validator client runs **24/7** to avoid penalties. +- Always test your setup on Sepolia before moving to mainnet. + +--- + +**References:** +- [Argent Wallet](https://www.argent.xyz/) +- [Voyager StarkNet Explorer](https://voyager.online/) +- [Starkscan Starknet Explorer](https://starkscan.co/) +- [StarkNet Staking Docs](https://docs.starknet.io/architecture/staking/) +- [Juno Full Node](https://github.com/NethermindEth/juno) diff --git a/sidebars.js b/sidebars.js index b236e4f24..dcb119423 100644 --- a/sidebars.js +++ b/sidebars.js @@ -264,6 +264,17 @@ const sidebars = { }, ], }, + { + type: "category", + label: "Starknet", + items: [ + { + type: "doc", + label: "Starknet Solo Staking", + id: "user/staking/starknet/solo", + }, + ], + }, ], }, { From a04175a6fa201e77b1a66afe61ba1126e177c952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor?= <47385090+hcastc00@users.noreply.github.com> Date: Thu, 11 Sep 2025 12:20:36 +0200 Subject: [PATCH 2/6] Update starknet/solo.md --- docs/user/staking/starknet/solo.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/user/staking/starknet/solo.md b/docs/user/staking/starknet/solo.md index 0ae62c8c5..a2cc66ee8 100644 --- a/docs/user/staking/starknet/solo.md +++ b/docs/user/staking/starknet/solo.md @@ -44,13 +44,23 @@ We’ll use **three StarkNet accounts** in Argent: ## 3️⃣ Export your operator address private key The _starknetstaking_ package needs your **operator** address private key to make the _attestations_. -You can obtain it from *Argent Wallet* following [these steps](https://support.argent.xyz/hc/en-us/articles/8802319054237-How-to-activate-deploy-my-Argent-Starknet-wallet). +You can obtain it from *Argent Wallet* following ![these steps](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/export-pk.gif) --- -## 4️⃣ Stake STRK +## 4️⃣ Approve spending -To interact with the contracts we will use the block explorers [Voyager](https://voyager.online/) or [StarkScan](https://starkscan.co/). +1. Go to the block exporer STRK Token contract [STRK (Sepolia)](https://sepolia.voyager.online/contract/0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d#writeContract) or [STRK (Mainnet)](https://sepolia.voyager.online/contract/0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d#writeContract) +2. Connect your **staker** Argent Wallet. +3. Scroll down to the `approve` function. +4. Fill in the calldata: + - **spender** → Starknet Staking Contract [Starknet Addresses](https://docs.starknet.io/resources/chain-info/#staking) + - **amount** → Amount in FRI (1 STRK = `1000000000000000000`) +5. Submit the transaction. + + + +## 5️⃣ Stake STRK 1. Open the [Staking Contract on Voyager (Sepolia)](https://sepolia.voyager.online/contract/0x03745ab04a431fc02871a139be6b93d9260b0ff3e779ad9c8b377183b23109f1#writeContract) or the [Staking Contract on Voyager (Mainnet)](https://voyager.online/contract/0x00ca1702e64c81d9a07b86bd2c540188d92a2c73cf5cc0e508d949015e7e84a7#writeContract). 2. Connect your **staker** Argent Wallet. @@ -67,7 +77,7 @@ To interact with the contracts we will use the block explorers [Voyager](https:/ --- -## 5️⃣ Install the StarkNet Staking Package on DAppNode +## 6️⃣ Install the StarkNet Staking Package on DAppNode Now that you’ve staked, you need to set up the validator client on your DAppNode. From c5e65d03711ccbc16353a62243da56934ebd73ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor?= <47385090+hcastc00@users.noreply.github.com> Date: Thu, 11 Sep 2025 16:44:41 +0200 Subject: [PATCH 3/6] Update solo.md --- docs/user/staking/starknet/solo.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/user/staking/starknet/solo.md b/docs/user/staking/starknet/solo.md index a2cc66ee8..72eb04a9c 100644 --- a/docs/user/staking/starknet/solo.md +++ b/docs/user/staking/starknet/solo.md @@ -44,7 +44,8 @@ We’ll use **three StarkNet accounts** in Argent: ## 3️⃣ Export your operator address private key The _starknetstaking_ package needs your **operator** address private key to make the _attestations_. -You can obtain it from *Argent Wallet* following ![these steps](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/export-pk.gif) +You can obtain it from *Argent Wallet* following these steps: +![export PK](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/export-pk.gif) --- From 21c83c86a3f574ebfc5e5d8dffdf7afdb77ea899 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor?= <47385090+hcastc00@users.noreply.github.com> Date: Mon, 1 Dec 2025 11:43:53 +0100 Subject: [PATCH 4/6] Update solo.md --- docs/user/staking/starknet/solo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user/staking/starknet/solo.md b/docs/user/staking/starknet/solo.md index 72eb04a9c..f945184c9 100644 --- a/docs/user/staking/starknet/solo.md +++ b/docs/user/staking/starknet/solo.md @@ -44,7 +44,7 @@ We’ll use **three StarkNet accounts** in Argent: ## 3️⃣ Export your operator address private key The _starknetstaking_ package needs your **operator** address private key to make the _attestations_. -You can obtain it from *Argent Wallet* following these steps: +You can obtain it from *Argent Wallet* following these steps: ![export PK](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/export-pk.gif) --- From 0870530c8a8794c30e7301cf3a7b060019cde0c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor?= <47385090+hcastc00@users.noreply.github.com> Date: Mon, 1 Dec 2025 13:30:50 +0100 Subject: [PATCH 5/6] Update solo.md --- docs/user/staking/starknet/solo.md | 68 +++++++++++++++++------------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/docs/user/staking/starknet/solo.md b/docs/user/staking/starknet/solo.md index f945184c9..671eba659 100644 --- a/docs/user/staking/starknet/solo.md +++ b/docs/user/staking/starknet/solo.md @@ -1,17 +1,18 @@ -# 🚀 StarkNet Validator Solo Staking Guide +# 🚀 Starknet Validator Solo Staking Guide -**StarkNet** is a Layer 2 network built on Ethereum, designed for scalability and performance using STARK proofs. -This guide will walk you through the **complete process of becoming a StarkNet validator and Solo Staker**, from wallet setup to running your attestation client and validator on DAppNode. +**Starknet** is a Layer 2 network built on Ethereum, designed for scalability and performance using STARK proofs. +This guide will walk you through the **complete process of becoming a Starknet validator and Solo Staker**, from wallet setup to running your attestation client and validator on DAppNode. -We’ll use **[Argent Wallet](https://www.argent.xyz/)** and StarkNet's block explorer interfaces for all on-chain interactions. +We’ll use **[Ready Wallet](https://www.ready.co/)** and Starknet's block explorer interfaces for all on-chain interactions. --- ## 🛠 Prerequisites -✅ [Argent Wallet](https://www.argent.xyz/) installed -✅ Access to a synced StarkNet full node (e.g., [Juno](https://github.com/dappnode/DAppNodePackage-juno-generic)) +✅ [Ready Wallet](https://www.ready.co/) installed +✅ Access to a synced Starknet full node (Juno or Pathfinder) ✅ Minimum STRK balance: + - **Sepolia:** 1 STRK - **Mainnet:** 20,000 STRK @@ -19,24 +20,26 @@ We’ll use **[Argent Wallet](https://www.argent.xyz/)** and StarkNet's block ex ## 1️⃣ Create Accounts -We’ll use **three StarkNet accounts** in Argent: +We’ll use **three Starknet accounts** in Ready: - **staker** → Holds your stake - **operator** → Runs the validator - **rewards** → Receives rewards -👉 Create them directly in Argent Wallet as _Standard Account_ +👉 Create them directly in Ready Wallet as _Standard Account_ -![Argent wallet create account](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/argent-create-account.png) +![Ready wallet create account](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/argent-create-account.png) --- ## 2️⃣ Fund and Deploy the Accounts - Fund your **staker** and **operator** accounts with the required STRK amount. -> On Sepolia, you can use the [StarkNet Faucet](https://starknet-faucet.vercel.app). -- Deploy your **accounts** in Argent Wallet following these steps: +> Remember to add more than the minnimin Staking ammount to cover gass fees. +> On Sepolia, you can use the [Starknet Faucet](https://starknet-faucet.vercel.app). + +- Deploy your **accounts** in Ready Wallet following these steps: ![account deploy](https://i.imgur.com/LzwWHl0.gif) --- @@ -44,54 +47,58 @@ We’ll use **three StarkNet accounts** in Argent: ## 3️⃣ Export your operator address private key The _starknetstaking_ package needs your **operator** address private key to make the _attestations_. -You can obtain it from *Argent Wallet* following these steps: +You can obtain it from _Ready Wallet_ following these steps: ![export PK](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/export-pk.gif) --- ## 4️⃣ Approve spending -1. Go to the block exporer STRK Token contract [STRK (Sepolia)](https://sepolia.voyager.online/contract/0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d#writeContract) or [STRK (Mainnet)](https://sepolia.voyager.online/contract/0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d#writeContract) -2. Connect your **staker** Argent Wallet. -3. Scroll down to the `approve` function. -4. Fill in the calldata: +1. Go to the block explorer STRK token contract [STRK (Sepolia)](https://sepolia.voyager.online/contract/0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d#writeContract) or [STRK (Mainnet)](https://sepolia.voyager.online/contract/0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d#writeContract) +2. Connect your **staker** Ready Wallet. +3. In the implementation section, scroll down to the `approve` function (#19) +4. Click and fill in the data: - **spender** → Starknet Staking Contract [Starknet Addresses](https://docs.starknet.io/resources/chain-info/#staking) - **amount** → Amount in FRI (1 STRK = `1000000000000000000`) -5. Submit the transaction. +5. Submit the transaction. +![Voyager approve](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/voyager-approve.png) ## 5️⃣ Stake STRK 1. Open the [Staking Contract on Voyager (Sepolia)](https://sepolia.voyager.online/contract/0x03745ab04a431fc02871a139be6b93d9260b0ff3e779ad9c8b377183b23109f1#writeContract) or the [Staking Contract on Voyager (Mainnet)](https://voyager.online/contract/0x00ca1702e64c81d9a07b86bd2c540188d92a2c73cf5cc0e508d949015e7e84a7#writeContract). -2. Connect your **staker** Argent Wallet. -3. Scroll down to the `stake` function. -4. Fill in the calldata: +2. Connect your **staker** Ready Wallet. +3. In the implementation section, scroll down to the `stake` function. (#1) +4. Click and fill in the calldata: - **rewards_address** → Your rewards account - **operational_address** → Your operator account - **amount** → Amount in FRI (1 STRK = `1000000000000000000`) 5. Submit the transaction. -📌 **Staking contract addresses:** [StarkNet Docs – Staking](https://docs.starknet.io/resources/chain-info/#staking) +📌 **Staking contract addresses:** [Starknet Docs – Staking](https://docs.starknet.io/resources/chain-info/#staking) ![Voyager write contract stake](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/voyager-stake.png) --- -## 6️⃣ Install the StarkNet Staking Package on DAppNode +## 6️⃣ Install the Starknet Staking Package on Dappnode Now that you’ve staked, you need to set up the validator client on your DAppNode. -1. Open your DAppNode UI. -2. Go to the **DAppStore** and search for `starknetstaking`. +1. Open your Dappnode UI. +2. Go to the **DappStore** and search for `starknetstaking`. 3. Click **Install**. -Once installed, open the package configuration screen and provide: +During the inatallation process, you will need to instruduce the following info: -- `OPERATIONAL ADDRESS` → Your operator account -- `PRIVATE KEY` → The private key from your operator account (exported from Argent Wallet) +- `Operational Address` → The address for the `operator` Account you created via Ready Wallet in step #1 +- `Private Key` → The private key from your operator account (exported from Ready Wallet in step #3) -The attestation process will start automatically, and your validator will be live. +![Dappnode](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/dappnode-package.png) + + +The attestation process will start automatically, and your validator will be live. You can check reward and more info via the `staker_info_v1` contract in Voyager [Mainnet](https://voyager.online/contract/0x00ca1702e64c81d9a07b86bd2c540188d92a2c73cf5cc0e508d949015e7e84a7#readContract) or [Sepolia](https://sepolia.voyager.online/contract/0x03745Ab04a431fc02871A139be6B93D9260b0Ff3E779AD9c8B377183B23109F1#readContract) --- @@ -104,8 +111,9 @@ The attestation process will start automatically, and your validator will be liv --- **References:** -- [Argent Wallet](https://www.argent.xyz/) + +- [Ready Wallet](https://www.ready.co/) - [Voyager StarkNet Explorer](https://voyager.online/) - [Starkscan Starknet Explorer](https://starkscan.co/) -- [StarkNet Staking Docs](https://docs.starknet.io/architecture/staking/) +- [Starknet Staking Docs](https://docs.starknet.io/architecture/staking/) - [Juno Full Node](https://github.com/NethermindEth/juno) From 3d2e3563a23a541025e1c8081359723753754e77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor?= <47385090+hcastc00@users.noreply.github.com> Date: Mon, 1 Dec 2025 13:56:30 +0100 Subject: [PATCH 6/6] Update solo.md --- docs/user/staking/starknet/solo.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/user/staking/starknet/solo.md b/docs/user/staking/starknet/solo.md index 671eba659..418838b6a 100644 --- a/docs/user/staking/starknet/solo.md +++ b/docs/user/staking/starknet/solo.md @@ -36,7 +36,7 @@ We’ll use **three Starknet accounts** in Ready: - Fund your **staker** and **operator** accounts with the required STRK amount. -> Remember to add more than the minnimin Staking ammount to cover gass fees. +> Remember to add more than the minimum staking amount to cover gas fees. > On Sepolia, you can use the [Starknet Faucet](https://starknet-faucet.vercel.app). - Deploy your **accounts** in Ready Wallet following these steps: @@ -54,27 +54,28 @@ You can obtain it from _Ready Wallet_ following these steps: ## 4️⃣ Approve spending -1. Go to the block explorer STRK token contract [STRK (Sepolia)](https://sepolia.voyager.online/contract/0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d#writeContract) or [STRK (Mainnet)](https://sepolia.voyager.online/contract/0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d#writeContract) +1. Go to the block explorer STRK token contract [STRK (Sepolia)](https://sepolia.voyager.online/contract/0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d#writeContract) or [STRK (Mainnet)](https://voyager.online/contract/0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d#writeContract) 2. Connect your **staker** Ready Wallet. -3. In the implementation section, scroll down to the `approve` function (#19) +3. In the implementation section, scroll down to the `approve` function (#19 on Sepolia #22 in Mainnet) 4. Click and fill in the data: - **spender** → Starknet Staking Contract [Starknet Addresses](https://docs.starknet.io/resources/chain-info/#staking) - **amount** → Amount in FRI (1 STRK = `1000000000000000000`) -5. Submit the transaction. +5. Click the **Transact** button. ![Voyager approve](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/voyager-approve.png) +--- ## 5️⃣ Stake STRK 1. Open the [Staking Contract on Voyager (Sepolia)](https://sepolia.voyager.online/contract/0x03745ab04a431fc02871a139be6b93d9260b0ff3e779ad9c8b377183b23109f1#writeContract) or the [Staking Contract on Voyager (Mainnet)](https://voyager.online/contract/0x00ca1702e64c81d9a07b86bd2c540188d92a2c73cf5cc0e508d949015e7e84a7#writeContract). 2. Connect your **staker** Ready Wallet. -3. In the implementation section, scroll down to the `stake` function. (#1) +3. In the implementation section, scroll down to the `stake` function (#1) 4. Click and fill in the calldata: - **rewards_address** → Your rewards account - **operational_address** → Your operator account - **amount** → Amount in FRI (1 STRK = `1000000000000000000`) -5. Submit the transaction. +5. Click the **Transact** button. 📌 **Staking contract addresses:** [Starknet Docs – Staking](https://docs.starknet.io/resources/chain-info/#staking) @@ -87,18 +88,17 @@ You can obtain it from _Ready Wallet_ following these steps: Now that you’ve staked, you need to set up the validator client on your DAppNode. 1. Open your Dappnode UI. -2. Go to the **DappStore** and search for `starknetstaking`. +2. Go to the **DAppStore** and search for `starknetstaking`. 3. Click **Install**. -During the inatallation process, you will need to instruduce the following info: +During the installation process, you will need to enter the following information: -- `Operational Address` → The address for the `operator` Account you created via Ready Wallet in step #1 +- `Operational Address` → The address for the `operator` Account you created via Ready Wallet in step #1 - `Private Key` → The private key from your operator account (exported from Ready Wallet in step #3) ![Dappnode](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/dappnode-package.png) - -The attestation process will start automatically, and your validator will be live. You can check reward and more info via the `staker_info_v1` contract in Voyager [Mainnet](https://voyager.online/contract/0x00ca1702e64c81d9a07b86bd2c540188d92a2c73cf5cc0e508d949015e7e84a7#readContract) or [Sepolia](https://sepolia.voyager.online/contract/0x03745Ab04a431fc02871A139be6B93D9260b0Ff3E779AD9c8B377183B23109F1#readContract) +The attestation process will start automatically, and your validator will be live. You can check rewards and more info via the `staker_info_v1` contract in Voyager [Mainnet](https://voyager.online/contract/0x00ca1702e64c81d9a07b86bd2c540188d92a2c73cf5cc0e508d949015e7e84a7#readContract) or [Sepolia](https://sepolia.voyager.online/contract/0x03745Ab04a431fc02871A139be6B93D9260b0Ff3E779AD9c8B377183B23109F1#readContract) ---