txs

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2018 License: Apache-2.0 Imports: 7 Imported by: 47

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CopyTxStd

func CopyTxStd(dst *TxStd, src *TxStd)

func Extends2Byte

func Extends2Byte(ext []tcommon.KVPair) (ret []byte)

功能:将common.KVPair转化成[]byte todo: test(amino序列化及反序列化的正确性)

func RegisterCodec

func RegisterCodec(cdc *go_amino.Codec)

func Sig2Byte

func Sig2Byte(sgn Signature) []byte

函数:Signature结构转化为 []byte

Types

type ITx

type ITx interface {
	ValidateData() bool                                                 //检测
	Exec(ctx context.Context) (result types.Result, crossTxQcps *TxQcp) //执行, crossTxQcps: 需要跨链处理的TxQcp
	GetSigner() []types.Address                                         //签名者
	CalcGas() types.BigInt                                              //计算gas
	GetGasPayer() types.Address                                         //gas付费人
	GetSignData() []byte                                                //获取签名字段
}

功能:抽象具体的Tx结构体

type QcpTxResult

type QcpTxResult struct {
	Code                int64            `json:"code"`                //执行结果
	Extends             []tcommon.KVPair `json:"extends"`             //结果附加值
	GasUsed             types.BigInt     `json:"gasused"`             //gas消耗值
	QcpOriginalSequence int64            `json:"qcporiginalsequence"` //此结果对应的TxQcp.Sequence
	Info                string           `json:"info"`                //结果信息
}

qos端对TxQcp的执行结果

func NewQcpTxResult

func NewQcpTxResult(code int64, ext []tcommon.KVPair, seq int64, gasusd types.BigInt, info string) (rTx *QcpTxResult)

功能:构建 QcpTxReasult 结构体

func (*QcpTxResult) CalcGas

func (tx *QcpTxResult) CalcGas() types.BigInt

功能:计算gas 备注:暂返回0,后期可根据实际情况调整

func (*QcpTxResult) Exec

func (tx *QcpTxResult) Exec(ctx context.Context) (result types.Result, crossTxQcps *TxQcp)

功能:tx执行 备注:用户根据tx.QcpOriginalSequence,需自行实现此接口

func (*QcpTxResult) GetGasPayer

func (tx *QcpTxResult) GetGasPayer() types.Address

功能:获取gas付费人 备注:返回空(因暂时gas为0,无人需要付gas)

func (*QcpTxResult) GetSignData

func (tx *QcpTxResult) GetSignData() []byte

获取签名字段

func (*QcpTxResult) GetSigner

func (tx *QcpTxResult) GetSigner() []types.Address

功能:获取签名者 备注:qos对QcpTxResult不做签名,故返回空

func (*QcpTxResult) ValidateData

func (tx *QcpTxResult) ValidateData() bool

功能:检测结构体字段的合法性 todo:QcpOriginalSequence 加入检测

type Signature

type Signature struct {
	Pubkey    crypto.PubKey `json:"pubkey"`    //可选
	Signature []byte        `json:"signature"` //签名内容
	Nonce     int64         `json:"nonce"`     //nonce的值
}

签名结构体

type TxQcp

type TxQcp struct {
	Payload     TxStd     `json:"payload"`     //TxStd结构
	From        string    `json:"from"`        //qscName
	To          string    `json:"to"`          //qosName
	Sequence    int64     `json:"sequence"`    //发送Sequence
	Sig         Signature `json:"sig"`         //签名
	BlockHeight int64     `json:"blockheight"` //Tx所在block高度
	TxIndx      int64     `json:"txindx"`      //Tx在block的位置
	IsResult    bool      `json:"isresult"`    //是否为Result
}

功能:

func NewTxQCP

func NewTxQCP(payLoad *TxStd, from string, to string, seq int64, sig Signature,
	bkheigh int64, tidx int64, isResult bool) (rTx *TxQcp)

构建TxQCP结构体

func (*TxQcp) GetSigData

func (tx *TxQcp) GetSigData() []byte

功能:获取 TxQcp 的签名字段 返回:字段拼接后的 []byte

func (*TxQcp) Type

func (tx *TxQcp) Type() string

Type: just for implements types.Tx

func (*TxQcp) ValidateBasicData

func (tx *TxQcp) ValidateBasicData(isCheckTx bool, currentChaindID string) (err types.Error)

ValidateBasicData 校验txQcp基础数据是否合法

type TxStd

type TxStd struct {
	ITx       ITx          `json:"itx"`      //ITx接口,将被具体Tx结构实例化
	Signature []Signature  `json:"sigature"` //签名数组
	ChainID   string       `json:"chainid"`  //ChainID
	MaxGas    types.BigInt `json:"maxgas"`   //Gas消耗的最大值
}

标准Tx结构体

func NewTxStd

func NewTxStd(itx ITx, cid string, mgas types.BigInt) (rTx *TxStd)

构建结构体

func (*TxStd) GetSignData

func (tx *TxStd) GetSignData() []byte

将需要签名的字段拼接成 []byte

func (*TxStd) Type

func (tx *TxStd) Type() string

Type: just for implements types.Tx

func (*TxStd) ValidateBasicData

func (tx *TxStd) ValidateBasicData(isCheckTx bool) (err types.Error)

ValidateBasicData 对txStd进行基础的数据校验 tx.ITx == QcpTxResult时 不校验签名相关信息

Jump to

Keyboard shortcuts

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