BlockMultiSigProgram returns a valid multisignature consensus program where nrequired of the keys in pubkeys are required to have signed the block for success. An ErrBadValue will be returned if nrequired is larger than the number of keys provided. The result is: BLOCKHASH ...
(pubkeys []ed25519.PublicKey, nrequired int)
| 21 | // nrequired is larger than the number of keys provided. The result |
| 22 | // is: BLOCKHASH <pubkey>... <nrequired> <npubkeys> CHECKMULTISIG |
| 23 | func BlockMultiSigProgram(pubkeys []ed25519.PublicKey, nrequired int) ([]byte, error) { |
| 24 | err := checkMultiSigParams(int64(nrequired), int64(len(pubkeys))) |
| 25 | if err != nil { |
| 26 | return nil, err |
| 27 | } |
| 28 | builder := NewBuilder() |
| 29 | builder.AddOp(vm.OP_BLOCKHASH) |
| 30 | for _, key := range pubkeys { |
| 31 | builder.AddData(key) |
| 32 | } |
| 33 | builder.AddInt64(int64(nrequired)).AddInt64(int64(len(pubkeys))).AddOp(vm.OP_CHECKMULTISIG) |
| 34 | return builder.Program, nil |
| 35 | } |
| 36 | |
| 37 | func ParseBlockMultiSigProgram(script []byte) ([]ed25519.PublicKey, int, error) { |
| 38 | pops, err := vm.ParseProgram(script) |