[APPROVED] [PROPOSAL #24]Transfer unclaimed NTRN airdrop tokens to Cosmos Hub

Summary

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 FundCommunityPool message.

See the Cosmos Hub’s approval: Mintscan

Background

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.

Proposal

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 FundCommunityPool message.

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.

How to check this proposal

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.

How to verify the binary:

$ 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  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"

"0B7A75746A8D26B335537907D28477DC483FE632C12D542DDB8863060AA348B8"

If hashes are equal (case insensitive), that means the deployed binary is correct and contains all the changes above.

1 Like

The proposed solution here is elegant, compliant and safely audited, we support it entirely.
pro-delegators-sign