1 Star 0 Fork 0

符策委/wallet-grpc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
transaction.go 1.38 KB
一键复制 编辑 原始数据 按行查看 历史
符策委 提交于 2023-10-13 14:07 +08:00 . factor: mod master;
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
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/fu-ce-wei/wallet-grpc.git
git@gitee.com:fu-ce-wei/wallet-grpc.git
fu-ce-wei
wallet-grpc
wallet-grpc
3f3ae683dd35

搜索帮助