This proposal trustlessly transfers ~42,727,950 unclaimed NTRN tokens from the airdrop contract to the Cosmos Hub community pool.
It relies on custom smart-contracts to register an Interchain Account on the Cosmos Hub, transfer the tokens over IBC and execute a
See the Cosmos Hub’s approval: Mintscan
The terms of the security agreement between Neutron and the Cosmos Hub, as defined in Prop 792, include the transfer of unclaimed tokens from the NTRN airdrop to the Cosmos Hub.
As of the end of the claim period, a total of ~27,272,050 NTRN has been claimed. This can be verified using the Airdrop Contract’s
total_claimed query (see here on Celatone). As a result, 42,727,950 unclaimed NTRN tokens are earmarked to be transferred to the Cosmos Hub.
Unlike traditional accounts, to receive tokens, the Community Pool (CP) requires a specific
FundCommunityPool message which cannot be triggered directly over IBC. To perform the transfer, a simple “vehicle” smart-contract on Neutron is therefore required. This contract leverages the Interchain Transaction module to register an Interchain Account on the Cosmos Hub, transfer the tokens over IBC and execute the
This executable proposal updates the airdrop contract’s recipient address to the Main DAO address. It calls the
withdraw method of the Airdrop contract to withdraw all unclaimed tokens and triggers the
transfer function to deliver the tokens to the vehicle contract’s address on Neutron.
Once the NTRN has been transferred to the it, a set of permissionless handlers on the vehicle contract can be called to transfer all the tokens to CP on the Cosmos Hub network via IBC.
Following the approval of Prop 835, the set of smart-contracts required to perform the transfer trustlessly was developed by Hadron Labs and audited by SCV Security.
$ git clone https://github.com/neutron-org/neutron-airdrop-transfer.git
$ cd neutron-airdrop-transfer
$ git checkout v1.0.0
$ make build
$ shasum -a 256 artifacts/neutron_airdrop_transfer.wasm
0b7a75746a8d26b335537907d28477dc483fe632c12d542ddb8863060aa348b8 is the hash of the Airdrop Transfer contract binary you’ve built on your machine.
To verify that the migration will happen to the proper binary you should get a hash of the deployed contract by its code id (you can see a From Code on the info page about the contract on Celat.one):
$ neutrond q wasm code-info 480 --node https://rpc-kralum.neutron-1.neutron.org:443 --output json | jq ".data_hash"
If hashes are equal (case insensitive), that means the deployed binary is correct and contains all the changes above.