Token Wrapper is an Aragon app offering a checkpointed ERC20 token interface that is usable in Aragon Voting applications. Its purpose is to bridge external, "vanilla" ERC20 tokens to a checkpointed token.
Token holders of the outside token have the ability to wrap and unwrap their tokens to gain or decrease balance in this wrapped token.
The TokenWrapper
contract was last professionally audited in 2020-01.
This version was published to aragonPM as token-wrapper.hatch.aragonpm.eth
.
In efforts to save gas costs and space to introduce the checkpointing, token amounts are limited to uint192
. This should not pose a problem for any token, but as uint192
supports a very large range of numbers, but the TokenWrapper will stop accepting deposits once if it hits 2^192 - 1
.
Prerequisites: aragonCLI is needed to install the Token Wrapper into a DAO. Also note that you may have to change --env aragon:rinkeby
for --env aragon:mainnet
if the organization is on mainnet.
dao install <DAO address> token-wrapper.hatch.aragonpm.eth --app-init-args <token address> <wrapped token name> <wrapped token symbol> --env aragon:rinkeby
The token address
is the address of the ERC20 token you would like to "wrap" into an organizational token.
You can verify that the Token Wrapper app was installed into your organization with:
dao apps <DAO address> --all --env aragon:rinkeby
dao acl create <DAO address> <Token Wrapper app address> 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff <Voting app address> <Voting app address> --env aragon:rinkeby
You can get the installed Token Wrapper's address by listing the apps of your DAO with the following command:
dao apps <DAO address> --all --env aragon:rinkeby
At this point, you should be able to view the Token Wrapper app in the Aragon client. You can try it out by wrapping one of your tokens.
dao install <DAO address> voting --app-init-args <Token Wrapper address> 500000000000000000 150000000000000000 604800 --env aragon:rinkeby
The command above uses the following voting parameters:
500000000000000000
: 50% minimum support150000000000000000
: 15% minimum approval604800
: Voting period of 7 days (604800 seconds)
dao acl create <DAO address> <new Voting app address> CREATE_VOTES_ROLE <Token Wrapper address> <new Voting app address> --env aragon:rinkeby
This will let anyone who has wrapped at least one of their existing token to create a new vote, as well as vote in any open votes.