Skip to content

Commit 0db8293

Browse files
committed
add controllecrs to mytonctrl.py
1 parent 319be9a commit 0db8293

File tree

1 file changed

+153
-0
lines changed

1 file changed

+153
-0
lines changed

mytonctrl/mytonctrl.py

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,20 @@ def inject_globals(func):
138138
console.AddItem("activate_single_pool", inject_globals(activate_single_pool), local.translate("activate_single_pool_cmd"))
139139
console.AddItem("import_pool", inject_globals(import_pool), local.translate("import_pool_cmd"))
140140

141+
console.AddItem("create_controllers", inject_globals(CreateControllers), local.translate("_"))
142+
console.AddItem("update_controllers", inject_globals(CreateControllers), local.translate("_"))
143+
console.AddItem("controllers_list", inject_globals(PrintControllersList), local.translate("_"))
144+
console.AddItem("get_controller_data", inject_globals(GetControllerData), local.translate("_"))
145+
console.AddItem("deposit_to_controller", inject_globals(DepositToController), local.translate("_"))
146+
console.AddItem("withdraw_from_controller", inject_globals(WithdrawFromController), local.translate("_"))
147+
console.AddItem("calculate_annual_controller_percentage", inject_globals(CalculateAnnualControllerPercentage), local.translate("_"))
148+
console.AddItem("controller_update_validator_set", inject_globals(ControllerUpdateValidatorSet), local.translate("_"))
149+
console.AddItem("stop_controller", inject_globals(StopController), local.translate("_"))
150+
console.AddItem("stop_and_withdraw_controller", inject_globals(StopAndWithdrawController), local.translate("_"))
151+
console.AddItem("add_controller", inject_globals(AddController), local.translate("_"))
152+
console.AddItem("check_liquid_pool", inject_globals(CheckLiquidPool), local.translate("_"))
153+
console.AddItem("test_calculate_loan_amount", inject_globals(CalculateLoanAmount_test), local.translate("_"))
154+
141155
# console.AddItem("pt", inject_globals(PrintTest), "PrintTest")
142156
# console.AddItem("sl", inject_globals(sl), "sl")
143157
console.AddItem("cleanup", inject_globals(cleanup_validator_db), local.translate("cleanup_cmd"))
@@ -1489,6 +1503,145 @@ def import_pool(ton, args):
14891503
color_print("import_pool - {green}OK{endc}")
14901504
#end define
14911505

1506+
def CreateControllers(ton, args):
1507+
ton.CreateControllers()
1508+
color_print("CreateControllers - {green}OK{endc}")
1509+
#end define
1510+
1511+
def PrintControllersList(ton, args):
1512+
new_controllers = ton.GetControllers()
1513+
using_controllers = ton.GetSettings("using_controllers")
1514+
old_controllers = ton.GetSettings("old_controllers")
1515+
user_controllers_list = ton.GetSettings("user_controllers_list")
1516+
print("using controllers:")
1517+
PrintControllersListProcess(ton, using_controllers)
1518+
if new_controllers != using_controllers:
1519+
print()
1520+
print("new controllers:")
1521+
PrintControllersListProcess(ton, new_controllers)
1522+
if old_controllers is not None and len(old_controllers) > 0:
1523+
print()
1524+
print("old controllers:")
1525+
PrintControllersListProcess(ton, old_controllers)
1526+
if user_controllers_list is not None and len(user_controllers_list) > 0:
1527+
print()
1528+
print("user controllers:")
1529+
PrintControllersListProcess(ton, user_controllers_list)
1530+
#end define
1531+
1532+
def PrintControllersListProcess(ton, controllers):
1533+
table = list()
1534+
table += [["Address", "Status", "Balance", "Approved", "State"]]
1535+
for controllerAddr in controllers:
1536+
account = ton.GetAccount(controllerAddr)
1537+
controllerData = ton.GetControllerData(controllerAddr)
1538+
approved = True if controllerData and controllerData["approved"] == -1 else False
1539+
state = controllerData["state"] if controllerData else None
1540+
table += [[controllerAddr, account.status, account.balance, approved, state]]
1541+
print_table(table)
1542+
#end define
1543+
1544+
def GetControllerData(ton, args):
1545+
try:
1546+
controllerAddr = args[0]
1547+
except:
1548+
color_print("{red}Bad args. Usage:{endc} get_controller_data <controller-addr>")
1549+
return
1550+
controllerData = ton.GetControllerData(controllerAddr)
1551+
print(json.dumps(controllerData, indent=4))
1552+
#end define
1553+
1554+
def DepositToController(ton, args):
1555+
try:
1556+
controllerAddr = args[0]
1557+
amount = float(args[1])
1558+
except:
1559+
color_print("{red}Bad args. Usage:{endc} deposit_to_controller <controller-addr> <amount>")
1560+
return
1561+
ton.DepositToController(controllerAddr, amount)
1562+
#end define
1563+
1564+
def WithdrawFromController(ton, args):
1565+
try:
1566+
controllerAddr = args[0]
1567+
amount = GetItemFromList(args, 1)
1568+
except:
1569+
color_print("{red}Bad args. Usage:{endc} withdraw_from_controller <controller-addr> [amount]")
1570+
return
1571+
ton.WithdrawFromController(controllerAddr, amount)
1572+
#end define
1573+
1574+
def CalculateAnnualControllerPercentage(ton, args):
1575+
try:
1576+
percentPerRound = float(args[0])
1577+
except:
1578+
percentPerRound = ton.GetSettings("max_interest_percent")
1579+
config15 = ton.GetConfig(15)
1580+
roundPeriod = config15["validators_elected_for"]
1581+
rounds = 365 * 24 * 3600 / roundPeriod
1582+
yearInterest = (1 + percentPerRound / 100) * rounds
1583+
yearInterestPercent = round(yearInterest / 100, 2)
1584+
print("roundPeriod", roundPeriod)
1585+
print("rounds", rounds)
1586+
print("percentPerRound", percentPerRound)
1587+
print("yearInterest", yearInterest)
1588+
print(f"yearInterestPercent: {yearInterestPercent}%")
1589+
#end define
1590+
1591+
def ControllerUpdateValidatorSet(ton, args):
1592+
try:
1593+
controllerAddr = args[0]
1594+
except:
1595+
color_print("{red}Bad args. Usage:{endc} controller_update_validator_set <controller-addr>")
1596+
return
1597+
ton.ControllerUpdateValidatorSet(controllerAddr)
1598+
color_print("ControllerUpdateValidatorSet - {green}OK{endc}")
1599+
#end define
1600+
1601+
def StopController(ton, args):
1602+
try:
1603+
controllerAddr = args[0]
1604+
except:
1605+
color_print("{red}Bad args. Usage:{endc} stop_controller <controller-addr>")
1606+
return
1607+
ton.StopController(controllerAddr)
1608+
color_print("StopController - {green}OK{endc}")
1609+
#end define
1610+
1611+
def StopAndWithdrawController(ton, args):
1612+
try:
1613+
controllerAddr = args[0]
1614+
amount = GetItemFromList(args, 1)
1615+
except:
1616+
color_print("{red}Bad args. Usage:{endc} stop_and_withdraw_controller <controller-addr> [amount]")
1617+
return
1618+
if amount is None:
1619+
account = ton.GetAccount(controllerAddr)
1620+
amount = account.balance-10.1
1621+
ton.StopController(controllerAddr)
1622+
ton.WithdrawFromController(controllerAddr, amount)
1623+
color_print("StopAndWithdrawController - {green}OK{endc}")
1624+
#end define
1625+
1626+
def AddController(ton, args):
1627+
try:
1628+
controllerAddr = args[0]
1629+
except:
1630+
color_print("{red}Bad args. Usage:{endc} add_controller <controller-addr>")
1631+
return
1632+
ton.AddController(controllerAddr)
1633+
color_print("AddController - {green}OK{endc}")
1634+
#end define
1635+
1636+
def CheckLiquidPool(ton, args):
1637+
ton.CheckLiquidPool()
1638+
color_print("CheckLiquidPool - {green}OK{endc}")
1639+
#end define
1640+
1641+
def CalculateLoanAmount_test(ton, args):
1642+
t = ton.CalculateLoanAmount_test()
1643+
print(t)
1644+
14921645

14931646
###
14941647
### Start of the program

0 commit comments

Comments
 (0)