1111
1212from web3 import Web3
1313from web3 .constants import MAX_INT
14- from web3 .middleware import geth_poa_middleware
14+ try :
15+ from web3 .middleware import ExtraDataToPOAMiddleware as poa_middleware
16+ except ImportError :
17+ # Eğer web3 sürümün çok eskiyse eski adı kullan
18+ from web3 .middleware import geth_poa_middleware as poa_middleware
1519
1620import httpx
1721from py_clob_client .client import ClobClient
@@ -44,6 +48,7 @@ def __init__(self) -> None:
4448
4549 self .chain_id = 137 # POLYGON
4650 self .private_key = os .getenv ("POLYGON_WALLET_PRIVATE_KEY" )
51+ self .proxy_address = os .getenv ("PROXY_ADDRESS" )
4752 self .polygon_rpc = "https://polygon-rpc.com"
4853 self .w3 = Web3 (Web3 .HTTPProvider (self .polygon_rpc ))
4954
@@ -57,22 +62,33 @@ def __init__(self) -> None:
5762 self .ctf_address = "0x4D97DCd97eC945f40cF65F87097ACe5EA0476045"
5863
5964 self .web3 = Web3 (Web3 .HTTPProvider (self .polygon_rpc ))
60- self .web3 .middleware_onion .inject (geth_poa_middleware , layer = 0 )
65+ self .w3 .middleware_onion .inject (poa_middleware , layer = 0 )
6166
6267 self .usdc = self .web3 .eth .contract (
6368 address = self .usdc_address , abi = self .erc20_approve
6469 )
6570 self .ctf = self .web3 .eth .contract (
6671 address = self .ctf_address , abi = self .erc1155_set_approval
6772 )
73+
74+ self .creds = ApiCreds (
75+ api_key = os .getenv ('POLY_API_KEY' ).strip () if os .getenv ('POLY_API_KEY' ) else "" ,
76+ api_secret = os .getenv ('POLY_API_SECRET' ).strip () if os .getenv ('POLY_API_SECRET' ) else "" ,
77+ api_passphrase = os .getenv ('POLY_API_PASSPHRASE' ).strip () if os .getenv ('POLY_API_PASSPHRASE' ) else ""
78+ )
6879
6980 self ._init_api_keys ()
7081 self ._init_approvals (False )
7182
7283 def _init_api_keys (self ) -> None :
7384 self .client = ClobClient (
74- self .clob_url , key = self .private_key , chain_id = self .chain_id
75- )
85+ host = self .clob_url ,
86+ key = self .private_key ,
87+ chain_id = self .chain_id ,
88+ signature_type = 2 ,
89+ funder = self .proxy_address ,
90+ creds = self .creds
91+ )
7692 self .credentials = self .client .create_or_derive_api_creds ()
7793 self .client .set_api_creds (self .credentials )
7894 # print(self.credentials)
@@ -338,11 +354,12 @@ def execute_order(self, price, size, side, token_id) -> str:
338354 OrderArgs (price = price , size = size , side = side , token_id = token_id )
339355 )
340356
341- def execute_market_order (self , market , amount ) -> str :
357+ def execute_market_order (self , market , amount , side = "BUY" ) -> str :
342358 token_id = ast .literal_eval (market [0 ].dict ()["metadata" ]["clob_token_ids" ])[1 ]
343359 order_args = MarketOrderArgs (
344360 token_id = token_id ,
345361 amount = amount ,
362+ side = 'BUY' if side .upper () == "BUY" else 'SELL'
346363 )
347364 signed_order = self .client .create_market_order (order_args )
348365 print ("Execute market order... signed_order " , signed_order )
0 commit comments