tendermint: github.com/tendermint/tendermint/crypto/multisig Index | Files | Directories

package multisig

import "github.com/tendermint/tendermint/crypto/multisig"


Package Files

codec.go multisignature.go threshold_pubkey.go


const (
    PubKeyMultisigThresholdAminoRoute = "tendermint/PubKeyMultisigThreshold"

TODO: Figure out API for others to either add their own pubkey types, or to make verify / marshal accept a cdc.

func NewPubKeyMultisigThreshold Uses

func NewPubKeyMultisigThreshold(k int, pubkeys []crypto.PubKey) crypto.PubKey

NewPubKeyMultisigThreshold returns a new PubKeyMultisigThreshold. Panics if len(pubkeys) < k or 0 >= k.

type Multisignature Uses

type Multisignature struct {
    BitArray *bitarray.CompactBitArray
    Sigs     [][]byte

Multisignature is used to represent the signature object used in the multisigs. Sigs is a list of signatures, sorted by corresponding index.

func NewMultisig Uses

func NewMultisig(n int) *Multisignature

NewMultisig returns a new Multisignature of size n.

func (*Multisignature) AddSignature Uses

func (mSig *Multisignature) AddSignature(sig []byte, index int)

AddSignature adds a signature to the multisig, at the corresponding index. If the signature already exists, replace it.

func (*Multisignature) AddSignatureFromPubKey Uses

func (mSig *Multisignature) AddSignatureFromPubKey(sig []byte, pubkey crypto.PubKey, keys []crypto.PubKey) error

AddSignatureFromPubKey adds a signature to the multisig, at the index in keys corresponding to the provided pubkey.

func (*Multisignature) Marshal Uses

func (mSig *Multisignature) Marshal() []byte

Marshal the multisignature with amino

type PubKeyMultisigThreshold Uses

type PubKeyMultisigThreshold struct {
    K       uint            `json:"threshold"`
    PubKeys []crypto.PubKey `json:"pubkeys"`

PubKeyMultisigThreshold implements a K of N threshold multisig.

func (PubKeyMultisigThreshold) Address Uses

func (pk PubKeyMultisigThreshold) Address() crypto.Address

Address returns tmhash(PubKeyMultisigThreshold.Bytes())

func (PubKeyMultisigThreshold) Bytes Uses

func (pk PubKeyMultisigThreshold) Bytes() []byte

Bytes returns the amino encoded version of the PubKeyMultisigThreshold

func (PubKeyMultisigThreshold) Equals Uses

func (pk PubKeyMultisigThreshold) Equals(other crypto.PubKey) bool

Equals returns true iff pk and other both have the same number of keys, and all constituent keys are the same, and in the same order.

func (PubKeyMultisigThreshold) VerifyBytes Uses

func (pk PubKeyMultisigThreshold) VerifyBytes(msg []byte, marshalledSig []byte) bool

VerifyBytes expects sig to be an amino encoded version of a MultiSignature. Returns true iff the multisignature contains k or more signatures for the correct corresponding keys, and all signatures are valid. (Not just k of the signatures) The multisig uses a bitarray, so multiple signatures for the same key is not a concern.



Package multisig imports 8 packages (graph) and is imported by 33 packages. Updated 2020-01-04. Refresh now. Tools for package owners.