Spaces:
Running
Running
| import json | |
| import os | |
| from web3 import Web3 | |
| from config import AppConfig | |
| # --- 1. SETUP --- | |
| # Connect to Pure Chain using your config | |
| w3 = Web3(Web3.HTTPProvider(AppConfig.PURECHAIN_RPC_URL)) | |
| account = w3.eth.account.from_key(AppConfig.PRIVATE_KEY) | |
| print(f"🔌 Connected to: {AppConfig.PURECHAIN_RPC_URL}") | |
| print(f"👤 Deploying as: {account.address}") | |
| # --- 2. DYNAMIC COMPILATION --- | |
| print("⚙️ Dynamically compiling contract...") | |
| from src.dynamic_compiler import get_contract_interface | |
| abi, bytecode = get_contract_interface() | |
| # --- 3. BUILD TRANSACTION --- | |
| # Prepare the contract object | |
| Contract = w3.eth.contract(abi=abi, bytecode=bytecode) | |
| # Force a LEGACY transaction (Type 0/1) by manually setting gasPrice | |
| # and avoiding maxFeePerGas/maxPriorityFeePerGas | |
| print("🛠 Building Legacy Transaction...") | |
| tx = Contract.constructor().build_transaction({ | |
| 'from': account.address, | |
| 'nonce': w3.eth.get_transaction_count(account.address), | |
| 'gas': 6000000, | |
| 'gasPrice': 0, # <--- This forces Legacy Mode AND 0 cost for PoA! | |
| 'chainId': 900520900520 | |
| }) | |
| # --- 4. SIGN & SEND --- | |
| print("✍️ Signing...") | |
| signed_tx = w3.eth.account.sign_transaction(tx, AppConfig.PRIVATE_KEY) | |
| print("🚀 Sending to Pure Chain...") | |
| tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction) | |
| print(f"✅ Transaction Sent! Hash: {w3.to_hex(tx_hash)}") | |
| # --- 5. WAIT FOR RECEIPT --- | |
| print("⏳ Waiting for confirmation...") | |
| tx_receipt = w3.eth.wait_for_transaction_receipt(tx_hash) | |
| print("-" * 30) | |
| print(f"🎉 CONTRACT DEPLOYED AT: {tx_receipt.contractAddress}") | |
| print("-" * 30) | |
| print("👉 Copy this address and put it in your config.py!") |