Skip to content

Commit

Permalink
update clients
Browse files Browse the repository at this point in the history
  • Loading branch information
etzellux committed Jan 31, 2025
1 parent 3ea0cad commit aace011
Show file tree
Hide file tree
Showing 2 changed files with 153 additions and 9 deletions.
110 changes: 104 additions & 6 deletions tinyman/liquid_staking/talgo_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,14 @@

class TAlgoClient(BaseClient):

keyreg_lsig = transaction.LogicSigAccount(b"\n\x81\x01C")

def init(self):
sp = self.get_suggested_params()
transactions = [
transaction.PaymentTxn(
sender=self.user_address,
receiver=self.application_address,
sp=sp,
amt=2_000_000,
amt=600_000,
),
transaction.ApplicationCallTxn(
sender=self.user_address,
Expand Down Expand Up @@ -43,7 +41,9 @@ def sync(self):
encode_address(self.get_global(b"account_3")),
encode_address(self.get_global(b"account_4")),
],
foreign_assets=[]
foreign_assets=[
self.get_global(b"talgo_asset_id"),
]
),
]
return self._submit(transactions, additional_fees=0)
Expand Down Expand Up @@ -107,7 +107,8 @@ def burn(self, amount):

def go_online(self, node_index, vote_pk, selection_pk, state_proof_pk, vote_first, vote_last, vote_key_dilution, fee):
account_address = encode_address(self.get_global(b"account_%i" % node_index))
self.add_key(account_address, self.keyreg_lsig)
# Use the user keys for signing transactions from the account_address
self.keys[account_address] = self.keys[self.user_address]
sp = self.get_suggested_params()
transactions = [
transaction.PaymentTxn(
Expand Down Expand Up @@ -145,7 +146,8 @@ def go_online(self, node_index, vote_pk, selection_pk, state_proof_pk, vote_firs

def go_offline(self, node_index):
account_address = encode_address(self.get_global(b"account_%i" % node_index))
self.add_key(account_address, self.keyreg_lsig)
# Use the user keys for signing transactions from the account_address
self.keys[account_address] = self.keys[self.user_address]
sp = self.get_suggested_params()
transactions = [
transaction.ApplicationCallTxn(
Expand Down Expand Up @@ -183,6 +185,102 @@ def set_node_manager(self, node_index, node_manager_address):
]
return self._submit(transactions, additional_fees=0)

def set_fee_collector(self, new_fee_collector):
sp = self.get_suggested_params()
transactions = [
transaction.ApplicationCallTxn(
sender=self.user_address,
on_complete=transaction.OnComplete.NoOpOC,
sp=sp,
index=self.app_id,
app_args=["set_fee_collector", decode_address(new_fee_collector)],
accounts=[
],
foreign_assets=[]
),
]
return self._submit(transactions, additional_fees=0)

def set_protocol_fee(self, fee_amount):
sp = self.get_suggested_params()
transactions = [
transaction.ApplicationCallTxn(
sender=self.user_address,
on_complete=transaction.OnComplete.NoOpOC,
sp=sp,
index=self.app_id,
app_args=["set_protocol_fee", fee_amount],
accounts=[
],
foreign_assets=[]
),
]
return self._submit(transactions, additional_fees=0)

def set_max_account_balance(self, max_amount):
sp = self.get_suggested_params()
transactions = [
transaction.ApplicationCallTxn(
sender=self.user_address,
on_complete=transaction.OnComplete.NoOpOC,
sp=sp,
index=self.app_id,
app_args=["set_max_account_balance", max_amount],
accounts=[
],
foreign_assets=[]
),
]
return self._submit(transactions, additional_fees=0)

def propose_manager(self, new_manager):
sp = self.get_suggested_params()
transactions = [
transaction.ApplicationCallTxn(
sender=self.user_address,
on_complete=transaction.OnComplete.NoOpOC,
sp=sp,
index=self.app_id,
app_args=["propose_manager", decode_address(new_manager)],
accounts=[
],
foreign_assets=[]
),
]
return self._submit(transactions, additional_fees=0)

def accept_manager(self):
sp = self.get_suggested_params()
transactions = [
transaction.ApplicationCallTxn(
sender=self.user_address,
on_complete=transaction.OnComplete.NoOpOC,
sp=sp,
index=self.app_id,
app_args=["accept_manager"],
accounts=[
],
foreign_assets=[]
),
]
return self._submit(transactions, additional_fees=0)

def set_stake_manager(self, new_stake_manager):
sp = self.get_suggested_params()
transactions = [
transaction.ApplicationCallTxn(
sender=self.user_address,
on_complete=transaction.OnComplete.NoOpOC,
sp=sp,
index=self.app_id,
app_args=["set_stake_manager", decode_address(new_stake_manager)],
accounts=[
],
foreign_assets=[]
),
]
return self._submit(transactions, additional_fees=0)

def move_stake(self, from_node_index, to_node_index, amount):
sp = self.get_suggested_params()
transactions = [
Expand Down
52 changes: 49 additions & 3 deletions tinyman/liquid_staking/talgo_staking_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
from algosdk.encoding import decode_address
from algosdk.logic import get_application_address

from tinyman.liquid_staking.base_client import BaseClient
from tinyman.liquid_staking.constants import *
from tinyman.liquid_staking.struct import get_struct
from .base_client import BaseClient
from .constants import *
from .struct import get_struct


UserState = get_struct("UserState")
Expand Down Expand Up @@ -37,6 +37,52 @@ def set_reward_rate(self, total_reward_amount: int, end_timestamp: int):
sp=sp,
index=self.app_id,
app_args=["set_reward_rate", total_reward_amount, end_timestamp],
foreign_assets=[self.tiny_asset_id]
)
]

return self._submit(transactions)

def propose_manager(self, new_manager_address):
sp = self.get_suggested_params()

transactions = [
transaction.ApplicationCallTxn(
sender=self.user_address,
on_complete=transaction.OnComplete.NoOpOC,
sp=sp,
index=self.app_id,
app_args=["propose_manager", decode_address(new_manager_address)],
)
]

return self._submit(transactions)

def accept_manager(self):
sp = self.get_suggested_params()

transactions = [
transaction.ApplicationCallTxn(
sender=self.user_address,
on_complete=transaction.OnComplete.NoOpOC,
sp=sp,
index=self.app_id,
app_args=["accept_manager"],
)
]

return self._submit(transactions)

def set_tiny_power_threshold(self, threshold: int):
sp = self.get_suggested_params()

transactions = [
transaction.ApplicationCallTxn(
sender=self.user_address,
on_complete=transaction.OnComplete.NoOpOC,
sp=sp,
index=self.app_id,
app_args=["set_tiny_power_threshold", threshold],
)
]

Expand Down

0 comments on commit aace011

Please sign in to comment.