for _, xpub := range xpubs {
fmt.Println("DeriveXPubs type xpubs:", reflect.TypeOf(xpubs), "type xpubs[0]:", reflect.TypeOf(xpubs[0]))
fmt.Println("xpubs[0] is:", xpubs[0])
- newxpub, err := edchainkd.NewXPub(reflect.ValueOf(xpub).String())
- if err != nil {
- fmt.Println("csp DeriveXPubs err:", err)
- } else {
- d := newxpub.Derive(path)
+ switch xpb := xpub.(type) {
+ case edchainkd.XPub:
+ d := xpb.Derive(path)
res = append(res, d)
fmt.Println("DeriveXPubs d is:", d)
+ default:
+ newxpub, err := edchainkd.NewXPub(reflect.ValueOf(xpub).String())
+ if err != nil {
+ fmt.Println("csp DeriveXPubs err:", err)
+ } else {
+ d := newxpub.Derive(path)
+ res = append(res, d)
+ fmt.Println("DeriveXPubs d is:", d)
+ }
}
-
- // switch xpb := xpub.(type) {
- // case edchainkd.XPub:
- // d := xpb.Derive(path)
- // res = append(res, d)
- // fmt.Println("DeriveXPubs d is:", d)
- // }
}
fmt.Println("DeriveXPubs len(res) is:", len(res))
return res
"github.com/vapor/account"
"github.com/vapor/blockchain/signers"
"github.com/vapor/consensus"
+ vcrypto "github.com/vapor/crypto"
"github.com/vapor/crypto/csp"
edchainkd "github.com/vapor/crypto/ed25519/chainkd"
"github.com/vapor/protocol/bc"
if inp.ControlProgram != nil {
continue
}
- acc := &account.Account{Signer: &signers.Signer{KeyIndex: insts[i].keyIndex, DeriveRule: signers.BIP0044, XPubs: xPubs, Quorum: insts[i].quorum}}
+ acc := &account.Account{Signer: &signers.Signer{KeyIndex: insts[i].keyIndex, DeriveRule: signers.BIP0044, XPubs: []vcrypto.XPubKeyer{xPubs}, Quorum: insts[i].quorum}}
program, err := account.CreateCtrlProgram(acc, insts[i].ctrlProgramIndex, insts[i].change)
if err != nil {
panic(err)
derivePK := childPrv.XPub()
arguments = append(arguments, derivePK.PublicKey())
} else {
- derivedXPubs := csp.DeriveXPubs(xPubs, path)
+ derivedXPubs := csp.DeriveXPubs([]vcrypto.XPubKeyer{xPubs}, path)
derivedPKs := csp.XPubKeys(derivedXPubs)
script, err := vmutil.P2SPMultiSigProgram(derivedPKs, inst.quorum)
if err != nil {
"github.com/vapor/blockchain/txbuilder"
"github.com/vapor/common"
"github.com/vapor/consensus"
+ vcrypto "github.com/vapor/crypto"
"github.com/vapor/crypto/csp"
edchainkd "github.com/vapor/crypto/ed25519/chainkd"
"github.com/vapor/crypto/sha3pool"
func (g *TxGenerator) getPubkey(keyAlias string) *edchainkd.XPub {
pubKeys := g.Hsm.ListKeys()
- for i, key := range pubKeys {
+ for _, key := range pubKeys {
if key.Alias == keyAlias {
- return &pubKeys[i].XPub
+ switch pbk := key.XPub.(type) {
+ case edchainkd.XPub:
+ return &pbk
+ }
}
}
return nil
}
xpubs = append(xpubs, *xpub)
}
- _, err := g.AccountManager.Create(xpubs, quorum, name, signers.BIP0044)
+ xpubers := make([]vcrypto.XPubKeyer, len(xpubs))
+ for i, xpub := range xpubs {
+ xpubers[i] = xpub
+ }
+ _, err := g.AccountManager.Create(xpubers, quorum, name, signers.BIP0044)
return err
}
case *common.AddressWitnessPubKeyHash:
sigInst.AddRawWitnessKeys(signer.XPubs, path, signer.Quorum)
derivedXPubs := csp.DeriveXPubs(signer.XPubs, path)
- derivedPK := derivedXPubs[0].PublicKey()
- sigInst.WitnessComponents = append(sigInst.WitnessComponents, txbuilder.DataWitness([]byte(derivedPK)))
+ switch dxpub := derivedXPubs[0].(type) {
+ case edchainkd.XPub:
+ derivedPK := dxpub.PublicKey()
+ sigInst.WitnessComponents = append(sigInst.WitnessComponents, txbuilder.DataWitness([]byte(derivedPK)))
+ }
case *common.AddressWitnessScriptHash:
sigInst.AddRawWitnessKeys(signer.XPubs, path, signer.Quorum)
"github.com/vapor/asset"
"github.com/vapor/blockchain/pseudohsm"
"github.com/vapor/blockchain/signers"
+ vcrypto "github.com/vapor/crypto"
edchainkd "github.com/vapor/crypto/ed25519/chainkd"
dbm "github.com/vapor/database/leveldb"
"github.com/vapor/event"
pubKeys := ctx.Wallet.Hsm.ListKeys()
for i, key := range pubKeys {
if key.Alias == keyAlias {
- return &pubKeys[i].XPub
+ switch xpub := pubKeys[i].XPub.(type) {
+ case edchainkd.XPub:
+ return &xpub
+ }
+
}
}
return nil
}
xpubs = append(xpubs, *xpub)
}
- _, err := ctx.Wallet.AccountMgr.Create(xpubs, quorum, name, signers.BIP0044)
+ xpubers := make([]vcrypto.XPubKeyer, len(xpubs))
+ for i, xpub := range xpubs {
+ xpubers[i] = xpub
+ }
+ _, err := ctx.Wallet.AccountMgr.Create(xpubers, quorum, name, signers.BIP0044)
return err
}