Using a block explorer to interact with Gro Protocol

Gro DAO
Gro DAO
Published in
12 min readNov 8, 2023

--

Gro DAO is winding down. Accordingly, Gro products are no longer under development and automated harvesting of its various strategies has been disabled. This means Gro products are no longer generating yield.

Any assets deposited into products can always be accessed directly on the blockchain (to be withdrawn, for example). For easiest access, it is recommended to use the Gro Protocol frontend, which is hosted as a decentralised IPFS interface on https://app.gro.xyz/ (with the following CID QmeeEj3kpAk4Cd4aY93yKy35vjDyENRm3LFAG5LzVdhfU6 — also accessible through IPFS gateways such as Fleek, IPFS and Cloudflare). However, if for whatever reason, the IPFS interface goes down or is unavailable; direct interaction with the smart contracts is possible via block explorers and the instructions below.

How to use block explorers to interact with Gro Protocol’s smart contracts

This article explains how a user can interact directly with the Gro Protocol smart contracts — through a block explorer like Etherscan (for Ethereum) or Avascan (for Avalanche). In theory, however, any block explorer would work to achieve the same result, assuming it is compatible with the network on which the smart contracts operate.

To understand why Gro DAO is winding down and halting its product development, and what this means, please refer to this FAQ article (which is also stored on IPFS with the following CID QmTco3nqbLHigihSiMy5phQNCjDEmj2jwUtLSz8WAGYnWe — accessible through an IPFS gateway such as: Pinata, IPFS, Cloudfare or Fleek).

Table of contents

  1. What is a block explorer?
  2. How to withdraw assets from Gro Protocol
  3. How to unstake assets from Gro Protocol
  4. How to migrate assets from earlier staking contracts
  5. How to redeem a share of the Gro DAO treasury

What is a block explorer?

A block explorer is a handy tool for viewing blockchain data (e.g. blocks, transactions, addresses, and fees) and for interacting with smart contracts. You can think of it as a blockchain search engine, that makes transparent blockchain data, more accessible and digestible.

In this guide, Etherscan (for Ethereum) and Avascan (for Avalanche), will be used as examples. For each of the actions below, you need to make sure to ‘Connect to web3’ or ‘Connect wallet’ respectively.

Make sure to ‘Connect to Web3’ on Etherscan
Make sure to ‘Connect wallet’ on Avascan

How to withdraw assets from Gro Protocol

To withdraw PWRD

  1. To check your available balance to withdraw, go to the PWRD (read) contract (https://etherscan.io/address/0xf0a93d4994b3d98fb5e3a2f90dbc2d69073cb86b#readContract) and select the ‘9. balanceOf’ function:
    a. In the ‘address’ field: Enter your wallet address
    b. Click the ‘query’ button to check how much PWRD you have
  2. To check your PWRD withdraw allowance, go to the PWRD (read) contract (https://etherscan.io/address/0xf0a93d4994b3d98fb5e3a2f90dbc2d69073cb86b#readContract) and select the ‘8. allowance’ function:
    a. In the ‘owner’ field: Enter your wallet address
    b. In the ‘spender’ field: Enter the GRouter contract address → 0xd4139E090e43Ff77172d9dD8BA449d2A9683790d
    c. Click the ‘query’ button to check the amount of PWRD that can be withdrawn
    d. If the returned ‘allowance’ is greater than or equal to the value from Step 1, continue to Step 4. If not, continue to Step 3
  3. To approve the amount of PWRD to be withdrawn, go to the PWRD (write) contract (https://etherscan.io/address/0xf0a93d4994b3d98fb5e3a2f90dbc2d69073cb86b#writeContract) and select the ‘2. approve’ function:
    a. In the ‘spender’ field: Enter the GRouter contract address → 0xd4139E090e43Ff77172d9dD8BA449d2A9683790d
    b. In the ‘amount’ field: Enter the value from Step 1
  4. Head to the GRouter (write) contract (https://etherscan.io/address/0xd4139E090e43Ff77172d9dD8BA449d2A9683790d#writeContract) and select the ‘6. Withdraw’ function
  5. In the ‘_amount’ field: Enter the number of tokens you want to withdraw (if you haven’t already directly copied the value from Step 1, remember to add 18 decimals to the specified number)
  6. In the ‘_token_index’ field: Enter the value that corresponds with the type of stablecoin you would like to withdraw (0 = DAI, 1 = USDC, 2 = USDT, 3 = 3CRV)
  7. In the ‘_tranche’ field: Enter ‘true’
  8. To calculate the value for the ‘_minAmount’ field, head to the Price Oracle (read) Contract (https://etherscan.io/address/0x6a25Fd29E2033d9519B77FA0d649DC9aeD219a13#readContract) and select the ‘8. withdraw’ function:
    a. In the ‘_amount’ field: Enter the value you entered in Step 5
    b. In the ‘_slippage’ field: Enter the amount of slippage, in basis points (BP), you would like to incur (e.g. ‘1’ BP = 0.01%, ‘10’ BP = 0.1%, ‘100’ BP = 1%, ‘1000’ BP = 10%, ‘10000’ BP = 100%)
    c. In the ‘_index’ field: Enter the value that corresponds with the type of stablecoin you would like to withdraw (0 = DAI, 1 = USDC, 2 = USDT, 3 = 3CRV)
    d. In the ‘_tranche’ field: Enter ‘true’
    e. Click the ‘query’ button to get the ‘_minAmount’
  9. Click the ‘write’ button to withdraw

To withdraw GVT

  1. To check your available balance to withdraw, go to the GVT (read) contract (https://etherscan.io/address/0x3adb04e127b9c0a5d36094125669d4603ac52a0c#readContract) and select the ‘10. balanceOf’ function:
    a. In the ‘address’ field: Enter your wallet address
    b. Click the ‘query’ button to check how much GVT you have
  2. To check your GVT withdraw allowance, go to the PWRD (read) contract (https://etherscan.io/address/0x3adb04e127b9c0a5d36094125669d4603ac52a0c#readContract) and select the ‘9. allowance’ function:
    a. In the ‘owner’ field: Enter your wallet address
    b. In the ‘spender’ field: Enter the GRouter contract address → 0xd4139E090e43Ff77172d9dD8BA449d2A9683790d
    c. Click the ‘query’ button to check the amount of GVT that can be withdrawn
    d. If the returned ‘allowance’ is greater than or equal to the value from Step 1, continue to Step 4. If not, continue to Step 3
  3. To approve the amount of GVT to be withdrawn, go to the GVT (write) contract (https://etherscan.io/address/0x3adb04e127b9c0a5d36094125669d4603ac52a0c#writeContract) and select the ‘2. approve’ function:
    a. In the ‘spender’ field: Enter the GRouter contract address → 0xd4139E090e43Ff77172d9dD8BA449d2A9683790d
    b. In the ‘amount’ field: Enter the value from Step 1
  4. Head to the GRouter (write) contract (https://etherscan.io/address/0xd4139E090e43Ff77172d9dD8BA449d2A9683790d#writeContract) and select the ‘6. Withdraw’ function
  5. In the ‘_amount’ field: Enter the number of tokens you want to withdraw (if you haven’t already directly copied the value from Step 1, remember to add 18 decimals to the specified number)
  6. In the ‘_token_index’ field: Enter the value that corresponds with the type of stablecoin you would like to withdraw (0 = DAI, 1 = USDC, 2 = USDT, 3 = 3CRV)
  7. In the ‘_tranche’ field: Enter ‘false’
  8. To calculate the value for the ‘_minAmount’ field, head to the Price Oracle (read) Contract (https://etherscan.io/address/0x6a25Fd29E2033d9519B77FA0d649DC9aeD219a13#readContract) and select the ‘8. withdraw’ function:
    a. In the ‘_amount’ field: Enter the value you entered in Step 5
    b. In the ‘_slippage’ field: Enter the amount of slippage, in basis points, you would like to incur (e.g. ‘1’ BP = 0.01%, ‘10’ BP = 0.1%, ‘100’ BP = 1%, ‘1000’ BP = 10%, ‘10000’ BP = 100%)
    c. In the ‘_index’ field: Enter the value that corresponds with the type of stablecoin you would like to withdraw (0 = DAI, 1 = USDC, 2 = USDT, 3 = 3CRV)
    d. In the ‘_tranche’ field: Enter ‘false’
    e. Click the ‘query’ button to get the ‘_minAmount’
  9. Click the ‘write’ button to withdraw

To withdraw assets from Labs’ DAI Vault on Avalanche

  1. Head to the respective DAI vault’s contract where you have deposited DAI:
    a. groDAI.e_vault: https://avascan.info/blockchain/all/address/0x5E57E11483A3F60A76af3045303604522059dA2a/contract
    b. groDAI.e_vault_v1_7: https://avascan.info/blockchain/all/address/0x6063597B9356B246E706Fd6A48C780F897e3ef55/contract
  2. To check your available balance to withdraw, go to ‘ReadContract’ and select the ‘3. balanceOf’ or ‘5. balanceOf’ function:
    a. In the ‘address’ field: Enter your wallet address
    b. Click the ‘query’ button to check how much DAI you have
  3. To withdraw DAI, go to ‘WriteContract’ and select the ‘28. withdraw’ or ‘30. withdraw’ function:
    a. In the ‘_shares’ field: Enter the amount of DAI you want to withdraw by copying the value from Step 2
    b. In the ‘_maxLoss’ field: Enter the amount of desired slippage in BP (e.g. ‘1’ BP = 0.01%, ‘10’ BP = 0.1%, ‘100’ BP = 1%, ‘1000’ BP = 10%, ‘10000’ BP = 100%)
    c. Click the ‘write’ button to withdraw DAI

To withdraw assets from Labs’ USDC Vault on Avalanche

  1. Head to the respective USDC vault’s contract where you have deposited USDC:
    a. groUSDC.e_vault: https://avascan.info/blockchain/all/address/0x57DaED1ee021BE9991F5d30CF494b6B09B5B449E
    b. groUSDC.e_vault_v1_5: https://avascan.info/blockchain/all/address/0x6518becA1c20221cF6e8ba6F77B85818d1a298E7
    c. groUSDC.e_vault_v1_7: https://avascan.info/blockchain/all/address/0x2Eb05cfFA24309b9aaf300392A4D8Db745d4E592
  2. To check your available balance to withdraw, go to ‘ReadContract’ and select the ‘3. balanceOf’ or ‘5. balanceOf’ function:
    a. In the ‘address’ field: Enter your wallet address
    b. Click the ‘query’ button to check how much USDC you have
  3. To withdraw USDC, go to ‘WriteContract’ and select the ‘28. withdraw’ or ‘30. withdraw’ function:
    a. In the ‘_shares’ field: Enter the amount of USDC you want to withdraw by copying the value from Step 2
    b. In the ‘_maxLoss’ field: Enter the amount of desired slippage in BP (e.g. ‘1’ BP = 0.01%, ‘10’ BP = 0.1%, ‘100’ BP = 1%, ‘1000’ BP = 10%, ‘10000’ BP = 100%)
    c. Click the ‘write’ button to withdraw USDC

To withdraw assets from Labs’ USDT Vault on Avalanche

  1. Head to the respective USDT vault’s contract where you have deposited USDT:
    a. groUSDT.e_vault: https://avascan.info/blockchain/all/address/0x471F4B4b9A97F82C3a25b034B33A8E306eE9Beb5
    b. groUSDT.e_vault_v1_7: https://avascan.info/blockchain/all/address/0x6EF44077a1F5e10cDfcCc30EFb7dCdb1d5475581
  2. To check your available balance to withdraw, go to ‘ReadContract’ and select the ‘3. balanceOf’ or ‘5. balanceOf’ function:
    a. In the ‘address’ field: Enter your wallet address
    b. Click the ‘query’ button to check how much USDT you have
  3. To withdraw USDT, go to ‘WriteContract’ and select the ‘28. withdraw’ or ‘30. withdraw’ function:
    a. In the ‘_shares’ field: Enter the amount of USDT you want to withdraw by copying the value from Step 2
    b. In the ‘_maxLoss’ field: Enter the amount of desired slippage in BP (e.g. ‘1’ BP = 0.01%, ‘10’ BP = 0.1%, ‘100’ BP = 1%, ‘1000’ BP = 10%, ‘10000’ BP = 100%)
    c. Click the ‘write’ button to withdraw USDT

How to unstake assets from Gro Protocol

To claim PWRD from the PWRD aidrop

  1. If it is the first time you are making a claim, head to the PWRD Aidrop (write) contract (https://etherscan.io/address/0x02c133B9fBffb8D2E8cb7B7a94C7c880b331c720#writeContract) and select the ‘2. initialClaim’ function:
    a. In the ‘proof’ field: Search for your address either in this JSON file (stored on IPFS with the following CID bafybeicj2yur3arkw4bhuitlokoatbi5gkhysm6ynpdbtwuow5zhfr2lem — accessible through an IPFS gateway such as: Pinata, IPFS, Cloudfare, Fleek or W3S) or this duplicated JSON file (stored on IPFS with the following CID QmdYsWaEcuH5Vrz6Q3obzoyRALc7P4UZ8kXPHAQ5y8WJki — accessible through an IPFS gateway such as: Pinata, IPFS, Cloudflare or Fleek)
    b. Next, list each of your respective ‘proofs’ as an array (without spaces), e.g.: [0x0e52de07474c2bdd7630df1d7248e3a82cf85af11e9680b28c3f27dc8fddf8c5,0x4a7ffb5333d2144e1cbb3240f9fcfcccdd4bf4cb3287ddb7669b7ac406a84b11,…]
    b. In the ‘amount’ field: Search for your address in the same JSON file, and copy the value of your respective ‘amount’.
    c. Click the ‘write’ button to unstake
  2. If it’s not the first time you are making a claim, head to the PWRD Aidrop (write) contract (https://etherscan.io/address/0x02c133B9fBffb8D2E8cb7B7a94C7c880b331c720#writeContract) and select the ‘1. Claim’ function:
    a. Click the ‘write’ button to unstake

To unstake from the Single Staking GRO Pool

  1. To check your available balance to unstake, head to the LPTokenStaker (read) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#readContract) and select the ‘19. userInfo’ function:
    a. In the ‘unit256’ field: Enter ‘0’
    b. In the ‘address’ field: Enter your wallet address
    c. Click the ‘query’ button to check your available balance to unstake
  2. Head to the LPTokenStaker (write) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#writeContract) and select the ‘26. Withdraw’ function:
    a. In the ‘pid’ field: Enter ‘0’
    b. In the ‘amount’ field: Enter the number of tokens you want to unstake (if you haven’t already directly copied the value from Step 1, remember to add 18 decimals to the specified number)
    c. Click the ‘write’ button to unstake

To unstake from the Uniswap V2: GVT-GRO Pool

  1. To check your available LP token balance to unstake, head to the LPTokenStaker (read) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#readContract) and select the ‘19. userInfo’ function:
    a. In the ‘unit256’ field: Enter ‘1’
    b. In the ‘address’ field: Enter your wallet address
    c. Click the ‘query’ button to check your available balance to unstake
  2. Head to the LPTokenStaker (write) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#writeContract) and select the ‘26. Withdraw’ function:
    a. In the ‘pid’ field: Enter ‘1’
    b. In the ‘amount’ field: Enter the number of tokens you want to unstake (if you haven’t already directly copied the value from Step 1, remember to add 18 decimals to the specified number)
    c. Click the ‘write’ button to unstake

To unstake from the Uniswap V2: GRO-USDC Pool

  1. To check your available LP token balance to unstake, head to the LPTokenStaker (read) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#readContract) and select the ‘19. userInfo’ function:
    a. In the ‘unit256’ field: Enter ‘2’
    b. In the ‘address’ field: Enter your wallet address
    c. Click the ‘query’ button to check your available balance to unstake
  2. Head to the LPTokenStaker (write) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#writeContract) and select the ‘26. Withdraw’ function:
    a. In the ‘pid’ field: Enter ‘2’
    b. In the ‘amount’ field: Enter the number of tokens you want to unstake (if you haven’t already directly copied the value from Step 1, remember to add 18 decimals to the specified number).
    c. Click the ‘write’ button to unstake

To unstake from the Single Staking GVT Pool

  1. To check your available balance to unstake, head to the LPTokenStaker (read) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#readContract) and select the ‘19. userInfo’ function:
    a. In the ‘unit256’ field: Enter ‘3’
    b. In the ‘address’ field: Enter your wallet address
    c. Click the ‘query’ button to check your available balance to unstake
  2. Head to the LPTokenStaker (write) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#writeContract) and select the ‘26. Withdraw’ function:
    a. In the ‘pid’ field: Enter ‘3’
    b. In the ‘amount’ field: Enter the number of tokens you want to unstake (if you haven’t already directly copied the value from Step 1, remember to add 18 decimals to the specified number)
    c. Click the ‘write’ button to unstake

To unstake from the Curve: PWRD-3CRV Pool

  1. To check your available LP token balance to unstake, head to the LPTokenStaker (read) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#readContract) and select the ‘19. userInfo’ function:
    a. In the ‘unit256’ field: Enter ‘4’
    b. In the ‘address’ field: Enter your wallet address
    c. Click the ‘query’ button to check your available balance to withdraw
  2. Head to the LPTokenStaker (write) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#writeContract) and select the ‘26. Withdraw’ function:
    a. In the ‘pid’ field: Enter ‘4’
    b. In the ‘amount’ field: Enter the number of tokens you want to unstake (if you haven’t already directly copied the value from Step 1, remember to add 18 decimals to the specified number)
    c. Click the ‘write’ button to unstake

To unstake from the Balancer v2 GRO 80% / WETH 20% Pool

  1. To check your available LP token balance to unstake, head to the LPTokenStaker (read) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#readContract) and select the ‘19. userInfo’ function:
    a. In the ‘unit256’ field: Enter ‘5’
    b. In the ‘address’ field: Enter your wallet address
    c. Click the ‘query’ button to check your available balance to unstake
  2. Head to the LPTokenStaker (write) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#writeContract) and select the ‘26. Withdraw’ function:
    a. In the ‘pid’ field: Enter ‘5’
    b. In the ‘amount’ field: Enter the number of tokens you want to unstake (if you haven’t already directly copied the value from Step 1, remember to add 18 decimals to the specified number)
    c. Click the ‘write’ button to unstake

To unstake from the Single Staking PWRD Pool

  1. To check your available balance to unstake, head to the LPTokenStaker (write) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#writeContract) and select the ‘4. emergencyWithdraw’ function.
    a. In the ‘pid’ field: Enter ‘6’
    b. Click the ‘write’ button to unstake

How to migrate assets from earlier staking contracts?

To migrate assets from the old LPTokenStaker contract

  1. Head to the LPTokenStaker (write) contract (https://etherscan.io/address/0x2e32bad45a1c29c1ea27cf4dd588df9e68ed376c#writeContract) and select the ‘10. migrateUser’ function:
    a. In the ‘account’ field: Enter your wallet address
    b. In the ‘pids’ field: Enter an array (without spaces) with the pids of the pools in which you have assets. For reference: GVT-GRO Pool = 1; GRO-USDC Pool = 2; Single Staking GVT Pool = 3; PWRD-3CRV Pool = 4; GRO 80% / WETH 20% Pool = 5; Single Staking PWRD Pool = 6. So for example, if you have assets in the GVT-GRO Pool and the GRO-USDC Pool, you would enter [1,2]
    c. Click the ‘write’ button to migrate

How to redeem a share of the Gro DAO treasury?

To redeem a share of the Gro DAO treasury

  1. Head to the Treasury Redemption (read) contract (https://etherscan.io/address/0x204d9de758217a39149767731a87bcc32427b6ef#readContract) and select the ‘9. getSharesAvailable’ function:
    a. In the ‘user’ field: Enter your wallet address
    b. Click the ‘query’ button to calculate your total redeemable amount
  2. Head to the Treasury Redemption (write) contract (https://etherscan.io/address/0x204d9de758217a39149767731a87bcc32427b6ef#writeContract) and select the ‘1. Claim’ function:
    a. In the ‘_amount’ field: Enter the value from Step 1
    b. Click the ‘write’ button to redeem your share

To redeem a share of the Gro DAO treasury’s AlloyX DURA allocation

  1. Head to the AlloyX DURA Redemption (read) contract (https://etherscan.io/address/0xeFC812A74Ea5dB6913E676F20fef66b22FC66432#readContract) and select the ‘6. getDuraAvailable’ function:
    a. In the ‘user’ field: Enter your wallet address
    b. Click the ‘query’ button to calculate your total redeemable amount
  2. Head to the AlloyX DURA Redemption (write) contract (https://etherscan.io/address/0xeFC812A74Ea5dB6913E676F20fef66b22FC66432#writeContract) and select the ‘1. Claim’ function:
    a. In the ‘_amount’ field: Enter the value from Step 1
    b. Click the ‘write’ button to redeem your share

Thank You!

To all Gromies, OGs, G-Force members, and Pod contributors — your dedication and effort have been the heartbeat of Gro, its decentralised governance and crowd-sourced development. This isn’t the end; it’s a new beginning. The lessons we’ve learned and the challenges we’ve overcome are the foundation for future innovations. Here’s to taking what we’ve built and learned, and using it to blaze new trails in the broader web3 universe, making DeFi accessible for all. Onward and upward; the best is yet to come beyond Gro.

Website | Discord | Twitter | Forum

DISCLAIMER: This article is for informational purposes only. It is not legal, tax, financial, or other advice. All mentioned products involve risks. Refrain from taking action solely based on the information in this article. Please do your own research, make your own financial decisions, and/or seek independent financial advice from a licensed person. None of the information included in this article is an endorsement of the tools mentioned.

All software developed by Gro DAO are tools that can be used to access and/or operate various DeFi protocols. Accordingly, users of Gro DAO products continue to control their assets and decide how to manage them with the help of these tools.

--

--

Gro DAO
Gro DAO

Gro DAO builds products to make web3 more accessible