package test
import (
+ "context"
"testing"
acc "github.com/vapor/account"
"github.com/vapor/blockchain/signers"
+ "github.com/vapor/blockchain/txbuilder"
"github.com/vapor/consensus"
"github.com/vapor/crypto/ed25519/chainkd"
"github.com/vapor/protocol/bc"
}
}
-// func TestMergeSpendAction(t *testing.T) {
-// testBTM := &bc.AssetID{}
-// if err := testBTM.UnmarshalText([]byte("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")); err != nil {
-// t.Fatal(err)
-// }
+func TestMergeSpendAction(t *testing.T) {
+ testBTM := &bc.AssetID{}
+ if err := testBTM.UnmarshalText([]byte("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")); err != nil {
+ t.Fatal(err)
+ }
-// testAssetID1 := &bc.AssetID{}
-// if err := testAssetID1.UnmarshalText([]byte("50ec80b6bc48073f6aa8fa045131a71213c33f3681203b15ddc2e4b81f1f4730")); err != nil {
-// t.Fatal(err)
-// }
+ testAssetID1 := &bc.AssetID{}
+ if err := testAssetID1.UnmarshalText([]byte("50ec80b6bc48073f6aa8fa045131a71213c33f3681203b15ddc2e4b81f1f4730")); err != nil {
+ t.Fatal(err)
+ }
-// testAssetID2 := &bc.AssetID{}
-// if err := testAssetID2.UnmarshalText([]byte("43c6946d092b2959c1a82e90b282c68fca63e66de289048f6acd6cea9383c79c")); err != nil {
-// t.Fatal(err)
-// }
+ testAssetID2 := &bc.AssetID{}
+ if err := testAssetID2.UnmarshalText([]byte("43c6946d092b2959c1a82e90b282c68fca63e66de289048f6acd6cea9383c79c")); err != nil {
+ t.Fatal(err)
+ }
-// cases := []struct {
-// testActions []txbuilder.Action
-// wantActions []txbuilder.Action
-// testActionCount int
-// wantActionCount int
-// }{
-// {
-// testActions: []txbuilder.Action{
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 100,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 200,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 300,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID1,
-// Amount: 300,
-// },
-// AccountID: "test_account",
-// }),
-// },
-// wantActions: []txbuilder.Action{
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 600,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID1,
-// Amount: 300,
-// },
-// AccountID: "test_account",
-// }),
-// },
-// testActionCount: 4,
-// wantActionCount: 2,
-// },
-// {
-// testActions: []txbuilder.Action{
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 100,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID1,
-// Amount: 200,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 500,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID1,
-// Amount: 300,
-// },
-// AccountID: "test_account",
-// }),
-// },
-// wantActions: []txbuilder.Action{
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 600,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID1,
-// Amount: 500,
-// },
-// AccountID: "test_account",
-// }),
-// },
-// testActionCount: 4,
-// wantActionCount: 2,
-// },
-// {
-// testActions: []txbuilder.Action{
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 100,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID1,
-// Amount: 200,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID2,
-// Amount: 300,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID1,
-// Amount: 300,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID2,
-// Amount: 500,
-// },
-// AccountID: "test_account",
-// }),
-// },
-// wantActions: []txbuilder.Action{
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 100,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID1,
-// Amount: 500,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID2,
-// Amount: 800,
-// },
-// AccountID: "test_account",
-// }),
-// },
-// testActionCount: 5,
-// wantActionCount: 3,
-// },
-// {
-// testActions: []txbuilder.Action{
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 100,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 200,
-// },
-// AccountID: "test_account1",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 500,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID1,
-// Amount: 300,
-// },
-// AccountID: "test_account1",
-// }),
-// },
-// wantActions: []txbuilder.Action{
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 600,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 200,
-// },
-// AccountID: "test_account1",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID1,
-// Amount: 300,
-// },
-// AccountID: "test_account1",
-// }),
-// },
-// testActionCount: 4,
-// wantActionCount: 3,
-// },
-// {
-// testActions: []txbuilder.Action{
-// txbuilder.Action(&spendUTXOAction{
-// OutputID: &bc.Hash{V0: 128},
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 100,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID1,
-// Amount: 200,
-// },
-// AccountID: "test_account1",
-// }),
-// txbuilder.Action(&spendUTXOAction{
-// OutputID: &bc.Hash{V0: 256},
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID2,
-// Amount: 300,
-// },
-// AccountID: "test_account2",
-// }),
-// },
-// wantActions: []txbuilder.Action{
-// txbuilder.Action(&spendUTXOAction{
-// OutputID: &bc.Hash{V0: 128},
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testBTM,
-// Amount: 100,
-// },
-// AccountID: "test_account",
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID1,
-// Amount: 200,
-// },
-// AccountID: "test_account1",
-// }),
-// txbuilder.Action(&spendUTXOAction{
-// OutputID: &bc.Hash{V0: 256},
-// }),
-// txbuilder.Action(&spendAction{
-// AssetAmount: bc.AssetAmount{
-// AssetId: testAssetID2,
-// Amount: 300,
-// },
-// AccountID: "test_account2",
-// }),
-// },
-// testActionCount: 5,
-// wantActionCount: 5,
-// },
-// }
+ cases := []struct {
+ testActions []txbuilder.Action
+ wantActions []txbuilder.Action
+ testActionCount int
+ wantActionCount int
+ }{
+ {
+ testActions: []txbuilder.Action{
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 100,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 200,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 300,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID1,
+ Amount: 300,
+ },
+ AccountID: "test_account",
+ }),
+ },
+ wantActions: []txbuilder.Action{
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 600,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID1,
+ Amount: 300,
+ },
+ AccountID: "test_account",
+ }),
+ },
+ testActionCount: 4,
+ wantActionCount: 2,
+ },
+ {
+ testActions: []txbuilder.Action{
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 100,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID1,
+ Amount: 200,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 500,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID1,
+ Amount: 300,
+ },
+ AccountID: "test_account",
+ }),
+ },
+ wantActions: []txbuilder.Action{
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 600,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID1,
+ Amount: 500,
+ },
+ AccountID: "test_account",
+ }),
+ },
+ testActionCount: 4,
+ wantActionCount: 2,
+ },
+ {
+ testActions: []txbuilder.Action{
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 100,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID1,
+ Amount: 200,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID2,
+ Amount: 300,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID1,
+ Amount: 300,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID2,
+ Amount: 500,
+ },
+ AccountID: "test_account",
+ }),
+ },
+ wantActions: []txbuilder.Action{
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 100,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID1,
+ Amount: 500,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID2,
+ Amount: 800,
+ },
+ AccountID: "test_account",
+ }),
+ },
+ testActionCount: 5,
+ wantActionCount: 3,
+ },
+ {
+ testActions: []txbuilder.Action{
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 100,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 200,
+ },
+ AccountID: "test_account1",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 500,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID1,
+ Amount: 300,
+ },
+ AccountID: "test_account1",
+ }),
+ },
+ wantActions: []txbuilder.Action{
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 600,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 200,
+ },
+ AccountID: "test_account1",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID1,
+ Amount: 300,
+ },
+ AccountID: "test_account1",
+ }),
+ },
+ testActionCount: 4,
+ wantActionCount: 3,
+ },
+ {
+ testActions: []txbuilder.Action{
+ txbuilder.Action(&mockSpendUTXOAction{
+ OutputID: &bc.Hash{V0: 128},
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 100,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID1,
+ Amount: 200,
+ },
+ AccountID: "test_account1",
+ }),
+ txbuilder.Action(&mockSpendUTXOAction{
+ OutputID: &bc.Hash{V0: 256},
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID2,
+ Amount: 300,
+ },
+ AccountID: "test_account2",
+ }),
+ },
+ wantActions: []txbuilder.Action{
+ txbuilder.Action(&mockSpendUTXOAction{
+ OutputID: &bc.Hash{V0: 128},
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testBTM,
+ Amount: 100,
+ },
+ AccountID: "test_account",
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID1,
+ Amount: 200,
+ },
+ AccountID: "test_account1",
+ }),
+ txbuilder.Action(&mockSpendUTXOAction{
+ OutputID: &bc.Hash{V0: 256},
+ }),
+ txbuilder.Action(&mockSpendAction{
+ AssetAmount: bc.AssetAmount{
+ AssetId: testAssetID2,
+ Amount: 300,
+ },
+ AccountID: "test_account2",
+ }),
+ },
+ testActionCount: 5,
+ wantActionCount: 5,
+ },
+ }
-// for _, c := range cases {
-// gotActions := acc.MergeSpendAction(c.testActions)
-
-// gotMap := make(map[string]uint64)
-// wantMap := make(map[string]uint64)
-// for _, got := range gotActions {
-// switch got := got.(type) {
-// case *spendAction:
-// gotKey := got.AssetId.String() + got.AccountID
-// gotMap[gotKey] = got.Amount
-// default:
-// continue
-// }
-// }
+ for i, c := range cases {
+ gotActions := acc.MergeSpendAction(c.testActions)
+
+ gotMap := make(map[string]uint64)
+ wantMap := make(map[string]uint64)
+ for _, got := range gotActions {
+ switch got := got.(type) {
+ case *mockSpendAction:
+ gotKey := got.AssetId.String() + got.AccountID
+ gotMap[gotKey] = got.Amount
+ default:
+ continue
+ }
+ }
-// for _, want := range c.wantActions {
-// switch want := want.(type) {
-// case *spendAction:
-// wantKey := want.AssetId.String() + want.AccountID
-// wantMap[wantKey] = want.Amount
-// default:
-// continue
-// }
-// }
+ for _, want := range c.wantActions {
+ switch want := want.(type) {
+ case *mockSpendAction:
+ wantKey := want.AssetId.String() + want.AccountID
+ wantMap[wantKey] = want.Amount
+ default:
+ continue
+ }
+ }
-// for key := range gotMap {
-// if gotMap[key] != wantMap[key] {
-// t.Fatalf("gotMap[%s]=%v, wantMap[%s]=%v", key, gotMap[key], key, wantMap[key])
-// }
-// }
+ for key := range gotMap {
+ if gotMap[key] != wantMap[key] {
+ t.Errorf("case: %v, gotMap[%s]=%v, wantMap[%s]=%v", i, key, gotMap[key], key, wantMap[key])
+ }
+ }
-// if len(gotActions) != c.wantActionCount {
-// t.Fatalf("number of gotActions=%d, wantActions=%d", len(gotActions), c.wantActionCount)
-// }
-// }
-// }
+ if len(gotActions) != c.wantActionCount {
+ t.Errorf("case: %v, number of gotActions=%d, wantActions=%d", i, len(gotActions), c.wantActionCount)
+ }
+ }
+}
func TestCalcMergeGas(t *testing.T) {
chainTxUtxoNum = 10
AccountID string `json:"account_id"`
UseUnconfirmed bool `json:"use_unconfirmed"`
}
+
+func (a *mockSpendAction) ActionType() string {
+ return "spend_account"
+}
+
+func (a *mockSpendAction) Build(ctx context.Context, b *txbuilder.TemplateBuilder) error {
+ // var missing []string
+ // if a.AccountID == "" {
+ // missing = append(missing, "account_id")
+ // }
+ // if a.AssetId.IsZero() {
+ // missing = append(missing, "asset_id")
+ // }
+ // if len(missing) > 0 {
+ // return txbuilder.MissingFieldsError(missing...)
+ // }
+
+ // acct, err := a.accounts.FindByID(a.AccountID)
+ // if err != nil {
+ // return errors.Wrap(err, "get account info")
+ // }
+
+ // res, err := a.accounts.utxoKeeper.Reserve(a.AccountID, a.AssetId, a.Amount, a.UseUnconfirmed, nil, b.MaxTime())
+ // if err != nil {
+ // return errors.Wrap(err, "reserving utxos")
+ // }
+
+ // // Cancel the reservation if the build gets rolled back.
+ // b.OnRollback(func() { a.accounts.utxoKeeper.Cancel(res.id) })
+ // for _, r := range res.utxos {
+ // txInput, sigInst, err := UtxoToInputs(acct.Signer, r)
+ // if err != nil {
+ // return errors.Wrap(err, "creating inputs")
+ // }
+
+ // if err = b.AddInput(txInput, sigInst); err != nil {
+ // return errors.Wrap(err, "adding inputs")
+ // }
+ // }
+
+ // if res.change > 0 {
+ // acp, err := a.accounts.CreateAddress(a.AccountID, true)
+ // if err != nil {
+ // return errors.Wrap(err, "creating control program")
+ // }
+
+ // // Don't insert the control program until callbacks are executed.
+ // a.accounts.insertControlProgramDelayed(b, acp)
+ // if err = b.AddOutput(types.NewIntraChainOutput(*a.AssetId, res.change, acp.ControlProgram)); err != nil {
+ // return errors.Wrap(err, "adding change output")
+ // }
+ // }
+ return nil
+}
+
+type mockSpendUTXOAction struct {
+ accounts *acc.Manager
+ OutputID *bc.Hash `json:"output_id"`
+ UseUnconfirmed bool `json:"use_unconfirmed"`
+ Arguments []txbuilder.ContractArgument `json:"arguments"`
+}
+
+func (a *mockSpendUTXOAction) ActionType() string {
+ return "spend_account_unspent_output"
+}
+
+func (a *mockSpendUTXOAction) Build(ctx context.Context, b *txbuilder.TemplateBuilder) error {
+ // if a.OutputID == nil {
+ // return txbuilder.MissingFieldsError("output_id")
+ // }
+
+ // res, err := a.accounts.utxoKeeper.ReserveParticular(*a.OutputID, a.UseUnconfirmed, b.MaxTime())
+ // if err != nil {
+ // return err
+ // }
+
+ // b.OnRollback(func() { a.accounts.utxoKeeper.Cancel(res.id) })
+ // var accountSigner *signers.Signer
+ // if len(res.utxos[0].AccountID) != 0 {
+ // account, err := a.accounts.FindByID(res.utxos[0].AccountID)
+ // if err != nil {
+ // return err
+ // }
+
+ // accountSigner = account.Signers
+ // }
+
+ // txInput, sigInst, err := UtxoToInputs(accountSigner, res.utxos[0])
+ // if err != nil {
+ // return err
+ // }
+
+ // if a.Arguments == nil {
+ // return b.AddInput(txInput, sigInst)
+ // }
+
+ // sigInst = &txbuilder.SigningInstruction{}
+ // if err := txbuilder.AddContractArgs(sigInst, a.Arguments); err != nil {
+ // return err
+ // }
+
+ // return b.AddInput(txInput, sigInst)
+
+ return nil
+}