Wednesday, 31 October 2018

Timeline for the Specification to re-enable opcodes in November 2018

Questions about the timeline for the specification to re-enable opcodes in the BCH November 2018 upgrade seem to keep coming up so I put together this long post describing the process. I hope this helps provide some insight into the process which we followed.

The reviving of the disabled opcodes was discussed back in November 2017 and the timeline that was agreed on was for half the opcodes to be re-enabled in the May 2018 upgrade and half in the November 2018 upgrade. I was not present at these meetings, but from all I have heard this was agreed by all present.

There were two goals for the November upgrade, re-enabled the second set of opcodes, OP_MUL, OP_INVERT, OP_LSHIFT, and OP_RSHIFT, and raising the limit on the number of opcodes per script. Draft specifications were prepared by nChain and published to the Opcodes Working Group on July 12th. There was some immediate discussion in the Working Group.

Here is the draft specification for the re-enabled opcodes: https://docs.google.com/document/d/1KaX9IUJRBXl_r7ZsjYEt67s07x22jcaTw06zFhCFYdw/edit#heading=h.fguu4gagix33

Here is the draft specification for raising the limit on the number of opcodes: https://docs.google.com/document/d/1WpbZZH-mDm0A75Q86RsQbk39IKlB6Udz6wY4aytgqtg/edit

Please note, you will see timestamped comments from prominent BCH devs in these documents.

A meeting to discuss the proposals and solicit feedback was organized and held on the July 19th. The Agenda for that meeting is here: https://drive.google.com/file/d/14xYdMV-7yAhWWElJ5GVMpaydQmNI9EpT/view?usp=sharing

Based on the feedback received, both within the Opcodes Working Group and in the meeting, the specifications were updated. The final version of the re-enabled opcodes specification was published in the working group on 8th August. The Google Docs version is here: https://docs.google.com/document/d/107FaEyiIhVTngJQbA-0U6CuWmtldiyD09gDO1jxFuAk/edit#heading=h.i0pu4477u72c

The final specification for the removal of the limit on the number of opcodes per script was published to the working group on 13th August. The Google Docs version is here: https://docs.google.com/document/d/1I1zdljwiqzNs6D2edpJ9as6WOaToFdUEqBI5wY6GFRk/edit?usp=sharing

In the meantime, work had been progressing on the implementation of these specifications. This work was submitted as pull request to Bitcoin ABC. Following the Bitcoin ABC style, they were split into several pull requests. They are:

  • D1592 - Add SCRIPT_ENABLE_MAGNETIC_OPCODES flag - link - submitted 25th July
  • D1593 - Expand IsOpcodeDisabled() - link - submitted 25th July
  • D1594 - rename monolith_opcodes.cpp to … - link - submitted 25th July
  • D1631 - enable magnetic opcodes in .. - link - submitted 8th August
  • D1598 - OP_MUL implementation - link - submitted 25th July
  • D1606 - OP_INVERT implementation - link - submitted 26th July
  • D1638 - OP_LSHIFT & OP_RSHIFT - link - submitted 9th August
  • D1631 - enable magnetic upgrade in tests - link - submitted 8th August

These pull requests, particularly D1592, were re-based several times by us due to changes that ABC was making at the same time to accommodate CDS. The pull requests were submitted in plenty of time but the ABC devs were simply too busy to review them due to their other priorities, namely CDS and CTOR.

The specifications were drafted, published, discussed in the Working Group chat and in a meeting held specifically for that purpose. The specifications were amended based on the feedback received. And finally, implementation code was submitted. All in plenty of time.

submitted by /u/danconnolly
[link] [comments]

source https://www.reddit.com/r/btc/comments/9sruig/timeline_for_the_specification_to_reenable/

No comments:

Post a Comment