You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<p>For explanations of generalized dynamical systems as well as how the mathematical specification library works in detail, please consult the documentation <ahref="https://github.com/BlockScience/MSML/tree/main/docs">here</a></p>Graph Legend:<br/>Cylinder: Entity<br/>Orange Diamond: Boundary Action<br/>Red Square: Policy<br/>Blue Circle: Mechanism<br/>Transparent Circle: State Variable<h2>Action Map</h2><?xml version="1.0" encoding="UTF-8" standalone="no"?>
</tr><tr><td>Public key</td><td>The identifier of the application</td><td>Public Key</td><td></td><td></td></tr><tr><td>POKT Holdings</td><td>The personal holdings of the application in uPOKT</td><td>uPOKT</td><td></td><td></td></tr><tr><td>Staked POKT</td><td>The staked amount of the application in uPOKT</td><td>uPOKT</td><td></td><td></td></tr><tr><td>Services</td><td>The flavor(s) of Web3 hosted by this Servicer</td><td>List[Service]</td><td></td><td></td></tr><tr><td>GeoZone</td><td>The physical geo-location identifier this Servicer registered in</td><td>GeoZone</td><td></td><td></td></tr><tr><td>Number of Servicers</td><td>The number of servicers an application would prefer, if available, for a session.</td><td>int</td><td></td><td></td></tr><tr><td>Stake Status</td><td>The status of staking for the actor</td><td>StakeStatusType</td><td></td><td></td></tr><tr><td>Unstaking Height</td><td>The height for which a servicer has begun unstaking at or none to represent no unstaking</td><td>Block Height</td><td></td><td></td></tr></table><h2>Spaces</h2><h3>Application Unstake Space</h3><p>{actor_type: ActorType,<br/>address: Address,<br/>signer: Address}</p><h2>Behavioral Action Space</h2><h3>Application Unstake</h3><p>The action of unstaking from the network for an application</p><h4>Called By:</h4>
218
+
<p>1. Application</p><h4>Constraints:</h4>
219
+
<h2>Policies</h2><h3>Application Unstake Policy</h3><p>The policy for determining what happens when an application unstakes.</p><h4>Preceded By:</h4>
<h2>Mechanisms</h2><h3>Update Application Stake Status</h3><p>The mechanism which updates the staking status and as well the unstaking height for an application.</p><h4>Preceded By:</h4>
<p>The application at DOMAIN[0].address has its unstaking_height variable updated to DOMAIN[0].height which will be none if it is staking. It will also have its stake status set to DOMAIN[0].status.</p><h2>Parameters</h2>
Copy file name to clipboardExpand all lines: reports/actions/Mint Block Rewards.html
+9-9Lines changed: 9 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -513,30 +513,30 @@
513
513
</g>
514
514
515
515
</svg>
516
-
<h2>State</h2><h3>Local States</h3><h2>Spaces</h2><h3>Mint POKT Mechanism Space</h3><p>{mint_amount: uPOKT}</p><h3>Assign Servicer Salary Space</h3><p>{geo_zone: GeoZone,<br/>relay_chain: Relay Chain,<br/>height: Block Height}</p><h3>Validator Block Reward Space</h3><p>{public_key: Public Key,<br/>block_height: Block Height,<br/>reward_amount: uPOKT}</p><h3>Mint Block Rewards Space</h3><p>{current_height: Block Height,<br/>block_producer: Public Key}</p><h3>Burn POKT Mechanism Space</h3><p>{burn_amount: uPOKT}</p><h3>Modify Servicer POKT Space</h3><p>{public_key: Public Key,<br/>amount: uPOKT}</p><h2>Behavioral Action Space</h2><h2>Policies</h2><h3>Block Reward Policy Aggregate</h3><p>The aggregate policy for creating the total amount of block reward and also splitting it between different groups.
516
+
<h2>State</h2><h3>Local States</h3><h2>Spaces</h2><h3>Burn POKT Mechanism Space</h3><p>{burn_amount: uPOKT}</p><h3>Validator Block Reward Space</h3><p>{public_key: Public Key,<br/>block_height: Block Height,<br/>reward_amount: uPOKT}</p><h3>Mint POKT Mechanism Space</h3><p>{mint_amount: uPOKT}</p><h3>Assign Servicer Salary Space</h3><p>{geo_zone: GeoZone,<br/>service: Service,<br/>height: Block Height}</p><h3>Modify Servicer POKT Space</h3><p>{public_key: Public Key,<br/>amount: uPOKT}</p><h3>Mint Block Rewards Space</h3><p>{current_height: Block Height,<br/>block_producer: Public Key}</p><h2>Behavioral Action Space</h2><h2>Policies</h2><h3>Block Reward Policy Aggregate</h3><p>The aggregate policy for creating the total amount of block reward and also splitting it between different groups.
517
517
518
518
There are two components that are aggregated here, one for fees and one for general block rewards. Based upon the numerous parameters, the total reward for each group is determined. For a more detailed version of the policy, one can look here: https://docs.google.com/spreadsheets/d/1QYe6NzuiyimsXs5cT1BSM-UT1DtX_K38cOZsEFJOtdA/edit#gid=242780369</p><h4>Preceded By:</h4>
519
519
<p>1. Mint Block Rewards</p><h4>Domain Spaces:</h4>
520
520
<p>1. Mint Block Rewards Space</p><h4>Followed By:</h4>
521
521
<p>1. Mint POKT Mechanism</p><p>2. Assign Servicer Salary Policy</p><p>3. Validator Block Reward Policy</p><p>4. DAO Block Reward Policy</p><h4>Codomain Spaces:</h4>
<h3>Assign Servicer Salary Policy</h3><p>A `ServicerSalary` is assigned to each individual Servicer based on their specific `ReportCard`, and is distributed every `SalaryBlockFrequency`. Salaries are distributed from the `TotalAvailableReward` pool, whose inflation is governed by Application volume of each `(RelayChain, GeoZone)` pair and scaled by the `UsageToRewardCoefficient` governance parameter.
523
+
<h3>Assign Servicer Salary Policy</h3><p>A `ServicerSalary` is assigned to each individual Servicer based on their specific `ReportCard`, and is distributed every `SalaryBlockFrequency`. Salaries are distributed from the `TotalAvailableReward` pool, whose inflation is governed by Application volume of each `(Service, GeoZone)` pair and scaled by the `UsageToRewardCoefficient` governance parameter.
524
524
525
525
A Servicer must accumulate `MinimumTestScoreThreshold` TestScores before it is eligible for salary distribution. A ReportCard can be viewed as a rolling average of the Servicer's performance, where TestScores are removed when either `TestScoreExpiration` is passed or the TestScore FIFO queue exceeds `MaxTestScores`.
526
526
527
-
Salary distribution is accomplished by aggregating the total volume estimated (see above) for a specific `(RelayChain, GeoZone)` pair (i.e. `TotalVolumeUsage`), multiplied by `UsageToRewardCoefficient`, and evenly divided into buckets per Servicer that exceed the minimum threshold (i.e. the `MinimumReportCardThreshold`). Each Servicer's reward is scaled proportionally to both their stake and their ReportCard. Tokens that are not allocated to a servicer are burnt.
527
+
Salary distribution is accomplished by aggregating the total volume estimated (see above) for a specific `(Service, GeoZone)` pair (i.e. `TotalVolumeUsage`), multiplied by `UsageToRewardCoefficient`, and evenly divided into buckets per Servicer that exceed the minimum threshold (i.e. the `MinimumReportCardThreshold`). Each Servicer's reward is scaled proportionally to both their stake and their ReportCard. Tokens that are not allocated to a servicer are burnt.
528
528
529
529
For example, a 100% ReportCard results in zero burning of the `maxServicerReward`, while a 80% ReportCard results in 20% burning of the maxServicerReward. The rate of decrease continues linearly until the `MinimumReportCardThreshold` is reached. Below the MinimumReportCardThreshold no reward is given to prevent cheap Sybil attacks and freeloading nodes. Unstaking causes the Servicer's ReportCard to be cleared and start from scratch.
530
530
531
531
The following is pseudo-code to illustrate this business logic:
532
532
533
533
```go
534
-
// Called for each (relayChain, geoZone) pair every SessionBlockFrequency
<p>1. Modify DAO POKT Space</p><h4>State Updates:</h4>
592
592
<p>1. DAO.POKT Holdings</p><h4>Constraints:</h4>
593
593
<h4>Logic:</h4>
594
-
<p>The DAO has its holdings increased by the value</p><h2>Parameters</h2><p>minimum_test_score_threshold</p><p>validator_fee_percentage</p><p>max_bootstrap_servicer_cost_per_relay</p><p>dao_fee_percentage</p><p>block_proposer_allocation</p><p>maturity_relay_charge</p><p>gateway_bootstrap_unwind_end</p><p>application_fee_per_relay</p><p>minimum_report_card_threshold</p><p>portal_fee_per_relay</p><p>min_bootstrap_gateway_fee_per_relay</p><p>gateway_bootstrap_unwind_start</p><p>relays_to_tokens_multiplier</p><p>maturity_relay_cost</p><p>servicer_bootstrap_unwind_start</p><p>servicer_bootstrap_end</p><p>transaction_fee</p>
594
+
<p>The DAO has its holdings increased by the value</p><h2>Parameters</h2><p>maturity_relay_cost</p><p>gateway_bootstrap_unwind_end</p><p>validator_fee_percentage</p><p>transaction_fee</p><p>block_proposer_allocation</p><p>servicer_bootstrap_unwind_start</p><p>gateway_bootstrap_unwind_start</p><p>minimum_test_score_threshold</p><p>dao_fee_percentage</p><p>portal_fee_per_relay</p><p>servicer_bootstrap_end</p><p>minimum_report_card_threshold</p><p>relays_to_tokens_multiplier</p><p>min_bootstrap_gateway_fee_per_relay</p><p>application_fee_per_relay</p><p>max_bootstrap_servicer_cost_per_relay</p><p>maturity_relay_charge</p>
0 commit comments