Skip to content
This repository has been archived by the owner on Aug 21, 2020. It is now read-only.

RFC for multi-sig terms #16

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

mgudemann
Copy link

This RFC will specify the multi-signature terms for Shelley, including their low
level format.

@mgudemann mgudemann self-assigned this Jul 23, 2019
@mgudemann mgudemann requested a review from vincenthz July 23, 2019 15:33
This RFC will specify the multi-signature terms for Shelley, including their low
level format.
Copy link

@dcoutts dcoutts left a comment

Choose a reason for hiding this comment

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

Looks good.

- `RequireSignature kh` where `kh` is a hashed key
- `RequireAllOf [msigs]` where `[msigs]` is a list of multi-sig terms
- `RequireAnyOf [msisg]` where `[msigs]` is a list of multi-sig terms
- `RequireMOf m [msig]` where `m` is a natural and `[msigs]` is a list of
Copy link

Choose a reason for hiding this comment

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

typo: [msig] vs [msigs]

- `RequireMOf m [msig]` where `m` is a natural and `[msigs]` is a list of
multi-sig terms

This forms a tree-like structure where each node is of the form
Copy link

Choose a reason for hiding this comment

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

node / leaf

`RequireAnyOf [msigs]` and `RequireMOf 1 [msigs]` are logically equivalent, just
as `RequireAllOf [msigs]` and `RequireMOf (length msisg) [msigs]`. From a point
of readability and to a lesser part also for encoding size, it makes sense to
have the special case terms for _any_ and _all_.
Copy link

Choose a reason for hiding this comment

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

And it'll be more directly useful with later extensions, e.g. time locks and hash locks.

Copy link
Author

Choose a reason for hiding this comment

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

I added this

```

*Note* the encoding of `m` into a major type `0` single byte allows for a
maximal value of `23` for `m` in a `m` out of `n` multi-sig scheme.
Copy link

Choose a reason for hiding this comment

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

I don't think we need to restrict it to the one-byte form. We just need to limit the overall script size.

Copy link
Author

Choose a reason for hiding this comment

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

thanks, was left-over from an initial version that used raw bytes description only


The presented scheme does not resolve the problem of the communication that is
necessary for parties to agree and collectively sign a transaction for a
multi-signature scheme.
Copy link

Choose a reason for hiding this comment

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

And we've not yet addressed limiting the overall script size, or any relation to fees.

Copy link
Author

Choose a reason for hiding this comment

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

I added this. Should we make this that "... any relation to fees apart from the additional size of the encoded script in bytes. As using multi-signature terms might incur significantly higher computational cost, this will require a specific cost-model." ?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants