def test_trc20_transfer(): # TGQgfK497YXmjdgvun9Bg5Zu3xE15v17cu priv_key = PrivateKey( bytes.fromhex( "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") ) client = Tron(network='nile') contract = client.get_contract('THi2qJf6XmvTJSpZHc17HgQsmJop6kb3ia') print('Balance', contract.functions.balanceOf('TGQgfK497YXmjdgvun9Bg5Zu3xE15v17cu')) txn = (contract.functions.transfer( 'TVjsyZ7fYF3qLF6BQgPmTEZy1xrNNyVAAA', 1_000).with_owner('TGQgfK497YXmjdgvun9Bg5Zu3xE15v17cu').fee_limit( 5_000_000).build().sign(priv_key).inspect().broadcast()) print(txn) # wait receipt = txn.wait() print(receipt) if 'contractResult' in receipt: print( 'result:', contract.functions.transfer.parse_output( receipt['contractResult'][0])) # result print(txn.result())
def transferToken(): # cttAddr = '' _from = request.form.get('from_address') _to = request.form.get('to_address') _privKey = request.form.get('private_key') _amount = request.form.get('amount') _fee_limit = request.form.get('fee_limit', 20) try: _amount = to_sun(_amount) _fee_limit = to_sun(_fee_limit) if _amount <= 0: raise Exception('转账金额需大于0') if not is_address(_from): raise Exception('from 地址格式不正确') if not is_address(_to): raise Exception('to 地址格式不正确') client = Tron() priv_key = PrivateKey(bytes.fromhex(_privKey)) contract = client.get_contract(cttAddr) # print('Balance', contract.functions.balanceOf(_from)) txn = ( contract.functions.transfer(_to, _amount).with_owner( _from).fee_limit(_fee_limit).build().sign(priv_key) # .inspect() .broadcast()) return jsonify({"data": txn, "code": 200, "msg": "TOKEN交易成功"}) except Exception as e: return jsonify({"data": None, "code": 500, "msg": str(e)})
def test_client_get_contract(): client = Tron() priv_key = PrivateKey( bytes.fromhex( "ebf7c9cad1ca710553c22669fd3c7c70832e7024c1a32da69bbc5ad19dcc8992") ) """ txn = ( client.trx.asset_issue( "TGxv9UXRNMh4E6b33iuH1pqJfBffz6hXnV", "BTCC", 1_0000_0000_000000, url="https://www.example.com" ) .memo("test issue BTCC coin") .fee_limit(0) .build() .inspect() .sign(priv_key) # .broadcast() ) print(txn) """ # print(client.get_account_permission("TGxv9UXRNMh4E6b33iuH1pqJfBffz6hXnV")) # very old address, of mainnet # print(client.get_account_resource("TTjacDH5PL8hpWirqU7HQQNZDyF723PuCg")) # "TGj1Ej1qRzL9feLTLhjwgxXF4Ct6GTWg2U")) cntr = client.get_contract("TMDRdYAcXbQDajbGFy4rgXcNLYswuYsfk1") print(cntr) print(cntr.abi) # print(client.get_contract("TTjacDH5PL8hpWirqU7HQQNZDyF723PuCg")) cntr.functions.name()
def balanceOf(address): try: if not is_address(address): raise Exception('地址格式不正确') client = Tron() contract = client.get_contract(cttAddr) # symbol = contract.functions.symbol() balance_raw = contract.functions.balanceOf(address) balance_sun = str(from_sun(balance_raw)) except Exception as e: return jsonify({"data": None, "code": 500, "msg": str(e)}) return jsonify({ "data": { 'cttAddr': cttAddr, # 'token': symbol, 'balance': { 'to_sun': balance_sun, 'raw': balance_raw } }, "code": 200, "msg": "查询成功" })
def test_query_event_logs(): client = Tron() txi = client.get_transaction_info('eb47b9779a759203899d46f2bda75c0335405f7bcba838aad8781697f216b177') time.sleep(1) # due to tron official node's freq limit cnr = client.get_contract('TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8') events = list(cnr.events.Transfer.process_receipt(txi)) assert events assert events[0]['event'] == 'Transfer' assert events[0]['address'] == 'TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8' assert events[0]['args'] == { 'from': 'TMuY43m8TQ2hZ1naSiDyGujosVSMZoWLrq', 'to': 'TXX1i3BWKBuTxUmTERCztGyxSSpRagEcjX', 'value': 459155742 }
def test_const_functions(): client = Tron(network='nile') contract = client.get_contract('THi2qJf6XmvTJSpZHc17HgQsmJop6kb3ia') assert contract assert 'name' in dir(contract.functions) print(dir(contract.functions)) print(repr(contract.functions.name())) print(repr(contract.functions.decimals())) assert contract.functions.totalSupply() > 0 for f in contract.functions: print(f)
def test_const_functions(): client = Tron(network='nile') contract = client.get_contract(CNR_ADDR) assert contract assert 'name' in dir(contract.functions) print(dir(contract.functions)) print(repr(contract.functions.name())) print(repr(contract.functions.decimals())) assert contract.functions.totalSupply() > 0 for f in contract.functions: print(f)
def trc2_trans(to_con,key,tplayer,to_add,to_num,trc20_decimals): client = Tron() contract = client.get_contract(to_con) priv_key = PrivateKey(bytes.fromhex(key)) txn = ( contract.functions.transfer(to_add, int(to_num * (10 ** trc20_decimals))) .with_owner(tplayer) .fee_limit(1_000_000) .build() .sign(priv_key) .inspect() .broadcast() ) # wait ok = txn.wait() print("结果", ok) return ok
def test_trc20_transfer(): client = Tron(network='nile') contract = client.get_contract(CNR_ADDR) print('Balance', contract.functions.balanceOf(FROM_ADDR)) txn = (contract.functions.transfer( TO_ADDR, 1_000).with_owner(FROM_ADDR).fee_limit( 5_000_000).build().sign(FROM_PRIV_KEY).inspect().broadcast()) print(txn) # wait receipt = txn.wait() print(receipt) if 'contractResult' in receipt: print( 'result:', contract.functions.transfer.parse_output( receipt['contractResult'][0])) # result print(txn.result())
dzi_trade = 'TSMssi9ojNkzj5fT5bAjzuGjrLmsKau8Xj' from_addr = 'TVrSWkL6a9xvtxRKq5RHg2HjUpGdPN3wBa' priv_key = keys.PrivateKey.fromhex("975a98.....(omitted)..........86b98d97b") def timestamp(): return int(time.time()) swap_abi = [] with open(os.path.join(__dir__, "JustSwapExchange.abi")) as fp: swap_abi = json.load(fp) client = Tron(network='nile') cntr = client.get_contract(dzi_trade) cntr.abi = swap_abi for f in cntr.functions: print(f) # call contract functions with TRX transfer txn = (cntr.functions.trxToTokenSwapInput.with_transfer(1_000_000_000)( 1_000_000_000, timestamp() + 120).with_owner(from_addr).fee_limit(1_000_000_000).build().sign(priv_key)) print("txn =>", txn) # print("broadcast and result =>", txn.broadcast().wait()) # NOTE: before calling tokenToTrxSwapInput, you MUST add TRC20 allowance to the swap contract.