forked from opentensor/developer-docs
-
Notifications
You must be signed in to change notification settings - Fork 18
notes on governance/decentralization transition and roadmap #194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
MichaelTrestman
wants to merge
17
commits into
main
Choose a base branch
from
governance-transition-notes
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from all commits
Commits
Show all changes
17 commits
Select commit
Hold shift + click to select a range
da6fdc7
wip
MichaelTrestman 4ec8ca9
wip
MichaelTrestman 3c9ec8b
wip
MichaelTrestman 83fe05d
wip
MichaelTrestman c7a0ac0
wip
MichaelTrestman 5e8dace
wip
MichaelTrestman 02d1ee3
wip
MichaelTrestman 0c74906
wip
MichaelTrestman 0a7f002
Apply suggestion from @MichaelTrestman
MichaelTrestman c8207cd
Apply suggestion from @mcjkula
MichaelTrestman 5abe806
Apply suggestion from @mcjkula
MichaelTrestman 322879a
Apply suggestion from @chideraao
MichaelTrestman e6e73a6
Apply suggestion from @mcjkula
MichaelTrestman 9cf88e7
Update docs/learn/roadmap.md
MichaelTrestman 65f4ff6
Apply suggestion from @MichaelTrestman
MichaelTrestman 1c2f333
wip
MichaelTrestman 91a75ed
wip
MichaelTrestman File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| /* | ||
| Governance Transitional State Notice Partial | ||
| */ | ||
|
|
||
| import Admonition from '@theme/Admonition'; | ||
|
|
||
| export const GovernanceTransitionalState = () => ( | ||
| <Admonition type="info" title="Governance in Transition"> | ||
| <p> | ||
| Bittensor governance is currently in a <strong>transitional state</strong> as the network moves toward full decentralization. For details on planned governance changes, see the <a href="../learn/roadmap">Bittensor Roadmap</a>. | ||
| </p> | ||
| </Admonition> | ||
| ); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,66 +1,11 @@ | ||
| --- | ||
| title: "Governance Overview" | ||
| title: "Governance" | ||
| --- | ||
|
|
||
| import { SdkVersion } from "../sdk/_sdk-version.mdx"; | ||
| import { GovernanceTransitionalState } from "./_governance-transitional-state.mdx"; | ||
|
|
||
| # Governance Overview | ||
| # Governance | ||
|
|
||
| Bittensor's governance protocol transitions the management of the network from centralization within the foundation to community ownership over time. | ||
| <GovernanceTransitionalState /> | ||
|
|
||
| The first stage of this transition to decentralized management is the creation of a bicameral legislature. In this stage, the [Triumvirate](../resources/glossary.md#triumvirate) creates proposals for the [Senate](./senate.md) to approve. | ||
|
|
||
| Triumvirate members are Opentensor Foundation employees, while the Senate is formed from the top K delegate hotkeys. | ||
|
|
||
| ## Proposals | ||
|
|
||
| Proposals are encapsulations of other extrinsics and will be executed only after meeting both of the two conditions: | ||
|
|
||
| 1. The proposal has obtained (50% + 1) approvals from the Senate, and | ||
| 2. A member of the Triumvirate has closed the proposal. | ||
|
|
||
| The above guarantees that the Senate must reach a majority consensus to execute a proposal. | ||
|
|
||
| :::tip Execution of a proposal | ||
| When a proposal is executed, the calldata passed to it during its creation are included in the same block as the close extrinsic. | ||
| ::: | ||
|
|
||
| ## Security | ||
|
|
||
| Before the governance protocol existed, all administrative actions within the network (e.g., changing hyperparameters, creating new subnetworks, chain upgrades) required permission via a single privileged key, known as `sudo`. If the `sudo` private key were somehow compromised, a malicious actor could take over the network and execute any privileged extrinsics. | ||
|
|
||
| Under the governance protocol, a malicious actor would have to compromise a Triumvirate member and control a majority of Senate seats in order to approve a proposal. | ||
|
|
||
| ## Example | ||
|
|
||
| Consider the following: | ||
|
|
||
| - The Triumvirate contains three seats, with members `Alice`, `Bob`, and `Charlie`. | ||
| - The Senate has three members elected to participate: `Dave`, `Eve`, and `Ferdie`. | ||
|
|
||
| **Triumvirate** | ||
|
|
||
| `Bob` has a novel concept for a subnet and wishes to deploy it on the Bittensor network. `Bob` creates a proposal with the calldata: | ||
|
|
||
| <SdkVersion /> | ||
|
|
||
| ```python | ||
| SubtensorModule.SudoAddNetwork(netuid, tempo, modality) | ||
| ``` | ||
|
|
||
| and sends the transaction to the network in order to broadcast the proposal. | ||
|
|
||
| **Senate** | ||
|
|
||
| - `Dave`, `Eve`, and `Ferdie` all own the nominated delegate hotkeys, and they individually control more than two percent of the network's total stakes. | ||
| - Using `btcli`, they can view the proposal and the calldata, which it will execute upon approval. | ||
| - `Dave` and `Ferdie` decided they wanted to approve this new subnet, and they both approved the proposal. | ||
| - `Eve` disagrees with the concept and disapproves of the proposal. | ||
|
|
||
| Even though the Senate may have twelve members at any time, it is not guaranteed that there will be twelve occupied seats. With a Senate size of three, the approval threshold will be two approvals. Since `Dave` and `Ferdie` both approved this proposal, a member of the Triumvirate can now execute it. | ||
|
|
||
| **Closing** | ||
|
|
||
| `Alice` sees Senate has passed the proposal and executes the `close` extrinsic to execute the calldata within the proposal. | ||
|
|
||
| Bittensor now has a new subnet on which `Alice`, `Bob`, or `Charlie` can create further proposals to change hyperparameters, allow or disallow registration, and control any other configuration previously controlled by the `sudo` private key. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should the "Senator's Guide to 'BTCLI'" be removed completely, given that it currently doesn't exist/work?