Skip to content

Conversation

@christophersanborn
Copy link
Member

Discussion: #175

bsip-0069.md Outdated

### Impacted committee parameters

An affected committee parameter is `max_predicate_opcode`, which limits the number of defined predicates supported by the assert operation. If new predicate types are added to the core protocol, this parameter will need to be increased in order to “activate” the new predicates on the network. Thus, the committee should be ready to increase this parameter if this BSIP finds support and is implemented. Using a committee parameter to activate protocol additions after block-producer adoption is an alternative to setting a hard-fork date for activation.
Copy link
Contributor

@pmconrad pmconrad Jul 25, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice find.

IMO we should do away with that parameter. We still will have to add hardfork protection because old nodes can't deserialize the new predicates, and the existing check does not prevent new assertions from being included in proposals.

The parameter currently has value "1" but we have three predicates defined (see above). This means that the block_id predicate currently cannot be used. I do not think this is intentional. (Original code allowed nodes to skip evaluation of unknown predicates. Later, this was replaced by the max_predicate_opcode flag. When the block_id predicate was added, increasing the default max_opcode seems to have been overlooked.) When removing the check, we need to be careful to not change history (the block_id predicate could be present within a proposal).

Please add the removal of the check to the "Specification" section. What do you think @abitmore ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add the removal of the check to the "Specification" section. What do you think @abitmore ?

Would like @ryanRfox and perhaps others' takes on this. We had some discussion on this during a previous core call. I feel a little apprehensive "stealing" a committee parameter away from them. But... if it's reason for being is no longer relevant,... then I guess so. Is it appropriate to "bundle" removal of this parameter into this BSIP? Or should it be it's own?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The predicates need to be approved by BSIP approval vote (Community) and protocol upgrade code (Block Producers), there fore I do not see the need for the Committee to also "activate" them. Removing this ability is intentional, but I feel reflects the process we currently use for all other protocol upgrades. Perhaps we should seek some comments from current Committee members such as @bitcrab @xeroc @roelandp @OpenLedgerApp @clockworkgr

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with @ryanRfox
The committee has nothing to do with blockchain features perse.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Text has been updated to propose removal of max_predicate_opcode.

Copy link
Contributor

@pmconrad pmconrad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good job, thanks.

@pmconrad pmconrad dismissed their stale review August 1, 2019 13:45

Resolved

bsip-0069.md Outdated

### Activation of new predicates and removal of max_predicate_opcode parameter:

A hard-fork date shall be chosen for activation of these new predicates and shall be sufficiently future-dated to allow time for nodes to upgrade. The outdated committee parameter `max_predicate_opcode` shall be removed, as it is not needed for safe upgrade (see next section for discussion).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technically we're unable to remove the max_predicate_opcode field since it affects serialization of certain operation. We can have a hard fork to no longer use the parameter. And we can check whether the old guarding code can be removed, primarily due to proposals.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps "disabled" instead of "removed".

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I know the specifics enough as to why it can't be removed (I guess any historical transactions that updated the parameter would become invalid if it was removed?), but I updated to say "disable, and, if possible without impacting history, remove". Hopefully this covers sufficient latitude for voting purposes.

@ryanRfox
Copy link
Contributor

I think that's it for edits now. I just need someone to give me "done" confirmation and I'll merge it.

Copy link
Contributor

@pmconrad pmconrad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@ryanRfox ryanRfox merged commit bd96462 into bitshares:master Aug 22, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants