diff --git a/images/ois/OIS Rewards Example 2.png b/images/ois/OIS Rewards Example 2.png new file mode 100644 index 00000000..2c5a1208 Binary files /dev/null and b/images/ois/OIS Rewards Example 2.png differ diff --git a/images/ois/OIS Rewards Example 3.png b/images/ois/OIS Rewards Example 3.png new file mode 100644 index 00000000..c10bb9a8 Binary files /dev/null and b/images/ois/OIS Rewards Example 3.png differ diff --git a/images/ois/OIS Rewards Example 4.png b/images/ois/OIS Rewards Example 4.png new file mode 100644 index 00000000..417cf9d1 Binary files /dev/null and b/images/ois/OIS Rewards Example 4.png differ diff --git a/images/ois/OIS Rewards Example Graph Light-2.png b/images/ois/OIS Rewards Example Graph Light-2.png new file mode 100644 index 00000000..c40b9c43 Binary files /dev/null and b/images/ois/OIS Rewards Example Graph Light-2.png differ diff --git a/images/ois/OIS Rewards Example Graph Light-3.png b/images/ois/OIS Rewards Example Graph Light-3.png new file mode 100644 index 00000000..5fc9ca09 Binary files /dev/null and b/images/ois/OIS Rewards Example Graph Light-3.png differ diff --git a/images/ois/OIS Rewards Example Graph Light.png b/images/ois/OIS Rewards Example Graph Light.png new file mode 100644 index 00000000..6cd5e13d Binary files /dev/null and b/images/ois/OIS Rewards Example Graph Light.png differ diff --git a/images/ois/OIS_Rewards_Example_1.png b/images/ois/OIS_Rewards_Example_1.png new file mode 100644 index 00000000..19e02e07 Binary files /dev/null and b/images/ois/OIS_Rewards_Example_1.png differ diff --git a/images/ois/OIS_Rewards_Example_Light_1.png b/images/ois/OIS_Rewards_Example_Light_1.png new file mode 100644 index 00000000..d12e9d92 Binary files /dev/null and b/images/ois/OIS_Rewards_Example_Light_1.png differ diff --git a/images/ois/ois_slashin_investigation_dark.png b/images/ois/ois_slashin_investigation_dark.png new file mode 100644 index 00000000..8e932c2e Binary files /dev/null and b/images/ois/ois_slashin_investigation_dark.png differ diff --git a/images/ois/ois_slashin_investigation_light.png b/images/ois/ois_slashin_investigation_light.png new file mode 100644 index 00000000..284ab937 Binary files /dev/null and b/images/ois/ois_slashin_investigation_light.png differ diff --git a/images/ois/ois_slashing_pool_post_dark.png b/images/ois/ois_slashing_pool_post_dark.png new file mode 100644 index 00000000..77fcb133 Binary files /dev/null and b/images/ois/ois_slashing_pool_post_dark.png differ diff --git a/images/ois/ois_slashing_pool_post_light.png b/images/ois/ois_slashing_pool_post_light.png new file mode 100644 index 00000000..7801901b Binary files /dev/null and b/images/ois/ois_slashing_pool_post_light.png differ diff --git a/images/ois/ois_slashing_pool_pre_dark.png b/images/ois/ois_slashing_pool_pre_dark.png new file mode 100644 index 00000000..f1d4b01f Binary files /dev/null and b/images/ois/ois_slashing_pool_pre_dark.png differ diff --git a/images/ois/ois_slashing_pool_pre_light.png b/images/ois/ois_slashing_pool_pre_light.png new file mode 100644 index 00000000..a3ed766b Binary files /dev/null and b/images/ois/ois_slashing_pool_pre_light.png differ diff --git a/pages/home/oracle-integrity-staking/_meta.json b/pages/home/oracle-integrity-staking/_meta.json index 6133b40e..ce06da22 100644 --- a/pages/home/oracle-integrity-staking/_meta.json +++ b/pages/home/oracle-integrity-staking/_meta.json @@ -1,5 +1,5 @@ { "mathematical-representation": "Mathematical Representation", - "examples": "Examples", + "reward-examples": "Reward Examples", "slashing-rulebook": "Slashing Rulebook" } diff --git a/pages/home/oracle-integrity-staking/examples.mdx b/pages/home/oracle-integrity-staking/reward-examples.mdx similarity index 99% rename from pages/home/oracle-integrity-staking/examples.mdx rename to pages/home/oracle-integrity-staking/reward-examples.mdx index e53e2b9a..c1b85001 100644 --- a/pages/home/oracle-integrity-staking/examples.mdx +++ b/pages/home/oracle-integrity-staking/reward-examples.mdx @@ -1,4 +1,5 @@ import RewardSimulator from "@/components/RewardSimulator"; +import Image from "next/image"; # Examples diff --git a/pages/home/oracle-integrity-staking/slashing-rulebook.mdx b/pages/home/oracle-integrity-staking/slashing-rulebook.mdx index 52928773..1a5b5b3b 100644 --- a/pages/home/oracle-integrity-staking/slashing-rulebook.mdx +++ b/pages/home/oracle-integrity-staking/slashing-rulebook.mdx @@ -80,6 +80,50 @@ If slashing event confirmed, the Pythian Council will process calculation and di - Stakers continue staking with the residual amount post slashing. No forced unstaking happens post slashing - The Pyth DAO controls the slashed amount upon execution of the slashing +## Slashing Example + +This section provides a hypothetical scenario of a slashing event. + +### Scenario + +- Around datetime $t$, the community observes that an abnormal behaviour in the Pyth Price for `FOO/USD`. +- Community members initiated a discussion on Pyth Forum on the abnormal behaviour and provided reference data for the issue. +- The Pythian Council confirms the impact through on-chain data and collects reference data to cross-check the Pyth price. + +### Investigation Results + +- Reference data from 3 independent sources that cover the `FOO/USD` liquidity for the time period around $t$ are collected and analysed. +- The analysis shows that the Pyth aggregate price for `FOO/USD` was 300 bps away from the median of the three sources for 60 seconds around $t$. +- The issue was concentrated to `FOO/USD` and no other feed was impacted, nor was the issue found to be related to a macro event beyond `FOO/USD`. +- The on-chain data reveals a total of $200K of preventable liquidations. + +The Pythian councile identifies there were 9 active publishers for `FOO/USD` at the time of the incident $t$. +It was found that 7 of the 9 publishers were influencing the price of `FOO/USD` at the time of the incident. +The other 2 publishers were found publish price closely to the mediuan of the reference data. + +![OIS Slashing Investigation](../../../images/ois/ois_slashin_investigation_dark.png) + +### Pythian Council Process for Slashing + +- Assume that the Pyth DAO has set the maximum slashable amount at 500 bps of the total stake of each responsible publisher's assigned pool, the maximum amount that can be slashed is $500 \text{ bps} \times 50\text{M} = 2.5\text{M PYTH}$. +- From the investigation, \$200K of preventable liquidations were identified from on chain data, the Pythian Council could adjust the amount of stake slashed to 500K PYTH or 100bps (assuming PYTH/USD = $0.40). + +![Pre Slashing Pool](../../../images/ois/ois_slashing_pool_pre_dark.png) + +- The 500K PYTH slashed is charged pro-rata to the 7 pools that constitute the stake subject to slashing (i.e. calculated according to the total stake in the 7 pools assigned to the 7 publishers found responsible for the misprint). + +- Assume `pool_1` has 10M staked, made up of **6M self-staked and 4M delegated PYTH**. + - The publisher assigned to `pool_1` would see its self-stake slashed 100bps of 6M PYTH, ie. 60K PYTH, resulting in **5.84M** residual self-stake. + - Delegators to `pool_1` would see their stake slashed by 100bps of 4M PYTH, ie. 40K PYTH, resulting in **3.96M** residual delegated stake. + +![Post Slashing Pool](../../../images/ois/ois_slashing_pool_post_dark.png) + +- The total amount slashed in this example is 500K PYTH. This amount goes to the Pyth DAO treasury. The Pythian Council or the community can propose to the DAO to vote on means to distribute the slashed amount. + +### Timeline for Slashing + +Assuming datetime $t$ happened during $\text{epoch}_t$ (7-day period from Thursday 0:00 UTC to Wednesday 23:59:59 UTC of the following week), the investigation and slashing are concluded by the end of the epoch following $\text{epoch}_t$ (or $\text{epoch}_t + 1$). + ## Change Process The Pyth DAO is responsible for implementing procedures for proposing, reviewing, approving, and adopting changes to the rules, policies, or procedures related to this Rulebook. diff --git a/styles/styles.css b/styles/styles.css index 1339a94c..8fac3474 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -59,7 +59,7 @@ img { background-color: black; border: 1px solid #ccc; - padding: 10px; + padding: 1px; border-radius: 10px; }