OSDN Git Service

Merger utxo (#383)
[bytom/vapor.git] / toolbar / mergeutxo / merger_utxo.go
diff --git a/toolbar/mergeutxo/merger_utxo.go b/toolbar/mergeutxo/merger_utxo.go
new file mode 100755 (executable)
index 0000000..d8ca307
--- /dev/null
@@ -0,0 +1,41 @@
+package mergeutxo
+
+import (
+       "github.com/vapor/consensus"
+       "github.com/vapor/protocol/bc"
+       "github.com/vapor/protocol/bc/types"
+       "github.com/vapor/toolbar/apinode"
+)
+
+func MergeUTXO(hostPort, accountID, password, address string, amount uint64) ([]string, error) {
+       actions := []interface{}{}
+
+       actions = append(actions, &apinode.ControlAddressAction{
+               Address:     address,
+               AssetAmount: &bc.AssetAmount{AssetId: consensus.BTMAssetID, Amount: amount},
+       })
+
+       actions = append(actions, &apinode.SpendAccountAction{
+               AccountID:   accountID,
+               AssetAmount: &bc.AssetAmount{AssetId: consensus.BTMAssetID, Amount: amount},
+       })
+
+       node := apinode.NewNode(hostPort)
+
+       tpls, err := node.BuildChainTxs(actions)
+       if err != nil {
+               return []string{}, err
+       }
+
+       tpls, err = node.SignTxs(tpls, password)
+       if err != nil {
+               return []string{}, err
+       }
+
+       txs := []*types.Tx{}
+       for _, tpl := range tpls {
+               txs = append(txs, tpl.Transaction)
+       }
+
+       return node.SubmitTxs(txs)
+}