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 Anchor client
  • Improve abigen
  • Create WCW client
  • Edit path to save contracts files
  • Add Contract function
  • Create MultiSig client
  • Create tests for WCW client
  • Create tests for Anchor client
  • Create tests for MultiSig 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() # -> hash
# 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()
>>> 0xabcd0123...

(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()
>>> 0xabcd0123...

(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()
>>> 0xabcd0123...

(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()
>>> 0xabcd0123...

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()
    )
>>> 0x123abc...
>>> 
>>> # 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
>>> 0x123abc...

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.2.tar.gz (14.4 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: litewax-0.0.2.tar.gz
  • Upload date:
  • Size: 14.4 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.2.tar.gz
Algorithm Hash digest
SHA256 28ad443adf40cd77b39e28976466c19e6183522d8cd54b8ce4449899622a0c33
MD5 1dfa7cd47a7a4cc984b3a01cd101b56c
BLAKE2b-256 ba0a9755107ea0cdd214497b3aea14e4ea3debdff397bfcaeb03e9468b8daf75

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