Skip to content

Commit cc64f8e

Browse files
committed
Add: HDs and entropies examples
1 parent dd259b7 commit cc64f8e

File tree

20 files changed

+1005
-0
lines changed

20 files changed

+1005
-0
lines changed

examples/entropies/algorand.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/usr/bin/env python3
2+
3+
from typing import Type
4+
5+
from hdwallet.entropies import (
6+
ENTROPIES, IEntropy, AlgorandEntropy, ALGORAND_ENTROPY_STRENGTHS
7+
)
8+
9+
data = {
10+
"name": "Algorand",
11+
"entropy": "b66022fff8b6322f8b8fa444d6d097457b6b9e7bb05add5b75f9c827df7bd3b6",
12+
"strength": ALGORAND_ENTROPY_STRENGTHS.TWO_HUNDRED_FIFTY_SIX
13+
}
14+
15+
AlgorandEntropyClass: Type[IEntropy] = ENTROPIES.entropy(data["name"])
16+
17+
algorand_entropy_class = AlgorandEntropyClass(data["entropy"])
18+
algorand_entropy = AlgorandEntropy(data["entropy"])
19+
20+
print(
21+
algorand_entropy_class.strength() == algorand_entropy.strength() == data["strength"],
22+
algorand_entropy_class.entropy() == algorand_entropy.entropy() == data["entropy"],
23+
AlgorandEntropyClass.is_valid_strength(data["strength"]) == AlgorandEntropy.is_valid_strength(data["strength"]),
24+
AlgorandEntropyClass.is_valid(data["entropy"]) == AlgorandEntropy.is_valid(data["entropy"]),
25+
len(AlgorandEntropyClass.generate(data["strength"])) == len(AlgorandEntropy.generate(data["strength"])),
26+
"\n"
27+
)
28+
29+
print("Client:", data["name"])
30+
print("Entropy:", data["entropy"])
31+
print("Strength:", data["strength"])

examples/entropies/bip39.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/usr/bin/env python3
2+
3+
from typing import Type
4+
5+
from hdwallet.entropies import (
6+
ENTROPIES, IEntropy, BIP39Entropy, BIP39_ENTROPY_STRENGTHS
7+
)
8+
9+
data = {
10+
"name": "BIP39",
11+
"entropy": "b66022fff8b6322f8b8fa444d6d097457b6b9e7bb05add5b75f9c827df7bd3b6",
12+
"strength": BIP39_ENTROPY_STRENGTHS.TWO_HUNDRED_FIFTY_SIX
13+
}
14+
15+
BIP39EntropyClass: Type[IEntropy] = ENTROPIES.entropy(data["name"])
16+
17+
bip39_entropy_class = BIP39EntropyClass(data["entropy"])
18+
bip39_entropy = BIP39Entropy(data["entropy"])
19+
20+
print(
21+
bip39_entropy_class.strength() == bip39_entropy.strength() == data["strength"],
22+
bip39_entropy_class.entropy() == bip39_entropy.entropy() == data["entropy"],
23+
BIP39EntropyClass.is_valid_strength(data["strength"]) == BIP39Entropy.is_valid_strength(data["strength"]),
24+
BIP39EntropyClass.is_valid(data["entropy"]) == BIP39Entropy.is_valid(data["entropy"]),
25+
len(BIP39EntropyClass.generate(data["strength"])) == len(BIP39Entropy.generate(data["strength"])),
26+
"\n"
27+
)
28+
29+
print("Client:", data["name"])
30+
print("Entropy:", data["entropy"])
31+
print("Strength:", data["strength"])

examples/entropies/electrum/v1.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/usr/bin/env python3
2+
3+
from typing import Type
4+
5+
from hdwallet.entropies import (
6+
ENTROPIES, IEntropy, ElectrumV1Entropy, ELECTRUM_V1_ENTROPY_STRENGTHS
7+
)
8+
9+
data = {
10+
"name": "Electrum-V1",
11+
"entropy": "129d9b32df4e382c7abb0d059d83b537",
12+
"strength": ELECTRUM_V1_ENTROPY_STRENGTHS.ONE_HUNDRED_TWENTY_EIGHT
13+
}
14+
15+
ElectrumV1EntropyClass: Type[IEntropy] = ENTROPIES.entropy(data["name"])
16+
17+
electrum_v1_entropy_class = ElectrumV1EntropyClass(data["entropy"])
18+
electrum_v1_entropy = ElectrumV1Entropy(data["entropy"])
19+
20+
print(
21+
electrum_v1_entropy_class.strength() == electrum_v1_entropy.strength() == data["strength"],
22+
electrum_v1_entropy_class.entropy() == electrum_v1_entropy.entropy() == data["entropy"],
23+
ElectrumV1EntropyClass.is_valid_strength(data["strength"]) == ElectrumV1Entropy.is_valid_strength(data["strength"]),
24+
ElectrumV1EntropyClass.is_valid(data["entropy"]) == ElectrumV1Entropy.is_valid(data["entropy"]),
25+
len(ElectrumV1EntropyClass.generate(data["strength"])) == len(ElectrumV1Entropy.generate(data["strength"])),
26+
"\n"
27+
)
28+
29+
print("Client:", data["name"])
30+
print("Entropy:", data["entropy"])
31+
print("Strength:", data["strength"])

examples/entropies/electrum/v2.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/usr/bin/env python3
2+
3+
from typing import Type
4+
5+
from hdwallet.entropies import (
6+
ENTROPIES, IEntropy, ElectrumV2Entropy, ELECTRUM_V2_ENTROPY_STRENGTHS
7+
)
8+
9+
data = {
10+
"name": "Electrum-V2",
11+
"entropy": "eeeb82d2511334ec979c2b90bcf9803ead7cdd38d690bf8f3723013fa58d42fa44",
12+
"strength": ELECTRUM_V2_ENTROPY_STRENGTHS.TWO_HUNDRED_SIXTY_FOUR
13+
}
14+
15+
ElectrumV2EntropyClass: Type[IEntropy] = ENTROPIES.entropy(data["name"])
16+
17+
electrum_v2_entropy_class = ElectrumV2EntropyClass(data["entropy"])
18+
electrum_v2_entropy = ElectrumV2Entropy(data["entropy"])
19+
20+
print(
21+
electrum_v2_entropy_class.strength() == electrum_v2_entropy.strength() == data["strength"],
22+
electrum_v2_entropy_class.entropy() == electrum_v2_entropy.entropy() == data["entropy"],
23+
ElectrumV2EntropyClass.is_valid_strength(data["strength"]) == ElectrumV2Entropy.is_valid_strength(data["strength"]),
24+
ElectrumV2EntropyClass.is_valid(data["entropy"]) == ElectrumV2Entropy.is_valid(data["entropy"]),
25+
len(ElectrumV2EntropyClass.generate(data["strength"])) == len(ElectrumV2Entropy.generate(data["strength"])),
26+
"\n"
27+
)
28+
29+
print("Client:", data["name"])
30+
print("Entropy:", data["entropy"])
31+
print("Strength:", data["strength"])

examples/entropies/monero.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/usr/bin/env python3
2+
3+
from typing import Type
4+
5+
from hdwallet.entropies import (
6+
ENTROPIES, IEntropy, MoneroEntropy, MONERO_ENTROPY_STRENGTHS
7+
)
8+
9+
data = {
10+
"name": "Monero",
11+
"entropy": "b66022fff8b6322f8b8fa444d6d097457b6b9e7bb05add5b75f9c827df7bd3b6",
12+
"strength": MONERO_ENTROPY_STRENGTHS.TWO_HUNDRED_FIFTY_SIX
13+
}
14+
15+
MoneroEntropyClass: Type[IEntropy] = ENTROPIES.entropy(data["name"])
16+
17+
monero_entropy_class = MoneroEntropyClass(data["entropy"])
18+
monero_entropy = MoneroEntropy(data["entropy"])
19+
20+
print(
21+
monero_entropy_class.strength() == monero_entropy.strength() == data["strength"],
22+
monero_entropy_class.entropy() == monero_entropy.entropy() == data["entropy"],
23+
MoneroEntropyClass.is_valid_strength(data["strength"]) == MoneroEntropy.is_valid_strength(data["strength"]),
24+
MoneroEntropyClass.is_valid(data["entropy"]) == MoneroEntropy.is_valid(data["entropy"]),
25+
len(MoneroEntropyClass.generate(data["strength"])) == len(MoneroEntropy.generate(data["strength"])),
26+
"\n"
27+
)
28+
29+
print("Client:", data["name"])
30+
print("Entropy:", data["entropy"])
31+
print("Strength:", data["strength"])

examples/hds/bip141.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#!/usr/bin/env python3
2+
3+
from hdwallet.hds import BIP141HD
4+
from hdwallet.cryptocurrencies import Bitcoin as Cryptocurrency
5+
from hdwallet.derivations import CustomDerivation
6+
from hdwallet.consts import PUBLIC_KEY_TYPES, SEMANTICS
7+
8+
bip141_hd: BIP141HD = BIP141HD(
9+
ecc=Cryptocurrency.ECC,
10+
public_key_type=PUBLIC_KEY_TYPES.COMPRESSED,
11+
wif_prefix=Cryptocurrency.NETWORKS.MAINNET.WIF_PREFIX,
12+
semantic=SEMANTICS.P2WSH_IN_P2SH
13+
)
14+
15+
# bip141_hd.from_semantic(semantic=SEMANTICS.P2WSH_IN_P2SH)
16+
17+
seed = "5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4"
18+
xprivate_key = "xprv9s21ZrQH143K4L18AD5Ko2ELW8bqaGLW4vfASZzo9yEN8fkZPZLdECXWXAMovtonu7DdEFwJuYH31QT96FWJUfkiLUVT8t8e3WNDiwZkuLJ"
19+
xpublic_key = "xpub661MyMwAqRbcGp5bGEcLAAB54ASKyj4MS9amExQQiJmM1U5hw6esmzqzNQtquzBRNvLWtPC2kRu2kZR888FSAiZRpvKdjgbmoKRCgGM1YEy"
20+
wif = "L1VKQooPmgVLD35vHMeprus1zFYx58bHGMfTz8QYTEnRCzbjwMoo"
21+
private_key = "7f60ec0fa89064a37e208ade560c098586dd887e2133bee4564af1de52bc7f5c"
22+
public_key = "023e23967b818fb3959f2056b6e6449a65c4982c1267398d8897b921ab53b0be4b"
23+
24+
bip141_hd.from_seed(seed=seed)
25+
# bip141_hd.from_xprivate_key(xprivate_key=xprivate_key)
26+
# bip141_hd.from_xpublic_key(xpublic_key=xpublic_key)
27+
28+
print("Semantic:", bip141_hd.semantic())
29+
print("Seed:", bip141_hd.seed())
30+
print("Strict:", bip141_hd.strict())
31+
print("Root XPrivate Key:", bip141_hd.root_xprivate_key())
32+
print("Root XPublic Key:", bip141_hd.root_xpublic_key())
33+
print("Root Private Key:", bip141_hd.root_private_key())
34+
print("Root WIF:", bip141_hd.root_wif())
35+
print("Root Chain Code:", bip141_hd.root_chain_code())
36+
print("Root Public Key:", bip141_hd.root_public_key())
37+
38+
custom_derivation: CustomDerivation = CustomDerivation(path="m/0'/0")
39+
bip141_hd.from_derivation(derivation=custom_derivation)
40+
41+
# bip141_hd.from_private_key(private_key=private_key)
42+
# bip141_hd.from_wif(wif=wif)
43+
# bip141_hd.from_public_key(public_key=public_key)
44+
45+
print("XPrivate Key:", bip141_hd.xprivate_key())
46+
print("XPublic Key:", bip141_hd.xpublic_key())
47+
print("Private Key:", bip141_hd.private_key())
48+
print("WIF:", bip141_hd.wif())
49+
print("WIF Type:", bip141_hd.wif_type())
50+
print("Chain Code:", bip141_hd.chain_code())
51+
print("Public Key:", bip141_hd.public_key())
52+
print("Public Key Type:", bip141_hd.public_key_type())
53+
print("Compressed:", bip141_hd.compressed())
54+
print("Uncompressed:", bip141_hd.uncompressed())
55+
print("Hash:", bip141_hd.hash())
56+
print("Fingerprint:", bip141_hd.fingerprint())
57+
print("Parent Fingerprint:", bip141_hd.parent_fingerprint())
58+
print("Depth:", bip141_hd.depth())
59+
print("Path:", bip141_hd.path())
60+
print("Index:", bip141_hd.index())
61+
print("Indexes:", bip141_hd.indexes())
62+
print("Address:", bip141_hd.address())

examples/hds/bip32.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/usr/bin/env python3
2+
3+
from hdwallet.hds import BIP32HD
4+
from hdwallet.cryptocurrencies import Bitcoin as Cryptocurrency
5+
from hdwallet.derivations import CustomDerivation
6+
from hdwallet.consts import PUBLIC_KEY_TYPES
7+
8+
bip32_hd: BIP32HD = BIP32HD(
9+
ecc=Cryptocurrency.ECC,
10+
public_key_type=PUBLIC_KEY_TYPES.COMPRESSED,
11+
wif_prefix=Cryptocurrency.NETWORKS.MAINNET.WIF_PREFIX
12+
)
13+
14+
seed = "5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4"
15+
xprivate_key = "xprv9s21ZrQH143K4L18AD5Ko2ELW8bqaGLW4vfASZzo9yEN8fkZPZLdECXWXAMovtonu7DdEFwJuYH31QT96FWJUfkiLUVT8t8e3WNDiwZkuLJ"
16+
xpublic_key = "xpub661MyMwAqRbcGp5bGEcLAAB54ASKyj4MS9amExQQiJmM1U5hw6esmzqzNQtquzBRNvLWtPC2kRu2kZR888FSAiZRpvKdjgbmoKRCgGM1YEy"
17+
private_key = "7f60ec0fa89064a37e208ade560c098586dd887e2133bee4564af1de52bc7f5c"
18+
wif = "L1VKQooPmgVLD35vHMeprus1zFYx58bHGMfTz8QYTEnRCzbjwMoo"
19+
public_key = "023e23967b818fb3959f2056b6e6449a65c4982c1267398d8897b921ab53b0be4b"
20+
21+
bip32_hd.from_seed(seed=seed)
22+
# bip32_hd.from_xprivate_key(xprivate_key=xprivate_key)
23+
# bip32_hd.from_xpublic_key(xpublic_key=xpublic_key)
24+
25+
print("Seed:", bip32_hd.seed())
26+
print("Strict:", bip32_hd.strict())
27+
print("Root XPrivate Key:", bip32_hd.root_xprivate_key())
28+
print("Root XPublic Key:", bip32_hd.root_xpublic_key())
29+
print("Root Private Key:", bip32_hd.root_private_key())
30+
print("Root WIF:", bip32_hd.root_wif())
31+
print("Root Chain Code:", bip32_hd.root_chain_code())
32+
print("Root Public Key:", bip32_hd.root_public_key())
33+
34+
custom_derivation: CustomDerivation = CustomDerivation(path="m/0'/0")
35+
bip32_hd.from_derivation(derivation=custom_derivation)
36+
37+
# bip32_hd.from_private_key(private_key=private_key)
38+
# bip32_hd.from_wif(wif=wif)
39+
# bip32_hd.from_public_key(public_key=public_key)
40+
41+
print("XPrivate Key:", bip32_hd.xprivate_key())
42+
print("XPublic Key:", bip32_hd.xpublic_key())
43+
print("Private Key:", bip32_hd.private_key())
44+
print("WIF:", bip32_hd.wif())
45+
print("WIF Type:", bip32_hd.wif_type())
46+
print("Chain Code:", bip32_hd.chain_code())
47+
print("Public Key:", bip32_hd.public_key())
48+
print("Public Key Type:", bip32_hd.public_key_type())
49+
print("Compressed:", bip32_hd.compressed())
50+
print("Uncompressed:", bip32_hd.uncompressed())
51+
print("Hash:", bip32_hd.hash())
52+
print("Fingerprint:", bip32_hd.fingerprint())
53+
print("Parent Fingerprint:", bip32_hd.parent_fingerprint())
54+
print("Depth:", bip32_hd.depth())
55+
print("Path:", bip32_hd.path())
56+
print("Index:", bip32_hd.index())
57+
print("Indexes:", bip32_hd.indexes())
58+
print("getStrict:", bip32_hd.strict())
59+
print("Address:", bip32_hd.address(
60+
address=Cryptocurrency.ADDRESSES.P2TR
61+
))

examples/hds/bip44.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#!/usr/bin/env python3
2+
3+
from hdwallet.hds import BIP44HD
4+
from hdwallet.cryptocurrencies import Bitcoin as Cryptocurrency
5+
from hdwallet.derivations import BIP44Derivation, CHANGES
6+
from hdwallet.consts import PUBLIC_KEY_TYPES
7+
8+
bip44_hd: BIP44HD = BIP44HD(
9+
ecc=Cryptocurrency.ECC,
10+
public_key_type=PUBLIC_KEY_TYPES.COMPRESSED,
11+
wif_prefix=Cryptocurrency.NETWORKS.MAINNET.WIF_PREFIX
12+
)
13+
14+
seed = "5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4"
15+
xprivate_key = "xprv9s21ZrQH143K4L18AD5Ko2ELW8bqaGLW4vfASZzo9yEN8fkZPZLdECXWXAMovtonu7DdEFwJuYH31QT96FWJUfkiLUVT8t8e3WNDiwZkuLJ"
16+
xpublic_key = "xpub661MyMwAqRbcGp5bGEcLAAB54ASKyj4MS9amExQQiJmM1U5hw6esmzqzNQtquzBRNvLWtPC2kRu2kZR888FSAiZRpvKdjgbmoKRCgGM1YEy"
17+
private_key = "7f60ec0fa89064a37e208ade560c098586dd887e2133bee4564af1de52bc7f5c"
18+
wif = "L1VKQooPmgVLD35vHMeprus1zFYx58bHGMfTz8QYTEnRCzbjwMoo"
19+
public_key = "023e23967b818fb3959f2056b6e6449a65c4982c1267398d8897b921ab53b0be4b"
20+
21+
bip44_hd.from_seed(seed=seed)
22+
# bip44_hd.from_xprivate_key(xprivate_key=xprivate_key)
23+
# bip44_hd.from_xpublic_key(xpublic_key=xpublic_key)
24+
25+
print("Seed:", bip44_hd.seed())
26+
print("Strict:", bip44_hd.strict())
27+
print("Root XPrivate Key:", bip44_hd.root_xprivate_key())
28+
print("Root XPublic Key:", bip44_hd.root_xpublic_key())
29+
print("Root Private Key:", bip44_hd.root_private_key())
30+
print("Root WIF:", bip44_hd.root_wif())
31+
print("Root Chain Code:", bip44_hd.root_chain_code())
32+
print("Root Public Key:", bip44_hd.root_public_key())
33+
34+
# bip44_derivation: BIP44Derivation = BIP44Derivation(
35+
# coin_type=Cryptocurrency.COIN_TYPE, account=0, change=CHANGES.EXTERNAL_CHAIN, address=0
36+
# )
37+
# bip44_hd.from_derivation(derivation=bip44_derivation)
38+
39+
bip44_hd.from_coin_type(coin_type=Cryptocurrency.COIN_TYPE)
40+
bip44_hd.from_account(account=0)
41+
bip44_hd.from_change(change=CHANGES.EXTERNAL_CHAIN)
42+
bip44_hd.from_address(address=0)
43+
44+
# bip44_hd.from_private_key(private_key=private_key)
45+
# bip44_hd.from_wif(wif=wif)
46+
# bip44_hd.from_public_key(public_key=public_key)
47+
48+
print("XPrivate Key:", bip44_hd.xprivate_key())
49+
print("XPublic Key:", bip44_hd.xpublic_key())
50+
print("Private Key:", bip44_hd.private_key())
51+
print("WIF:", bip44_hd.wif())
52+
print("WIF Type:", bip44_hd.wif_type())
53+
print("Chain Code:", bip44_hd.chain_code())
54+
print("Public Key:", bip44_hd.public_key())
55+
print("Public Key Type:", bip44_hd.public_key_type())
56+
print("Compressed:", bip44_hd.compressed())
57+
print("Uncompressed:", bip44_hd.uncompressed())
58+
print("Hash:", bip44_hd.hash())
59+
print("Fingerprint:", bip44_hd.fingerprint())
60+
print("Parent Fingerprint:", bip44_hd.parent_fingerprint())
61+
print("Depth:", bip44_hd.depth())
62+
print("Path:", bip44_hd.path())
63+
print("Index:", bip44_hd.index())
64+
print("Indexes:", bip44_hd.indexes())
65+
print("Address:", bip44_hd.address())

0 commit comments

Comments
 (0)