Skip to main content

EOS

Accounts

EOS requires some additional setup to create functional addresses. Unlike other chains, EOS does not derive an on-chain "address" from a wallet or key pair. Instead, EOS accounts are arbitrary 12 character strings (a-z, 1-5) that must be created separately and associated with an normal "keypair" address.

In order to setup an EOS account on Treasury, you need to complete the following.

Create an EOS address on Treasury normally.

This will create an address, starting with "EOS".

Create an EOS account

To do this you need to use a separate EOS wallet that has some EOS tokens.

We found that Anchor wallet worked the best. Note you will need to pay a $2 fee in order to create a new account, which can be done on the mobile version of Anchor wallet.

Once you've created a new account on Anchor wallet, you will need to fund it with some EOS token so that we can afford to create accounts for our Treasury EOS addresses.

Once funded, you can export the private key so we can import it into a separate wallet:

Install the xc utility from our open source crosschain library.

Then you can load the private key you exported from Anchor mobile wallet.

 export XC_PRIVATE_KEY="YOUR_EXPORTED_KEY"

Also include your Treasury API key.

 export TREASURY_API_KEY="YOUR_API_KEY"

Now you can create an account on EOS for your treasury address.

xc --chain EOS -v tools eos create-account --name "myeosaccount1" --address "YOUR_TREASURY_ADDRESS"

Verify your EOS account

Check your EOS account on the explorer and verify that both owner and active keys match your treasury address. If these do not match, then this account is not safe to use!

Add extra-identity label to your Treasury address

Add a label called "extra-identity" to your Treasury EOS address that matches your EOS account. This is needed to be able to make EOS transfers between internal EOS addresses on Treasury.

Stake EOS to CPU & Net

Unfortunately we are not done yet. Another one of EOS's quirks is it requires you to stake EOS to get a 'budget' of 'CPU' and 'NET' to be able to afford making transactions. This is EOS's version of transactions fees.

For example, if you stake 1000 EOS, then you may get "1ms" of CPU and "1000" bytes of NET. This is a daily budget that replenishes. Without CPU and NET, you cannot make transactions with your account/address.

At the time of this writing, it takes about 600 EOS staked to be able to get enough CPU and NET to be able to get enough budget to send a few transactions per day.

You can use the normal staking process on Treasury to stake, just use all as the validator to be able to stake split between both CPU and NET. You can use cpu or net options as well.

You can also use xc tools eos stake to use a separate wallet to transfer and stake for your treasury wallet.

Summary

To create a functional EOS address, it needs to be associated with an EOS account.

  • Create a Treasury EOS address
  • Use Anchor mobile wallet (or other platform) to pay for your own "staging" account on EOS.
  • Fund your staging account with a few EOS.
  • Use Anchor desktop or xc utility to create an account for the Treasury EOS address.
  • Double check on explored that your account is controlled only by the Treasury EOS address.
  • Add "extra-identity" label to Treasury address matching new account.
  • Fund your Treasury account with at least 100-1k EOS to use for staking (or use xc tools eos stake with your staging account).

Now you can transact natively and fully with self custody on EOS. Be sure to check your CPU & NET resources and stake/unstake accordingly.

z# Notes

Notes

Fee Payer

Note that fee payer is supported on EOS. This means you do not need to stake a ton of EOS for every address. You can stake once on a single EOS address, and then use it as the fee-payer for other EOS addresses.

Vault A

Vault A asset should work out of the box. If you need to define it manually, please use core.vaulta/A as the contract address, with 4 decimals.