PureVersation / deploy_purechain.py
GitHub Actions
🚀 Automated sync from GitHub
dc9f71d
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!")