transaction

package
v0.8.2 Latest Latest
Warning

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

Go to latest
Published: Dec 10, 2018 License: MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

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

	SigTypeSingle byte = 0x01
	SigTypeMulti  byte = 0x02
)

Variables

View Source
var (
	ErrInvalidSig = errors.New("invalid transaction v, r, s values")
	MaxCoinSupply = big.NewInt(0).Exp(big.NewInt(1000), big.NewInt(5+18), nil) // 1,000,000,000,000,000 bips
)
View Source
var (
	CommissionMultiplier = big.NewInt(10e14)
)

Functions

func CheckForCoinSupplyOverflow added in v0.8.0

func CheckForCoinSupplyOverflow(current *big.Int, delta *big.Int) error

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 `json:"coin_to_buy"`
	ValueToBuy         *big.Int         `json:"value_to_buy"`
	CoinToSell         types.CoinSymbol `json:"coin_to_sell"`
	MaximumValueToSell *big.Int         `json:"maximum_value_to_sell"`
}

func (BuyCoinData) BasicCheck added in v0.8.0

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

func (BuyCoinData) Gas added in v0.0.6

func (data BuyCoinData) Gas() int64

func (BuyCoinData) Run added in v0.0.6

func (data BuyCoinData) Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (TotalSpends, []Conversion, *big.Int, *Response)

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           `json:"name"`
	Symbol               types.CoinSymbol `json:"symbol"`
	InitialAmount        *big.Int         `json:"initial_amount"`
	InitialReserve       *big.Int         `json:"initial_reserve"`
	ConstantReserveRatio uint             `json:"constant_reserve_ratio"`
}

func (CreateCoinData) BasicCheck added in v0.8.0

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

func (CreateCoinData) Gas added in v0.0.6

func (data CreateCoinData) Gas() int64

func (CreateCoinData) Run added in v0.0.6

func (data CreateCoinData) Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (TotalSpends, []Conversion, *big.Int, *Response)

type CreateMultisigData added in v0.5.0

type CreateMultisigData struct {
	Threshold uint            `json:"threshold"`
	Weights   []uint          `json:"weights"`
	Addresses []types.Address `json:"addresses"`
}

func (CreateMultisigData) BasicCheck added in v0.8.0

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

func (CreateMultisigData) Gas added in v0.5.0

func (data CreateMultisigData) Gas() int64

func (CreateMultisigData) Run added in v0.5.0

func (data CreateMultisigData) Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (TotalSpends, []Conversion, *big.Int, *Response)

type Data

type Data interface {
	String() string
	Gas() int64
	TotalSpend(tx *Transaction, context *state.StateDB) (TotalSpends, []Conversion, *big.Int, *Response)
	BasicCheck(tx *Transaction, context *state.StateDB) *Response
	Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) Response
}

type DeclareCandidacyData

type DeclareCandidacyData struct {
	Address    types.Address    `json:"address"`
	PubKey     types.Pubkey     `json:"pub_key"`
	Commission uint             `json:"commission"`
	Coin       types.CoinSymbol `json:"coin"`
	Stake      *big.Int         `json:"stake"`
}

func (DeclareCandidacyData) BasicCheck added in v0.8.0

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

func (DeclareCandidacyData) Gas added in v0.0.6

func (data DeclareCandidacyData) Gas() int64

func (DeclareCandidacyData) Run added in v0.0.6

func (data DeclareCandidacyData) Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (TotalSpends, []Conversion, *big.Int, *Response)

type DelegateData

type DelegateData struct {
	PubKey types.Pubkey     `json:"pub_key"`
	Coin   types.CoinSymbol `json:"coin"`
	Stake  *big.Int         `json:"stake"`
}

func (DelegateData) BasicCheck added in v0.8.0

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

func (DelegateData) Gas added in v0.0.6

func (data DelegateData) Gas() int64

func (DelegateData) Run added in v0.0.6

func (data DelegateData) Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (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.StateDB) *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.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (TotalSpends, []Conversion, *big.Int, *Response)

type MultisendDataItem added in v0.7.0

type MultisendDataItem struct {
	Coin  types.CoinSymbol `json:"coin"`
	To    types.Address    `json:"to"`
	Value *big.Int         `json:"value"`
}

type RawData

type RawData []byte

type RedeemCheckData

type RedeemCheckData struct {
	RawCheck []byte   `json:"raw_check"`
	Proof    [65]byte `json:"proof"`
}

func (RedeemCheckData) BasicCheck added in v0.8.0

func (data RedeemCheckData) BasicCheck(tx *Transaction, context *state.StateDB) *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) Run added in v0.0.6

func (data RedeemCheckData) Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (TotalSpends, []Conversion, *big.Int, *Response)

type Response

type Response struct {
	Code      uint32          `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Data      []byte          `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
	Log       string          `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"`
	Info      string          `protobuf:"bytes,4,opt,name=info,proto3" json:"info,omitempty"`
	GasWanted int64           `protobuf:"varint,5,opt,name=gas_wanted,json=gasWanted,proto3" json:"gas_wanted,omitempty"`
	GasUsed   int64           `protobuf:"varint,6,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"`
	Tags      []common.KVPair `protobuf:"bytes,7,rep,name=tags" json:"tags,omitempty"`
}

func RunTx

func RunTx(context *state.StateDB, isCheck bool, rawTx []byte, rewardPool *big.Int, currentBlock int64) Response

type SellAllCoinData added in v0.1.2

type SellAllCoinData struct {
	CoinToSell        types.CoinSymbol `json:"coin_to_sell"`
	CoinToBuy         types.CoinSymbol `json:"coin_to_buy"`
	MinimumValueToBuy *big.Int         `json:"minimum_value_to_buy"`
}

func (SellAllCoinData) BasicCheck added in v0.8.0

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

func (SellAllCoinData) Gas added in v0.1.2

func (data SellAllCoinData) Gas() int64

func (SellAllCoinData) Run added in v0.1.2

func (data SellAllCoinData) Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (TotalSpends, []Conversion, *big.Int, *Response)

type SellCoinData added in v0.0.6

type SellCoinData struct {
	CoinToSell        types.CoinSymbol `json:"coin_to_sell"`
	ValueToSell       *big.Int         `json:"value_to_sell"`
	CoinToBuy         types.CoinSymbol `json:"coin_to_buy"`
	MinimumValueToBuy *big.Int         `json:"minimum_value_to_buy"`
}

func (SellCoinData) BasicCheck added in v0.8.0

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

func (SellCoinData) Gas added in v0.0.6

func (data SellCoinData) Gas() int64

func (SellCoinData) Run added in v0.0.6

func (data SellCoinData) Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (TotalSpends, []Conversion, *big.Int, *Response)

type SendData

type SendData struct {
	Coin  types.CoinSymbol `json:"coin"`
	To    types.Address    `json:"to"`
	Value *big.Int         `json:"value"`
}

func (SendData) BasicCheck added in v0.8.0

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

func (SendData) Gas added in v0.0.6

func (data SendData) Gas() int64

func (SendData) Run added in v0.0.6

func (data SendData) Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (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.StateDB) *Response

func (SetCandidateOffData) Gas added in v0.0.6

func (data SetCandidateOffData) Gas() int64

func (SetCandidateOffData) Run added in v0.0.6

func (data SetCandidateOffData) Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (TotalSpends, []Conversion, *big.Int, *Response)

type SetCandidateOnData

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

func (SetCandidateOnData) BasicCheck added in v0.8.0

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

func (SetCandidateOnData) Gas added in v0.0.6

func (data SetCandidateOnData) Gas() int64

func (SetCandidateOnData) Run added in v0.0.6

func (data SetCandidateOnData) Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (TotalSpends, []Conversion, *big.Int, *Response)

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
	GasPrice      *big.Int
	GasCoin       types.CoinSymbol
	Type          byte
	Data          RawData
	Payload       []byte
	ServiceData   []byte
	SignatureType byte
	SignatureData []byte
	// contains filtered or unexported fields
}

func DecodeFromBytes

func DecodeFromBytes(buf []byte) (*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 UnbondData

type UnbondData struct {
	PubKey types.Pubkey     `json:"pub_key"`
	Coin   types.CoinSymbol `json:"coin"`
	Value  *big.Int         `json:"value"`
}

func (UnbondData) BasicCheck added in v0.8.0

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

func (UnbondData) Gas added in v0.0.6

func (data UnbondData) Gas() int64

func (UnbondData) Run added in v0.0.6

func (data UnbondData) Run(tx *Transaction, context *state.StateDB, isCheck bool, rewardPool *big.Int, currentBlock int64) 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.StateDB) (TotalSpends, []Conversion, *big.Int, *Response)

Jump to

Keyboard shortcuts

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