BSIP: 0039
Title: Automatically approve proposals by the proposer
Authors: Fabian Schuh <https://github.com/xeroc>
Abit More <https://github.com/abitmore>
Status: Draft
Type: Protocol
Created: 2018-03-20
Discussion: https://github.com/bitshares/bitshares-core/issues/138
https://github.com/bitshares/bsips/issues/71
Worker: <Id of worker proposal>
On the BitShares Blockchain, proposals allow to gather signatures for a multisignature-setup by means of on-chain approvals. In contrast to other blockchains, these proposals are actually stored on the blockchain and automatically executed once the required amount of approvals has been reached. This allows participants of a multisignature-setup to exchange insufficiently signed transactions easily.
However, when creating a new proposal, the proposer needs to manually approve his operation afterwards. This is not only inconvenient, but also costs and additional operation and thus a fee.
This BSIP proposes a protocol change that enables the proposer of a proposal to automatically added herself as approved.
In the case of a simple 2-of-3 multisig-scheme, today's implementation forces us to have 3 operations stored on the blockchain: a) the proposal itself, and two approvals.
The inconvenience and additional fee hinders adoption of this scheme and makes it unnecessary complicated.
Due to lacking of an auto-approval feature, an ignorant user might fire a
proposal_create
operation to create a proposal and then immediately fire
a proposal_update
(i.e. approve) operation to approve the proposal.
However, the final proposal ID is not known before the proposal_create
operation is beyond the last irreversible block. So the user might
inadvertently approve the wrong proposal.
On Monday, 20th December 2018, a node crash incident
was indirectly caused by this.
Giving the proposer an option to automatically approve the proposal after creation solves the issue.
If the proposer is not part of the multisig-setup, having him approve the proposal automatically does not affect the validity of the proposal itself.
For backward compatibility, to avoid breaking existing applications, It's good to keep the default behavior.
Add an extension to the proposal_create_operation
that let the proposer
define whether to auto-approve the proposal after creation. If the
extension is not present, do not auto-approve. The extension can only be
used after a scheduled protocol upgrade time.
By proposing an action, sometimes the proposer can be considered as an agreeing party, otherwise the proposal wouldn't have been created in the first place. Since sometimes the proposer doesn't want to approve immediately, it's better that she has an option to decide whether to auto-approve.
This BSIP proposes a minor modification that improves the process of using hierarchical account permissions and simplifies the use of multisig-setups with only minimal modifications.
This document is placed in the public domain.