--- /dev/null
+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)
+}