Skip to main content

Simply python library for interact with (EOSIO) WAX blockchain

Project description

Github last commit date Total downloads License

WAX donate

litewax

Simply python library for interact with WAX blockchain

TODO

  • Create tests for Client
  • Create tests for WCW client
  • Create tests for Anchor client
  • Create tests for MultiSig client
  • Add supply private_keys and wcw both to MultiSigClient
  • Add PayWith for Nefty
  • Add PayWith for Atomic
  • Add PayWith for WCW token transfer
  • Create tests for PayWith
  • Refactor code, optimize WCW client

Installation

pip install litewax

Clients examples

Import

from litewax import Client, MultiSigClient, Contract

Client setup

Anchor

client = Client(private_key="PVT_KEY")

Wax Cloud Wallet

client = Client(cookie="TOKEN_SESSION")

Anchor MultiSigClient

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

Wax Cloud Wallet MultiSigClient

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

Contract examples

Contract initialize

Default

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

With client

contract = client.Contract("name")

# In MultiSigClient:
# 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) MultiSigClient example

import litewax

# Create multisig client (may accept wax cloud wallet and anchor)
multiclient = litewax.MultiSigClient(
        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) MultiSigClient example

import litewax

# Create multisig client (may accept wax cloud wallet and anchor)
multiclient = litewax.MultiSigClient(
        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.0.7.tar.gz (15.1 kB view details)

Uploaded Source

File details

Details for the file litewax-0.0.7.tar.gz.

File metadata

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

File hashes

Hashes for litewax-0.0.7.tar.gz
Algorithm Hash digest
SHA256 84b098745ab60ad4beab7077b513dfb2148e5e4b9f6dc1a531c991abb72937d0
MD5 0542e34f10dfb77677450fd31a5d4432
BLAKE2b-256 2bd7623f24932d9e531914e0da83d9b2e7cc9628073fc85abbf71f97384084c8

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