7 log "github.com/sirupsen/logrus"
8 "github.com/vapor/account"
9 "github.com/vapor/blockchain/pseudohsm"
10 "github.com/vapor/blockchain/txbuilder"
11 "github.com/vapor/config"
12 "github.com/vapor/crypto/ed25519/chainkd"
13 "github.com/vapor/protocol/bc"
16 func (a *API) dpos(ctx context.Context, ins struct {
18 Fee uint64 `json:"fee"`
19 Stake uint64 `json:"stake"`
20 TxType uint32 `json:"tx_type"`
23 var assetID bc.AssetID
24 assetID.UnmarshalText([]byte("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"))
26 dpos := account.DopsAction{
27 Accounts: a.wallet.AccountMgr,
28 From: config.CommonConfig.Consensus.Dpos.Coinbase,
33 dpos.Amount = ins.Stake
34 dpos.AssetId = &assetID
35 builder := txbuilder.NewBuilder(time.Now())
36 if err := dpos.Build(ctx, builder); err != nil {
37 return NewErrorResponse(err)
41 tmpl, _, err := builder.Build()
43 return NewErrorResponse(err)
46 xprv.UnmarshalText([]byte(config.CommonConfig.Consensus.Dpos.XPrv))
47 if err := pseudohsm.SignWithKey(tmpl, xprv); err != nil {
48 return NewErrorResponse(err)
50 log.Info("Sign Transaction complete.")
51 log.Info(txbuilder.SignProgress(tmpl))
52 //return NewSuccessResponse(&signTemplateResp{Tx: tmpl, SignComplete: txbuilder.SignProgress(tmpl)})
55 if err := txbuilder.FinalizeTx(ctx, a.chain, tmpl.Transaction); err != nil {
56 return NewErrorResponse(err)
59 log.WithField("tx_id", tmpl.Transaction.ID.String()).Info("submit single tx")
60 return NewSuccessResponse(&submitTxResp{TxID: &tmpl.Transaction.ID})