This client enables to perform actions on staking contracts and obtain 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 Web3 instance, and configure default account, as well as some middlewares.
Amount must be less than or equal to the amount allocated to the escrow (on-chain)
Escrow address must be valid
Example:
from eth_typing import URIfrom web3 import Web3from web3.middleware import construct_sign_and_send_raw_middlewarefrom web3.providers.auto import load_provider_from_urifrom human_protocol_sdk.staking import StakingClientdefget_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 WEIstaking_client.slash('0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266','0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266','0x62dD51230A30401C455c8398d06F85e4EaB6309f', amount)
stake(amount)
Stakes HMT token.
Parameters:amount (Decimal) – Amount to stake
Return type:None
Returns: None
Validate:
Amount must be greater than 0
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 URIfrom web3 import Web3from web3.middleware import construct_sign_and_send_raw_middlewarefrom web3.providers.auto import load_provider_from_urifrom human_protocol_sdk.staking import StakingClientdefget_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 WEIstaking_client.approve_stake(amount)# if it was already approved before, this is not necessarystaking_client.stake(amount)
unstake(amount)
Unstakes HMT token.
Parameters:amount (Decimal) – Amount to unstake
Return type:None
Returns: None
Validate:
Amount must be greater than 0
Amount must be less than or equal to the staked amount which is not locked / allocated (on-chain)
Example:
from eth_typing import URIfrom web3 import Web3from web3.middleware import construct_sign_and_send_raw_middlewarefrom web3.providers.auto import load_provider_from_urifrom human_protocol_sdk.staking import StakingClientdefget_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 WEIstaking_client.unstake(amount)
withdraw()
Withdraws HMT token.
Return type:None
Returns: None
Validate:
There must be unstaked tokens which is unlocked (on-chain)