if currentIndex := m.store.GetAccountIndex(xpubs); currentIndex != 0 {
acctIndex = currentIndex + 1
}
+
account, err := CreateAccount(xpubs, quorum, alias, acctIndex, deriveRule)
if err != nil {
return nil, err
if err := m.store.DeleteAccount(&oldAccount); err != nil {
return err
}
+
if err := m.store.SetAccount(account); err != nil {
return err
}
if err != nil {
return "", err
}
+
return cp.Address, nil
}
Address: miningAddress,
ControlProgram: program,
}
-
if err := m.store.SetMiningAddress(cp); err != nil {
return cp.Address, err
}
+
return m.GetMiningAddress()
}
} else {
cp, err = createP2SH(account, path)
}
+
if err != nil {
return nil, err
}
+
cp.KeyIndex, cp.Change = addrIdx, change
return cp, nil
}
if err != nil {
return nil, err
}
- scriptHash := crypto.Sha256(signScript)
+ scriptHash := crypto.Sha256(signScript)
address, err := common.NewAddressWitnessScriptHash(scriptHash, &consensus.ActiveNetParams)
if err != nil {
return nil, err
if err != nil {
return nil, err
}
+
redeemContract := addr.ScriptAddress()
program := []byte{}
switch addr.(type) {
if err != nil {
return nil, err
}
+
return program, nil
}
if err := m.store.InitBatch(); err != nil {
return err
}
+
if err := m.store.SetControlProgram(bc.NewHash(hash), prog); err != nil {
return nil
}
+
if updateIndex {
switch acct.DeriveRule {
case signers.BIP0032:
if !ok {
return nil, errors.New("fail to convert the spend action")
}
+
if *act.AssetId != *consensus.BTMAssetID {
return nil, errors.New("spend chain action only support BTM")
}
if err != nil {
return nil, nil, err
}
+
if u.Address == "" {
sigInst.AddWitnessKeys(signer.XPubs, path, signer.Quorum)
return txInput, sigInst, nil
if u.AccountID != accountID || u.AssetID != *assetID || !bytes.Equal(u.Vote, vote) {
return
}
+
if u.ValidHeight > currentHeight {
immatureAmount += u.Amount
} else {