Web3Py Extender Tools


License
MIT
Install
pip install web3tools==0.1.2

Documentation

Web3Tools

Web3Tools is an extender for the web3py library

Upload PyPi package

Setup your PyPi credentials on ~/.pypirc

[pypi]
  username = __token__
  password = pypi-token

Accordingly with the setuptools on setup.py generate a new package for a given project and version. Two files (tar.gz and whl) will be added to dist/

python setup.py sdist bdist_wheel

Upload the packages within dist/ to PyPi

pip install twine
twine upload dist/*

Usage

Basic Tools

from web3tools import Utils

Create an ethereum account

address, private_key = Utils.create()
keystore = Utils.encrypt(private_key, "myPassword")

Get address

private_key = Utils.decrypt("myKeystore", "myPassword")
address = Utils.get_address(private_key)

Sign a message & Recover signer's address

signature = Utils.sign_message("myPrivateKey", "myMessage")
address = Utils.recover_message(signature, "myMessage")

Ewt

from web3tools import Ewt
ewt = Ewt()

Ewt Authentication, similar to jwt but using the ethereum encryption keys

ewt_token = ewt.generate("myPrivateKey")
is_valid = ewt.validate(ewt_token)

Blockchain Reader

from web3tools import Reader
reader = Reader(Providers.INFURA_MAINNET.value.format("myInfuraKey"))

Crawl blockchain

current_block_number = reader.get_current_block_number()
current_block_info = reader.get_block(current_block_number)
transaction = reader.get_transaction("myTxid")
receipt = reader.get_receipt("myTxid")
gas_price = reader.get_gas_price()

Get Wallet Info

balance = reader.get_balance("myWallet")
nonce = reader.get_nonce("myWallet")

Read Contracts

contract = reader.get_contract_instance("abiFilePath", "contractAddress")
value = reader.call_view(contract, "viewName", "viewArguments")
events = reader.find_events(contract, "eventName", from_block=0, to_block="latest")
events_on_transaction = reader.find_event_receipt(contract, "eventName", "myTxid")

Launch Transactions

from web3tools import Providers, Transactor
transactor = Transactor(Providers.INFURA_MAINNET.value.format("myInfuraKey"))

Send 1 Eth to receiverAddress

transactor.launch_transaction("myPrivateKey", "receiverAddress", transactor.to_wei(1))

Call a transfer function of a token contract to send 1 Token to receiverAddress

contract = transactor.get_contract_instance("abiFilePath", "contractAddress")
transactor.launch_function(contract, "myPrivateKey", "transfer",
                           "receiverAddress", transactor.to_wei(1))