diff --git a/docs/discover/hash.md b/docs/discover/hash.md index 2688f14d8..9a3d6a589 100644 --- a/docs/discover/hash.md +++ b/docs/discover/hash.md @@ -14,7 +14,8 @@ Data from the [Provenance Explorer](https://explorer.provenance.io) ### Tokenomics -Provenance Blockchain is uniquely suited to drive massive disruption in financial services by combining truth-vs-trust and riskless transactions, creating bilateral decentralized markets. Read more in our tokenomics paper. +Provenance Blockchain is uniquely suited to drive massive disruption in financial services by combining truth-vs-trust and riskless transactions, creating bilateral decentralized markets. Read more in our +[tokenomics paper](https://provenance.io/ecosystem/HASH/tokenomics/). ### Get Hash diff --git a/docs/learn/asset-lifecycle/03-markers.md b/docs/learn/asset-lifecycle/03-markers.md index 3ec6a3a8d..b7adf76bb 100644 --- a/docs/learn/asset-lifecycle/03-markers.md +++ b/docs/learn/asset-lifecycle/03-markers.md @@ -17,7 +17,7 @@ Examples of RWAs include: Just like cryptocurrencies, tokenized assets can be bought, traded, and held in digital wallets by individuals or managed by an investment platform. On Provenance Blockchain, all tokenized assets (including cryptocurrencies, tokens, asset pools, cap tables, -stablecoins, and digital money) are defined by the [**Marker module**](/docs/pb/modules/marker-module). +stablecoins, and digital money) are defined by the [**Marker module**](/docs/sdk/modules/marker-module). A Provenance Blockchain **Marker** is a flexible and nuanced container for all asset types that allows for custom configuration and administration of an asset token. @@ -37,7 +37,7 @@ name, and their value is expressed as a whole number. Sending coins is as simple only a signature from the sender to confirm the transfer. Each coin is fungible, meaning that each coin is indistinguishable from another and can be replaced by another unit of equal value. -A Marker has its own [lifecycle](https://developer.provenance.io/docs/modules/marker-module#state-transitions) represented by a +A Marker has its own [lifecycle](/docs/sdk/marker/state_transitions) represented by a finite state machine. A Marker is ready to use when it reaches the `Active` state. ## Coins and Tokens @@ -45,8 +45,7 @@ finite state machine. A Marker is ready to use when it reaches the `Active` stat On Provenance Blockchain, a Marker can be created to govern the rules of any type of coin or token. This allows for the generation of a customized and controlled digital asset. -Coin examples include [Hash](https://explorer.provenance.io/asset/nhash), the [utility token](https://developer.provenance.io/docs/ecosystem/financial-services-blockchain/token-economics#provenance-fees-and-hash) -of Provenance Blockchain; [USDF](https://www.usdfconsortium.com/), a bank-minted tokenized deposit; and [figureomni](https://explorer.provenance.io/asset/cfigureomni), +Coin examples include [Hash](https://explorer.provenance.io/asset/nhash), the [utility token](https://provenance.io/ecosystem/HASH/tokenomics/) of Provenance Blockchain; [USDF](https://www.usdfconsortium.com/), a bank-minted tokenized deposit; and [figureomni](https://explorer.provenance.io/asset/cfigureomni), a use case-specific Omnibus Bank coin (tokenized deposit). Real World Aset examples include private company stock, such as diff --git a/docs/pb/ecosystem/financial-services-blockchain/token-economics.md b/docs/pb/ecosystem/financial-services-blockchain/token-economics.md index 7ac6f7a86..9e38fc299 100644 --- a/docs/pb/ecosystem/financial-services-blockchain/token-economics.md +++ b/docs/pb/ecosystem/financial-services-blockchain/token-economics.md @@ -1,214 +1,3 @@ # Token Economics -import { DocSubheader } from '/docs/components/DocSubheader'; - - - -## The Hash Token and Fees - -Provenance Blockchain's utility token is called **Hash**. There are 100 billion Hash tokens in circulation, and no new -tokens can be created or destroyed. However, Hash can be "slashed" during staking[^1]. - -Hash has three use cases: as a spam-prevention mechanism, as a staking token, and as a voting mechanism in governance. - -Transactions and activities on the Provenance Blockchain platform incur gas fees, community fees, and smart contract -fees, all of which are paid in Hash. While community and smart contract fees may be quoted in fiat, all fee distribution -is ultimately in Hash. - -Gas fees are paid to validators and their delegates, while community fees are currently distributed to all delegated -Hash holders. This incentivizes delegation and network participation. Smart contract fees, on the other hand, go to -smart contract owners or designated recipients. - -It's worth noting that all fees are paid in Hash. This means that participants must pay fees directly in Hash. - -The number of minted Hash remains constant, and no new Hash is minted as reward for work. As a result, there is no -inflation of the Hash value through the new influx of Hash. - -To learn more about acquiring Hash, please refer -to [Provenance's guide on acquiring Hash](https://provenance.io/purchase-hash). - -[^1] _Validators on the Provenance Blockchain network are responsible for adding new blocks to the chain and ensuring -the validity of transactions. If a validator is found to be acting in bad faith or not following the network's rules, -they may be "slashed", which means that a portion of their staked tokens (including the tokens staked by their -delegators) -will be locked up for a certain period of time. This is intended to disincentivize bad behavior and promote network -security and stability._ - -| Token Type | Hash | -| ----------------------------- | -------------- | -| Total Supply | 100 Billion | -| Total Planned Inflation | None | -| Inflation Rate | None | -| Maximum Stake | None | -| Minimum Stake | 1 Hash | -| Unbonding/Undelegating period | 21 days | -| Initial Active Set Size | 100 validators | -| Community pool | 7% | - -TODO add initial allocation - -## Staking Hash - -The Provenance Blockchain network is a public Proof-Of-Stake (PoS) blockchain. Validators on the network are weighted -based on the amount of staking tokens (Hash) bonded to them as collateral. These tokens can be self-delegated directly -by the validator or delegated to them by other Hash holders. - -Any Hash holder can delegate some or all of their tokens to any number of validators in order to stake their tokens. If -a Hash holder wants to become a validator, they can send a create-validator transaction to the network, at which point -they become a validator candidate. - -The voting power of a validator determines whether or not they are an active validator. Only the top $N_v$ validators -with the most voting power will be active validators, known as the Active Set. Only validators in the Active Set, and by -association those who delegated to them, receive rewards and have the right to participate in governance. - -If a validator or a delegator wishes to remove part or all of their deposit from the staking pool, they send an -unbonding transaction to the Provenance Blockchain. The unbonding process takes three weeks, during which time the owner -of the staking tokens can still earn transaction fees and participate in governance. However, they are still liable to -being penalized for potential misbehaviors committed by the validator before the unbonding process started. - -If a delegator wishes to move their stake between validators but not remove it from the staking pool, they may issue a -redelegation. A redelegation is an instant transfer in voting power from one validator to another, but it does not have -any impact on the required three-week unbonding period. - -## Validator Rewards - -Validators are rewarded for their work on the Provenance Blockchain. The validator that proposes the next block on the -chain is called the **proposer**. The frequency of being chosen as a proposer is proportional to the amount of staked Hash -tokens, known as **voting power**, of the validator. For example, if a validator has 10% of the total staked Hash tokens -across all validators, then they will be the proposer for approximately 10% of the blocks. - -Validators earn transaction fees in Hash tokens. The total fee for each transaction is divided among all validators' -staking pools based on each validator's weight. The revenue is further divided among delegators in proportion to each -delegator's stake. Before the revenue is distributed, the validator may apply a commission on the part of the revenue -that goes to their delegators. The commission is set as a percentage and can only change after the validator is -established. - -## Validator Commission - -A validator's revenue is split between the validator and their delegators, and the validator can apply a commission on -the part of the revenue that goes to their delegators. Each validator is free to set their initial commission, maximum -daily commission change rate and maximum commission. Once established, only the commission rate can change. The -Provenance Blockchain network enforces the parameters that each validator sets. - -The commission-rate value $$C_i$$: - -- Must be between 0 and the validator's commission-max-rate $$C_i max$$ -- Must not exceed the validator's $$C_i max-change$$ which is maximum percent change rate **per day**. In other words, a - validator can only change its commission once per day and within commission-max-change-rate bounds. -- Can be 100%, which implies that that validator is not welcoming outside delegators since it pockets all rewards based - on its bonded stake. - -## Validator earned fees - -Fees are similarly distributed with the exception that the block proposer can get a bonus on the fees of the block they -propose if they include more than the strict minimum of required precommits. - -When a validator is selected to propose the next block, they must include at least 2/3 precommits of the block. However, -there is an incentive to include more than 2/3 precommits in the form of a bonus. The bonus is linear: it ranges from 1% -if the proposer includes 2/3 precommits (minimum for the block to be valid) to 5% if the proposer includes 100% -precommits. Of course the proposer should not wait too long or other validators may timeout and move on to the next -proposer. As such, validators have to find a balance between wait-time to get the most signatures and risk of losing out -on proposing the next block. This mechanism aims to incentivize non-empty block proposals, create better networking -between validators and mitigate censorship. - -To summarize earned fee rules: - -- **Proposer is deterministically chosen from validators in the Active Set with frequency proportional to its total - stake** -- **The proposer gets a 1-5% bonus of its normal share based on included extra precommiters above 2/3 voting power** -- **All validators in the Active Set receive a share of the fee proportional to their total stake** -- **Validators takes commissions before distributing fees to their delegators** - -## Provenance Blockchain slashing policy - -Staking Hash can be thought of as a security deposit on validation activities. If a validator misbehaves, their -delegated stake will be partially slashed. This means that every delegator that bonded Hash to this validator gets -penalized in proportion to their bonded stake. Delegators are therefore incentivized to delegate to validators that they -anticipate will function safely. - -There are currently two faults that can result in slashing of funds for a validator and their delegators: - -- Double signing: If someone reports on chain A that a validator signed two blocks at the same height on chain A and - chain B, and if chain A and chain B share a common ancestor, then this validator will get slashed by 5% on chain A. -- Downtime: If a validator misses more than 99% of the last 10.000 blocks, they will get slashed by 1%. - -When a validator node is slashed for one of the above penalties it is immediately removed from the active validator set -and placed in a "jailed" state. A node may remove itself from the "jailed" status after a minimum cooling off period -elapses by submitting an unjail transaction. During the jailed status period any delegator may choose to redelegate -their stake to another validator on the network with the exception of the validator operator who must maintain at least -their minimum stake threshold in their node. - -## Fee calculation example - -To better illustrate how validator rewards work, let us assume there are 10 validators in the Active Set and all have an -equal stake. Each of the validators applies a 10% commission rate and has 20% of self-delegated Hash. Assume there is a -successful block added to the chain and a total of 1080.6 Hash was collected in fees. - -For example, if 7% of the fee goes to the Provenance Blockchain Foundation's community pool (used to fund the -foundation's day-to-day operations as well as the grant program) you can calculate the fees this way: - -- `7% * 1080.6 = 75.6` Hash goes to the community pool. - -Note: the current rate can be found in the [Explorer](https://explorer.provenance.io/network/params). - -1005 Hash now remain. Assume that the proposer included 100% of the precommitters’ signatures in its block. The proposer -thus obtains the full bonus of 5%. The reward R for each validator in the Active Set is determined by this simple -equation: - -- `9*R + R + R*5% = 1005 ⇔ R = 1005/10.05 = 100` - -For the proposer validator: - -- The pool for that proposer obtains R + R \* 5%: 105 Hash -- Commission: 105 _80%_ 10% = 8.4 Hash -- Validator's reward: 105 \* 20% + Commission = 29.4 Hash -- Delegators' rewards: 105 \* 80% - Commission = 75.6 Hash (each delegator will be able to claim its portion of these - rewards in proportion to their stake) - -For each of the other 9 non-proposer validators: - -- The pool for the validator obtains R: 100 Hash -- Commission: 100 _80%_ 10% = 8 Hash -- Validator's reward: 100 \* 20% + Commission = 28 Hash -- Delegators' rewards: 100 \* 80% - Commission = 72 Hash (each delegator will be able to claim their portion of these - rewards in proportion to their stake) - -## Initial validator incentive - -The network will provide an additional incentive for validators for the first six months after mainnet launch. This -incentive will be 5% of the transaction fee - generally increasing validator returns by 50% assuming an average -commission rate of 10%. - -The way this will be administered is the community pool charge in the first six months will be 7% rather than the normal -2%. This 5% will then be distributed to all validators in the Active Set. - -## Gas and transaction fees - -The amount of gas needed depends on the transaction as different types of transactions (e.g. making a payment or loading -a loan) require different amounts of resources to process. The gas amount for a transaction is calculated as it is being -processed, but there is a way to estimate it beforehand by using the auto value for the gas flag. Users can adjust this -estimate with the flag --gas-adjustment (default 1.0) if they want to be sure to provide enough gas for the transaction. - -The gasPrice is the price of each unit of gas. Transaction fees are the product of gas and gasPrice. Users must include -the fee being paid and the rate the gas will be converted with each transaction they send to the network. Too low a -gasPrice or gas could result in the transaction not being included at all. - -Each validator sets a min-gas-price value, and will only include transactions that have a gasPrice greater than their -min-gas-price. These full-nodes keep unconfirmed transactions in their mempools. In order to protect nodes from spam, it -is best for validators to set a min-gas-price that the transaction must meet in order to be accepted in their node's -mempool. This parameter can be set as a flag in the file `%USER_OS_CONFIG_DIR%/Provenance/config/app.toml` or as a -parameter in the `provenanced` process. - -At mainnet launch the recommended gasPrice is 1904 nHash where 1Hash = 1,000,000,000nHash - -More details about gas: - -- Validators set their own respective minimum gas prices. This value can range from infinitesimally small (inexpensive) - to relatively large (expensive). -- When a transaction is broadcast to a node, it is run through the given validator's CheckTx function. If this passes, - the transaction is added to the node’s mempool and broadcast to other nodes and validators. -- This transaction will sit in the node’s mempool until it is accepted by a proposer. -- The transaction will be accepted by a proposer if it meets the given proposer's minimum gas price. -- If the transaction’s gas price is below the amount required by the current proposer, the transaction stays in the - mempool until another proposer accepts it (in the worst case this would be the validator that initially accepted the - transaction when that validator is selected as the proposer). +This page has moved to [https://provenance.io/ecosystem/HASH/tokenomics](https://provenance.io/ecosystem/HASH/tokenomics/) diff --git a/docusaurus.config.js b/docusaurus.config.js index e2332093e..a3b9d1bfa 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -313,6 +313,10 @@ const config = { from: '/docs/quick-start/run-a-node', to: '/docs/pb/blockchain/running-a-node/running-a-node-1/', }, + { + from: '/docs/pb/ecosystem/financial-services-blockchain/token-economics', + to: 'https://provenance.io/ecosystem/HASH/tokenomics/', + }, ], }, ], diff --git a/sidebars.js b/sidebars.js index 36c2a99f0..1675f5094 100644 --- a/sidebars.js +++ b/sidebars.js @@ -100,7 +100,7 @@ const sidebars = { collapsed: true, items: [ 'pb/ecosystem/financial-services-blockchain/index', - 'pb/ecosystem/financial-services-blockchain/token-economics', + // 'pb/ecosystem/financial-services-blockchain/token-economics', 'pb/ecosystem/financial-services-blockchain/distribution', { type: 'category', diff --git a/sync_script.sh b/sync_script.sh index c16908859..e63b82e4f 100755 --- a/sync_script.sh +++ b/sync_script.sh @@ -3,6 +3,7 @@ set -e -o pipefail # Set the remote repository URL to clone from +# TODO: pull from https://github.com/provenance-io/cosmos-modules as well REMOTE_REPO_URL="https://github.com/provenance-io/provenance.git" # Store the current working directory in WORK_DIR