a package sdk for zelluar
Project description
zellular.py
A Python SDK for interacting with the Zellular network.
Dependencies
To use zelluar.py, you'll need to install the MCL native library. Follow these steps to install it:
$ sudo apt install libgmp3-dev
$ wget https://github.com/herumi/mcl/archive/refs/tags/v1.93.zip
$ unzip v1.93.zip
$ cd mcl-1.93
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install
Installation
Install the zelluar.py package via pip:
pip install zellular
Usage
Getting Nodes
Zellular Testnet is deployed on the EigenLayer Holesky network. You can query the list of nodes using the following code:
from pprint import pprint
import zellular
operators = zellular.get_operators()
pprint(operators)
Example output:
{'0x3eaa...078c': {
'id': '0x3eaa...078c',
'operatorId': '0xfd17...97fd',
'pubkeyG1_X': '1313...2753',
'pubkeyG1_Y': '1144...6864',
'pubkeyG2_X': ['1051...8501', '1562...5720'],
'pubkeyG2_Y': ['1601...1108', '1448...1899'],
'public_key_g2': <eigensdk.crypto.bls.attestation.G2Point object at 0x7d8f31b167d0>,
'socket': 'http://5.161.230.186:6001',
'stake': 1
}, ... }
[!TIP] The node URL of each operator can be accessed using
operator["socket"]
.
Posting Transactions
Zellular sequences transactions in batches. You can send a batch of transactions like this:
import requests
from uuid import uuid4
import time
base_url = "http://5.161.230.186:6001"
app_name = "simple_app"
t = int(time.time())
txs = [{"operation": "foo", "tx_id": str(uuid4()), "t": t} for _ in range(5)]
resp = requests.put(f"{base_url}/node/{app_name}/batches", json=txs)
print(resp.status_code)
Fetching and Verifying Transactions
Unlike reading from a traditional blockchain, where you must trust the node you're connected to, Zellular allows trustless reading of sequenced transactions. This is achieved through an aggregated BLS signature that verifies if the sequence of transaction batches is approved by the majority of Zellular nodes. The Zellular SDK abstracts the complexities of verifying these signatures, providing a simple way to constantly pull the latest finalized transaction batches:
import json
import zellular
verifier = zellular.Verifier("simple_app", "http://5.161.230.186:6001")
for batch, index in verifier.batches():
txs = json.loads(batch)
for i, tx in enumerate(txs):
print(index, i, tx)
Example output:
app: simple_app, index: 481238, result: True
app: simple_app, index: 481240, result: True
583 0 {'tx_id': '7eaa...2101', 'operation': 'foo', 't': 1725363009}
583 1 {'tx_id': '5839...6f5e', 'operation': 'foo', 't': 1725363009}
583 2 {'tx_id': '0a1a...05cb', 'operation': 'foo', 't': 1725363009}
583 3 {'tx_id': '6339...cc08', 'operation': 'foo', 't': 1725363009}
583 4 {'tx_id': 'cf4a...fc19', 'operation': 'foo', 't': 1725363009}
...
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file zellular-0.1.4.tar.gz
.
File metadata
- Download URL: zellular-0.1.4.tar.gz
- Upload date:
- Size: 3.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9449339f3d6239070d3dbc5069b1072d049a4a57834c4c29a8f893a051fd1750 |
|
MD5 | 6025121ec40b0b3d91feef3a03a6036f |
|
BLAKE2b-256 | 4c3f20f98becfd7bbe1d1f2e4c23ac0183404f3db9d9ff529e1082abbda689ee |
File details
Details for the file zellular-0.1.4-py3-none-any.whl
.
File metadata
- Download URL: zellular-0.1.4-py3-none-any.whl
- Upload date:
- Size: 4.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c5cb71d7c30c344eeaa6046c7e711fe50ad66f79368bd307a1e99289b5b1dbd |
|
MD5 | 211c70723a2244c9b7fe223293eddd48 |
|
BLAKE2b-256 | 08ff855358935d2ee1bb25aa11a8d0b48c955bc78c26183de4de1fb0e5f327dc |