Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mohanson/pybtc
https://github.com/mohanson/pybtc
Last synced: 9 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/mohanson/pybtc
- Owner: mohanson
- License: mit
- Created: 2023-12-29T13:56:10.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-06-19T01:20:12.000Z (11 days ago)
- Last Synced: 2024-06-19T08:12:59.033Z (11 days ago)
- Language: Python
- Size: 87.9 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-bitcoin - pybtc - Python BTC is an experimental project that aims to provide human-friendly interfaces for common BTC operations. (Python Libraries)
README
# Python SDK for BTC
Python BTC is an experimental project that aims to provide human-friendly interfaces for common BTC operations. Note that Python BTC is not a complete SDK, but only implements the BTC functions that I am interested in.
Features:
- No third-party dependencies. All code is visible.
- Incredibly simple.## Installation
```sh
$ git clone https://github.com/mohanson/pybtc
$ cd pybtc
$ python -m pip install --editable . --config-settings editable_mode=strict
```## Usage
**example/addr.py**
Calculate the address from a private key.
```sh
$ python example/addr.py --net mainnet --prikey 1# p2pkh 1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH
# p2sh-p2wpkh 3JvL6Ymt8MVWiCNHC7oWU6nLeHNJKLZGLN
# p2wpkh bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
# p2tr bc1pmfr3p9j00pfxjh0zmgp99y8zftmd3s5pmedqhyptwy6lm87hf5sspknck9
```**example/taproot.py**
This example demonstrates how to create a P2TR script with two script spending paths: p2pk and p2ms(2-of-2 multisig).
```sh
$ python example/taproot.py
```**example/transfer.py**
Transfer Bitcoin to another account. Pybtc supports four common types of Bitcoin transactions: P2PKH, P2SH-P2WPKH, P2WPKH, and P2TR. For more complex account types, such as P2SH-P2MS, please refer to [test/test_wallet.py](test/test_wallet.py).
```sh
$ python example/transfer.py --net develop --prikey 1 --script-type p2pkh --to mg8Jz5776UdyiYcBb9Z873NTozEiADRW5H --value 0.1# 0x039d1b0fe969d33341a7db9ddd236f632d6851292200603abc5a6c7738bf3079
```Before using this script, you first need to execute the code in the Test section. This is because pybtc requires the bitcoin core wallet to provide an account's utxo set.
## Test
The testing of this project relies on regtest. You can set up the regtest node using the following steps:
```sh
$ wget https://bitcoincore.org/bin/bitcoin-core-27.0/bitcoin-27.0-x86_64-linux-gnu.tar.gz
$ tar -zxvf bitcoin-27.0-x86_64-linux-gnu.tar.gz
$ cp -R bitcoin-27.0 ~/app/bitcoin # Install to the target location.$ mkdir ~/.bitcoin
$ echo "chain=regtest" >> ~/.bitcoin/bitcoin.conf
$ echo "rpcpassword=pass" >> ~/.bitcoin/bitcoin.conf
$ echo "rpcuser=user" >> ~/.bitcoin/bitcoin.conf
$ echo "txindex=1" >> ~/.bitcoin/bitcoin.conf$ bitcoind
# Create default wallets
$ python example/regtest.py
$ pytest -v
```## License
MIT