Upgrade library to bdk-ffi 0.6.0

This commit is contained in:
thunderbiscuit 2022-05-11 16:02:49 -04:00
parent cc730b00b2
commit 3ae2f48846
No known key found for this signature in database
GPG Key ID: 88253696EB836462
4 changed files with 56 additions and 55 deletions

View File

@ -17,7 +17,7 @@ pip3 install --requirement requirements.txt
bash ./generate.sh bash ./generate.sh
python3 setup.py --verbose bdist_wheel python3 setup.py --verbose bdist_wheel
pip3 install ./dist/bdkpython-<yourversion>-py3-none-any.whl pip3 install ./dist/bdkpython-<yourversion>-py3-none-any.whl
python3 ./tests/test_bdk.py python -m unittest --verbose tests/test_bdk.py
``` ```
<br/> <br/>

View File

@ -7,4 +7,5 @@ PY_SRC="${SCRIPT_DIR}/src/bdkpython/"
echo "Generating bdk.py..." echo "Generating bdk.py..."
# GENERATE_PYTHON_BINDINGS_OUT="$PY_SRC" GENERATE_PYTHON_BINDINGS_FIXUP_LIB_PATH=bdkffi cargo run --manifest-path ./bdk-ffi/Cargo.toml --release --bin generate --features generate-python # GENERATE_PYTHON_BINDINGS_OUT="$PY_SRC" GENERATE_PYTHON_BINDINGS_FIXUP_LIB_PATH=bdkffi cargo run --manifest-path ./bdk-ffi/Cargo.toml --release --bin generate --features generate-python
BDKFFI_BINDGEN_PYTHON_FIXUP_PATH=bdkffi cargo run --manifest-path ./bdk-ffi/Cargo.toml --package bdk-ffi-bindgen -- --language python --udl-file ./bdk-ffi/src/bdk.udl --out-dir ./src/bdkpython/ # BDKFFI_BINDGEN_PYTHON_FIXUP_PATH=bdkffi cargo run --manifest-path ./bdk-ffi/Cargo.toml --package bdk-ffi-bindgen -- --language python --udl-file ./bdk-ffi/src/bdk.udl --out-dir ./src/bdkpython/
BDKFFI_BINDGEN_OUTPUT_DIR="$PY_SRC" BDKFFI_BINDGEN_PYTHON_FIXUP_PATH=bdkffi cargo run --manifest-path ./bdk-ffi/Cargo.toml --package bdk-ffi-bindgen -- --language python --udl-file ./bdk-ffi/src/bdk.udl

View File

@ -18,9 +18,9 @@ pip install bdkpython
import bdkpython as bdk import bdkpython as bdk
descriptor = "wpkh(tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy/84h/1h/0h/0/*)" descriptor = "wpkh(tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy/84h/0h/0h/0/*)"
config = bdk.DatabaseConfig.MEMORY("") db_config = bdk.DatabaseConfig.MEMORY()
client = bdk.BlockchainConfig.ELECTRUM( blockchain_config = bdk.BlockchainConfig.ELECTRUM(
bdk.ElectrumConfig( bdk.ElectrumConfig(
"ssl://electrum.blockstream.info:60002", "ssl://electrum.blockstream.info:60002",
None, None,
@ -28,14 +28,14 @@ client = bdk.BlockchainConfig.ELECTRUM(
None, None,
100 100
) )
) )
blockchain = bdk.Blockchain(blockchain_config)
wallet = bdk.Wallet( wallet = bdk.Wallet(
descriptor=descriptor, descriptor=descriptor,
change_descriptor=descriptor, change_descriptor=None,
network=bdk.Network.TESTNET, network=bdk.Network.TESTNET,
database_config=config, database_config=db_config,
blockchain_config=client
) )
# print new receive address # print new receive address
@ -44,11 +44,7 @@ print(f"New BIP84 testnet address: {address}")
# print wallet balance # print wallet balance
class LogProgress(bdk.BdkProgress): wallet.sync(blockchain, None)
def update(self, progress, update):
pass
wallet.sync(progress_update=LogProgress(), max_address_param=20)
balance = wallet.get_balance() balance = wallet.get_balance()
print(f"Wallet balance is: {balance}") print(f"Wallet balance is: {balance}")
""" """
@ -61,7 +57,7 @@ rust_ext = RustExtension(
setup( setup(
name='bdkpython', name='bdkpython',
version = '0.0.6.dev', version = '0.1.0.dev',
description="The Python language bindings for the bitcoindevkit", description="The Python language bindings for the bitcoindevkit",
long_description=LONG_DESCRIPTION, long_description=LONG_DESCRIPTION,
long_description_content_type='text/markdown', long_description_content_type='text/markdown',

View File

@ -1,10 +1,10 @@
import bdkpython as bdk import bdkpython as bdk
import unittest
# taken from bdk test suite @ https://github.com/bitcoindevkit/bdk/blob/master/src/descriptor/template.rs#L676 # taken from bdk test suite @ https://github.com/bitcoindevkit/bdk/blob/master/src/descriptor/template.rs#L676
descriptor = "wpkh(tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy/84h/0h/0h/0/*)" descriptor = "wpkh(tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy/84h/0h/0h/0/*)"
db_config = bdk.DatabaseConfig.MEMORY() db_config = bdk.DatabaseConfig.MEMORY()
client = bdk.BlockchainConfig.ELECTRUM( blockchain_config = bdk.BlockchainConfig.ELECTRUM(
bdk.ElectrumConfig( bdk.ElectrumConfig(
"ssl://electrum.blockstream.info:60002", "ssl://electrum.blockstream.info:60002",
None, None,
@ -13,9 +13,12 @@ client = bdk.BlockchainConfig.ELECTRUM(
100 100
) )
) )
blockchain = bdk.Blockchain(blockchain_config)
def test_address_bip84_testnet(): class TestSimpleBip84Wallet(unittest.TestCase):
def test_address_bip84_testnet(self):
wallet = bdk.Wallet( wallet = bdk.Wallet(
descriptor=descriptor, descriptor=descriptor,
change_descriptor=None, change_descriptor=None,
@ -23,20 +26,21 @@ def test_address_bip84_testnet():
database_config=db_config database_config=db_config
) )
address = wallet.get_new_address() address = wallet.get_new_address()
print(f"New address is {address}") # print(f"New address is {address}")
assert address == "tb1qkmvk2nadgplmd57ztld8nf8v2yxkzmdvvztyse" assert address == "tb1qkmvk2nadgplmd57ztld8nf8v2yxkzmdvvztyse", f"Wrong address {address}, should be tb1qkmvk2nadgplmd57ztld8nf8v2yxkzmdvvztyse"
def test_wallet_balance(self):
wallet = bdk.Wallet(
descriptor=descriptor,
change_descriptor=None,
network=bdk.Network.TESTNET,
database_config=db_config,
)
wallet.sync(blockchain, None)
balance = wallet.get_balance()
# print(f"Balance is {balance} sat")
assert balance > 0, "Balance is 0, send testnet coins to tb1qkmvk2nadgplmd57ztld8nf8v2yxkzmdvvztyse"
test_address_bip84_testnet() if __name__ == '__main__':
unittest.main()
# def test_wallet_balance():
# wallet = bdk.OnlineWallet(
# descriptor=descriptor,
# change_descriptor=descriptor,
# network=bdk.Network.TESTNET,
# database_config=config,
# blockchain_config=client
# )
# wallet.sync()
# balance = wallet.get_balance()
# assert balance > 0