Skip to main content

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
from zellular import Zellular

base_url = "http://5.161.230.186:6001"
app_name = "simple_app"

zellular = Zellular(app_name, base_url)

t = int(time.time())
txs = [{"operation": "foo", "tx_id": str(uuid4()), "t": t} for _ in range(5)]

index = zellular.send(txs, blocking=True)

When setting blocking=True, the method waits for the batch to be sequenced and returns the index.

[!TIP] You can add your app to zellular test network using: curl -X POST https://www.zellular.xyz/testnet/apps -H "Content-Type: application/json" -d '{"app_name": "your-app-name"}'

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
from zellular import Zellular

base_url = "http://5.161.230.186:6001"
app_name = "simple_app"

zellular = Zellular(app_name, base_url)

for batch, index in zellular.batches(after=0):
    txs = json.loads(batch)
    for i, tx in enumerate(txs):
        print(index, i, tx)

Example output:

app: simple_app, index: 1, result: True
app: simple_app, index: 2, 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}
...

If you want to start reading batches from the latest finalized batch rather than from the beginning, you can achieve this by specifying the after parameter with the latest index. Here’s an example of how to do this:

index = zellular.get_last_finalized()["index"]
for batch, index in zellular.batches(after=index):
    ...

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

zellular-0.1.5.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

zellular-0.1.5-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file zellular-0.1.5.tar.gz.

File metadata

  • Download URL: zellular-0.1.5.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for zellular-0.1.5.tar.gz
Algorithm Hash digest
SHA256 153fe1c5546e9ca153a8cfc652549e28daaf58b6ab7293dac19e2f0a605e297a
MD5 391e2917a4765c9214a162586e2b14b1
BLAKE2b-256 4ab08e1d9498c84ba417e63d3329baa4040bb38bdea86185fb5693fc8a7d98dd

See more details on using hashes here.

File details

Details for the file zellular-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: zellular-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 4.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for zellular-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 34e88f00c2e682a1c75cb599d0189174e5b1ffb536713e46e7b0a6815ec6b032
MD5 0991a6c324cf7c71c3f445b3f3c6cc0e
BLAKE2b-256 f9c56c1bf65c293638359ff10a22963a9d05fb6cb1ca87040e6a1ca34a637828

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page