A smart contract used to lock and distribute tokens based on created certificates through community approved proposals.
The mined token contract distributes the allotted amount yearly to the mining governance and vault contracts. The vault contract will automatically receive tokens and update total supply of locked and unassigned vault tokens.
Proposals can be created to be voted on and when approved, assign tokens to a certificate within the vault, to vest then redeem after about a year (1,971,000 blocks). Proposals can also be created for revoking vault certificates during vesting, changing the total pledge minimum amount and changing the total vote minimum amount.
Proposal creation is public, meaning anyone can do it, however, proposals will not be put into affect unless they pass the minimum pledge amount, the minimum vote amount, and there must be more votes in favor than in opposition.
Dependency injected smart contract state. Omitted from parameters during deployment.
Address
token
The locked SRC token.
ulong
totalPledgeMinimum
The minimum total number of tokens pledged to a proposal to move to a vote.
ulong
totalVoteMinimum
The minimum total number of tokens voted on a proposal to have a chance to be approved.
ulong
vestingDuration
The length in blocks of the vesting period.
Properties
Type
Property
Description
Address
Token
The SRC20 token the vault is responsible for locking.
UInt256
TotalSupply
The total supply of tokens available to be assigned to certificates.
ulong
VestingDuration
The number of blocks required for certificates to be locked before being redeemed.
ulong
NextProposalId
The Id of the next proposal to be created.
UInt256
TotalProposedAmount
The total number of tokens requested for active create certificate proposals.
ulong
TotalPledgeMinimum
The minimum number of CRS tokens required to pledge to move a proposal on to a vote.
ulong
TotalVoteMinimum
The minimum number of CRS tokens required to vote on a proposal to have a chance to pass.
Methods
Get Certificate
Retrieves a certificate a given address is assigned.
CertificateGetCertificate(Addresswallet);
Parameters
Type
Property
Description
Address
wallet
The wallet address to check for a certificate.
Returns
Type
Property
Description
Certificate
certificate
A certificate issued to the provided address.
Certificate
Type
Property
Description
UInt256
Amount
The amount of tokens the certificate has assigned.
ulong
VestedBlock
The block number that the certificate is fully vested at.
bool
Revoked
Whether or not the certificate has been revoked.
Get Proposal
Retrieves the details about a proposal.
ProposalDetailsGetProposal(ulongproposalId);
Parameters
Type
Property
Description
ulong
proposalId
The ID number of the requested proposal.
Returns
Type
Property
Description
ProposalDetails
proposalDetails
Properties used to measure a proposals progress and proposition.
Proposal Details
Type
Property
Description
UInt256
Amount
The amount of the proposal. For create or revoke certificates, will equal the amount of ODX tokens assigned. For pledge or vote minimum amount proposals, is equal to the proposed new amount.
Address
Wallet
The address of the primary recipient or wallet of a proposal. For revoke certificate proposals, is equal to the certificate’s holder. For pledge and minimum vote proposals, is equal to the creator of the proposal. For new certificates, is equal to the wallet address that will have a certificate assigned.
byte
Type
The type of proposal.
byte
Status
The status of the proposal.
ulong
Expiration
The expiration block of the current status.
ulong
YesAmount
The number of CRS voted Yes on a proposal during the vote stage.
ulong
NoAmount
The number of CRS voted No on a proposal during the vote stage.
ulong
PledgeAmount
The number of CRS pledged to the proposal during the pledge stage.
Get Proposal Vote
Retrieve the vote details of a voter for a specific proposal.
The ID of the proposal to retrieve the pledge for.
Address
pledger
The address of the pledger.
Returns
Type
Property
Description
ulong
pledge
The number of CRS tokens actively pledged to the proposal by the provided wallet address.
Get Certificate Proposal Id By Recipient
Retrieves an Id of a certificate proposal that the specified recipient has open, limiting to one proposal per recipient for certificate based proposals at a time.
The proposal id of an open proposal for the provided recipient.
Notify Distribution
Method to allow the vault token to notify the vault of distribution to update the total supply.
voidNotifyDistribution(UInt256amount);
Parameters
Type
Property
Description
UInt256
amount
The amount of tokens sent to the vault.
Redeem Certificate
Redeems a vested certificate the sender owns and transfers the claimed tokens.
voidRedeemCertificate();
Create New Certificate Proposal
Creates a new proposal for a certificate to be created. If this proposal were to pass, the recipient would receive a certificate that is vested for the VestingDuration, entitling them to an amount of governance tokens in the vault.
The amount of tokens proposed the recipient’s certificate be assigned.
Address
recipient
The recipient address to assign a certificate to if approved.
string
description
A description of the proposal, limited to 200 characters, preferably a link.
Returns
Type
Property
Description
ulong
proposalId
The ID of the created proposal.
Create Revoke Certificate Proposal
Creates a new proposal for a certificate to be revoked. If this proposal were to pass, the certificate holder would only be entitled to the governance tokens accrued in the VestingDuration, up to the block at which the certificate is revoked.
The recipient of an existing certificate to have revoked.
string
description
A description of the proposal, limited to 200 characters, preferably a link.
Returns
Type
Property
Description
ulong
proposalId
The ID of the created proposal.
Create Total Pledge Minimum Proposal
Creates a new proposal for a change to the minimum pledge total amount. If this proposal were to pass, it would alter the total amount of tokens required to pledge to a proposal, so that it can move on to a vote.
A description of the proposal, limited to 200 characters, preferably a link.
Returns
Type
Property
Description
ulong
proposalId
The ID of the created proposal.
Create Total Vote Minimum Proposal
Creates a new proposal for a change to the minimum vote total amount. If this proposal were to pass, it would alter the total amount of tokens required to vote on a proposal, so that it can have a chance to pass.
The amount of tokens to withdraw from the proposal vote.
Complete Proposal
Completes a proposal and executes the resulting command within the vault contract if approved.
voidCompleteProposal(ulongproposalId);
Parameters
Type
Property
Description
ulong
proposalId
The Id number of the proposal to complete.
Logs
Create Vault Certificate Log
Emitted when a vault certificate is created, either for the vault owner during each distribution period or from the owner to a new certificate holder.
Index
Type
Property
Description
✅
Address
Owner
The address of the holder of the created certificate.
❎
UInt256
Amount
The amount of tokens locked in the certificate.
❎
ulong
VestedBlock
The block number that the certificate will be eligible for redemption at.
Redeem Vault Certificate Log
Emitted when an address redeems their certificate and claims their tokens.
Index
Type
Property
Description
✅
Address
Owner
The address of the holder of the redeemed certificate.
❎
UInt256
Amount
The amount of tokens redeemed and collected.
❎
ulong
VestedBlock
The block number that the certificate was fully vested at.
Revoke Vault Certificate Log
Emitted when the vault owner revokes a non-vested wallet’s certificate.
Index
Type
Property
Description
✅
Address
Owner
The address of the holder of the revoked certificate.
❎
UInt256
OldAmount
The old amount of tokens the certificate was created for.
❎
UInt256
NewAmount
The new amount of tokens the vault certificate can be redeemed for.
❎
ulong
VestedBlock
The block number that the certificate will be eligible for redemption at.
Create Vault Proposal Log
Emitted after a new proposal is created.
Index
Type
Property
Description
✅
ulong
ProposalId
The ID of the proposal created.
✅
Address
Wallet
The address of the wallet affected by the proposal. For create certificate proposals, this is the recipient. For revoke certificate proposals, this is the current holder. For minimum total proposals, this is the creator.
❎
UInt256
Amount
The amount of the proposal. For new certificates this is the amount proposed to be assigned, for revoke certificates, this is the current certificate’s amount, for change total proposals, this is the new total proposed.
❎
byte
Type
The type of proposal.
❎
byte
Status
The status of the proposal.
❎
ulong
Expiration
The expiration block of the current status of the proposal.
❎
string
Description
The description of the proposal.
Complete Vault Proposal Log
Emitted after a proposal is expired and completed.
Index
Type
Property
Description
✅
ulong
ProposalId
The ID of the proposal completed.
❎
bool
Approved
True if the proposal was approved, false if it was not.
Vault Proposal Pledge Log
Emitted after pledging toward a proposal.
Index
Type
Property
Description
✅
ulong
ProposalId
The proposal ID pledged to.
✅
Address
Pledger
The wallet address of the pledger.
❎
ulong
PledgeAmount
The amount of CRS pledged to the proposal in this transaction.
❎
ulong
PledgerAmount
The total CRS balance of the pledger for this proposal.
❎
ulong
ProposalPledgeAmount
The total amount of CRS pledged to this proposal.
❎
bool
TotalPledgeMinimumMet
True if the pledge has met its minimum requirement, moving it on to the vote stage.
Vault Proposal Vote Log
Emitted after voting on a proposal.
Index
Type
Property
Description
✅
ulong
ProposalId
The proposal ID voted on.
✅
Address
Voter
The wallet address of the voter.
❎
bool
InFavor
True if the vote was in favor of the proposal, else false.
❎
ulong
VoteAmount
The amount of CRS used to vote in this transaction.
❎
ulong
VoterAmount
The total amount of CRS the voter has voted with on this proposal.
❎
ulong
ProposalYesAmount
The total amount CRS voted Yes on the proposal.
❎
ulong
ProposalNoAmount
The total amount CRS voted No on the proposal.
Vault Proposal Withdraw Pledge Log
Emitted after withdrawing locked CRS used to pledge to a proposal.
Index
Type
Property
Description
✅
ulong
ProposalId
The proposal ID the CRS were withdrawn from.
✅
Address
Pledger
The wallet address of the pledger.
❎
ulong
WithdrawAmount
The amount of CRS to withdraw from a previous pledge to this proposal.
❎
ulong
PledgerAmount
The total amount of CRS the pledger still has locked within the proposal.
❎
ulong
ProposalPledgeAmount
The total amount of CRS pledged to the proposal.
❎
bool
PledgeWithdrawn
True if the funds withdrawn were deducted from an in progress proposal in the pledge stage, else false.
Vault Proposal Withdraw Vote Log
Emitted after withdrawing locked CRS used to vote on a proposal.
Index
Type
Property
Description
✅
ulong
ProposalId
The proposal ID the CRS were withdrawn from.
✅
Address
Voter
The wallet address of the voter.
❎
ulong
WithdrawAmount
The amount of CRS to withdraw from a previous vote to this proposal.
❎
ulong
VoterAmount
The total amount of CRS the voter still has locked within the proposal.
❎
ulong
ProposalYesAmount
The total amount CRS voted Yes on the proposal.
❎
ulong
ProposalNoAmount
The total amount CRS voted No on the proposal.
❎
bool
VoteWithdrawn
True if the funds withdrawn were deducted from an in progress proposal in the vote stage, else false.