ontio / ontology-go-sdk

SDK for Ontology
24 stars 44 forks source link

gosdk 的 ont|ong.transfer 怎么设置 payer? #53

Closed straysh closed 5 years ago

straysh commented 5 years ago

假设: a 向 b 转账 1 ONT,通常是a地址扣除1ONT,0.01ONG, b地址收到1ONT 看见java sdk中可以设置 gas 的扣费地址,是不是说 可以设置为 0.01ONG由 C 地址扣除

gosdk中, MutableTransaction 也可以设置Payer

type MutableTransaction struct {
    Version  byte
    TxType   TransactionType
    Nonce    uint32
    GasPrice uint64
    GasLimit uint64
    Payer    common.Address
    Payload  Payload
    //Attributes []*TxAttribute
    attributes byte //this must be 0 now, Attribute Array length use VarUint encoding, so byte is enough for extension
    Sigs       []Sig
}

那么怎么构造这样的交易呢?

straysh commented 5 years ago
// 设置 payer
ont := ontcore.OntSdk.Native.Ont
tx, err := ont.NewTransferTransaction(gasPrice, gasLimit, from.Address, to, amount);if err!=nil {panic(err)}
err = ontcore.OntSdk.SignToTransaction(tx, payer);if err!=nil {panic(err)}
err = ontcore.OntSdk.SignToTransaction(tx, from);if err!=nil {panic(err)}
txhash,err := ontcore.OntSdk.SendTransaction(tx);if err!=nil {panic(err)}

事实上,用payer再签名一次就可以了。

交易详情 0775c6e10a5b6e5cf68212f364ea2b36c5ce5cfa197a20442064bbe46d009bbe