Updated crypto-condition spec

Happy to share v2 of our proposal for a crypto-condition spec. I worked
closely with Jehan Tremback who provided many of the new ideas in this
version, big thanks to him. Thank you also to Tony Arcieri and Manu Sporny
who provided feedback and input on v1.

https://github.com/interledger/five-bells-condition/blob/feature/binary-merkle-v2/docs/spec.md

- Pulled out certain fields from the base64 so that they are human readable
(bitmask, max fulfillment length)
- Created a canonical binary representation for conditions/fulfillments -
in some use cases, crypto-conditions are used inside of binary protocols.
We can actually use that same representation for the encoding of
subconditions as well, so we need it anyway.
- Explicitly defined the types (VARUINT, VARBYTES, VARARRAY) - that was
obviously missing.
- Simplified binary encoding by removing some of the more overzealous
space-saving measures. We think that simplicity is an important design
goal, so we're trying to remove some of the points of friction that Jehan
ran into while working on his implementation of the spec.
- Updated the threshold fulfillment format to consist of two separate
arrays for conditions and fulfillments (shorter/easier to parse)
- More details on weighted threshold feature
- Added message_id feature for multi-message signing support
- Added section explaining more about what this spec is and what features
it provides
- Defined deterministic sorting algorithm for threshold subconditions

Direct link to the spec diff:

https://github.com/interledger/five-bells-condition/compare/feature/binary-merkle...feature/binary-merkle-v2?name=feature%2Fbinary-merkle-v2&short_path=6e196c9#diff-6e196c98aaadaa54d9ba9bbe92a13320

With the new version, crypto-conditions effectively act as a
multi-algorithm, multi-message, multi-level, multi-signature scheme.

I'll be on the call on Wednesday to chat about the spec and next steps.
This is still far from final, but it's getting closer to a complete,
practical spec that we can migrate the reference implementation to.

Received on Monday, 7 March 2016 20:58:05 UTC