代码拉取完成,页面将自动刷新
package solana
import (
"encoding/hex"
"gitee.com/fu-ce-wei/wallet-grpc/core/base"
"github.com/portto/solana-go-sdk/types"
)
type Transaction struct {
Message types.Message
}
func (t *Transaction) SignWithAccount(account base.Account) (signedTxn *base.OptionalString, err error) {
txn, err := t.SignedTransactionWithAccount(account)
if err != nil {
return nil, err
}
return txn.HexString()
}
func (t *Transaction) SignedTransactionWithAccount(account base.Account) (signedTxn base.SignedTransaction, err error) {
solanaAcc := AsSolanaAccount(account)
if solanaAcc == nil {
return nil, base.ErrInvalidAccountType
}
// create tx by message + signer
txn, err := types.NewTransaction(types.NewTransactionParam{
Message: t.Message,
Signers: []types.Account{*solanaAcc.account, *solanaAcc.account},
})
if err != nil {
return nil, err
}
return &SignedTransaction{
Transaction: txn,
}, nil
}
type SignedTransaction struct {
Transaction types.Transaction
}
func (txn *SignedTransaction) HexString() (res *base.OptionalString, err error) {
txnBytes, err := txn.Transaction.Serialize()
if err != nil {
return nil, err
}
hexString := "0x" + hex.EncodeToString(txnBytes)
return &base.OptionalString{Value: hexString}, nil
}
func AsSignedTransaction(txn base.SignedTransaction) *SignedTransaction {
if res, ok := txn.(*SignedTransaction); ok {
return res
}
return nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。