OSDN Git Service

feat(version): update version to 1.1.0
[bytom/bytom.git] / account / builder.go
index ec569c3..f4d4040 100644 (file)
@@ -4,22 +4,15 @@ import (
        "context"
        "encoding/json"
 
-       "github.com/bytom/blockchain/signers"
-       "github.com/bytom/blockchain/txbuilder"
-       "github.com/bytom/common"
-       "github.com/bytom/consensus"
-       "github.com/bytom/crypto/ed25519/chainkd"
-       "github.com/bytom/errors"
-       "github.com/bytom/protocol/bc"
-       "github.com/bytom/protocol/bc/types"
-       "github.com/bytom/protocol/vm/vmutil"
-)
-
-var (
-       //chainTxUtxoNum maximum utxo quantity in a tx
-       chainTxUtxoNum = 5
-       //chainTxMergeGas chain tx gas
-       chainTxMergeGas = uint64(10000000)
+       "github.com/bytom/bytom/blockchain/signers"
+       "github.com/bytom/bytom/blockchain/txbuilder"
+       "github.com/bytom/bytom/common"
+       "github.com/bytom/bytom/consensus"
+       "github.com/bytom/bytom/crypto/ed25519/chainkd"
+       "github.com/bytom/bytom/errors"
+       "github.com/bytom/bytom/protocol/bc"
+       "github.com/bytom/bytom/protocol/bc/types"
+       "github.com/bytom/bytom/protocol/vm/vmutil"
 )
 
 //DecodeSpendAction unmarshal JSON-encoded data of spend action
@@ -66,8 +59,8 @@ func MergeSpendAction(actions []txbuilder.Action) []txbuilder.Action {
 func calcMergeGas(num int) uint64 {
        gas := uint64(0)
        for num > 1 {
-               gas += chainTxMergeGas
-               num -= chainTxUtxoNum - 1
+               gas += txbuilder.ChainTxMergeGas
+               num -= txbuilder.ChainTxUtxoNum - 1
        }
        return gas
 }
@@ -117,11 +110,11 @@ func (m *Manager) buildBtmTxChain(utxos []*UTXO, signer *signers.Signer) ([]*txb
                }
 
                buildAmount += input.Amount()
-               if builder.InputCount() != chainTxUtxoNum && index != len(utxos)-1 {
+               if builder.InputCount() != txbuilder.ChainTxUtxoNum && index != len(utxos)-1 {
                        continue
                }
 
-               outAmount := buildAmount - chainTxMergeGas
+               outAmount := buildAmount - txbuilder.ChainTxMergeGas
                output := types.NewTxOutput(*consensus.BTMAssetID, outAmount, acp.ControlProgram)
                if err := builder.AddOutput(output); err != nil {
                        return nil, nil, err
@@ -209,6 +202,9 @@ func (a *spendAction) Build(ctx context.Context, b *txbuilder.TemplateBuilder) e
        if a.AssetId.IsZero() {
                missing = append(missing, "asset_id")
        }
+       if a.AssetAmount.Amount == 0 {
+               missing = append(missing, "amount")
+       }
        if len(missing) > 0 {
                return txbuilder.MissingFieldsError(missing...)
        }