Rumah > Soal Jawab > teks badan
Saya cuba menyiarkan beberapa transaksi USDT setiap hari, dan selepas beberapa hari, saya menerima mesej OUT_OF_ENERGY untuk beberapa transaksi.
Saya melakukan beberapa dagangan setiap hari, kadangkala saya melakukan kira-kira 30 dagangan.
Mula-mula, saya cuba mempertaruhkan kira-kira 20k TRX untuk mendapatkan tenaga dan lebar jalur, tetapi ia tidak mencukupi.
Apabila saya menggunakan berdasarkan Tron grid
文档的 PHP 脚本触发交易时,它显示 费用限制
为 10,因此我将 费用限制
ia meningkat kepada 15 TRX ( 15M SUN ) tetapi masih tiada TRX digunakan untuk menghantar transaksi. Tetapi jika saya menyediakannya secara manual dari dompet TronLink, semuanya baik-baik saja.
Saya tidak tahu apa yang patut saya lakukan sekarang.
Saya telah menggunakan kaedah transferTrc20
di https://github.com/iexbase/tron-api untuk melakukan transaksi penyiaran pada rangkaian TRX.
P粉5125267202023-12-25 18:46:34
Saya tidak tahu sama ada ia diperlukan, tetapi saya menemui penyelesaiannya dengan cara ini. Fungsi triggerConstantContract
可以返回实际网络调用之前的能量消耗,但由于某种原因iexbase没有实现这样的逻辑。因此,我在 TransactionBuilder.php
中的 public function triggerConstantContract
Kemudian menambah fungsi saya sendiri yang mengembalikan hasil lengkap termasuk maklumat tenaga
public function triggerConstantContractFull($abi, $contract, $function, $params = [], $address = '410000000000000000000000000000000000000000') { $func_abi = []; foreach($abi as $key =>$item) { if(isset($item['name']) && $item['name'] === $function) { $func_abi = $item + ['inputs' => []]; break; } } if(count($func_abi) === 0) throw new TronException("Function $function not defined in ABI"); if(!is_array($params)) throw new TronException("Function params must be an array"); if(count($func_abi['inputs']) !== count($params)) throw new TronException("Count of params and abi inputs must be identical"); $inputs = array_map(function($item){ return $item['type']; },$func_abi['inputs']); $signature = $func_abi['name'].'('; if(count($inputs) > 0) $signature .= implode(',',$inputs); $signature .= ')'; $eth_abi = new Ethabi([ 'address' => new Address, 'bool' => new Boolean, 'bytes' => new Bytes, 'dynamicBytes' => new DynamicBytes, 'int' => new Integer, 'string' => new Str, 'uint' => new Uinteger, ]); $parameters = substr($eth_abi->encodeParameters($func_abi, $params),2); $result = $this->tron->getManager()->request('wallet/triggerconstantcontract', [ 'contract_address' => $contract, 'function_selector' => $signature, 'parameter' => $parameters, 'owner_address' => $address, ]); if(!isset($result['result'])){ throw new TronException('No result field in response. Raw response:'.print_r($result,true)); } if(isset($result['result']['result'])) { return $result; } $message = isset($result['result']['message']) ? $this->tron->hexString2Utf8($result['result']['message']) : ''; throw new TronException('Failed to execute. Error:'.$message); } }
Jadi anda boleh melakukan sesuatu seperti ini
$transfer = $this->_tron->getTransactionBuilder() ->triggerConstantContractFull( $this->abiData, $this->_tron->address2HexString($this->contractAddress), 'transfer', [$this->_tron->address2HexString($to), $tokenAmount], $this->_tron->address2HexString($from) );
dan maklum balas untuk ini
array ( 'result' => array ( 'result' => true, ), 'energy_used' => 13430, 'constant_result' => array ( 0 => '0000000000000000000000000000000000000000000000000000000000000001', ), 'logs' => array ( 0 => array ( 'address' => 'ea51342dabbb928ae1e576bd39eff8aaf070a8c6', 'data' => '00000000000000000000000000000000000000000000000000000000004c4b40', 'topics' => array ( 0 => 'ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', 1 => '000000000000000000000000ea327173cc5e0fc7a39587ca1d767a6a1baaabcd', 2 => '000000000000000000000000aad0e7d0dcd95d627ab12be594fdf011b939d8d9', ), ), ), 'transaction' => array ( 'ret' => array ( 0 => array ( ), ), 'visible' => false, 'txID' => '97cba8afd15b5ce57cf2cd3a77e872da1dd6169c3d9fcecdfed1dbc08ba61a69', 'raw_data' => array ( 'contract' => array ( 0 => array ( 'parameter' => array ( 'value' => array ( 'data' => 'a9059cbb000000000000000000000041aad0e7d0dcd95d627ab12be594fdf011b939d8d900000000000000000000000000000000000000000000000000000000004c4b40', 'owner_address' => '41ea327173cc5e0fc7a39587ca1d767a6a1baaabcd', 'contract_address' => '41ea51342dabbb928ae1e576bd39eff8aaf070a8c6', ), 'type_url' => 'type.googleapis.com/protocol.TriggerSmartContract', ), 'type' => 'TriggerSmartContract', ), ), 'ref_block_bytes' => '0ab5', 'ref_block_hash' => '7a928d3d5a95f196', 'expiration' => 1677224169000, 'timestamp' => 1677224111178, ), 'raw_data_hex' => '0a020ab522087a928d3d5a95f19640a89ce792e8305aae01081f12a9010a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412740a1541ea327173cc5e0fc7a39587ca1d767a6a1baaabcd121541ea51342dabbb928ae1e576bd39eff8aaf070a8c62244a9059cbb000000000000000000000041aad0e7d0dcd95d627ab12be594fdf011b939d8d900000000000000000000000000000000000000000000000000000000004c4b4070cad8e392e830', ), )