-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchange_position.py
More file actions
100 lines (74 loc) · 21.6 KB
/
change_position.py
File metadata and controls
100 lines (74 loc) · 21.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
from web3 import Web3
from termcolor import cprint
import random
from functions import randomized_sleeping
from functions import int_to_decimal
fromSeconds = 60
toSeconds = 120
gasLimit = 4000000
swap_percentage = 100
usdc_from = 15 * 1000000
usdc_to = 15 * 1000000
smallest_transaction = 5 * 1000000
def swap_token(acc_id, amount) -> None:
try:
print('Chaning position by ', amount)
address = web3.toChecksumAddress('0x4521916972a76d5bfa65fb539cf7a0c2592050ac')
abi = '[{"inputs":[{"internalType":"address","name":"senderAddress","type":"address"}],"name":"AccessDenied","type":"error"},{"inputs":[],"name":"CannotPauseIfUnpauseInProgress","type":"error"},{"inputs":[],"name":"CannotUnpauseIfPauseInProgress","type":"error"},{"inputs":[{"internalType":"uint32","name":"collateralId","type":"uint32"}],"name":"CollateralDoesNotExist","type":"error"},{"inputs":[{"internalType":"uint32","name":"collateralId","type":"uint32"}],"name":"CollateralNotAllowedForUse","type":"error"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"IllegalSqrtPrice","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"incorrectAddress","type":"address"},{"internalType":"contract IERC20","name":"correctAddress","type":"address"}],"name":"IncorrectCollateralAddress","type":"error"},{"inputs":[{"internalType":"address","name":"invalidAddress","type":"address"}],"name":"InvalidCollateralAddress","type":"error"},{"inputs":[{"internalType":"enum IClearingHouseEnums.MulticallOperationType","name":"multicallOperationType","type":"uint8"}],"name":"InvalidMulticallOperationType","type":"error"},{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"InvalidSetting","type":"error"},{"inputs":[],"name":"InvalidTokenLiquidationParameters","type":"error"},{"inputs":[{"internalType":"int256","name":"keeperFee","type":"int256"}],"name":"KeeperFeeNotPositive","type":"error"},{"inputs":[{"internalType":"uint256","name":"notionalValue","type":"uint256"}],"name":"LowNotionalValue","type":"error"},{"inputs":[],"name":"NotRageTradeFactory","type":"error"},{"inputs":[{"internalType":"uint32","name":"poolId","type":"uint32"}],"name":"PoolDoesNotExist","type":"error"},{"inputs":[{"internalType":"uint32","name":"poolId","type":"uint32"}],"name":"PoolNotAllowedForTrade","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCast_UInt224Overflow","type":"error"},{"inputs":[],"name":"SlippageBeyondTolerance","type":"error"},{"inputs":[],"name":"T","type":"error"},{"inputs":[],"name":"Unauthorised","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"ownerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"accountId","type":"uint256"}],"name":"AccountCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"cToken","type":"address"},{"components":[{"internalType":"contract IOracle","name":"oracle","type":"address"},{"internalType":"uint32","name":"twapDuration","type":"uint32"},{"internalType":"bool","name":"isAllowedForDeposit","type":"bool"}],"indexed":false,"internalType":"struct IClearingHouseStructures.CollateralSettings","name":"cTokenInfo","type":"tuple"}],"name":"CollateralSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernancePending","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernancePending","type":"address"}],"name":"GovernancePending","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernance","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"}],"name":"GovernanceTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"poolId","type":"uint32"},{"components":[{"internalType":"uint16","name":"initialMarginRatioBps","type":"uint16"},{"internalType":"uint16","name":"maintainanceMarginRatioBps","type":"uint16"},{"internalType":"uint16","name":"maxVirtualPriceDeviationRatioBps","type":"uint16"},{"internalType":"uint32","name":"twapDuration","type":"uint32"},{"internalType":"bool","name":"isAllowedForTrade","type":"bool"},{"internalType":"bool","name":"isCrossMargined","type":"bool"},{"internalType":"contract IOracle","name":"oracle","type":"address"}],"indexed":false,"internalType":"struct IClearingHouseStructures.PoolSettings","name":"settings","type":"tuple"}],"name":"PoolSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint16","name":"rangeLiquidationFeeFraction","type":"uint16"},{"internalType":"uint16","name":"tokenLiquidationFeeFraction","type":"uint16"},{"internalType":"uint16","name":"closeFactorMMThresholdBps","type":"uint16"},{"internalType":"uint16","name":"partialLiquidationCloseFactorBps","type":"uint16"},{"internalType":"uint16","name":"insuranceFundFeeShareBps","type":"uint16"},{"internalType":"uint16","name":"liquidationSlippageSqrtToleranceBps","type":"uint16"},{"internalType":"uint64","name":"maxRangeLiquidationFees","type":"uint64"},{"internalType":"uint64","name":"minNotionalLiquidatable","type":"uint64"}],"indexed":false,"internalType":"struct IClearingHouseStructures.LiquidationParams","name":"liquidationParams","type":"tuple"},{"indexed":false,"internalType":"uint256","name":"removeLimitOrderFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minimumOrderNotional","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minRequiredMargin","type":"uint256"}],"name":"ProtocolSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTeamMultisigPending","type":"address"},{"indexed":true,"internalType":"address","name":"newTeamMultisigPending","type":"address"}],"name":"TeamMultisigPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTeamMultisig","type":"address"},{"indexed":true,"internalType":"address","name":"newTeamMultisig","type":"address"}],"name":"TeamMultisigTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"acceptGovernanceTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptTeamMultisigTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createAccount","outputs":[{"internalType":"uint256","name":"newAccountId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"collateralId","type":"uint32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"createAccountAndAddMargin","outputs":[{"internalType":"uint256","name":"newAccountId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"extsload","outputs":[{"internalType":"bytes32","name":"val","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"slots","type":"bytes32[]"}],"name":"extsload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountId","type":"uint256"},{"internalType":"bool","name":"isInitialMargin","type":"bool"}],"name":"getAccountMarketValueAndRequiredMargin","outputs":[{"internalType":"int256","name":"marketValue","type":"int256"},{"internalType":"int256","name":"requiredMargin","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountId","type":"uint256"}],"name":"getAccountNetProfit","outputs":[{"internalType":"int256","name":"accountNetProfit","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountId","type":"uint256"},{"internalType":"uint32","name":"poolId","type":"uint32"}],"name":"getAccountNetTokenPosition","outputs":[{"internalType":"int256","name":"netPosition","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"poolId","type":"uint32"}],"name":"getRealTwapPriceX128","outputs":[{"internalType":"uint256","name":"realPriceX128","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"poolId","type":"uint32"}],"name":"getVirtualTwapPriceX128","outputs":[{"internalType":"uint256","name":"virtualPriceX128","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governancePending","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_rageTradeFactoryAddress","type":"address"},{"internalType":"address","name":"initialGovernance","type":"address"},{"internalType":"address","name":"initialTeamMultisig","type":"address"},{"internalType":"contract IERC20","name":"_defaultCollateralToken","type":"address"},{"internalType":"contract IOracle","name":"_defaultCollateralTokenOracle","type":"address"},{"internalType":"contract IInsuranceFund","name":"_insuranceFund","type":"address"},{"internalType":"contract IVQuote","name":"_vQuote","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newGovernancePending","type":"address"}],"name":"initiateGovernanceTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTeamMultisigPending","type":"address"}],"name":"initiateTeamMultisigTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"insuranceFund","outputs":[{"internalType":"contract IInsuranceFund","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountId","type":"uint256"}],"name":"liquidateLiquidityPositions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"targetAccountId","type":"uint256"},{"internalType":"uint32","name":"poolId","type":"uint32"}],"name":"liquidateTokenPosition","outputs":[{"internalType":"int256","name":"keeperFee","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountId","type":"uint256"},{"components":[{"internalType":"enum IClearingHouseEnums.MulticallOperationType","name":"operationType","type":"uint8"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IClearingHouseStructures.MulticallOperation[]","name":"operations","type":"tuple[]"}],"name":"multicallWithSingleMarginCheck","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"numAccounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfPoolsToUpdateInThisTx","type":"uint256"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rageTradeFactoryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"contract IVToken","name":"vToken","type":"address"},{"internalType":"contract IUniswapV3Pool","name":"vPool","type":"address"},{"internalType":"contract IVPoolWrapper","name":"vPoolWrapper","type":"address"},{"components":[{"internalType":"uint16","name":"initialMarginRatioBps","type":"uint16"},{"internalType":"uint16","name":"maintainanceMarginRatioBps","type":"uint16"},{"internalType":"uint16","name":"maxVirtualPriceDeviationRatioBps","type":"uint16"},{"internalType":"uint32","name":"twapDuration","type":"uint32"},{"internalType":"bool","name":"isAllowedForTrade","type":"bool"},{"internalType":"bool","name":"isCrossMargined","type":"bool"},{"internalType":"contract IOracle","name":"oracle","type":"address"}],"internalType":"struct IClearingHouseStructures.PoolSettings","name":"settings","type":"tuple"}],"internalType":"struct IClearingHouseStructures.Pool","name":"poolInfo","type":"tuple"}],"name":"registerPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountId","type":"uint256"},{"internalType":"uint32","name":"poolId","type":"uint32"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"name":"removeLimitOrder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountId","type":"uint256"}],"name":"settleProfit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountId","type":"uint256"},{"internalType":"uint32","name":"poolId","type":"uint32"},{"components":[{"internalType":"int256","name":"amount","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimit","type":"uint160"},{"internalType":"bool","name":"isNotional","type":"bool"},{"internalType":"bool","name":"isPartialAllowed","type":"bool"},{"internalType":"bool","name":"settleProfit","type":"bool"}],"internalType":"struct IClearingHouseStructures.SwapParams","name":"swapParams","type":"tuple"}],"name":"swapToken","outputs":[{"internalType":"int256","name":"vTokenAmountOut","type":"int256"},{"internalType":"int256","name":"vQuoteAmountOut","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"teamMultisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamMultisigPending","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfPoolsToUpdateInThisTx","type":"uint256"}],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"cToken","type":"address"},{"components":[{"internalType":"contract IOracle","name":"oracle","type":"address"},{"internalType":"uint32","name":"twapDuration","type":"uint32"},{"internalType":"bool","name":"isAllowedForDeposit","type":"bool"}],"internalType":"struct IClearingHouseStructures.CollateralSettings","name":"collateralSettings","type":"tuple"}],"name":"updateCollateralSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountId","type":"uint256"},{"internalType":"uint32","name":"collateralId","type":"uint32"},{"internalType":"int256","name":"amount","type":"int256"}],"name":"updateMargin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"poolId","type":"uint32"},{"components":[{"internalType":"uint16","name":"initialMarginRatioBps","type":"uint16"},{"internalType":"uint16","name":"maintainanceMarginRatioBps","type":"uint16"},{"internalType":"uint16","name":"maxVirtualPriceDeviationRatioBps","type":"uint16"},{"internalType":"uint32","name":"twapDuration","type":"uint32"},{"internalType":"bool","name":"isAllowedForTrade","type":"bool"},{"internalType":"bool","name":"isCrossMargined","type":"bool"},{"internalType":"contract IOracle","name":"oracle","type":"address"}],"internalType":"struct IClearingHouseStructures.PoolSettings","name":"newSettings","type":"tuple"}],"name":"updatePoolSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountId","type":"uint256"},{"internalType":"int256","name":"amount","type":"int256"}],"name":"updateProfit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint16","name":"rangeLiquidationFeeFraction","type":"uint16"},{"internalType":"uint16","name":"tokenLiquidationFeeFraction","type":"uint16"},{"internalType":"uint16","name":"closeFactorMMThresholdBps","type":"uint16"},{"internalType":"uint16","name":"partialLiquidationCloseFactorBps","type":"uint16"},{"internalType":"uint16","name":"insuranceFundFeeShareBps","type":"uint16"},{"internalType":"uint16","name":"liquidationSlippageSqrtToleranceBps","type":"uint16"},{"internalType":"uint64","name":"maxRangeLiquidationFees","type":"uint64"},{"internalType":"uint64","name":"minNotionalLiquidatable","type":"uint64"}],"internalType":"struct IClearingHouseStructures.LiquidationParams","name":"_liquidationParams","type":"tuple"},{"internalType":"uint256","name":"_removeLimitOrderFee","type":"uint256"},{"internalType":"uint256","name":"_minimumOrderNotional","type":"uint256"},{"internalType":"uint256","name":"_minRequiredMargin","type":"uint256"}],"name":"updateProtocolSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountId","type":"uint256"},{"internalType":"uint32","name":"poolId","type":"uint32"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int128","name":"liquidityDelta","type":"int128"},{"internalType":"uint160","name":"sqrtPriceCurrent","type":"uint160"},{"internalType":"uint16","name":"slippageToleranceBps","type":"uint16"},{"internalType":"bool","name":"closeTokenPosition","type":"bool"},{"internalType":"enum IClearingHouseEnums.LimitOrderType","name":"limitOrderType","type":"uint8"},{"internalType":"bool","name":"settleProfit","type":"bool"}],"internalType":"struct IClearingHouseStructures.LiquidityChangeParams","name":"liquidityChangeParams","type":"tuple"}],"name":"updateRangeOrder","outputs":[{"internalType":"int256","name":"vTokenAmountOut","type":"int256"},{"internalType":"int256","name":"vQuoteAmountOut","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfPoolsToUpdateInThisTx","type":"uint256"}],"name":"withdrawProtocolFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]'
contract = web3.eth.contract(address=address, abi=abi)
nonce = web3.eth.get_transaction_count(address_wallet)
gas_price = int_to_decimal(0.0000000001, 18)
pool_id = 2721558366
sqrt_price_limit = 0
is_notional = True
is_partial_allowed = False
settle_profit = True
contract_txn = contract.functions.swapToken(acc_id,
pool_id,
(amount, sqrt_price_limit, is_notional, is_partial_allowed,
settle_profit)
).buildTransaction(
{
'from': address_wallet,
'gas': gasLimit,
'gasPrice': gas_price,
'nonce': nonce
})
signed_txn = web3.eth.account.sign_transaction(contract_txn, private_key=private_key)
tx_hash = web3.eth.send_raw_transaction(signed_txn.rawTransaction)
web3.eth.wait_for_transaction_receipt(tx_hash)
except Exception as error:
print(error)
print(f'\n>>> mint error | {address_wallet}', 'red')
if __name__ == "__main__":
cprint(f'\n============================================= indeoo =============================================',
'cyan')
if abs(usdc_from) < smallest_transaction or abs(usdc_to) < smallest_transaction:
exit(1)
with open("acc_ids.txt", "r") as f:
acc_record_list = [row.strip() for row in f]
random.shuffle(acc_record_list)
for acc_record in acc_record_list:
randomize = random.randint(1, 100)
if swap_percentage <= randomize:
continue
cprint(f'\n=============== start : {acc_record} ===============', 'white')
data = acc_record.split(' : ')
acc_id = int(data[0])
private_key = data[1]
ChainUrl = "https://arb1.arbitrum.io/rpc"
web3 = Web3(Web3.HTTPProvider(ChainUrl))
account = web3.eth.account.from_key(private_key)
address_wallet = account.address
if usdc_from * usdc_to < 0:
sum = abs(usdc_from) + abs(usdc_to) - smallest_transaction * 2
diapason = random.randint(1, sum)
if abs(usdc_from) - smallest_transaction >= diapason:
amount = usdc_from + diapason
else:
amount = abs(usdc_from) - usdc_to + diapason
else:
amount = random.randint(usdc_from, usdc_to)
print("Changing position by ", amount, "USDC")
swap_token(acc_id, amount)
randomized_sleeping(fromSeconds, toSeconds)