API PAYMENT ADDRESS
TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx
Magpadala ng TRX sa address na ito. Ang iyong tx hash ay ginagamit upang mag-claim ng energy delegation.

Kumpletong Python integration gamit ang tronpy. Bawat hakbang ay standalone code block na maaari mong kopyahin sa iyong project. Ang buong end-to-end example ay nasa ibaba.

Prerequisites: Python 3.8+, tronpy na na-install (pip install tronpy), isang funded Tron wallet.

Ang Flow

Walang API key. Walang sign-up. Ang iyong code ay nagpapadala ng TRX on-chain sa TronEnergy payment address, nag-sign ng mensahe upang patunayan ang ownership, pagkatapos ay nag-claim ng delegation. Ang Energy ay dumarating sa loob ng humigit-kumulang 3 segundo. Pagkatapos ang iyong code ay nagpadala ng USDT gamit ang delegated energy.

Ang pricing ay linear: 16,250 Energy per TRX. Minimum order 4 TRX (65,000 Energy — isang standard USDT transfer), maximum 1,000 TRX (16.25M Energy). Ang amount na iyong ipinapadala ay tumutukoy kung gaano kalaking Energy ang babalik — walang tiers o packages. Para sa isang standard transfer, magpadala ng 4. Para sa new-wallet transfer, magpadala ng 8. Para sa batch work, magpadala ng higit pa. Ang code sa ibaba ay gumagamit ng TRX_AMOUNT variable kaya maaari mong baguhin ito sa isang lugar.

Step by Step

1. Setup

setup
import os, requests from tronpy import Tron from tronpy.keys import PrivateKey, keccak256 from coincurve import PrivateKey as CCKey # tronpy already depends on coincurve client = Tron() # mainnet — pass HTTPProvider(api_key=...) to avoid rate limits priv = PrivateKey(bytes.fromhex(os.environ['TRON_PRIVATE_KEY'])) sender = priv.public_key.to_base58check_address() API = 'https://api.tronnrg.com' ADDR = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx' # API payment address USDT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'

2. Magpadala ng TRX

magpadala ng bayad
TRX_AMOUNT = 4 # Linear: 16,250 energy per TRX. Min 4, max 1000. # 4 → 65k (standard) · 8 → 130k (new wallet) · 40 → 650k (10 transfers) payment = ( client.trx.transfer(sender, ADDR, TRX_AMOUNT * 1_000_000) .build().sign(priv).broadcast() ) print('Payment tx:', payment.txid)

3. I-claim ang Delegation

i-claim ang delegation
# Sign: proves you are the sender. Must equal TronWeb signMessageV2 exactly: # keccak256("\x19TRON Signed Message:\n" + len + msg), secp256k1, v = rec + 27. def sign_message_v2(message, priv): msg = message.encode() prefix = b"\x19TRON Signed Message:\n" + str(len(msg)).encode() digest = keccak256(prefix + msg) raw = CCKey(priv.to_bytes()).sign_recoverable(digest, hasher=None) return '0x' + (raw[:64] + bytes([raw[64] + 27])).hex() msg = f"{payment.txid}:{sender}" sig = sign_message_v2(msg, priv) delegation = requests.post(f"{API}/delegate", json={ 'tx_hash': payment.txid, 'delegate_to': sender, 'signature': sig, }).json() if delegation.get('error'): raise Exception(delegation['message']) print('Energy delegated:', delegation['energy']) # TRX_AMOUNT × 16,250

4. Magpadala ng USDT

magpadala ng USDT
recipient = 'TRecipientWallet' contract = client.get_contract(USDT) tx = ( contract.functions.transfer(recipient, 10 * 1_000_000) .with_owner(sender).fee_limit(50_000_000) .build().sign(priv).broadcast() ) print('USDT sent:', tx.txid)

Error Handling

paghawak ng mga error
result = requests.post(f"{API}/delegate", json=payload).json() if result.get('error'): err = result['error'] if err == 'payment_verification_failed': pass # Payment not yet indexed on-chain. Wait 3s and retry. elif err == 'hash_already_used': pass # Already claimed. Do not retry. elif err == 'signature_mismatch': pass # Sender of TRX != signer of the message. Sign with the same key. elif err == 'delegation_failed': pass # Provider could not deliver. Retry or contact support with result['ref'].

Kumpletong Halimbawa

Kopyahin ito sa isang file, itakda ang iyong TRON_PRIVATE_KEY environment variable, at patakbuhin ito. Ang script ay magpapadala ng TRX, mag-sign ng mensahe, mag-claim ng delegation na may retry, pagkatapos ay magpadala ng USDT.

delegate_energy.py
import os, time, requests from tronpy import Tron from tronpy.keys import PrivateKey, keccak256 from coincurve import PrivateKey as CCKey client = Tron() # mainnet — pass HTTPProvider(api_key=...) to avoid rate limits priv = PrivateKey(bytes.fromhex(os.environ['TRON_PRIVATE_KEY'])) sender = priv.public_key.to_base58check_address() API = 'https://api.tronnrg.com' ADDR = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx' USDT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' # Signature must match TronWeb signMessageV2 byte-for-byte. def sign_message_v2(message, priv): msg = message.encode() prefix = b"\x19TRON Signed Message:\n" + str(len(msg)).encode() digest = keccak256(prefix + msg) raw = CCKey(priv.to_bytes()).sign_recoverable(digest, hasher=None) return '0x' + (raw[:64] + bytes([raw[64] + 27])).hex() def claim_with_retry(tx_hash, delegate_to, signature, retries=3): for _ in range(retries): res = requests.post(f"{API}/delegate", json={ 'tx_hash': tx_hash, 'delegate_to': delegate_to, 'signature': signature, }).json() if not res.get('error'): return res if res['error'] != 'payment_verification_failed': raise Exception(res['message']) time.sleep(3) raise Exception('Transaction not found after retries') def main(): recipient = 'TRecipientWallet' trx_amount = 4 # min 4, max 1000 — you get trx_amount × 16,250 energy # 1. Send TRX (linear pricing: 16,250 energy per TRX) payment = ( client.trx.transfer(sender, ADDR, trx_amount * 1_000_000) .build().sign(priv).broadcast() ) print('Payment:', payment.txid) # 2. Claim delegation (the signature proves you sent the TRX) signature = sign_message_v2(f"{payment.txid}:{recipient}", priv) result = claim_with_retry(payment.txid, recipient, signature) print('Delegated:', result['energy'], 'energy') print('Delegation tx:', result['delegations'][0]['tx']) # verify on TronScan print('Ref:', result['ref']) # 3. Send USDT using the delegated energy contract = client.get_contract(USDT) tx = ( contract.functions.transfer(recipient, 10 * 1_000_000) .with_owner(sender).fee_limit(50_000_000) .build().sign(priv).broadcast() ) print('USDT sent:', tx.txid) if __name__ == '__main__': main()
Laging isama ang signature. Ito ay patunay na ikaw ang wallet na nagpadala ng TRX. Kung wala ito, ang API ay tinatanggihan ang request na may missing_signature.
Telegram WhatsApp