-
Notifications
You must be signed in to change notification settings - Fork 18
Proposal Mechanism
Peerplays uses the same proposal mechanism as Graphene, with a few modifications. These modifications include:
- Gamified Proof of Stake (PIP, longer explanation) changes how voters are rewarded for their participation.
- The selection of operations that can be proposed is expanded. The new operations include operations related to sports, tournaments, and betting.
There is some documentation about proposals on the BitShares documentation page, such as this, but it is limited to proposed transactions and not proposals in general.
Each proposal contains a list of operations. These operations are the way to change anything in the blockchain, including performing transfers, modifying chain parameters, creating and modifying accounts, assets, and also proposals. The full list of supported operations is in operations.hpp:55.
In addition to a list of operations, a proposal also has a defined review period and expiration time.
A proposal is created by a proposal_create_operation. This operation defines the review period and expiration time, as well as the list of operations proposed.
The proposal is then approved by a number of proposal_update_operation. These can add or remove active approvals, owner approvals, or key approvals.
Alternatively, it can be deleted (which is effectively a veto on the proposal) by a proposal_delete_operation. This can be done only by accounts who are required authorities on this proposal, so the same effect would be achieved by simply not adding one's approval to the proposal.
A proposal is accepted when it reaches the required approvals through the proposal_update_operation. There is no specific step or operation to accept a proposal, instead authority is checked on the proposal_update_operation, and on successful verification, the proposed operations are applied.
The list of authorities required for accepting a proposal depends entirely on the list of proposed operations. The proposal itself carries no extra authorities or requirements. Specifically, the create_proposal_operation requires only the authority of the submitter, the update_proposal_operation which adds an approval requires the authority of the approver, and the proposal_delete_operation requires the authority of the veto-giver, which must be a required authority on at least one operation of the affected proposal. Other operations have different authority requirements.