Deploy and configure distribution contracts for the Vaulta Development Team
This proposal establishes the funding mechanism for the core development team.
All of the accounts listed below are owned by the network.
eosio.savingretains its current distribution ratiosdist.vaultareceives partial distribution and can redistributedev.vaultaclaims and allocates to development team accounts
The dev.vaulta account is owned by the network but accessible by the development team. The active permission will be updated to a VDT multi-sig (either 2-of-3 or 3-of-5 as defined by Areg, to be confirmed before MSIG 2 execution).
This configuration can be temporary. At the time of this proposal it is undecided on how this configuration operates long term. This initial configuration is designed to provide a bucket to bootstrap the core development team.
Once the team is established, further review of the configuration can take place.
graph TD
eosio(eosio 75.8M EOS/year)
eosio --> |16.45% pay factor| producer(Block Producer Pay 12.4M EOS/year)
eosio --> |100% system fees| eosio.fees
eosio.fees --> weights_fees{% weights}
weights_fees -.-> |100% Distribute to eosio.bpay| bpay(21 producers)
eosio --> |83.55% unallocated bucket| eosio.saving(eosio.saving 63.3M EOS/year)
eosio.saving --> percent{% percent}
percent --> |53.71%| eosio.reward(eosio.reward 34M EOS/year)
percent --> |29.55%| dist.vaulta(dist.vaulta 18.7M EOS/year)
percent --> |16.74%| eoslabs.io(eoslabs.io 10.6M EOS/year)
eosio.reward --> weights_rewards{% weights}
weights_rewards --> |100% Donate To REX 2.0| eosio.rex(eosio.rex)
dist.vaulta --> |50%| dev.vaulta(dev.vaulta 9.3M EOS/year)
dist.vaulta --> |50%| fund.vaulta(fund.vaulta 9.3M EOS/year)
| Sender | Receiver | Allocation (%) |
|---|---|---|
| eosio | eosio.saving | 83.55% |
| eosio | producer pay | 16.45% |
| eosio.saving | eosio.reward | 53.71% |
| eosio.saving | dist.vaulta | 29.55% |
| eosio.saving | eoslabs.io | 16.74% |
| dist.vaulta | dev.vaulta | 50% |
| dist.vaulta | fund.vaulta | 50% |
dev.vaulta - Development team multi-sig account
- Owner: eosio@active (15 of 21 Block Producers)
- Active: VDT multi-sig (updated in this proposal)
- Structure will be either 2-of-3 or 3-of-5 as defined by Areg
- Signers to be confirmed before MSIG 2 execution
dist.vaulta - Distribution contract account
- Owner: eosio@active (15 of 21 Block Producers)
- Active: eosio@active (15 of 21 Block Producers)
- Runs eosio.saving contract
- Distributes 50% to dev.vaulta, 50% to fund.vaulta
fund.vaulta - Unallocated funds account
- Owner: eosio@active (15 of 21 Block Producers)
- Active: eosio@active (15 of 21 Block Producers)
- Receives 50% of distribution from dist.vaulta
Note: Accounts
dev.vaulta,dist.vaulta, andfund.vaultashould already exist before this proposal is made.
- 1.1 Buy RAM for
dist.vaultacontract
buyrambytes
{
"bytes": 200000,
"payer": "eosio",
"receiver": "dist.vaulta"
}- 2.1 Deploy
eosio.savingcontract todist.vaulta - 2.2 Set contract ABI for
dist.vaulta
setcode
{
"account": "dist.vaulta",
"code": "build/contracts/eosio.saving/eosio.saving.wasm",
"vmtype": 0,
"vmversion": 0
}setabi
{
"account": "dist.vaulta",
"abi": "build/contracts/eosio.saving/eosio.saving.abi"
}- 3.1 Configure
dist.vaultato distribute 50% todev.vaultaand 50% tofund.vaulta
dist.vaulta::setdistrib
{
"accounts": [
{
"account": "dev.vaulta",
"percent": 5000
},
{
"account": "fund.vaulta",
"percent": 5000
}
]
}- 3.2 Update
eosio.savingdistribution to includedist.vaulta(29.55%)
eosio.saving::setdistrib
{
"accounts": [
{
"account": "eosio.reward",
"percent": 5371
},
{
"account": "dist.vaulta",
"percent": 2955
},
{
"account": "eoslabs.io",
"percent": 1674
}
]
}- 4.1 Update
dev.vaultaactive permission to VDT multi-sig
updateauth
The exact multi-sig structure will be either 2-of-3 or 3-of-5 as defined by Areg before MSIG 2 execution.
Example structure (placeholder - MUST be updated before execution):
{
"account": "dev.vaulta",
"auth": {
"threshold": 2,
"keys": [],
"accounts": [
{
"weight": 1,
"permission": {
"actor": "ahayrapetian",
"permission": "active"
}
},
{
"weight": 1,
"permission": {
"actor": "tbd1",
"permission": "active"
}
},
{
"weight": 1,
"permission": {
"actor": "tbd2",
"permission": "active"
}
}
],
"waits": []
},
"permission": "active",
"parent": "owner"
}Note: Add additional accounts if using 3-of-5 structure. Update threshold accordingly.
- 4.2 Create
devclaimpermission ondist.vaultafor development team
updateauth
{
"account": "dist.vaulta",
"auth": {
"threshold": 1,
"keys": [],
"accounts": [
{
"weight": 1,
"permission": {
"actor": "dev.vaulta",
"permission": "active"
}
}
],
"waits": []
},
"permission": "devclaim",
"parent": "active"
}- 4.3 Link
devclaimpermission to only allow callingeosio.saving::claim
linkauth
{
"account": "dist.vaulta",
"code": "eosio.saving",
"type": "claim",
"requirement": "devclaim"
}This proposal deploys a contract identical to the eosio.saving contract on to the dist.vaulta account.
The eosio.saving account can be built using the CDT from:
https://github.com/VaultaFoundation/eosio.saving
The contract hash that previously was deployed by BPs can be used to also verify the expected hash.
# Get hash for the existing contract
curl https://eos.greymass.com/v1/chain/get_code_hash -d '{"account_name":"eosio.saving"}'Verify the WASM file in this project to ensure the hash matches the expected value:
# Calculate SHA256 hash of the built contract
shasum -a 256 build/contracts/eosio.saving/eosio.saving.wasmExpected Hash:
fc0dc47848a5d69ccd99fc60f74aa08c68bd734e1f2bc4b4c99191b99b39cffc
This same hash will be available to review within the proposal.