Documentation ¶
Index ¶
- Constants
- Variables
- func NewJSONCodec() *jsonCodec
- func NewProtobufCodec() *protobufCodec
- type Codec
- type Decoder
- type Encoder
- type Envelope
- func (*Envelope) Descriptor() ([]byte, []int)
- func (txEnv *Envelope) Get(key string) (interface{}, bool)
- func (m *Envelope) GetEncoding() Envelope_EncodingType
- func (m *Envelope) GetSignatories() []Signatory
- func (m *Envelope) Marshal() (dAtA []byte, err error)
- func (m *Envelope) MarshalTo(dAtA []byte) (int, error)
- func (m *Envelope) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*Envelope) ProtoMessage()
- func (m *Envelope) Reset()
- func (txEnv *Envelope) Sign(signingAccounts ...acm.AddressableSigner) error
- func (m *Envelope) Size() (n int)
- func (txEnv *Envelope) String() string
- func (m *Envelope) Unmarshal(dAtA []byte) error
- func (txEnv *Envelope) Validate() error
- func (txEnv *Envelope) Verify(chainID string) error
- func (m *Envelope) XXX_DiscardUnknown()
- func (m *Envelope) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *Envelope) XXX_Merge(src proto.Message)
- func (*Envelope) XXX_MessageName() string
- func (m *Envelope) XXX_Size() int
- func (m *Envelope) XXX_Unmarshal(b []byte) error
- type Envelope_EncodingType
- type EthRawTx
- type Receipt
- func (*Receipt) Descriptor() ([]byte, []int)
- func (receipt *Receipt) Encode() ([]byte, error)
- func (m *Receipt) GetCreatesContract() bool
- func (m *Receipt) GetTxType() hscpayload.Type
- func (m *Receipt) Marshal() (dAtA []byte, err error)
- func (m *Receipt) MarshalTo(dAtA []byte) (int, error)
- func (m *Receipt) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*Receipt) ProtoMessage()
- func (m *Receipt) Reset()
- func (m *Receipt) Size() (n int)
- func (m *Receipt) String() string
- func (m *Receipt) Unmarshal(dAtA []byte) error
- func (m *Receipt) XXX_DiscardUnknown()
- func (m *Receipt) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *Receipt) XXX_Merge(src proto.Message)
- func (*Receipt) XXX_MessageName() string
- func (m *Receipt) XXX_Size() int
- func (m *Receipt) XXX_Unmarshal(b []byte) error
- type Signatory
- func (*Signatory) Descriptor() ([]byte, []int)
- func (m *Signatory) GetPublicKey() *crypto.PublicKey
- func (m *Signatory) GetSignature() *crypto.Signature
- func (m *Signatory) Marshal() (dAtA []byte, err error)
- func (m *Signatory) MarshalTo(dAtA []byte) (int, error)
- func (m *Signatory) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*Signatory) ProtoMessage()
- func (s *Signatory) RealisePublicKey(getter acmstate.AccountGetter) error
- func (m *Signatory) Reset()
- func (m *Signatory) Size() (n int)
- func (m *Signatory) String() string
- func (m *Signatory) Unmarshal(dAtA []byte) error
- func (sig *Signatory) Validate() error
- func (m *Signatory) XXX_DiscardUnknown()
- func (m *Signatory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *Signatory) XXX_Merge(src proto.Message)
- func (*Signatory) XXX_MessageName() string
- func (m *Signatory) XXX_Size() int
- func (m *Signatory) XXX_Unmarshal(b []byte) error
- type Tx
- func (tx *Tx) Enclose() *Envelope
- func (tx *Tx) GenerateReceipt() *Receipt
- func (tx *Tx) Get(key string) (interface{}, bool)
- func (tx *Tx) Hash() binary.HexBytes
- func (tx *Tx) Marshal() ([]byte, error)
- func (tx *Tx) MarshalJSON() ([]byte, error)
- func (tx *Tx) MarshalTo(data []byte) (int, error)
- func (tx *Tx) MustSignBytes() []byte
- func (tx *Tx) RLPRawTx() (*EthRawTx, error)
- func (tx *Tx) Rehash() []byte
- func (tx *Tx) Sign(signingAccounts ...acm.AddressableSigner) (*Envelope, error)
- func (tx *Tx) SignBytes(enc Envelope_EncodingType) ([]byte, error)
- func (tx *Tx) Size() int
- func (tx *Tx) String() string
- func (tx *Tx) Type() payload.Type
- func (tx *Tx) Unmarshal(data []byte) error
- func (tx *Tx) UnmarshalJSON(data []byte) error
Constants ¶
const ( HashLength = 32 HashLengthHex = HashLength * 2 )
Variables ¶
var ( ErrInvalidLengthTxs = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowTxs = fmt.Errorf("proto: integer overflow") ErrUnexpectedEndOfGroupTxs = fmt.Errorf("proto: unexpected end of group") )
var Envelope_EncodingType_name = map[int32]string{
0: "JSON",
1: "RLP",
}
var Envelope_EncodingType_value = map[string]int32{
"JSON": 0,
"RLP": 1,
}
Functions ¶
func NewJSONCodec ¶
func NewJSONCodec() *jsonCodec
func NewProtobufCodec ¶
func NewProtobufCodec() *protobufCodec
Types ¶
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 ¶
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 (*Envelope) Descriptor ¶
func (*Envelope) GetEncoding ¶
func (m *Envelope) GetEncoding() Envelope_EncodingType
func (*Envelope) GetSignatories ¶
func (*Envelope) MarshalToSizedBuffer ¶
func (*Envelope) ProtoMessage ¶
func (*Envelope) ProtoMessage()
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) Validate ¶
Returns an error if Envelope has a nil transaction or zero signatures (and therefore could not possibly be valid)
func (*Envelope) Verify ¶
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 (*Envelope) XXX_MessageName ¶
func (*Envelope) XXX_Unmarshal ¶
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 NewEthRawTx ¶
func (*EthRawTx) MarshalString ¶
func (*EthRawTx) RecoverPublicKey ¶
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 (*Receipt) Descriptor ¶
func (*Receipt) GetCreatesContract ¶
func (*Receipt) GetTxType ¶
func (m *Receipt) GetTxType() hscpayload.Type
func (*Receipt) MarshalToSizedBuffer ¶
func (*Receipt) ProtoMessage ¶
func (*Receipt) ProtoMessage()
func (*Receipt) XXX_DiscardUnknown ¶
func (m *Receipt) XXX_DiscardUnknown()
func (*Receipt) XXX_Marshal ¶
func (*Receipt) XXX_MessageName ¶
func (*Receipt) XXX_Unmarshal ¶
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) GetPublicKey ¶
func (*Signatory) GetSignature ¶
func (*Signatory) MarshalToSizedBuffer ¶
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) XXX_DiscardUnknown ¶
func (m *Signatory) XXX_DiscardUnknown()
func (*Signatory) XXX_Marshal ¶
func (*Signatory) XXX_MessageName ¶
func (*Signatory) XXX_Unmarshal ¶
type Tx ¶
Tx is the canonical object that we serialise to produce the SignBytes that we sign
func (*Tx) GenerateReceipt ¶
Generate a transaction Receipt containing the Tx hash and other information if the Tx is call. Returned by ABCI methods.
func (*Tx) Hash ¶
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) MarshalJSON ¶
func (*Tx) MustSignBytes ¶
Generate SignBytes, panicking on any failure
func (*Tx) Rehash ¶
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