transaction

package
v1.2.5 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2021 License: GPL-3.0 Imports: 19 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 ErrNiStorageService = errors.New("nil StorageService")

ErrNilApiTransactionResult signals that a nil api transaction result has been provided

View Source
var ErrNilApiTransactionResult = errors.New("nil ApiTransactionResult")

ErrNilApiTransactionResult signals that a nil api transaction result has been provided

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

View Source
var ErrNilUint64ByteSliceConverter = errors.New("nil Uint64ByteSliceConverter")

ErrNilApiTransactionResult signals that a nil api transaction result has been provided

Functions

func NewStatusComputer added in v1.2.0

func NewStatusComputer(
	selfShardID uint32,
	uint64ByteSliceConverter typeConverters.Uint64ByteSliceConverter,
	store dataRetriever.StorageService,
) (*statusComputer, error)

Create a new instance of statusComputer

func TrimSliceHandler

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

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

Types

type ApiLogs added in v1.2.4

type ApiLogs struct {
	Address string    `json:"address"`
	Events  []*Events `json:"events"`
}

ApiLogs represents logs with changed fields' types in order to make it friendly for API's json

type ApiReceipt added in v1.2.4

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

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

type ApiSmartContractResult added in v1.1.12

type ApiSmartContractResult struct {
	Hash           string            `json:"hash,omitempty"`
	Nonce          uint64            `json:"nonce"`
	Value          *big.Int          `json:"value"`
	RcvAddr        string            `json:"receiver"`
	SndAddr        string            `json:"sender"`
	RelayerAddr    string            `json:"relayerAddress,omitempty"`
	RelayedValue   *big.Int          `json:"relayedValue,omitempty"`
	Code           string            `json:"code,omitempty"`
	Data           string            `json:"data,omitempty"`
	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,omitempty"`
	ReturnMessage  string            `json:"returnMessage,omitempty"`
	OriginalSender string            `json:"originalSender,omitempty"`
	Logs           *ApiLogs          `json:"logs,omitempty"`
}

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

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"`
	SenderUsername                    []byte                    `json:"senderUsername,omitempty"`
	ReceiverUsername                  []byte                    `json:"receiverUsername,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"`
	Timestamp                         int64                     `json:"timestamp,omitempty"`
	Receipt                           *ApiReceipt               `json:"receipt,omitempty"`
	SmartContractResults              []*ApiSmartContractResult `json:"smartContractResults,omitempty"`
	Logs                              *ApiLogs                  `json:"logs,omitempty"`
	Status                            TxStatus                  `json:"status,omitempty"`
}

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

type CostResponse added in v1.1.32

type CostResponse struct {
	GasUnits             uint64                             `json:"txGasUnits"`
	ReturnMessage        string                             `json:"returnMessage"`
	SmartContractResults map[string]*ApiSmartContractResult `json:"smartContractResults"`
}

CostResponse is structure used to return the transaction cost in gas units

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 Events added in v1.2.4

type Events struct {
	Address    string   `json:"address"`
	Identifier string   `json:"identifier"`
	Topics     [][]byte `json:"topics"`
	Data       []byte   `json:"data"`
}

Events represents the events generated by a transaction with changed fields' types in order to make it friendly for API's json

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"`
	Options          uint32 `json:"options,omitempty"`
}

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 SimulationResults added in v1.1.1

type SimulationResults struct {
	Status     TxStatus                           `json:"status,omitempty"`
	FailReason string                             `json:"failReason,omitempty"`
	ScResults  map[string]*ApiSmartContractResult `json:"scResults,omitempty"`
	Receipts   map[string]*ApiReceipt             `json:"receipts,omitempty"`
	Hash       string                             `json:"hash,omitempty"`
	VMOutput   *vmcommon.VMOutput                 `json:"-"`
}

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

type StatusComputerHandler added in v1.2.0

type StatusComputerHandler interface {
	ComputeStatusWhenInStorageKnowingMiniblock(miniblockType block.Type, tx *ApiTransactionResult) (TxStatus, error)
	ComputeStatusWhenInStorageNotKnowingMiniblock(destinationShard uint32, tx *ApiTransactionResult) (TxStatus, error)
	SetStatusIfIsRewardReverted(
		tx *ApiTransactionResult,
		miniblockType block.Type,
		headerNonce uint64,
		headerHash []byte,
	) (bool, error)
}

StatusComputerHandler computes a transaction status

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"`
	Options     uint32        `protobuf:"varint,13,opt,name=Options,proto3" json:"options,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) CheckIntegrity added in v1.1.30

func (tx *Transaction) CheckIntegrity() error

CheckIntegrity checks for not nil fields and negative value

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) GetOptions added in v1.1.12

func (m *Transaction) GetOptions() uint32

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"
	// TxStatusRewardReverted represents the identifier for a reverted reward transaction
	TxStatusRewardReverted TxStatus = "reward-reverted"
)

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 represents the identifier for a regular transaction
	TxTypeNormal TxType = "normal"

	// TxTypeUnsigned represents the identifier for a unsigned transaction
	TxTypeUnsigned TxType = "unsigned"

	// TxTypeReward represents the identifier for a reward transaction
	TxTypeReward TxType = "reward"

	// TxTypeInvalid represents the identifier for an invalid transaction
	TxTypeInvalid TxType = "invalid"
)

Jump to

Keyboard shortcuts

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