Skip to content
Miha Čančula edited this page Aug 30, 2019 · 26 revisions

Details about Peerplays's 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.

Proposal Structure

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.

Proposal Lifetime

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.

Proposal Approval

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 proposal-related operations require the following authorities:

  • the proposal_create_operation requires only the authority of the submitter
  • the proposal_update_operation which adds an approval requires the authority of the approver
  • 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.

Clone this wiki locally