transaction

package
v1.1.8-pre-alpha.2 Latest Latest
Warning

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

Go to latest
Published: Jun 17, 2020 License: MIT Imports: 29 Imported by: 12

Documentation

Index

Constants

View Source
const (
	TypeSend                TxType = 0x01
	TypeSellCoin            TxType = 0x02
	TypeSellAllCoin         TxType = 0x03
	TypeBuyCoin             TxType = 0x04
	TypeCreateCoin          TxType = 0x05
	TypeDeclareCandidacy    TxType = 0x06
	TypeDelegate            TxType = 0x07
	TypeUnbond              TxType = 0x08
	TypeRedeemCheck         TxType = 0x09
	TypeSetCandidateOnline  TxType = 0x0A
	TypeSetCandidateOffline TxType = 0x0B
	TypeCreateMultisig      TxType = 0x0C
	TypeMultisend           TxType = 0x0D
	TypeEditCandidate       TxType = 0x0E

	SigTypeSingle SigType = 0x01
	SigTypeMulti  SigType = 0x02
)

Variables

View Source
var (
	CommissionMultiplier = big.NewInt(10e14)
)
View Source
var (
	ErrInvalidSig = errors.New("invalid transaction v, r, s values")
)
View Source
var TxDecoder = Decoder{
	// contains filtered or unexported fields
}

Functions

func EncodeError added in v1.1.0

func EncodeError(data map[string]string) string

func RecoverPlain added in v0.5.0

func RecoverPlain(sighash types.Hash, R, S, Vb *big.Int) (types.Address, error)

Types

type BuyCoinData added in v0.0.6

type BuyCoinData struct {
	CoinToBuy          types.CoinSymbol
	ValueToBuy         *big.Int
	CoinToSell         types.CoinSymbol
	MaximumValueToSell *big.Int
}

func (BuyCoinData) BasicCheck added in v0.8.0

func (data BuyCoinData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (BuyCoinData) Gas added in v0.0.6

func (data BuyCoinData) Gas() int64

func (BuyCoinData) MarshalJSON added in v0.0.6

func (data BuyCoinData) MarshalJSON() ([]byte, error)

func (BuyCoinData) Run added in v0.0.6

func (data BuyCoinData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (BuyCoinData) String added in v0.0.6

func (data BuyCoinData) String() string

func (BuyCoinData) TotalSpend added in v0.8.0

func (data BuyCoinData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends,
	[]Conversion, *big.Int, *Response)

type CandidateTx added in v0.14.0

type CandidateTx interface {
	GetPubKey() types.Pubkey
}

type Conversion added in v0.8.0

type Conversion struct {
	FromCoin    types.CoinSymbol
	FromAmount  *big.Int
	FromReserve *big.Int
	ToCoin      types.CoinSymbol
	ToAmount    *big.Int
	ToReserve   *big.Int
}

type CreateCoinData

type CreateCoinData struct {
	Name                 string
	Symbol               types.CoinSymbol
	InitialAmount        *big.Int
	InitialReserve       *big.Int
	ConstantReserveRatio uint
	MaxSupply            *big.Int
}

func (CreateCoinData) BasicCheck added in v0.8.0

func (data CreateCoinData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (CreateCoinData) Gas added in v0.0.6

func (data CreateCoinData) Gas() int64

func (CreateCoinData) MarshalJSON

func (data CreateCoinData) MarshalJSON() ([]byte, error)

func (CreateCoinData) Run added in v0.0.6

func (data CreateCoinData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (CreateCoinData) String added in v0.0.6

func (data CreateCoinData) String() string

func (CreateCoinData) TotalSpend added in v0.8.0

func (data CreateCoinData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

type CreateMultisigData added in v0.5.0

type CreateMultisigData struct {
	Threshold uint
	Weights   []uint
	Addresses []types.Address
}

func (CreateMultisigData) BasicCheck added in v0.8.0

func (data CreateMultisigData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (CreateMultisigData) Gas added in v0.5.0

func (data CreateMultisigData) Gas() int64

func (CreateMultisigData) MarshalJSON added in v0.5.0

func (data CreateMultisigData) MarshalJSON() ([]byte, error)

func (CreateMultisigData) Run added in v0.5.0

func (data CreateMultisigData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (CreateMultisigData) String added in v0.5.0

func (data CreateMultisigData) String() string

func (CreateMultisigData) TotalSpend added in v0.8.0

func (data CreateMultisigData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

type Data

type Data interface {
	String() string
	Gas() int64
	Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response
}

type DeclareCandidacyData

type DeclareCandidacyData struct {
	Address    types.Address
	PubKey     types.Pubkey
	Commission uint
	Coin       types.CoinSymbol
	Stake      *big.Int
}

func (DeclareCandidacyData) BasicCheck added in v0.8.0

func (data DeclareCandidacyData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (DeclareCandidacyData) Gas added in v0.0.6

func (data DeclareCandidacyData) Gas() int64

func (DeclareCandidacyData) MarshalJSON

func (data DeclareCandidacyData) MarshalJSON() ([]byte, error)

func (DeclareCandidacyData) Run added in v0.0.6

func (data DeclareCandidacyData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (DeclareCandidacyData) String added in v0.0.6

func (data DeclareCandidacyData) String() string

func (DeclareCandidacyData) TotalSpend added in v0.8.0

func (data DeclareCandidacyData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

type Decoder added in v0.9.0

type Decoder struct {
	// contains filtered or unexported fields
}

func (*Decoder) DecodeFromBytes added in v0.9.0

func (decoder *Decoder) DecodeFromBytes(buf []byte) (*Transaction, error)

func (*Decoder) DecodeFromBytesWithoutSig added in v1.1.0

func (decoder *Decoder) DecodeFromBytesWithoutSig(buf []byte) (*Transaction, error)

func (*Decoder) RegisterType added in v0.9.0

func (decoder *Decoder) RegisterType(t TxType, d Data)

type DelegateData

type DelegateData struct {
	PubKey types.Pubkey
	Coin   types.CoinSymbol
	Value  *big.Int
}

func (DelegateData) BasicCheck added in v0.8.0

func (data DelegateData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (DelegateData) Gas added in v0.0.6

func (data DelegateData) Gas() int64

func (DelegateData) MarshalJSON

func (data DelegateData) MarshalJSON() ([]byte, error)

func (DelegateData) Run added in v0.0.6

func (data DelegateData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (DelegateData) String added in v0.0.6

func (data DelegateData) String() string

func (DelegateData) TotalSpend added in v0.8.0

func (data DelegateData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

type EditCandidateData added in v0.10.0

type EditCandidateData struct {
	PubKey        types.Pubkey
	RewardAddress types.Address
	OwnerAddress  types.Address
}

func (EditCandidateData) BasicCheck added in v0.10.0

func (data EditCandidateData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (EditCandidateData) Gas added in v0.10.0

func (data EditCandidateData) Gas() int64

func (EditCandidateData) GetPubKey added in v0.14.0

func (data EditCandidateData) GetPubKey() types.Pubkey

func (EditCandidateData) MarshalJSON added in v1.1.0

func (data EditCandidateData) MarshalJSON() ([]byte, error)

func (EditCandidateData) Run added in v0.10.0

func (data EditCandidateData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (EditCandidateData) String added in v0.10.0

func (data EditCandidateData) String() string

func (EditCandidateData) TotalSpend added in v0.10.0

func (data EditCandidateData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

type MultisendData added in v0.7.0

type MultisendData struct {
	List []MultisendDataItem `json:"list"`
}

func (MultisendData) BasicCheck added in v0.8.0

func (data MultisendData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (MultisendData) Gas added in v0.7.0

func (data MultisendData) Gas() int64

func (MultisendData) Run added in v0.7.0

func (data MultisendData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (MultisendData) String added in v0.7.0

func (data MultisendData) String() string

func (MultisendData) TotalSpend added in v0.8.0

func (data MultisendData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

type MultisendDataItem added in v0.7.0

type MultisendDataItem struct {
	Coin  types.CoinSymbol
	To    types.Address
	Value *big.Int
}

func (MultisendDataItem) MarshalJSON added in v1.1.0

func (item MultisendDataItem) MarshalJSON() ([]byte, error)

type RawData

type RawData []byte

type RedeemCheckData

type RedeemCheckData struct {
	RawCheck []byte
	Proof    [65]byte
}

func (RedeemCheckData) BasicCheck added in v0.8.0

func (data RedeemCheckData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (RedeemCheckData) CommissionInBaseCoin added in v0.8.0

func (data RedeemCheckData) CommissionInBaseCoin(tx *Transaction) *big.Int

func (RedeemCheckData) Gas added in v0.0.6

func (data RedeemCheckData) Gas() int64

func (RedeemCheckData) MarshalJSON

func (data RedeemCheckData) MarshalJSON() ([]byte, error)

func (RedeemCheckData) Run added in v0.0.6

func (data RedeemCheckData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (RedeemCheckData) String added in v0.0.6

func (data RedeemCheckData) String() string

func (RedeemCheckData) TotalSpend added in v0.8.0

func (data RedeemCheckData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

type Response

type Response struct {
	Code      uint32    `json:"code,omitempty"`
	Data      []byte    `json:"data,omitempty"`
	Log       string    `json:"log,omitempty"`
	Info      string    `json:"-"`
	GasWanted int64     `json:"gas_wanted,omitempty"`
	GasUsed   int64     `json:"gas_used,omitempty"`
	Tags      []kv.Pair `json:"tags,omitempty"`
	GasPrice  uint32    `json:"gas_price"`
}

func CheckForCoinSupplyOverflow added in v0.8.0

func CheckForCoinSupplyOverflow(current *big.Int, delta *big.Int, max *big.Int) *Response

func CheckReserveUnderflow added in v1.1.0

func CheckReserveUnderflow(m *coins.Model, delta *big.Int) *Response

func RunTx

func RunTx(context state.Interface,
	isCheck bool,
	rawTx []byte,
	rewardPool *big.Int,
	currentBlock uint64,
	currentMempool *sync.Map,
	minGasPrice uint32) Response

type SellAllCoinData added in v0.1.2

type SellAllCoinData struct {
	CoinToSell        types.CoinSymbol
	CoinToBuy         types.CoinSymbol
	MinimumValueToBuy *big.Int
}

func (SellAllCoinData) BasicCheck added in v0.8.0

func (data SellAllCoinData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (SellAllCoinData) Gas added in v0.1.2

func (data SellAllCoinData) Gas() int64

func (SellAllCoinData) MarshalJSON added in v0.1.2

func (data SellAllCoinData) MarshalJSON() ([]byte, error)

func (SellAllCoinData) Run added in v0.1.2

func (data SellAllCoinData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (SellAllCoinData) String added in v0.1.2

func (data SellAllCoinData) String() string

func (SellAllCoinData) TotalSpend added in v0.8.0

func (data SellAllCoinData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

type SellCoinData added in v0.0.6

type SellCoinData struct {
	CoinToSell        types.CoinSymbol
	ValueToSell       *big.Int
	CoinToBuy         types.CoinSymbol
	MinimumValueToBuy *big.Int
}

func (SellCoinData) BasicCheck added in v0.8.0

func (data SellCoinData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (SellCoinData) Gas added in v0.0.6

func (data SellCoinData) Gas() int64

func (SellCoinData) MarshalJSON added in v0.0.6

func (data SellCoinData) MarshalJSON() ([]byte, error)

func (SellCoinData) Run added in v0.0.6

func (data SellCoinData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (SellCoinData) String added in v0.0.6

func (data SellCoinData) String() string

func (SellCoinData) TotalSpend added in v0.8.0

func (data SellCoinData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

type SendData

type SendData struct {
	Coin  types.CoinSymbol
	To    types.Address
	Value *big.Int
}

func (SendData) BasicCheck added in v0.8.0

func (data SendData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (SendData) Gas added in v0.0.6

func (data SendData) Gas() int64

func (SendData) MarshalJSON

func (data SendData) MarshalJSON() ([]byte, error)

func (SendData) Run added in v0.0.6

func (data SendData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (SendData) String added in v0.0.6

func (data SendData) String() string

func (SendData) TotalSpend added in v0.8.0

func (data SendData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

type SetCandidateOffData

type SetCandidateOffData struct {
	PubKey types.Pubkey `json:"pub_key"`
}

func (SetCandidateOffData) BasicCheck added in v0.8.0

func (data SetCandidateOffData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (SetCandidateOffData) Gas added in v0.0.6

func (data SetCandidateOffData) Gas() int64

func (SetCandidateOffData) GetPubKey added in v0.14.0

func (data SetCandidateOffData) GetPubKey() types.Pubkey

func (SetCandidateOffData) MarshalJSON

func (data SetCandidateOffData) MarshalJSON() ([]byte, error)

func (SetCandidateOffData) Run added in v0.0.6

func (data SetCandidateOffData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (SetCandidateOffData) String added in v0.0.6

func (data SetCandidateOffData) String() string

func (SetCandidateOffData) TotalSpend added in v0.8.0

func (data SetCandidateOffData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

type SetCandidateOnData

type SetCandidateOnData struct {
	PubKey types.Pubkey
}

func (SetCandidateOnData) BasicCheck added in v0.8.0

func (data SetCandidateOnData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (SetCandidateOnData) Gas added in v0.0.6

func (data SetCandidateOnData) Gas() int64

func (SetCandidateOnData) GetPubKey added in v0.14.0

func (data SetCandidateOnData) GetPubKey() types.Pubkey

func (SetCandidateOnData) MarshalJSON

func (data SetCandidateOnData) MarshalJSON() ([]byte, error)

func (SetCandidateOnData) Run added in v0.0.6

func (data SetCandidateOnData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (SetCandidateOnData) String added in v0.0.6

func (data SetCandidateOnData) String() string

func (SetCandidateOnData) TotalSpend added in v0.8.0

func (data SetCandidateOnData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

type SigType added in v0.9.0

type SigType byte

type Signature added in v0.5.0

type Signature struct {
	V *big.Int
	R *big.Int
	S *big.Int
}

type SignatureMulti added in v0.5.0

type SignatureMulti struct {
	Multisig   types.Address
	Signatures []Signature
}

type TotalSpend added in v0.8.0

type TotalSpend struct {
	Coin  types.CoinSymbol
	Value *big.Int
}

type TotalSpends added in v0.8.0

type TotalSpends []TotalSpend

func (*TotalSpends) Add added in v0.8.0

func (tss *TotalSpends) Add(coin types.CoinSymbol, value *big.Int)

type Transaction

type Transaction struct {
	Nonce         uint64
	ChainID       types.ChainID
	GasPrice      uint32
	GasCoin       types.CoinSymbol
	Type          TxType
	Data          RawData
	Payload       []byte
	ServiceData   []byte
	SignatureType SigType
	SignatureData []byte
	// contains filtered or unexported fields
}

func DecodeSig added in v1.1.0

func DecodeSig(tx *Transaction) (*Transaction, error)

func (*Transaction) CommissionInBaseCoin added in v0.8.0

func (tx *Transaction) CommissionInBaseCoin() *big.Int

func (*Transaction) Gas

func (tx *Transaction) Gas() int64

func (*Transaction) GetDecodedData

func (tx *Transaction) GetDecodedData() Data

func (*Transaction) Hash

func (tx *Transaction) Hash() types.Hash

func (*Transaction) Sender

func (tx *Transaction) Sender() (types.Address, error)

func (*Transaction) Serialize

func (tx *Transaction) Serialize() ([]byte, error)

func (*Transaction) SetDecodedData

func (tx *Transaction) SetDecodedData(data Data)

func (*Transaction) SetMultisigAddress added in v0.5.0

func (tx *Transaction) SetMultisigAddress(address types.Address)

func (*Transaction) SetSignature

func (tx *Transaction) SetSignature(sig []byte)

func (*Transaction) Sign

func (tx *Transaction) Sign(prv *ecdsa.PrivateKey) error

func (*Transaction) String

func (tx *Transaction) String() string

type TxType added in v0.9.0

type TxType byte

type UnbondData

type UnbondData struct {
	PubKey types.Pubkey
	Coin   types.CoinSymbol
	Value  *big.Int
}

func (UnbondData) BasicCheck added in v0.8.0

func (data UnbondData) BasicCheck(tx *Transaction, context *state.CheckState) *Response

func (UnbondData) Gas added in v0.0.6

func (data UnbondData) Gas() int64

func (UnbondData) MarshalJSON

func (data UnbondData) MarshalJSON() ([]byte, error)

func (UnbondData) Run added in v0.0.6

func (data UnbondData) Run(tx *Transaction, context state.Interface, rewardPool *big.Int, currentBlock uint64) Response

func (UnbondData) String added in v0.0.6

func (data UnbondData) String() string

func (UnbondData) TotalSpend added in v0.8.0

func (data UnbondData) TotalSpend(tx *Transaction, context *state.CheckState) (TotalSpends, []Conversion, *big.Int, *Response)

Jump to

Keyboard shortcuts

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