mirror of
https://github.com/muun/recovery.git
synced 2025-11-10 22:10:14 -05:00
Release v0.3.0
This commit is contained in:
57
vendor/github.com/muun/libwallet/addresses/v2.go
generated
vendored
Normal file
57
vendor/github.com/muun/libwallet/addresses/v2.go
generated
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
package addresses
|
||||
|
||||
import (
|
||||
"github.com/btcsuite/btcd/chaincfg"
|
||||
"github.com/btcsuite/btcd/txscript"
|
||||
"github.com/btcsuite/btcutil"
|
||||
"github.com/btcsuite/btcutil/hdkeychain"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func CreateAddressV2(userKey, muunKey *hdkeychain.ExtendedKey, path string, network *chaincfg.Params) (*WalletAddress, error) {
|
||||
|
||||
script, err := CreateRedeemScriptV2(userKey, muunKey, network)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to generate redeem script v2")
|
||||
}
|
||||
|
||||
address, err := btcutil.NewAddressScriptHash(script, network)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to generate multisig address")
|
||||
}
|
||||
|
||||
return &WalletAddress{
|
||||
address: address.EncodeAddress(),
|
||||
version: V2,
|
||||
derivationPath: path,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func CreateRedeemScriptV2(userKey, muunKey *hdkeychain.ExtendedKey, network *chaincfg.Params) ([]byte, error) {
|
||||
return createMultisigRedeemScript(userKey, muunKey, network)
|
||||
}
|
||||
|
||||
func createMultisigRedeemScript(userKey, muunKey *hdkeychain.ExtendedKey, network *chaincfg.Params) ([]byte, error) {
|
||||
userPublicKey, err := userKey.ECPubKey()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
userAddress, err := btcutil.NewAddressPubKey(userPublicKey.SerializeCompressed(), network)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to generate address for user")
|
||||
}
|
||||
|
||||
muunPublicKey, err := muunKey.ECPubKey()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
WalletAddress, err := btcutil.NewAddressPubKey(muunPublicKey.SerializeCompressed(), network)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to generate address for muun")
|
||||
}
|
||||
|
||||
return txscript.MultiSigScript([]*btcutil.AddressPubKey{
|
||||
userAddress,
|
||||
WalletAddress,
|
||||
}, 2)
|
||||
}
|
||||
Reference in New Issue
Block a user