Simply python library for interact with (EOSIO) WAX blockchain
Project description
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
Release history Release notifications | RSS feed
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)
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28ad443adf40cd77b39e28976466c19e6183522d8cd54b8ce4449899622a0c33 |
|
MD5 | 1dfa7cd47a7a4cc984b3a01cd101b56c |
|
BLAKE2b-256 | ba0a9755107ea0cdd214497b3aea14e4ea3debdff397bfcaeb03e9468b8daf75 |