This client enables performing actions on staking contracts and obtaining staking information from both the contracts and subgraph.
Internally, the SDK will use one network or another according to the network ID of the web3. To use this client, you need to create a Web3 instance and configure the default account, as well as some middlewares.
Code Example
With Signer
from eth_typing import URI
from web3 import Web3
from web3.middleware import construct_sign_and_send_raw_middleware
from web3.providers.auto import load_provider_from_uri
from human_protocol_sdk.staking import StakingClient
def get_w3_with_priv_key(priv_key: str):
w3 = Web3(load_provider_from_uri(URI("http://localhost:8545")))
gas_payer = w3.eth.account.from_key(priv_key)
w3.eth.default_account = gas_payer.address
w3.middleware_onion.add(
construct_sign_and_send_raw_middleware(gas_payer),
"construct_sign_and_send_raw_middleware",
)
return (w3, gas_payer)
(w3, gas_payer) = get_w3_with_priv_key('YOUR_PRIVATE_KEY')
staking_client = StakingClient(w3)
Without Signer (For read operations only)
from eth_typing import URI
from web3 import Web3
from web3.providers.auto import load_provider_from_uri
from human_protocol_sdk.staking import StakingClient
w3 = Web3(load_provider_from_uri(URI("http://localhost:8545")))
staking_client = StakingClient(w3)
Module
class human_protocol_sdk.staking.staking_client.StakingClient(w3)
Bases: object
A class used to manage staking on the HUMAN network.
Amount must be less than or equal to the approved amount (on-chain)
Amount must be less than or equal to the balance of the staker (on-chain)
Example:
from eth_typing import URI
from web3 import Web3
from web3.middleware import construct_sign_and_send_raw_middleware
from web3.providers.auto import load_provider_from_uri
from human_protocol_sdk.staking import StakingClient
def get_w3_with_priv_key(priv_key: str):
w3 = Web3(load_provider_from_uri(URI("http://localhost:8545")))
gas_payer = w3.eth.account.from_key(priv_key)
w3.eth.default_account = gas_payer.address
w3.middleware_onion.add(
construct_sign_and_send_raw_middleware(gas_payer),
"construct_sign_and_send_raw_middleware",
)
return (w3, gas_payer)
(w3, gas_payer) = get_w3_with_priv_key('YOUR_PRIVATE_KEY')
staking_client = StakingClient(w3)
amount = Web3.to_wei(5, 'ether') # convert from ETH to WEI
staking_client.approve_stake(amount) # if it was already approved before, this is not necessary
staking_client.stake(amount)