Metadata-Version: 2.1
Name: python-elementstx
Version: 0.1.5.post0
Summary: Elements module for python-bitcointx
Home-page: https://github.com/Simplexum/python-elementstx
Keywords: bitcoin,elements
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: python-bitcointx <2,>=1.1.5

This Python3 module implements support for Elements transactions.

It builds on top, and is intended to be used along with python-bitcointx library.

## Requirements

- [python-bitcointx](https://github.com/Simplexum/python-bitcointx) (version >= 1.0.0)
- [secp256k1-zkp](https://github.com/ElementsProject/secp256k1-zkp)

  Configure parameters for `secp256k1-zkp`:

```
    ./configure --enable-experimental \
                --enable-module-generator \
                --enable-module-rangeproof \
                --enable-module-surjectionproof \
                --enable-module-ecdh \
                --enable-module-recovery
```

## Usage:

With contextual switch to Elements parameters:

```python
import os
import elementstx
from bitcointx import ChainParams, get_current_chain_params
from bitcointx.wallet import CCoinKey, CCoinExtKey, CCoinAddress, P2PKHCoinAddress

with ChainParams('elements'):
    k = CCoinExtKey.from_seed(os.urandom(32))
    a = P2PKHCoinAddress.from_pubkey(k.derive_path("m/0'/0'/1").pub)
    print('example {} address: {}'.format(get_current_chain_params().name, a))
    assert CCoinAddress(str(a)) == a
```

With global switch to Elements parameters:

```python
from elementstx import ElementsParams
from bitcointx import select_chain_params

select_chain_params('elements')
# or, using the chain params class directly
select_chain_params(ElementsParams)

# To switch to Liquid Network parameters:
select_chain_params('elements/liquidv1')

```

Without the switch of chain parameters:

```python
from elementstx.core import CElementsTransaction

transaction_data = read_tx_data()
tx = CElementsTransaction.deserialze(transaction_data)
print("Number of txout witnesses:", len(tx.wit.vtxoutwit))

```

# Example Code

See `examples/` directory.
