Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

Distribution Contract and Configuration

Deploy and configure distribution contracts for the Vaulta Development Team

Overview

This proposal establishes the funding mechanism for the core development team.

Development Team Funding

All of the accounts listed below are owned by the network.

  • eosio.saving retains its current distribution ratios
  • dist.vaulta receives partial distribution and can redistribute
  • dev.vaulta claims 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.

Fund Distribution Flow

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)
Loading

Allocations

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%

Account Structure

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

MSIG - Development Team Setup

Note: Accounts dev.vaulta, dist.vaulta, and fund.vaulta should already exist before this proposal is made.

Allocate Resources

  • 1.1 Buy RAM for dist.vaulta contract

buyrambytes

{
    "bytes": 200000,
    "payer": "eosio",
    "receiver": "dist.vaulta"
}

Deploy Distribution Contract

  • 2.1 Deploy eosio.saving contract to dist.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"
}

Configure Distribution Strategies

  • 3.1 Configure dist.vaulta to distribute 50% to dev.vaulta and 50% to fund.vaulta

dist.vaulta::setdistrib

{
    "accounts": [
        {
            "account": "dev.vaulta",
            "percent": 5000
        },
        {
            "account": "fund.vaulta",
            "percent": 5000
        }
    ]
}
  • 3.2 Update eosio.saving distribution to include dist.vaulta (29.55%)

eosio.saving::setdistrib

{
    "accounts": [
        {
            "account": "eosio.reward",
            "percent": 5371
        },
        {
            "account": "dist.vaulta",
            "percent": 2955
        },
        {
            "account": "eoslabs.io",
            "percent": 1674
        }
    ]
}

Update Permissions

  • 4.1 Update dev.vaulta active 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 devclaim permission on dist.vaulta for 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 devclaim permission to only allow calling eosio.saving::claim

linkauth

{
    "account": "dist.vaulta",
    "code": "eosio.saving",
    "type": "claim",
    "requirement": "devclaim"
}

Build & Verify

This proposal deploys a contract identical to the eosio.saving contract on to the dist.vaulta account.

Building eosio.saving

The eosio.saving account can be built using the CDT from:

https://github.com/VaultaFoundation/eosio.saving

Retrieve eosio.saving hash

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 Contract Hash

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.wasm

Expected Hash:

fc0dc47848a5d69ccd99fc60f74aa08c68bd734e1f2bc4b4c99191b99b39cffc

This same hash will be available to review within the proposal.