transaction

package
v1.1.10-rc.2 Latest Latest
Warning

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

Go to latest
Published: Jan 6, 2021 License: GPL-3.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidLengthLog        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowLog          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupLog = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	ErrInvalidLengthTransaction        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowTransaction          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupTransaction = fmt.Errorf("proto: unexpected end of group")
)
View Source
var ErrNilEncoder = errors.New("nil encoder")

ErrNilEncoder signals that a nil encoder has been provided

View Source
var ErrNilMarshalizer = errors.New("nil marshalizer")

ErrNilMarshalizer signals that a nil marshalizer has been provided

Functions

func TrimSliceHandler

func TrimSliceHandler(in []data.TransactionHandler) []data.TransactionHandler

TrimSliceHandler creates a copy of the provided slice without the excess capacity

Types

type ApiTransactionResult added in v1.0.125

type ApiTransactionResult struct {
	Tx                                data.TransactionHandler `json:"-"`
	Type                              string                  `json:"type"`
	Hash                              string                  `json:"hash,omitempty"`
	Nonce                             uint64                  `json:"nonce,omitempty"`
	Round                             uint64                  `json:"round,omitempty"`
	Epoch                             uint32                  `json:"epoch,omitempty"`
	Value                             string                  `json:"value,omitempty"`
	Receiver                          string                  `json:"receiver,omitempty"`
	Sender                            string                  `json:"sender,omitempty"`
	GasPrice                          uint64                  `json:"gasPrice,omitempty"`
	GasLimit                          uint64                  `json:"gasLimit,omitempty"`
	Data                              []byte                  `json:"data,omitempty"`
	CodeMetadata                      []byte                  `json:"codeMetadata,omitempty"`
	Code                              string                  `json:"code,omitempty"`
	PreviousTransactionHash           string                  `json:"previousTransactionHash,omitempty"`
	OriginalTransactionHash           string                  `json:"originalTransactionHash,omitempty"`
	ReturnMessage                     string                  `json:"returnMessage,omitempty"`
	OriginalSender                    string                  `json:"originalSender,omitempty"`
	Signature                         string                  `json:"signature,omitempty"`
	SourceShard                       uint32                  `json:"sourceShard"`
	DestinationShard                  uint32                  `json:"destinationShard"`
	BlockNonce                        uint64                  `json:"blockNonce,omitempty"`
	BlockHash                         string                  `json:"blockHash,omitempty"`
	NotarizedAtSourceInMetaNonce      uint64                  `json:"notarizedAtSourceInMetaNonce,omitempty"`
	NotarizedAtSourceInMetaHash       string                  `json:"NotarizedAtSourceInMetaHash,omitempty"`
	NotarizedAtDestinationInMetaNonce uint64                  `json:"notarizedAtDestinationInMetaNonce,omitempty"`
	NotarizedAtDestinationInMetaHash  string                  `json:"notarizedAtDestinationInMetaHash,omitempty"`
	MiniBlockType                     string                  `json:"miniblockType,omitempty"`
	MiniBlockHash                     string                  `json:"miniblockHash,omitempty"`
	Status                            TxStatus                `json:"status,omitempty"`
}

ApiTransactionResult is the data transfer object which will be returned on the get transaction by hash endpoint

type Encoder added in v1.0.104

type Encoder interface {
	Encode(buff []byte) string
	IsInterfaceNil() bool
}

Encoder represents a byte slice to string encoder

type Event added in v1.0.104

type Event struct {
	Address    []byte   `protobuf:"bytes,1,opt,name=Address,proto3" json:"address"`
	Identifier []byte   `protobuf:"bytes,2,opt,name=Identifier,proto3" json:"identifier"`
	Topics     [][]byte `protobuf:"bytes,3,rep,name=Topics,proto3" json:"topics"`
	Data       []byte   `protobuf:"bytes,4,opt,name=Data,proto3" json:"data"`
}

Event holds all the data needed for an event structure

func (*Event) Descriptor added in v1.0.104

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

func (*Event) Equal added in v1.0.104

func (this *Event) Equal(that interface{}) bool

func (*Event) GetAddress added in v1.0.104

func (m *Event) GetAddress() []byte

func (*Event) GetData added in v1.0.104

func (m *Event) GetData() []byte

func (*Event) GetIdentifier added in v1.0.104

func (m *Event) GetIdentifier() []byte

func (*Event) GetTopics added in v1.0.104

func (m *Event) GetTopics() [][]byte

func (*Event) GoString added in v1.0.104

func (this *Event) GoString() string

func (*Event) IsInterfaceNil added in v1.0.104

func (e *Event) IsInterfaceNil() bool

IsInterfaceNil verifies if underlying object is nil

func (*Event) Marshal added in v1.0.104

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

func (*Event) MarshalTo added in v1.0.104

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

func (*Event) MarshalToSizedBuffer added in v1.0.104

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

func (*Event) ProtoMessage added in v1.0.104

func (*Event) ProtoMessage()

func (*Event) Reset added in v1.0.104

func (m *Event) Reset()

func (*Event) Size added in v1.0.104

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

func (*Event) String added in v1.0.104

func (this *Event) String() string

func (*Event) Unmarshal added in v1.0.104

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

func (*Event) XXX_DiscardUnknown added in v1.0.104

func (m *Event) XXX_DiscardUnknown()

func (*Event) XXX_Marshal added in v1.0.104

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

func (*Event) XXX_Merge added in v1.0.104

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

func (*Event) XXX_Size added in v1.0.104

func (m *Event) XXX_Size() int

func (*Event) XXX_Unmarshal added in v1.0.104

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

type FrontendTransaction added in v1.0.147

type FrontendTransaction struct {
	Nonce            uint64 `json:"nonce"`
	Value            string `json:"value"`
	Receiver         string `json:"receiver"`
	Sender           string `json:"sender"`
	SenderUsername   []byte `json:"senderUsername,omitempty"`
	ReceiverUsername []byte `json:"receiverUsername,omitempty"`
	GasPrice         uint64 `json:"gasPrice"`
	GasLimit         uint64 `json:"gasLimit"`
	Data             []byte `json:"data,omitempty"`
	Signature        string `json:"signature,omitempty"`
	ChainID          string `json:"chainID"`
	Version          uint32 `json:"version"`
}

FrontendTransaction represents the DTO used in transaction signing/validation.

type Log added in v1.0.104

type Log struct {
	Address []byte   `protobuf:"bytes,1,opt,name=Address,proto3" json:"address"`
	Events  []*Event `protobuf:"bytes,2,rep,name=Events,proto3" json:"events"`
}

Log holds all the data needed for a log structure

func (*Log) Descriptor added in v1.0.104

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

func (*Log) Equal added in v1.0.104

func (this *Log) Equal(that interface{}) bool

func (*Log) GetAddress added in v1.0.104

func (m *Log) GetAddress() []byte

func (*Log) GetEvents added in v1.0.104

func (m *Log) GetEvents() []*Event

func (*Log) GetLogEvents added in v1.0.104

func (l *Log) GetLogEvents() []data.EventHandler

GetLogEvents returns the interface for the underlying events of the log structure

func (*Log) GoString added in v1.0.104

func (this *Log) GoString() string

func (*Log) IsInterfaceNil added in v1.0.104

func (l *Log) IsInterfaceNil() bool

IsInterfaceNil verifies if underlying object is nil

func (*Log) Marshal added in v1.0.104

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

func (*Log) MarshalTo added in v1.0.104

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

func (*Log) MarshalToSizedBuffer added in v1.0.104

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

func (*Log) ProtoMessage added in v1.0.104

func (*Log) ProtoMessage()

func (*Log) Reset added in v1.0.104

func (m *Log) Reset()

func (*Log) Size added in v1.0.104

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

func (*Log) String added in v1.0.104

func (this *Log) String() string

func (*Log) Unmarshal added in v1.0.104

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

func (*Log) XXX_DiscardUnknown added in v1.0.104

func (m *Log) XXX_DiscardUnknown()

func (*Log) XXX_Marshal added in v1.0.104

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

func (*Log) XXX_Merge added in v1.0.104

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

func (*Log) XXX_Size added in v1.0.104

func (m *Log) XXX_Size() int

func (*Log) XXX_Unmarshal added in v1.0.104

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

type Marshalizer added in v1.0.104

type Marshalizer interface {
	Marshal(obj interface{}) ([]byte, error)
	IsInterfaceNil() bool
}

Marshalizer is able to encode an object to its byte slice representation

type ReceiptApi added in v1.1.1

type ReceiptApi struct {
	Value   *big.Int `json:"value"`
	SndAddr string   `json:"sender"`
	Data    string   `json:"data,omitempty"`
	TxHash  string   `json:"txHash"`
}

ReceiptApi represents a receipt with changed fields' types in order to make it friendly for API's json

type SimulationResults added in v1.1.1

type SimulationResults struct {
	Status     TxStatus                           `json:"status,omitempty"`
	FailReason string                             `json:"failReason,omitempty"`
	ScResults  map[string]*SmartContractResultApi `json:"scResults,omitempty"`
	Receipts   map[string]*ReceiptApi             `json:"receipts,omitempty"`
	Hash       string                             `json:"hash,omitempty"`
}

SimulationResults is the data transfer object which will hold results for simulation a transaction's execution

type SmartContractResultApi added in v1.1.1

type SmartContractResultApi struct {
	Nonce          uint64            `json:"nonce"`
	Value          *big.Int          `json:"value"`
	RcvAddr        string            `json:"receiver"`
	SndAddr        string            `json:"sender"`
	RelayerAddr    string            `json:"relayerAddress"`
	RelayedValue   *big.Int          `json:"relayedValue"`
	Code           string            `json:"code"`
	Data           string            `json:"data"`
	PrevTxHash     string            `json:"prevTxHash"`
	OriginalTxHash string            `json:"originalTxHash"`
	GasLimit       uint64            `json:"gasLimit"`
	GasPrice       uint64            `json:"gasPrice"`
	CallType       vmcommon.CallType `json:"callType"`
	CodeMetadata   string            `json:"codeMetadata"`
	ReturnMessage  string            `json:"returnMessage"`
	OriginalSender string            `json:"originalSender"`
}

SmartContractResultApi represents a smart contract result with changed fields' types in order to make it friendly for API's json

type StatusComputer added in v1.1.1

type StatusComputer struct {
	MiniblockType        block.Type
	IsMiniblockFinalized bool
	SourceShard          uint32
	DestinationShard     uint32
	Receiver             []byte
	TransactionData      []byte
	SelfShard            uint32
}

StatusComputer computes a transaction status

func (*StatusComputer) ComputeStatusWhenInStorageKnowingMiniblock added in v1.1.1

func (params *StatusComputer) ComputeStatusWhenInStorageKnowingMiniblock() TxStatus

ComputeStatusWhenInStorageKnowingMiniblock computes the transaction status for a historical transaction

func (*StatusComputer) ComputeStatusWhenInStorageNotKnowingMiniblock added in v1.1.1

func (params *StatusComputer) ComputeStatusWhenInStorageNotKnowingMiniblock() TxStatus

ComputeStatusWhenInStorageNotKnowingMiniblock computes the transaction status when transaction is in current epoch's storage Limitation: in this case, since we do not know the miniblock type, we cannot know if a transaction is actually, "invalid". However, when "dblookupext" indexing is enabled, this function is not used.

type Transaction

type Transaction struct {
	Nonce       uint64        `protobuf:"varint,1,opt,name=Nonce,proto3" json:"nonce"`
	Value       *math_big.Int `` /* 132-byte string literal not displayed */
	RcvAddr     []byte        `protobuf:"bytes,3,opt,name=RcvAddr,proto3" json:"receiver"`
	RcvUserName []byte        `protobuf:"bytes,4,opt,name=RcvUserName,proto3" json:"rcvUserName,omitempty"`
	SndAddr     []byte        `protobuf:"bytes,5,opt,name=SndAddr,proto3" json:"sender"`
	SndUserName []byte        `protobuf:"bytes,6,opt,name=SndUserName,proto3" json:"sndUserName,omitempty"`
	GasPrice    uint64        `protobuf:"varint,7,opt,name=GasPrice,proto3" json:"gasPrice,omitempty"`
	GasLimit    uint64        `protobuf:"varint,8,opt,name=GasLimit,proto3" json:"gasLimit,omitempty"`
	Data        []byte        `protobuf:"bytes,9,opt,name=Data,proto3" json:"data,omitempty"`
	ChainID     []byte        `protobuf:"bytes,10,opt,name=ChainID,proto3" json:"chainID"`
	Version     uint32        `protobuf:"varint,11,opt,name=Version,proto3" json:"version"`
	Signature   []byte        `protobuf:"bytes,12,opt,name=Signature,proto3" json:"signature,omitempty"`
}

Transaction holds all the data needed for a value transfer or SC call

func TrimSlicePtr

func TrimSlicePtr(in []*Transaction) []*Transaction

TrimSlicePtr creates a copy of the provided slice without the excess capacity

func (*Transaction) Descriptor

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

func (*Transaction) Equal

func (this *Transaction) Equal(that interface{}) bool

func (*Transaction) GetChainID added in v1.0.137

func (m *Transaction) GetChainID() []byte

func (*Transaction) GetData

func (m *Transaction) GetData() []byte

func (*Transaction) GetDataForSigning added in v1.0.104

func (tx *Transaction) GetDataForSigning(encoder Encoder, marshalizer Marshalizer) ([]byte, error)

GetDataForSigning returns the serialized transaction having an empty signature field

func (*Transaction) GetGasLimit

func (m *Transaction) GetGasLimit() uint64

func (*Transaction) GetGasPrice

func (m *Transaction) GetGasPrice() uint64

func (*Transaction) GetNonce

func (m *Transaction) GetNonce() uint64

func (*Transaction) GetRcvAddr

func (m *Transaction) GetRcvAddr() []byte

func (*Transaction) GetRcvUserName added in v1.0.103

func (m *Transaction) GetRcvUserName() []byte

func (*Transaction) GetSignature

func (m *Transaction) GetSignature() []byte

func (*Transaction) GetSndAddr

func (m *Transaction) GetSndAddr() []byte

func (*Transaction) GetSndUserName added in v1.0.103

func (m *Transaction) GetSndUserName() []byte

func (*Transaction) GetValue

func (m *Transaction) GetValue() *math_big.Int

func (*Transaction) GetVersion added in v1.0.137

func (m *Transaction) GetVersion() uint32

func (*Transaction) GoString

func (this *Transaction) GoString() string

func (*Transaction) IsInterfaceNil

func (tx *Transaction) IsInterfaceNil() bool

IsInterfaceNil verifies if underlying object is nil

func (*Transaction) Marshal

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

func (*Transaction) MarshalTo

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

func (*Transaction) MarshalToSizedBuffer

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

func (*Transaction) ProtoMessage

func (*Transaction) ProtoMessage()

func (*Transaction) Reset

func (m *Transaction) Reset()

func (*Transaction) SetData

func (tx *Transaction) SetData(data []byte)

SetData sets the data of the transaction

func (*Transaction) SetRcvAddr

func (tx *Transaction) SetRcvAddr(addr []byte)

SetRcvAddr sets the receiver address of the transaction

func (*Transaction) SetSndAddr

func (tx *Transaction) SetSndAddr(addr []byte)

SetSndAddr sets the sender address of the transaction

func (*Transaction) SetValue

func (tx *Transaction) SetValue(value *big.Int)

SetValue sets the value of the transaction

func (*Transaction) Size

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

func (*Transaction) String

func (this *Transaction) String() string

func (*Transaction) Unmarshal

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

func (*Transaction) XXX_DiscardUnknown

func (m *Transaction) XXX_DiscardUnknown()

func (*Transaction) XXX_Marshal

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

func (*Transaction) XXX_Merge

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

func (*Transaction) XXX_Size

func (m *Transaction) XXX_Size() int

func (*Transaction) XXX_Unmarshal

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

type TxStatus added in v1.1.1

type TxStatus string

TxStatus is the status of a transaction

const (
	// TxStatusPending = received and maybe executed on source shard, but not on destination shard
	TxStatusPending TxStatus = "pending"
	// TxStatusSuccess = received and executed
	TxStatusSuccess TxStatus = "success"
	// TxStatusFail = received and executed with error
	TxStatusFail TxStatus = "fail"
	// TxStatusInvalid = considered invalid
	TxStatusInvalid TxStatus = "invalid"
)

func (TxStatus) String added in v1.1.3

func (tx TxStatus) String() string

String returns the string representation of the status

type TxType added in v1.1.1

type TxType string

TxType represents a transaction type

const (
	TxTypeNormal   TxType = "normal"
	TxTypeUnsigned TxType = "unsigned"
	TxTypeReward   TxType = "reward"
	TxTypeInvalid  TxType = "invalid"
)

Jump to

Keyboard shortcuts

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