txs

package
v0.34.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 23, 2021 License: Apache-2.0 Imports: 22 Imported by: 90

Documentation

Index

Constants

View Source
const (
	HashLength    = 32
	HashLengthHex = HashLength * 2
)

Variables

View Source
var (
	ErrInvalidLengthTxs        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowTxs          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupTxs = fmt.Errorf("proto: unexpected end of group")
)
View Source
var Envelope_EncodingType_name = map[int32]string{
	0: "JSON",
	1: "RLP",
}
View Source
var Envelope_EncodingType_value = map[string]int32{
	"JSON": 0,
	"RLP":  1,
}

Functions

func NewJSONCodec added in v0.19.0

func NewJSONCodec() *jsonCodec

func NewProtobufCodec added in v0.28.0

func NewProtobufCodec() *protobufCodec

Types

type Codec added in v0.19.0

type Codec interface {
	Encoder
	Decoder
}

type Decoder added in v0.18.0

type Decoder interface {
	DecodeTx(txBytes []byte) (*Envelope, error)
}

type Encoder added in v0.18.0

type Encoder interface {
	EncodeTx(envelope *Envelope) ([]byte, error)
}

type Envelope added in v0.19.0

type Envelope struct {
	Signatories []Signatory `protobuf:"bytes,1,rep,name=Signatories,proto3" json:"Signatories"`
	// Canonical bytes of the Tx ready to be signed
	Tx                   *Tx                   `protobuf:"bytes,2,opt,name=Tx,proto3,customtype=Tx" json:"Tx,omitempty"`
	Encoding             Envelope_EncodingType `protobuf:"varint,3,opt,name=Encoding,proto3,enum=txs.Envelope_EncodingType" json:"Encoding,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

An envelope contains both the signable Tx and the signatures for each input (in signatories)

func Enclose added in v0.19.0

func Enclose(chainID string, payload payload.Payload) *Envelope

Enclose a Payload in an Envelope so it is ready to be signed by first wrapping the Payload as a Tx (including ChainID) and writing it to the Tx field of the Envelope

func EnvelopeFromAny added in v0.23.0

func EnvelopeFromAny(chainID string, p *payload.Any) *Envelope

func (*Envelope) Descriptor added in v0.20.0

func (*Envelope) Descriptor() ([]byte, []int)

func (*Envelope) Get added in v0.28.0

func (txEnv *Envelope) Get(key string) (interface{}, bool)

func (*Envelope) GetEncoding added in v0.30.5

func (m *Envelope) GetEncoding() Envelope_EncodingType

func (*Envelope) GetSignatories added in v0.20.0

func (m *Envelope) GetSignatories() []Signatory

func (*Envelope) Marshal added in v0.20.0

func (m *Envelope) Marshal() (dAtA []byte, err error)

func (*Envelope) MarshalTo added in v0.20.0

func (m *Envelope) MarshalTo(dAtA []byte) (int, error)

func (*Envelope) MarshalToSizedBuffer added in v0.30.0

func (m *Envelope) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Envelope) ProtoMessage added in v0.20.0

func (*Envelope) ProtoMessage()

func (*Envelope) Reset added in v0.20.0

func (m *Envelope) Reset()

func (*Envelope) Sign added in v0.19.0

func (txEnv *Envelope) Sign(signingAccounts ...acm.AddressableSigner) error

Sign the Tx Envelope by adding Signatories containing the signatures for each TxInput. signing accounts for each input must be provided (in any order).

func (*Envelope) Size added in v0.20.0

func (m *Envelope) Size() (n int)

func (*Envelope) String added in v0.19.0

func (txEnv *Envelope) String() string

func (*Envelope) Unmarshal added in v0.20.0

func (m *Envelope) Unmarshal(dAtA []byte) error

func (*Envelope) Validate added in v0.19.0

func (txEnv *Envelope) Validate() error

Returns an error if Envelope has a nil transaction or zero signatures (and therefore could not possibly be valid)

func (*Envelope) Verify added in v0.19.0

func (txEnv *Envelope) Verify(chainID string) error

Verifies the validity of the Signatories' Signatures in the Envelope. The Signatories must appear in the same order as the inputs as returned by Tx.GetInputs().

func (*Envelope) XXX_DiscardUnknown added in v0.23.0

func (m *Envelope) XXX_DiscardUnknown()

func (*Envelope) XXX_Marshal added in v0.23.0

func (m *Envelope) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Envelope) XXX_Merge added in v0.23.0

func (m *Envelope) XXX_Merge(src proto.Message)

func (*Envelope) XXX_MessageName added in v0.20.0

func (*Envelope) XXX_MessageName() string

func (*Envelope) XXX_Size added in v0.23.0

func (m *Envelope) XXX_Size() int

func (*Envelope) XXX_Unmarshal added in v0.23.0

func (m *Envelope) XXX_Unmarshal(b []byte) error

type Envelope_EncodingType added in v0.30.5

type Envelope_EncodingType int32
const (
	Envelope_JSON Envelope_EncodingType = 0
	Envelope_RLP  Envelope_EncodingType = 1
)

func (Envelope_EncodingType) EnumDescriptor added in v0.30.5

func (Envelope_EncodingType) EnumDescriptor() ([]byte, []int)

func (Envelope_EncodingType) String added in v0.30.5

func (x Envelope_EncodingType) String() string

type EthRawTx added in v0.31.0

type EthRawTx struct {
	Sequence uint64   `json:"nonce"`
	GasPrice uint64   `json:"gasPrice"`
	GasLimit uint64   `json:"gasLimit"`
	To       []byte   `json:"to"`
	Amount   *big.Int `json:"value"`
	Data     []byte   `json:"data"`
	// Signature
	V *big.Int
	R *big.Int
	S *big.Int
	// contains filtered or unexported fields
}

Order matters for serialisation

func EthRawTxFromEnvelope added in v0.31.0

func EthRawTxFromEnvelope(txEnv *Envelope) (*EthRawTx, error)

func NewEthRawTx added in v0.31.0

func NewEthRawTx(chainID *big.Int) *EthRawTx

func (*EthRawTx) Hash added in v0.31.0

func (tx *EthRawTx) Hash() ([]byte, error)

func (*EthRawTx) Marshal added in v0.31.0

func (tx *EthRawTx) Marshal() ([]byte, error)

func (*EthRawTx) MarshalString added in v0.31.0

func (tx *EthRawTx) MarshalString() (string, error)

func (*EthRawTx) RecoverPublicKey added in v0.31.0

func (tx *EthRawTx) RecoverPublicKey() (*crypto.PublicKey, *crypto.Signature, error)

func (*EthRawTx) SignBytes added in v0.31.0

func (tx *EthRawTx) SignBytes() ([]byte, error)

type Receipt

type Receipt struct {
	// Transaction type
	TxType github_com_hyperledger_burrow_txs_payload.Type `protobuf:"varint,1,opt,name=TxType,proto3,casttype=github.com/hyperledger/burrow/txs/payload.Type" json:"TxType,omitempty"`
	// The hash of the transaction that caused this event to be generated
	TxHash github_com_hyperledger_burrow_binary.HexBytes `protobuf:"bytes,2,opt,name=TxHash,proto3,customtype=github.com/hyperledger/burrow/binary.HexBytes" json:"TxHash"`
	// Whether the transaction creates a contract
	CreatesContract bool `protobuf:"varint,3,opt,name=CreatesContract,proto3" json:"CreatesContract,omitempty"`
	// The address of the contract being called
	ContractAddress      github_com_hyperledger_burrow_crypto.Address `` /* 129-byte string literal not displayed */
	XXX_NoUnkeyedLiteral struct{}                                     `json:"-"`
	XXX_unrecognized     []byte                                       `json:"-"`
	XXX_sizecache        int32                                        `json:"-"`
}

BroadcastTx or Transaction receipt

func DecodeReceipt added in v0.20.0

func DecodeReceipt(bs []byte) (*Receipt, error)

func (*Receipt) Descriptor added in v0.20.0

func (*Receipt) Descriptor() ([]byte, []int)

func (*Receipt) Encode added in v0.20.0

func (receipt *Receipt) Encode() ([]byte, error)

func (*Receipt) GetCreatesContract added in v0.20.0

func (m *Receipt) GetCreatesContract() bool

func (*Receipt) GetTxType added in v0.20.0

func (*Receipt) Marshal added in v0.20.0

func (m *Receipt) Marshal() (dAtA []byte, err error)

func (*Receipt) MarshalTo added in v0.20.0

func (m *Receipt) MarshalTo(dAtA []byte) (int, error)

func (*Receipt) MarshalToSizedBuffer added in v0.30.0

func (m *Receipt) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Receipt) ProtoMessage added in v0.20.0

func (*Receipt) ProtoMessage()

func (*Receipt) Reset added in v0.20.0

func (m *Receipt) Reset()

func (*Receipt) Size added in v0.20.0

func (m *Receipt) Size() (n int)

func (*Receipt) String added in v0.20.0

func (m *Receipt) String() string

func (*Receipt) Unmarshal added in v0.20.0

func (m *Receipt) Unmarshal(dAtA []byte) error

func (*Receipt) XXX_DiscardUnknown added in v0.23.0

func (m *Receipt) XXX_DiscardUnknown()

func (*Receipt) XXX_Marshal added in v0.23.0

func (m *Receipt) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Receipt) XXX_Merge added in v0.23.0

func (m *Receipt) XXX_Merge(src proto.Message)

func (*Receipt) XXX_MessageName added in v0.20.0

func (*Receipt) XXX_MessageName() string

func (*Receipt) XXX_Size added in v0.23.0

func (m *Receipt) XXX_Size() int

func (*Receipt) XXX_Unmarshal added in v0.23.0

func (m *Receipt) XXX_Unmarshal(b []byte) error

type Signatory added in v0.19.0

type Signatory struct {
	Address              *github_com_hyperledger_burrow_crypto.Address `protobuf:"bytes,1,opt,name=Address,proto3,customtype=github.com/hyperledger/burrow/crypto.Address" json:"Address,omitempty"`
	PublicKey            *crypto.PublicKey                             `protobuf:"bytes,2,opt,name=PublicKey,proto3" json:"PublicKey,omitempty"`
	Signature            *crypto.Signature                             `protobuf:"bytes,4,opt,name=Signature,proto3" json:"Signature,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                      `json:"-"`
	XXX_unrecognized     []byte                                        `json:"-"`
	XXX_sizecache        int32                                         `json:"-"`
}

Signatory contains signature and one or both of Address and PublicKey to identify the signer

func (*Signatory) Descriptor added in v0.20.0

func (*Signatory) Descriptor() ([]byte, []int)

func (*Signatory) GetPublicKey added in v0.20.0

func (m *Signatory) GetPublicKey() *crypto.PublicKey

func (*Signatory) GetSignature added in v0.24.0

func (m *Signatory) GetSignature() *crypto.Signature

func (*Signatory) Marshal added in v0.20.0

func (m *Signatory) Marshal() (dAtA []byte, err error)

func (*Signatory) MarshalTo added in v0.20.0

func (m *Signatory) MarshalTo(dAtA []byte) (int, error)

func (*Signatory) MarshalToSizedBuffer added in v0.30.0

func (m *Signatory) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Signatory) ProtoMessage added in v0.20.0

func (*Signatory) ProtoMessage()

func (*Signatory) RealisePublicKey added in v0.19.0

func (s *Signatory) RealisePublicKey(getter acmstate.AccountGetter) error

Attempts to 'realise' the PublicKey and Address of a Signatory possibly referring to state in the case where the Signatory contains an Address by no PublicKey. Checks consistency in other cases, possibly generating the Address from the PublicKey

func (*Signatory) Reset added in v0.20.0

func (m *Signatory) Reset()

func (*Signatory) Size added in v0.20.0

func (m *Signatory) Size() (n int)

func (*Signatory) String added in v0.20.0

func (m *Signatory) String() string

func (*Signatory) Unmarshal added in v0.20.0

func (m *Signatory) Unmarshal(dAtA []byte) error

func (*Signatory) Validate added in v0.20.1

func (sig *Signatory) Validate() error

func (*Signatory) XXX_DiscardUnknown added in v0.23.0

func (m *Signatory) XXX_DiscardUnknown()

func (*Signatory) XXX_Marshal added in v0.23.0

func (m *Signatory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Signatory) XXX_Merge added in v0.23.0

func (m *Signatory) XXX_Merge(src proto.Message)

func (*Signatory) XXX_MessageName added in v0.20.0

func (*Signatory) XXX_MessageName() string

func (*Signatory) XXX_Size added in v0.23.0

func (m *Signatory) XXX_Size() int

func (*Signatory) XXX_Unmarshal added in v0.23.0

func (m *Signatory) XXX_Unmarshal(b []byte) error

type Tx

type Tx struct {
	ChainID string
	payload.Payload
	// contains filtered or unexported fields
}

Tx is the canonical object that we serialise to produce the SignBytes that we sign

func NewTx added in v0.19.0

func NewTx(payload payload.Payload) *Tx

Wrap the Payload in Tx required for signing and serialisation

func (*Tx) Enclose added in v0.19.0

func (tx *Tx) Enclose() *Envelope

Enclose this Tx in an Envelope to be signed

func (*Tx) GenerateReceipt added in v0.19.0

func (tx *Tx) GenerateReceipt() *Receipt

Generate a transaction Receipt containing the Tx hash and other information if the Tx is call. Returned by ABCI methods.

func (*Tx) Get added in v0.28.0

func (tx *Tx) Get(key string) (interface{}, bool)

func (*Tx) Hash added in v0.18.0

func (tx *Tx) Hash() binary.HexBytes

Generate a Hash for this transaction based on the SignBytes. The hash is memoized over the lifetime of the Tx so repeated calls to Hash() are effectively free

func (*Tx) Marshal added in v0.20.0

func (tx *Tx) Marshal() ([]byte, error)

Protobuf support

func (*Tx) MarshalJSON added in v0.19.0

func (tx *Tx) MarshalJSON() ([]byte, error)

func (*Tx) MarshalTo added in v0.20.0

func (tx *Tx) MarshalTo(data []byte) (int, error)

func (*Tx) MustSignBytes added in v0.19.0

func (tx *Tx) MustSignBytes() []byte

Generate SignBytes, panicking on any failure

func (*Tx) RLPRawTx added in v0.31.0

func (tx *Tx) RLPRawTx() (*EthRawTx, error)

func (*Tx) Rehash added in v0.19.0

func (tx *Tx) Rehash() []byte

Regenerate the Tx hash if it has been mutated or as called by Hash() in first instance

func (*Tx) Sign added in v0.18.0

func (tx *Tx) Sign(signingAccounts ...acm.AddressableSigner) (*Envelope, error)

Encloses in Envelope and signs envelope

func (*Tx) SignBytes added in v0.19.0

func (tx *Tx) SignBytes(enc Envelope_EncodingType) ([]byte, error)

Produces the canonical SignBytes (the Tx message that will be signed) for a Tx

func (*Tx) Size added in v0.20.0

func (tx *Tx) Size() int

func (*Tx) String added in v0.18.0

func (tx *Tx) String() string

func (*Tx) Type added in v0.19.0

func (tx *Tx) Type() payload.Type

func (*Tx) Unmarshal added in v0.20.0

func (tx *Tx) Unmarshal(data []byte) error

func (*Tx) UnmarshalJSON added in v0.19.0

func (tx *Tx) UnmarshalJSON(data []byte) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL