added hierarchy path
This commit is contained in:
parent
afe44514f8
commit
7db677e41a
@ -5,6 +5,7 @@ from datetime import datetime
|
|||||||
from .utils import (
|
from .utils import (
|
||||||
Wallet, HDPrivateKey, HDKey
|
Wallet, HDPrivateKey, HDKey
|
||||||
)
|
)
|
||||||
|
import inspect
|
||||||
|
|
||||||
|
|
||||||
def generate_mnemonic(strength=128):
|
def generate_mnemonic(strength=128):
|
||||||
@ -26,25 +27,30 @@ def create_address(network='btctest', xpub=None, child=None, path=0):
|
|||||||
if child is None:
|
if child is None:
|
||||||
child = generate_child_id()
|
child = generate_child_id()
|
||||||
|
|
||||||
if network == 'ethereum' or network == 'ETH':
|
if network == 'ethereum' or network.upper() == 'ETH':
|
||||||
acct_pub_key = HDKey.from_b58check(xpub)
|
acct_pub_key = HDKey.from_b58check(xpub)
|
||||||
keys = HDKey.from_path(
|
keys = HDKey.from_path(
|
||||||
acct_pub_key, '{change}/{index}'.format(change=path, index=child))
|
acct_pub_key, '{change}/{index}'.format(change=path, index=child))
|
||||||
return {
|
|
||||||
"xpublic_key": keys[-1].to_b58check(),
|
res = {
|
||||||
|
"path": "m/" + str(acct_pub_key.index) + "/" + str(keys[-1].index),
|
||||||
"address": keys[-1].address()
|
"address": keys[-1].address()
|
||||||
}
|
}
|
||||||
|
if inspect.stack()[1][3] == "create_wallet":
|
||||||
|
res["xpublic_key"] = keys[-1].to_b58check()
|
||||||
|
return res
|
||||||
|
|
||||||
# else ...
|
# else ...
|
||||||
wallet_obj = Wallet.deserialize(xpub, network=network.upper())
|
wallet_obj = Wallet.deserialize(xpub, network=network.upper())
|
||||||
|
|
||||||
child_wallet = wallet_obj.get_child(child, is_prime=False)
|
child_wallet = wallet_obj.get_child(child, is_prime=False)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"xpublic_key": child_wallet.serialize_b58(private=False),
|
"path": "m/" + str(wallet_obj.child_number) + "/" +str(child_wallet.child_number),
|
||||||
"address": child_wallet.to_address()
|
"address": child_wallet.to_address(),
|
||||||
|
# "xpublic_key": child_wallet.serialize_b58(private=False),
|
||||||
|
# "wif": child_wallet.export_to_wif() # needs private key
|
||||||
}
|
}
|
||||||
|
|
||||||
return wallet_obj.create_new_address_for_user(child).to_address()
|
|
||||||
|
|
||||||
|
|
||||||
def coin_name_from_network(network):
|
def coin_name_from_network(network):
|
||||||
@ -102,9 +108,11 @@ def create_wallet(network='btctest', seed=None, children=1):
|
|||||||
wallet["xprivate_key"] = acct_priv_key.to_b58check()
|
wallet["xprivate_key"] = acct_priv_key.to_b58check()
|
||||||
wallet["xpublic_key"] = acct_pub_key.to_b58check()
|
wallet["xpublic_key"] = acct_pub_key.to_b58check()
|
||||||
|
|
||||||
wallet["address"] = create_address(
|
child_wallet = create_address(
|
||||||
network=network.upper(), xpub=wallet["xpublic_key"],
|
network=network.upper(), xpub=wallet["xpublic_key"],
|
||||||
child=0, path=0)["address"]
|
child=0, path=0)
|
||||||
|
wallet["address"] = child_wallet["address"]
|
||||||
|
wallet["xpublic_key"] = child_wallet["xpublic_key"]
|
||||||
|
|
||||||
# get public info from first prime child
|
# get public info from first prime child
|
||||||
for child in range(children):
|
for child in range(children):
|
||||||
@ -115,6 +123,7 @@ def create_wallet(network='btctest', seed=None, children=1):
|
|||||||
wallet["children"].append({
|
wallet["children"].append({
|
||||||
"address": child_wallet["address"],
|
"address": child_wallet["address"],
|
||||||
"xpublic_key": child_wallet["xpublic_key"],
|
"xpublic_key": child_wallet["xpublic_key"],
|
||||||
|
"path": "m/" + str(child),
|
||||||
"wif": ""
|
"wif": ""
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -131,12 +140,13 @@ def create_wallet(network='btctest', seed=None, children=1):
|
|||||||
wallet["address"] = my_wallet.to_address()
|
wallet["address"] = my_wallet.to_address()
|
||||||
wallet["wif"] = my_wallet.export_to_wif()
|
wallet["wif"] = my_wallet.export_to_wif()
|
||||||
|
|
||||||
# get public info from first prime child
|
# prime children
|
||||||
for child in range(children):
|
for child in range(children):
|
||||||
child_wallet = my_wallet.get_child(child, is_prime=True)
|
child_wallet = my_wallet.get_child(child, is_prime=True)
|
||||||
wallet["children"].append({
|
wallet["children"].append({
|
||||||
"xpublic_key": child_wallet.serialize_b58(private=False),
|
"xpublic_key": child_wallet.serialize_b58(private=False),
|
||||||
"address": child_wallet.to_address(),
|
"address": child_wallet.to_address(),
|
||||||
|
"path": "m/" + str(child),
|
||||||
"wif": child_wallet.export_to_wif()
|
"wif": child_wallet.export_to_wif()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user