[](https://badge.fury.io/py/litewax)
[](https://github.com/makarworld/litewax/blob/main/LICENSE)
[](https://pypi.org/project/litewax/)
[](https://github.com/makarworld/litewax/commits)
[WAX donate](https://wax.atomichub.io/trading/token-transfer?partner=abuztradewax)
# litewax
Simply python library for interact with WAX blockchain
# TODO
- [x] Create tests for Client
- [x] Create tests for WCW client
- [x] Create tests for Anchor client
- [x] Create tests for MultiSig client
- [x] Add supply private_keys and wcw both to MultiSigClient
- [x] Add PayWith for NeftyBlocks
- [x] Add PayWith for AtomicHub
- [x] Refactor code, optimize WCW client
- [x] Wrap Actions to class (for pretty print)
- [ ] Create tests for PayWith
---
# 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...", ...}
```
Raw data
{
"_id": null,
"home_page": "https://github.com/makarworld/litewax.git",
"name": "litewax",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6.0",
"maintainer_email": "",
"keywords": "",
"author": "abuztrade",
"author_email": "abuztrade.work@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/b6/f1/899b82b5a57f99d6ad0abf0a90391215e5f57e1fd2a82f4750dce6179c49/litewax-0.1.7.tar.gz",
"platform": null,
"description": "[](https://badge.fury.io/py/litewax)\n[](https://github.com/makarworld/litewax/blob/main/LICENSE)\n[](https://pypi.org/project/litewax/)\n[](https://github.com/makarworld/litewax/commits)\n\n[WAX donate](https://wax.atomichub.io/trading/token-transfer?partner=abuztradewax)\n\n# litewax\nSimply python library for interact with WAX blockchain\n\n# TODO\n- [x] Create tests for Client\n- [x] Create tests for WCW client\n- [x] Create tests for Anchor client\n- [x] Create tests for MultiSig client\n- [x] Add supply private_keys and wcw both to MultiSigClient\n- [x] Add PayWith for NeftyBlocks\n- [x] Add PayWith for AtomicHub\n- [x] Refactor code, optimize WCW client\n- [x] Wrap Actions to class (for pretty print)\n- [ ] Create tests for PayWith\n---\n\n# Installation \n```\npip install litewax\n```\n\n---\n\n# Clients examples\n## Import\n```\nfrom litewax import Client, MultiSigClient, Contract\n```\n## Client setup\nAnchor\n```\nclient = Client(private_key=\"PVT_KEY\")\n```\n\nWax Cloud Wallet\n```\nclient = Client(cookie=\"TOKEN_SESSION\")\n```\n\nAnchor MultiSigClient\n```\nclient = MultiSigClient(private_keys=[\"PVT_KEY1\", \"PVT_KEY2\", ...])\n```\n\nWax Cloud Wallet MultiSigClient\n```\nclient = MultiSigClient(cookies=[\"TOKEN_SESSION1\", \"TOKEN_SESSION2\", ...])\n```\n\n---\n\n# Contract examples\n## Contract initialize\nDefault\n```\ncontract = Contract(\"name\", actor=\"wallet\")\n```\n\nWith client\n```\ncontract = client.Contract(\"name\")\n\n# In MultiSigClient:\n# contract = client.Contract(\"name\", client[0])\n# contract = client[0].Contract(\"name\")\n# contract = client.Contract(\"name\", actor=client[0].name)\n```\n\nAfter once init you can import contract directly\n```\n# Contract(\"res.pink\")\nfrom contracts.res_pink import res_pink\n\ncontract = res_pink(\"actor\")\n```\n\n---\n\n# Transactions\n## Make transaction\n```\ncontract = client.Contract(\"res.pink\")\n\ntrx = client.Transaction(\n contract.noop(),\n # or\n contract.call('noop', {})\n)\n```\n## Push transaction\n```\ntrx.push() # -> dict\n# {\"transaction_id\": \"0x0123abc...\", ...}\n```\n\n---\n\n# Examples\n## (Anchor) Client example \n```\nimport litewax\n\n# Create client with private key(anchor)\nclient = litewax.Client(private_key=PVT_KEY)\n\n# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)\ncontract = litewax.Contract(\"res.pink\", client)\n# or\n# contract = client.Contract(\"res.pink\")\n# or\n# contract = litewax.Contract(\"res.pink\")\n# contract.set_actor(client.name) \n\n# easy make transaction\ntrx = client.Transaction(\n contract.noop()\n )\n\n# easy push transaction\ntrx.push()\n# {\"transaction_id\": \"0x0123abc...\", ...}\n```\n## (Wax Cloud Wallet) Client example \n```\nimport litewax\n\n# Create client with token session (wax cloud wallet)\nclient = litewax.Client(cookie=TOKEN_SESSION)\n\n# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)\ncontract = litewax.Contract(\"res.pink\", client)\n# or\n# contract = client.Contract(\"res.pink\")\n# or\n# contract = litewax.Contract(\"res.pink\")\n# contract.set_actor(client.name) \n\n# easy make transaction\ntrx = AnchorClient.Transaction(\n contract.noop()\n )\n\n# easy push transaction\ntrx.push()\n# {\"transaction_id\": \"0x0123abc...\", ...}\n```\n## (Anchor) MultiSigClient example \n```\nimport litewax\n\n# Create multisig client (may accept wax cloud wallet and anchor)\nmulticlient = litewax.MultiSigClient(\n private_keys=[PVT_KEY1, PVT_KEY2, ...]\n )\n\n# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)\ncontract = litewax.Contract(\"res.pink\", client)\n# or\n# contract = client[i].Contract(\"res.pink\")\n# or\n# contract = litewax.Contract(\"res.pink\")\n# contract.set_actor(client[i].name) \n\n# easy make transaction\ntrx = multiclient.Transaction(\n contract.transfer(\n _from=client[0].name,\n _to=client[1].name,\n amount=\"1.0000 WAX\",\n memo=\"Send 1 WAX with multisig client\"\n ),\n client[1].Contract(\"res.pink\").noop() # for pay CPU\n )\n\n# easy push transaction (if client is MultiSig, last signed action will pay for all cpu)\ntrx.push()\n# {\"transaction_id\": \"0x0123abc...\", ...}\n```\n## (Wax Cloud Wallet) MultiSigClient example \n```\nimport litewax\n\n# Create multisig client (may accept wax cloud wallet and anchor)\nmulticlient = litewax.MultiSigClient(\n cookies=[cookie1, cookie2, ...]\n )\n\n# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)\ncontract = litewax.Contract(\"res.pink\", client)\n# or\n# contract = client[i].Contract(\"res.pink\")\n# or\n# contract = litewax.Contract(\"res.pink\")\n# contract.set_actor(client[i].name) \n\n# easy make transaction\ntrx = multiclient.Transaction(\n contract.transfer(\n _from=client[0].name,\n _to=client[1].name,\n amount=\"1.0000 WAX\",\n memo=\"Send 1 WAX with multisig client\"\n ),\n client[1].Contract(\"res.pink\").noop() # for pay CPU\n )\n\n# easy push transaction (if client is MultiSig, last signed action will pay for all cpu)\ntrx.push()\n# {\"transaction_id\": \"0x0123abc...\", ...}\n```\n## Contract obj example \n```\nfrom litewax import Contract\n\ncontract = Contract(\"res.pink\")\n# contract = Contract(\"res.pink\", actor=\"abuztradewax\")\n# contract = Contract(\"res.pink\", actor=\"abuztradewax\", force_recreate=True)\n#\n# After create contract once, abigen create folder \"contracts\" and you can import directly\n\nfrom contracts.res_pink import res_pink \n# in contract name \".\" replace to \"_\"\n\ncontract = res_pink(actor=\"abuztradewax\")\n# contract = res_pink()\n# contract.set_actor(\"abuztradewax\")\n\n# you can push transaction without initialize any clients (push work only for anchor accounts)\ncontract.push_actions(\n \"PRIVATE_KEY\",\n contract.noop()\n )\n# {\"transaction_id\": \"0x0123abc...\", ...}\n\n# also you can send multiply signed trx\ncontract1 = Contract(\"eosio.token\", actor=\"wallet1\")\ncontract2 = Contract(\"res.pink\", actor=\"wallet2\")\n\ncontract1.push_actions(\n [\"PRIVATE_KEY1\", \"PRICATE_KEY2\"],\n contract1.transfer(\n _from=contract1.actor,\n _to=contract2.actor,\n amount=\"1.0000 WAX\",\n memo=\"send 1 WAX without any client (only Contract instance)\"\n ),\n contract2.noop() # this action will pay for CPU\n \n# {\"transaction_id\": \"0x0123abc...\", ...}\n```",
"bugtrack_url": null,
"license": "MIT License",
"summary": "Simply python library for interact with (EOSIO) WAX blockchain",
"version": "0.1.7",
"project_urls": {
"Download": "https://github.com/makarworld/litewax/archive/refs/tags/v0.1.7.zip",
"Homepage": "https://github.com/makarworld/litewax.git"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b6f1899b82b5a57f99d6ad0abf0a90391215e5f57e1fd2a82f4750dce6179c49",
"md5": "023f589510fbe6e16177f35bb208029a",
"sha256": "a6c7877d4195598e723056cae6d51a37de999127eb8daadb8568af1398ff9112"
},
"downloads": -1,
"filename": "litewax-0.1.7.tar.gz",
"has_sig": false,
"md5_digest": "023f589510fbe6e16177f35bb208029a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6.0",
"size": 12386,
"upload_time": "2022-11-14T15:18:16",
"upload_time_iso_8601": "2022-11-14T15:18:16.438428Z",
"url": "https://files.pythonhosted.org/packages/b6/f1/899b82b5a57f99d6ad0abf0a90391215e5f57e1fd2a82f4750dce6179c49/litewax-0.1.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-11-14 15:18:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "makarworld",
"github_project": "litewax",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "libeospy",
"specs": [
[
"==",
"2.1.0"
]
]
},
{
"name": "cloudscraper",
"specs": [
[
"==",
"1.2.64"
]
]
},
{
"name": "requests",
"specs": []
}
],
"lcname": "litewax"
}