Skip to main content

Simply python library for interact with (EOSIO) WAX blockchain

Project description

PyPI version License image Github last commit date

WAX donate

litewax

Simply python library for interact with WAX blockchain

See also: litewax documentation

TODO

  • Implement BaseClient
  • Implement WCWClient and AnchorClient
  • Implement Client
  • Implement MultiClient
  • Implement .payer() for Transaction
  • Add Nodes class for search best nodes for current ip; .best_node()
  • Add docstrings for new classes and methods
  • Update README.md
  • Write docs on readthedocs.io
  • Create tests for Client and MultiClient
  • Create examples for Client and MultiClient
  • Create docs

Installation

pip install litewax

Clients examples

Import

from litewax import Client, MultiClient, Contract

Client setup

Anchor

client = Client(private_key="PVT_KEY")

Wax Cloud Wallet

client = Client(cookie="TOKEN_SESSION")

Anchor MultiClient

client = MultiClient(private_keys=["PVT_KEY1", "PVT_KEY2", ...])

Wax Cloud Wallet MultiClient

client = MultiClient(cookies=["TOKEN_SESSION1", "TOKEN_SESSION2", ...])

Contract examples

Contract initialize

Default

contract = Contract("name", actor="wallet")

With client

contract = client.Contract("name")

# In MultiClient:
# contract = client.Contract("name", client[0])
# contract = client[0].Contract("name")
# contract = client.Contract("name", actor=client[0].name)

After once init you can import contract directly

# Contract("res.pink")
from contracts.res_pink import res_pink

contract = res_pink("actor")

Transactions

Make transaction

contract = client.Contract("res.pink")

trx = client.Transaction(
    contract.noop(),
    # or
    contract.call('noop', {})
)

Push transaction

trx.push() # -> dict
# {"transaction_id": "0x0123abc...", ...}

Examples

(Anchor) Client example

import litewax

# Create client with private key(anchor)
client = litewax.Client(private_key=PVT_KEY)

# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)
contract = litewax.Contract("res.pink", client)
# or
# contract = client.Contract("res.pink")
# or
# contract = litewax.Contract("res.pink")
# contract.set_actor(client.name) 

# easy make transaction
trx = client.Transaction(
        contract.noop()
    )

# easy push transaction
trx.push()
# {"transaction_id": "0x0123abc...", ...}

(Wax Cloud Wallet) Client example

import litewax

# Create client with token session (wax cloud wallet)
client = litewax.Client(cookie=TOKEN_SESSION)

# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)
contract = litewax.Contract("res.pink", client)
# or
# contract = client.Contract("res.pink")
# or
# contract = litewax.Contract("res.pink")
# contract.set_actor(client.name) 

# easy make transaction
trx = AnchorClient.Transaction(
        contract.noop()
    )

# easy push transaction
trx.push()
# {"transaction_id": "0x0123abc...", ...}

(Anchor) MultiClient example

import litewax

# Create multi-client (may accept wax cloud wallet and anchor)
multiclient = litewax.MultiClient(
        private_keys=[PVT_KEY1, PVT_KEY2, ...]
    )

# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)
contract = litewax.Contract("res.pink", client)
# or
# contract = client[i].Contract("res.pink")
# or
# contract = litewax.Contract("res.pink")
# contract.set_actor(client[i].name) 

# easy make transaction
trx = multiclient.Transaction(
        contract.transfer(
            _from=client[0].name,
            _to=client[1].name,
            amount="1.0000 WAX",
            memo="Send 1 WAX with multisig client"
        ),
        client[1].Contract("res.pink").noop() # for pay CPU
    )

# easy push transaction (if client is MultiSig, last signed action will pay for all cpu)
trx.push()
# {"transaction_id": "0x0123abc...", ...}

(Wax Cloud Wallet) MultiClient example

import litewax

# Create multi-client (may accept wax cloud wallet and anchor)
multiclient = litewax.MultiClient(
        cookies=[cookie1, cookie2, ...]
    )

# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)
contract = litewax.Contract("res.pink", client)
# or
# contract = client[i].Contract("res.pink")
# or
# contract = litewax.Contract("res.pink")
# contract.set_actor(client[i].name) 

# easy make transaction
trx = multiclient.Transaction(
        contract.transfer(
            _from=client[0].name,
            _to=client[1].name,
            amount="1.0000 WAX",
            memo="Send 1 WAX with multisig client"
        ),
        client[1].Contract("res.pink").noop() # for pay CPU
    )

# easy push transaction (if client is MultiSig, last signed action will pay for all cpu)
trx.push()
# {"transaction_id": "0x0123abc...", ...}

Contract obj example

from litewax import Contract

contract = Contract("res.pink")
# contract = Contract("res.pink", actor="abuztradewax")
# contract = Contract("res.pink", actor="abuztradewax", force_recreate=True)
#
# After create contract once, abigen create folder "contracts" and you can import directly

from contracts.res_pink import res_pink 
# in contract name "." replace to "_"

contract = res_pink(actor="abuztradewax")
# contract = res_pink()
# contract.set_actor("abuztradewax")

# you can push transaction without initialize any clients (push work only for anchor accounts)
contract.push_actions(
        "PRIVATE_KEY",
        contract.noop()
    )
# {"transaction_id": "0x0123abc...", ...}

# also you can send multiply signed trx
contract1 = Contract("eosio.token", actor="wallet1")
contract2 = Contract("res.pink", actor="wallet2")

contract1.push_actions(
        ["PRIVATE_KEY1", "PRICATE_KEY2"],
        contract1.transfer(
            _from=contract1.actor,
            _to=contract2.actor,
            amount="1.0000 WAX",
            memo="send 1 WAX without any client (only Contract instance)"
        ),
        contract2.noop() # this action will pay for CPU
        
# {"transaction_id": "0x0123abc...", ...}

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

litewax-0.1.8.dev0.tar.gz (18.9 kB view details)

Uploaded Source

File details

Details for the file litewax-0.1.8.dev0.tar.gz.

File metadata

  • Download URL: litewax-0.1.8.dev0.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.2

File hashes

Hashes for litewax-0.1.8.dev0.tar.gz
Algorithm Hash digest
SHA256 53edbf0ecbba2ee96037859631d4df80b2c96c47873bbbb46776d2d6bcac1c3a
MD5 02d1d8543caed70da68e5590d4817b14
BLAKE2b-256 55ad2c234444da333e33640ca40da1ce74c9b52d4163621abd1c71229e4ba432

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