sapphirepy documentation¶
sapphire.py¶
Installation¶
pip3 install --user -r requirements.txt
pip3 install --user -r requirements.dev.txt
make
Changelog¶
https://github.com/oasisprotocol/sapphire-paratime/tree/main/clients/py/CHANGELOG.md
Usage¶
from web3 import Web3, AsyncWeb3
from web3.middleware import SignAndSendRawMiddlewareBuilder
from eth_account import Account
from eth_account.signers.local import LocalAccount
from sapphirepy import sapphire
w3 = Web3(Web3.HTTPProvider(sapphire.NETWORKS['sapphire-localnet']))
async_w3 = AsyncWeb3(
AsyncWeb3.AsyncHTTPProvider(
sapphire.NETWORKS['sapphire-localnet']
)
)
# Optional: Setup your Web3 provider with a signing account.
# This account is used for signing transactions.
account: LocalAccount = (
Account.from_key( # pylint: disable=no-value-for-parameter
private_key="<your_private_key_here>"
)
)
w3.middleware_onion.add(SignAndSendRawMiddlewareBuilder.build(account))
# Finally, wrap the provider to add Sapphire end-to-end encryption.
# Note: Account parameter in the wrap() function is used for signing view
# calls and can be different from the account used for singing transactions.
w3 = sapphire.wrap(w3, account) # Can provide custom "account" parameter
# Wrapper middleware also works with AsyncWeb3
async_w3 = sapphire.wrap(async_w3, account)
# Optionally, query Oasis Web3 Gateway for the gas price.
# from web3.gas_strategies.rpc import rpc_gas_price_strategy
# w3.eth.set_gas_price_strategy(rpc_gas_price_strategy)
The Sapphire middleware for Web3.py ensures all transactions, gas estimates and view calls are end-to-end encrypted between your application and the smart contract.
License¶
The Deoxys-ii library and its test vectors are derived directly from the original go library.
The remainder of the Oasis Sapphire python bindings is licensed under Apache 2.0 license.
Contents: