Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mohanson/pybtc
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.
https://github.com/mohanson/pybtc
Last synced: about 2 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/mohanson/pybtc
- Owner: mohanson
- License: mit
- Created: 2023-12-29T13:56:10.000Z (12 months ago)
- Default Branch: master
- Last Pushed: 2024-10-28T02:09:56.000Z (about 2 months ago)
- Last Synced: 2024-10-28T06:00:54.049Z (about 2 months ago)
- Language: Python
- Homepage:
- Size: 164 KB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- 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 .
```## 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/message.py**
Sign a message with the private key and verify it.
```sh
$ python example/message.py --prikey 1 --msg pybtc
# ICvzXjwjJVMilSGyMqwlqMTuGF6UMwddFJzVmm0Di5qNnqkBRKP8Pldm3YbOskg3ewV1tszVLy8gVX1u+qFrx6o=$ python example/message.py --prikey 1 --msg pybtc --sig ICvzXjwjJVMilSGyMqwlqMTuGF6UMwddFJzVmm0Di5qNnqkBRKP8Pldm3YbOskg3ewV1tszVLy8gVX1u+qFrx6o=
# True
```**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.1/bitcoin-27.1-x86_64-linux-gnu.tar.gz
$ tar -xvf bitcoin-27.1-x86_64-linux-gnu.tar.gz
$ cp -R bitcoin-27.1 ~/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