txs

package
v0.0.0-...-2935fa7 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2021 License: Apache-2.0 Imports: 22 Imported by: 0

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

func NewJSONCodec() *jsonCodec

func NewProtobufCodec

func NewProtobufCodec() *protobufCodec

Types

type Codec

type Codec interface {
	Encoder
	Decoder
}

type Decoder

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

type Encoder

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

type Envelope

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

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

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

func (*Envelope) Descriptor

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

func (*Envelope) Get

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

func (*Envelope) GetEncoding

func (m *Envelope) GetEncoding() Envelope_EncodingType

func (*Envelope) GetSignatories

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

func (*Envelope) Marshal

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

func (*Envelope) MarshalTo

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

func (*Envelope) MarshalToSizedBuffer

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

func (*Envelope) ProtoMessage

func (*Envelope) ProtoMessage()

func (*Envelope) Reset

func (m *Envelope) Reset()

func (*Envelope) Sign

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

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

func (*Envelope) String

func (txEnv *Envelope) String() string

func (*Envelope) Unmarshal

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

func (*Envelope) Validate

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

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

func (m *Envelope) XXX_DiscardUnknown()

func (*Envelope) XXX_Marshal

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

func (*Envelope) XXX_Merge

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

func (*Envelope) XXX_MessageName

func (*Envelope) XXX_MessageName() string

func (*Envelope) XXX_Size

func (m *Envelope) XXX_Size() int

func (*Envelope) XXX_Unmarshal

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

type Envelope_EncodingType

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

func (Envelope_EncodingType) EnumDescriptor

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

func (Envelope_EncodingType) String

func (x Envelope_EncodingType) String() string

type EthRawTx

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

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

func NewEthRawTx

func NewEthRawTx(chainID string) *EthRawTx

func (*EthRawTx) Hash

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

func (*EthRawTx) Marshal

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

func (*EthRawTx) MarshalString

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

func (*EthRawTx) RecoverPublicKey

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

func (*EthRawTx) SignBytes

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

type Receipt

type Receipt struct {
	// Transaction type
	TxType hscpayload.Type `protobuf:"varint,1,opt,name=TxType,proto3,casttype=github.com/klyed/hivesmartchain/txs/payload.Type" json:"TxType,omitempty"`
	// The hash of the transaction that caused this event to be generated
	TxHash hscbinary.HexBytes `protobuf:"bytes,2,opt,name=TxHash,proto3,customtype=github.com/klyed/hivesmartchain/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      hsccrypto.Address `` /* 131-byte string literal not displayed */
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

BroadcastTx or Transaction receipt

func DecodeReceipt

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

func (*Receipt) Descriptor

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

func (*Receipt) Encode

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

func (*Receipt) GetCreatesContract

func (m *Receipt) GetCreatesContract() bool

func (*Receipt) GetTxType

func (m *Receipt) GetTxType() hscpayload.Type

func (*Receipt) Marshal

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

func (*Receipt) MarshalTo

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

func (*Receipt) MarshalToSizedBuffer

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

func (*Receipt) ProtoMessage

func (*Receipt) ProtoMessage()

func (*Receipt) Reset

func (m *Receipt) Reset()

func (*Receipt) Size

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

func (*Receipt) String

func (m *Receipt) String() string

func (*Receipt) Unmarshal

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

func (*Receipt) XXX_DiscardUnknown

func (m *Receipt) XXX_DiscardUnknown()

func (*Receipt) XXX_Marshal

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

func (*Receipt) XXX_Merge

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

func (*Receipt) XXX_MessageName

func (*Receipt) XXX_MessageName() string

func (*Receipt) XXX_Size

func (m *Receipt) XXX_Size() int

func (*Receipt) XXX_Unmarshal

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

type Signatory

type Signatory struct {
	Address              *hsccrypto.Address `protobuf:"bytes,1,opt,name=Address,proto3,customtype=github.com/klyed/hivesmartchain/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

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

func (*Signatory) GetPublicKey

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

func (*Signatory) GetSignature

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

func (*Signatory) Marshal

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

func (*Signatory) MarshalTo

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

func (*Signatory) MarshalToSizedBuffer

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

func (*Signatory) ProtoMessage

func (*Signatory) ProtoMessage()

func (*Signatory) RealisePublicKey

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

func (m *Signatory) Reset()

func (*Signatory) Size

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

func (*Signatory) String

func (m *Signatory) String() string

func (*Signatory) Unmarshal

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

func (*Signatory) Validate

func (sig *Signatory) Validate() error

func (*Signatory) XXX_DiscardUnknown

func (m *Signatory) XXX_DiscardUnknown()

func (*Signatory) XXX_Marshal

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

func (*Signatory) XXX_Merge

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

func (*Signatory) XXX_MessageName

func (*Signatory) XXX_MessageName() string

func (*Signatory) XXX_Size

func (m *Signatory) XXX_Size() int

func (*Signatory) XXX_Unmarshal

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

func NewTx(payload payload.Payload) *Tx

Wrap the Payload in Tx required for signing and serialisation

func (*Tx) Enclose

func (tx *Tx) Enclose() *Envelope

Enclose this Tx in an Envelope to be signed

func (*Tx) GenerateReceipt

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

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

func (*Tx) Hash

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

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

Protobuf support

func (*Tx) MarshalJSON

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

func (*Tx) MarshalTo

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

func (*Tx) MustSignBytes

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

Generate SignBytes, panicking on any failure

func (*Tx) RLPRawTx

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

func (*Tx) Rehash

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

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

Encloses in Envelope and signs envelope

func (*Tx) SignBytes

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

func (tx *Tx) Size() int

func (*Tx) String

func (tx *Tx) String() string

func (*Tx) Type

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

func (*Tx) Unmarshal

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

func (*Tx) UnmarshalJSON

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