"github.com/golang/groupcache/lru"
log "github.com/sirupsen/logrus"
- "github.com/vapor/asset"
"github.com/vapor/blockchain/signers"
"github.com/vapor/blockchain/txbuilder"
"github.com/vapor/common"
db dbm.DB
chain *protocol.Chain
utxoKeeper *utxoKeeper
- assetReg *asset.Registry
cacheMu sync.Mutex
cache *lru.Cache
}
// NewManager creates a new account manager
-func NewManager(walletDB dbm.DB, chain *protocol.Chain, assetReg *asset.Registry) *Manager {
+func NewManager(walletDB dbm.DB, chain *protocol.Chain) *Manager {
return &Manager{
db: walletDB,
chain: chain,
- assetReg: assetReg,
utxoKeeper: newUtxoKeeper(chain.BestBlockHeight, walletDB),
cache: lru.New(maxAccountCache),
aliasCache: lru.New(maxAccountCache),
t.Fatal(err)
}
- return NewManager(testDB, chain, nil)
+ return NewManager(testDB, chain)
}
func (m *Manager) createTestAccount(t testing.TB, alias string, tags map[string]interface{}) *Account {
// TODO: stdjson?
"encoding/json"
- "github.com/vapor/asset"
+ // "github.com/vapor/asset"
"github.com/vapor/blockchain/signers"
"github.com/vapor/blockchain/txbuilder"
"github.com/vapor/common"
"github.com/vapor/consensus"
"github.com/vapor/crypto/ed25519/chainkd"
- chainjson "github.com/vapor/encoding/json"
+ // chainjson "github.com/vapor/encoding/json"
"github.com/vapor/errors"
"github.com/vapor/protocol/bc"
"github.com/vapor/protocol/bc/types"
"github.com/vapor/protocol/vm/vmutil"
- "github.com/vapor/testutil"
+ // "github.com/vapor/testutil"
)
var (
// }
func (a *crossInAction) Build(ctx context.Context, builder *txbuilder.TemplateBuilder) error {
- var missing []string
- if a.AssetId.IsZero() {
- missing = append(missing, "asset_id")
- }
- if a.Amount == 0 {
- missing = append(missing, "amount")
- }
- if len(missing) > 0 {
- return txbuilder.MissingFieldsError(missing...)
- }
+ return nil
+ /* var missing []string
+ if a.AssetId.IsZero() {
+ missing = append(missing, "asset_id")
+ }
+ if a.Amount == 0 {
+ missing = append(missing, "amount")
+ }
+ if len(missing) > 0 {
+ return txbuilder.MissingFieldsError(missing...)
+ }
- // Handle asset definition.
- // Asset issuance's legality is guaranteed by the federation.
- rawDefinition, err := asset.SerializeAssetDef(a.AssetDefinition)
- if err != nil {
- return asset.ErrSerializing
- }
- // TODO: may need to skip here
- if !chainjson.IsValidJSON(rawDefinition) {
- return errors.New("asset definition is not in valid json format")
- }
- if preAsset, _ := a.accounts.assetReg.GetAsset(a.AssetId.String()); preAsset != nil {
- // GetAsset() doesn't unmashall for RawDefinitionBytes
- preRawDefinition, err := asset.SerializeAssetDef(preAsset.DefinitionMap)
+ // Handle asset definition.
+ // Asset issuance's legality is guaranteed by the federation.
+ rawDefinition, err := asset.SerializeAssetDef(a.AssetDefinition)
if err != nil {
return asset.ErrSerializing
}
+ // TODO: may need to skip here
+ if !chainjson.IsValidJSON(rawDefinition) {
+ return errors.New("asset definition is not in valid json format")
+ }
+ if preAsset, _ := a.accounts.assetReg.GetAsset(a.AssetId.String()); preAsset != nil {
+ // GetAsset() doesn't unmashall for RawDefinitionBytes
+ preRawDefinition, err := asset.SerializeAssetDef(preAsset.DefinitionMap)
+ if err != nil {
+ return asset.ErrSerializing
+ }
- if !testutil.DeepEqual(preRawDefinition, rawDefinition) && !UpdateAssetDef {
- return errors.New("asset definition mismatch with previous definition")
+ if !testutil.DeepEqual(preRawDefinition, rawDefinition) && !UpdateAssetDef {
+ return errors.New("asset definition mismatch with previous definition")
+ }
+ // TODO: update asset def here?
}
- // TODO: update asset def here?
- }
-
- // TODO: IssuanceProgram vs arguments?
- // TODO: also need to hard-code mapTx
- // TODO: save AssetDefinition
-
- // in := types.NewCrossChainInput(arguments [][]byte, sourceID bc.Hash, assetID bc.AssetID, amount, sourcePos uint64, controlProgram, assetDefinition []byte)
- // txin := types.NewIssuanceInput(nonce[:], a.Amount, asset.IssuanceProgram, nil, asset.RawDefinitionByte)
- // input's arguments will be set when signing
- sourceID := testutil.MustDecodeHash(a.SourceID)
- txin := types.NewCrossChainInput(nil, sourceID, *a.AssetId, a.Amount, a.SourcePos, nil, rawDefinition)
- tplIn := &txbuilder.SigningInstruction{}
- if false {
- // if asset.Signer != nil {
- // path := signers.GetBip0032Path(asset.Signer, signers.AssetKeySpace)
- // tplIn.AddRawWitnessKeys(asset.Signer.XPubs, path, asset.Signer.Quorum)
- } else if a.Arguments != nil {
- if err := txbuilder.AddContractArgs(tplIn, a.Arguments); err != nil {
- return err
+
+ // TODO: IssuanceProgram vs arguments?
+ // TODO: also need to hard-code mapTx
+ // TODO: save AssetDefinition
+
+ // in := types.NewCrossChainInput(arguments [][]byte, sourceID bc.Hash, assetID bc.AssetID, amount, sourcePos uint64, controlProgram, assetDefinition []byte)
+ // txin := types.NewIssuanceInput(nonce[:], a.Amount, asset.IssuanceProgram, nil, asset.RawDefinitionByte)
+ // input's arguments will be set when signing
+ sourceID := testutil.MustDecodeHash(a.SourceID)
+ txin := types.NewCrossChainInput(nil, sourceID, *a.AssetId, a.Amount, a.SourcePos, nil, rawDefinition)
+ tplIn := &txbuilder.SigningInstruction{}
+ if false {
+ // if asset.Signer != nil {
+ // path := signers.GetBip0032Path(asset.Signer, signers.AssetKeySpace)
+ // tplIn.AddRawWitnessKeys(asset.Signer.XPubs, path, asset.Signer.Quorum)
+ } else if a.Arguments != nil {
+ if err := txbuilder.AddContractArgs(tplIn, a.Arguments); err != nil {
+ return err
+ }
}
- }
- log.Info("cross-chain input action build")
- builder.RestrictMinTime(time.Now())
- return builder.AddInput(txin, tplIn)
+ log.Info("cross-chain input action build")
+ builder.RestrictMinTime(time.Now())
+ return builder.AddInput(txin, tplIn)
+ */
}
func (a *crossInAction) ActionType() string {
case *bc.CrossChainInput:
in.Type = "cross_chain_in"
in.ControlProgram = orig.ControlProgram()
- in.SpentOutputID = e.MainnetOutputId
+ in.SpentOutputID = e.MainchainOutputId
}
return in
if !config.Wallet.Disable {
walletDB := dbm.NewDB("wallet", config.DBBackend, config.DBDir())
assets = asset.NewRegistry(walletDB, chain)
- accounts = account.NewManager(walletDB, chain, assets)
+ accounts = account.NewManager(walletDB, chain)
wallet, err = w.NewWallet(walletDB, accounts, assets, hsm, chain, dispatcher, config.Wallet.TxIndex)
if err != nil {
log.WithFields(log.Fields{"module": logModule, "error": err}).Error("init NewWallet")
//-------------------------Mock actual transaction----------------------------------
func MockTxsP2PKH(keyDirPath string, testDB dbm.DB, txNumber, otherAssetNum int) ([]*types.Tx, error) {
- accountManager := account.NewManager(testDB, nil, nil)
+ accountManager := account.NewManager(testDB, nil)
hsm, err := pseudohsm.New(keyDirPath)
if err != nil {
return nil, err
}
func MockTxsP2SH(keyDirPath string, testDB dbm.DB, txNumber, otherAssetNum int) ([]*types.Tx, error) {
- accountManager := account.NewManager(testDB, nil, nil)
+ accountManager := account.NewManager(testDB, nil)
hsm, err := pseudohsm.New(keyDirPath)
if err != nil {
return nil, err
}
func MockTxsMultiSign(keyDirPath string, testDB dbm.DB, txNumber, otherAssetNum int) ([]*types.Tx, error) {
- accountManager := account.NewManager(testDB, nil, nil)
+ accountManager := account.NewManager(testDB, nil)
hsm, err := pseudohsm.New(keyDirPath)
if err != nil {
return nil, err
t.Fatal(err)
}
- accountManager := account.NewManager(testDB, chain, nil)
+ accountManager := account.NewManager(testDB, chain)
hsm, err := pseudohsm.New(dirPath)
if err != nil {
t.Fatal(err)
t.Fatal(err)
}
- accountManager := account.NewManager(testDB, chain, nil)
+ accountManager := account.NewManager(testDB, chain)
hsm, err := pseudohsm.New(dirPath)
if err != nil {
t.Fatal(err)
t.Fatal(err)
}
- accountManager := account.NewManager(testDB, chain, nil)
+ accountManager := account.NewManager(testDB, chain)
hsm, err := pseudohsm.New(dirPath)
if err != nil {
t.Fatal(err)
t.Fatal(err)
}
- accountManager := account.NewManager(testDB, chain, nil)
+ accountManager := account.NewManager(testDB, chain)
hsm, err := pseudohsm.New(dirPath)
if err != nil {
t.Fatal(err)
t.Fatal(err)
}
- accountManager := account.NewManager(testDB, chain, nil)
+ accountManager := account.NewManager(testDB, chain)
hsm, err := pseudohsm.New(dirPath)
if err != nil {
t.Fatal(err)
t.Fatal(err)
}
- accountManager := account.NewManager(testDB, chain, nil)
+ accountManager := account.NewManager(testDB, chain)
hsm, err := pseudohsm.New(dirPath)
if err != nil {
t.Fatal(err)
if err != nil {
b.Fatal(err)
}
- accountManager := account.NewManager(testDB, chain, nil)
+ accountManager := account.NewManager(testDB, chain)
b.ResetTimer()
for i := 0; i < b.N; i++ {
return err
}
walletDB := dbm.NewDB("wallet", "leveldb", path.Join(dirPath, "wallet_db"))
- accountManager := account.NewManager(walletDB, chain, nil)
+ accountManager := account.NewManager(walletDB, chain)
assets := asset.NewRegistry(walletDB, chain)
dispatcher := event.NewDispatcher()
wallet, err := w.NewWallet(walletDB, accountManager, assets, hsm, chain, dispatcher, false)
in.Type = "cross_chain_in"
in.ControlProgram = orig.ControlProgram()
in.Address = w.getAddressFromControlProgram(in.ControlProgram)
- in.SpentOutputID = e.MainnetOutputId
+ in.SpentOutputID = e.MainchainOutputId
arguments := orig.Arguments()
for _, arg := range arguments {
in.WitnessArguments = append(in.WitnessArguments, arg)
t.Fatal(err)
}
- acctMgr := account.NewManager(testDB, nil, nil)
+ acctMgr := account.NewManager(testDB, nil)
recoveryMgr := newRecoveryManager(testDB, acctMgr)
recoveryMgr.state = newRecoveryState()
recoveryMgr.state.XPubs = []chainkd.XPub{xpub.XPub}
t.Fatal(err)
}
- acctMgr := account.NewManager(testDB, nil, nil)
+ acctMgr := account.NewManager(testDB, nil)
recoveryMgr := newRecoveryManager(testDB, acctMgr)
acc1 := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0044}}
acc2 := &account.Account{ID: "testB", Alias: "test2"}
t.Fatal(err)
}
- acctMgr := account.NewManager(testDB, nil, nil)
+ acctMgr := account.NewManager(testDB, nil)
txs, err := MockTxsP2PKH(acctMgr, xpub.XPub, false)
- recAcctMgr := account.NewManager(recoveryDB, nil, nil)
+ recAcctMgr := account.NewManager(recoveryDB, nil)
recoveryMgr := newRecoveryManager(recoveryDB, recAcctMgr)
cases := []struct {
t.Fatal(err)
}
- acctMgr := account.NewManager(testDB, nil, nil)
+ acctMgr := account.NewManager(testDB, nil)
txs, err := MockTxsP2PKH(acctMgr, xpub.XPub, true)
if err != nil {
t.Fatal("recovery by rescan account err:", err)
t.Fatal("recovery by rescan account err:", err)
}
- recAcctMgr := account.NewManager(recoveryDB, nil, nil)
+ recAcctMgr := account.NewManager(recoveryDB, nil)
for _, acct := range allAccounts {
if err := recAcctMgr.SaveAccount(acct); err != nil {
t.Fatal("recovery by rescan account err:", err)
t.Fatal(err)
}
- acctMgr := account.NewManager(testDB, nil, nil)
+ acctMgr := account.NewManager(testDB, nil)
recoveryMgr := newRecoveryManager(testDB, acctMgr)
acc1 := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub1.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0044}}
acc2 := &account.Account{ID: "testB", Alias: "test2", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub2.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0032}}
t.Fatal(err)
}
- acctMgr := account.NewManager(testDB, nil, nil)
+ acctMgr := account.NewManager(testDB, nil)
recoveryMgr := newRecoveryManager(testDB, acctMgr)
// StatusInit init recovery status manager.
recoveryMgr.state = newRecoveryState()
testDB := dbm.NewDB("testdb", "leveldb", "temp")
defer os.RemoveAll("temp")
- acctMgr := account.NewManager(testDB, nil, nil)
+ acctMgr := account.NewManager(testDB, nil)
recoveryMgr := newRecoveryManager(testDB, acctMgr)
if !recoveryMgr.tryStartXPubsRec() {
t.Fatal("recovery manager try lock test err")
}
contractIndexResidue := uint64(5)
- acctMgr := account.NewManager(testDB, nil, nil)
+ acctMgr := account.NewManager(testDB, nil)
recoveryMgr := newRecoveryManager(testDB, acctMgr)
acct := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub1.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0044}}
testDB := dbm.NewDB("testdb", "leveldb", "temp")
defer os.RemoveAll("temp")
- accountManager := account.NewManager(testDB, nil, nil)
+ accountManager := account.NewManager(testDB, nil)
hsm, err := pseudohsm.New(dirPath)
if err != nil {
t.Fatal(err)
testDB.Set([]byte(k), data)
}
- w.AccountMgr = account.NewManager(testDB, nil, nil)
+ w.AccountMgr = account.NewManager(testDB, nil)
w.AccountMgr.AddUnconfirmedUtxo(c.unconfirmedUtxos)
gotUtxos := w.GetAccountUtxos("", c.id, c.unconfirmed, c.isSmartContract)
if !testutil.DeepEqual(gotUtxos, c.wantUtxos) {
t.Fatal(err)
}
- accountManager := account.NewManager(testDB, chain, nil)
+ accountManager := account.NewManager(testDB, chain)
hsm, err := pseudohsm.New(dirPath)
if err != nil {
t.Fatal(err)
t.Fatal(err)
}
- accountManager := account.NewManager(testDB, chain, nil)
+ accountManager := account.NewManager(testDB, chain)
hsm, err := pseudohsm.New(dirPath)
if err != nil {
t.Fatal(err)