From 7c6acb7fdf5051ffd4473c97f38e3df53840eb4b Mon Sep 17 00:00:00 2001 From: george-aj <35270943+george-aj@users.noreply.github.com> Date: Fri, 27 Oct 2023 08:26:03 -0500 Subject: [PATCH 1/3] add create withdraw validator commission --- cosmpy/aerial/client/__init__.py | 22 +++++++++++++++++++++- cosmpy/aerial/client/distribution.py | 12 ++++++++++++ docs/api/aerial/client/__init__.md | 22 ++++++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/cosmpy/aerial/client/__init__.py b/cosmpy/aerial/client/__init__.py index 4c6fa1f9..74e5546b 100644 --- a/cosmpy/aerial/client/__init__.py +++ b/cosmpy/aerial/client/__init__.py @@ -32,7 +32,7 @@ from google.protobuf.timestamp_pb2 import Timestamp from cosmpy.aerial.client.bank import create_bank_send_msg -from cosmpy.aerial.client.distribution import create_withdraw_delegator_reward +from cosmpy.aerial.client.distribution import create_withdraw_delegator_reward, create_withdraw_validator_commission from cosmpy.aerial.client.staking import ( ValidatorStatus, create_delegate_msg, @@ -600,6 +600,26 @@ def claim_rewards( self, tx, sender, gas_limit=gas_limit, memo=memo ) + def claim_validator_commission( + self, + sender: Wallet, + memo: Optional[str] = None, + gas_limit: Optional[int] = None, + ) -> SubmittedTx: + """claim validator commission. + + :param sender: sender + :param memo: memo, defaults to None + :param gas_limit: gas limit, defaults to None + :return: prepare and broadcast the transaction and transaction details + """ + tx = Transaction() + tx.add_message(create_withdraw_validator_commission(sender.address())) + + return prepare_and_broadcast_basic_transaction( + self, tx, sender, gas_limit=gas_limit, memo=memo + ) + def estimate_gas_for_tx(self, tx: Transaction) -> int: """Estimate gas for transaction. diff --git a/cosmpy/aerial/client/distribution.py b/cosmpy/aerial/client/distribution.py index 4e6f4f4e..5be79dbd 100644 --- a/cosmpy/aerial/client/distribution.py +++ b/cosmpy/aerial/client/distribution.py @@ -20,6 +20,7 @@ from cosmpy.crypto.address import Address from cosmpy.protos.cosmos.distribution.v1beta1.tx_pb2 import MsgWithdrawDelegatorReward +from cosmpy.protos.cosmos.distribution.v1beta1.tx_pb2 import MsgWithdrawValidatorCommission def create_withdraw_delegator_reward(delegator: Address, validator: Address): @@ -33,3 +34,14 @@ def create_withdraw_delegator_reward(delegator: Address, validator: Address): delegator_address=str(delegator), validator_address=str(validator), ) + + +def create_withdraw_validator_commission(validator: Address): + """Create withdraw validator commission. + + :param validator: validator account address "cosmos1..." + :return: withdraw validator commission message + """ + return MsgWithdrawValidatorCommission( + validator_address=validator + ) diff --git a/docs/api/aerial/client/__init__.md b/docs/api/aerial/client/__init__.md index 2cb9aedc..f4e66cc6 100644 --- a/docs/api/aerial/client/__init__.md +++ b/docs/api/aerial/client/__init__.md @@ -457,6 +457,28 @@ claim rewards. prepare and broadcast the transaction and transaction details + + +#### claim`_`validator`_`commission + +```python +def claim_validator_commission(sender: Wallet, + memo: Optional[str] = None, + gas_limit: Optional[int] = None) -> SubmittedTx +``` + +claim rewards. + +**Arguments**: + +- `sender`: sender +- `memo`: memo, defaults to None +- `gas_limit`: gas limit, defaults to None + +**Returns**: + +prepare and broadcast the transaction and transaction details + #### estimate`_`gas`_`for`_`tx From e4b682be6e14ae3102fa41b06dea52158fb13dc4 Mon Sep 17 00:00:00 2001 From: george-aj <35270943+george-aj@users.noreply.github.com> Date: Fri, 27 Oct 2023 13:27:04 +0000 Subject: [PATCH 2/3] linter --- cosmpy/aerial/client/__init__.py | 5 ++++- cosmpy/aerial/client/distribution.py | 10 +++++----- examples/aerial_compounder.py | 2 -- examples/aerial_stake_optimizer.py | 2 -- examples/aerial_swap_automation.py | 1 - examples/aerial_topup.py | 2 -- 6 files changed, 9 insertions(+), 13 deletions(-) diff --git a/cosmpy/aerial/client/__init__.py b/cosmpy/aerial/client/__init__.py index 74e5546b..94c4c1a4 100644 --- a/cosmpy/aerial/client/__init__.py +++ b/cosmpy/aerial/client/__init__.py @@ -32,7 +32,10 @@ from google.protobuf.timestamp_pb2 import Timestamp from cosmpy.aerial.client.bank import create_bank_send_msg -from cosmpy.aerial.client.distribution import create_withdraw_delegator_reward, create_withdraw_validator_commission +from cosmpy.aerial.client.distribution import ( + create_withdraw_delegator_reward, + create_withdraw_validator_commission, +) from cosmpy.aerial.client.staking import ( ValidatorStatus, create_delegate_msg, diff --git a/cosmpy/aerial/client/distribution.py b/cosmpy/aerial/client/distribution.py index 5be79dbd..c70d53cf 100644 --- a/cosmpy/aerial/client/distribution.py +++ b/cosmpy/aerial/client/distribution.py @@ -19,8 +19,10 @@ """Distribution.""" from cosmpy.crypto.address import Address -from cosmpy.protos.cosmos.distribution.v1beta1.tx_pb2 import MsgWithdrawDelegatorReward -from cosmpy.protos.cosmos.distribution.v1beta1.tx_pb2 import MsgWithdrawValidatorCommission +from cosmpy.protos.cosmos.distribution.v1beta1.tx_pb2 import ( + MsgWithdrawDelegatorReward, + MsgWithdrawValidatorCommission, +) def create_withdraw_delegator_reward(delegator: Address, validator: Address): @@ -42,6 +44,4 @@ def create_withdraw_validator_commission(validator: Address): :param validator: validator account address "cosmos1..." :return: withdraw validator commission message """ - return MsgWithdrawValidatorCommission( - validator_address=validator - ) + return MsgWithdrawValidatorCommission(validator_address=validator) diff --git a/examples/aerial_compounder.py b/examples/aerial_compounder.py index 6a604c80..7cc1a577 100644 --- a/examples/aerial_compounder.py +++ b/examples/aerial_compounder.py @@ -91,7 +91,6 @@ def main(): # query, claim and stake rewards after time period while time_check < time_limit: - begin = time.monotonic() summary = ledger.query_staking_summary(alice.address()) @@ -108,7 +107,6 @@ def main(): true_reward = balance_after - balance_before if true_reward > 0: - print(f"Staking {true_reward} (reward after fees)") tx = ledger.delegate_tokens(validator.address, true_reward, alice) diff --git a/examples/aerial_stake_optimizer.py b/examples/aerial_stake_optimizer.py index 2bd0cd7b..ff092145 100644 --- a/examples/aerial_stake_optimizer.py +++ b/examples/aerial_stake_optimizer.py @@ -91,14 +91,12 @@ def main(): stake_threshold = 0.10 for _i in range(len(validators_comission)): - # Choose validator with lower commission validator_index = validators_comission.index(min(validators_comission)) # Verify that it meets the minimum % threshold validator_stake_pct = validators_stake[validator_index] / total_stake if validator_stake_pct >= stake_threshold: - # Set the selected validator validator = validators[validator_index] break diff --git a/examples/aerial_swap_automation.py b/examples/aerial_swap_automation.py index 0953a628..d287636d 100644 --- a/examples/aerial_swap_automation.py +++ b/examples/aerial_swap_automation.py @@ -170,7 +170,6 @@ def main(): interval = args.interval_time while True: - # Query LP status pool = pair_contract.query({"pool": {}}) native_amount = int(pool["assets"][1]["amount"]) diff --git a/examples/aerial_topup.py b/examples/aerial_topup.py index a70d0d50..7b703c9c 100644 --- a/examples/aerial_topup.py +++ b/examples/aerial_topup.py @@ -97,7 +97,6 @@ def main(): interval_time = args.interval_time while True: - wallet_balance = ledger.query_bank_balance(wallet_address) if wallet_balance < amount: @@ -107,7 +106,6 @@ def main(): task_wallet_balance = ledger.query_bank_balance(task_wallet_address) if task_wallet_balance < minimum_balance: - print("topping up task wallet") # Top-up task_wallet msg = any_pb2.Any() From 43160833b3b353b14da6bb4839be62518d5714fe Mon Sep 17 00:00:00 2001 From: george-aj <35270943+george-aj@users.noreply.github.com> Date: Fri, 27 Oct 2023 08:44:37 -0500 Subject: [PATCH 3/3] update history --- HISTORY.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/HISTORY.md b/HISTORY.md index 86f86f75..64cf8f58 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,10 @@ # Release History +## Unreleased + +- fix: coins parsing fix to support ibc denoms +- feat: add support for claiming validator commission + ## 0.9.1 - fix: move googleapis-common-protos to main dependency group to resolve installation issues