Ich habe versucht, jeden Tag einige USDT-Transaktionen zu übertragen, und nach ein paar Tagen habe ich für einige Transaktionen OUT_OF_ENERGY-Nachrichten erhalten.
Ich mache jeden Tag einige Trades, manchmal mache ich etwa 30 Trades.
Zuerst habe ich versucht, etwa 20.000 TRX einzusetzen, um Energie und Bandbreite zu gewinnen, aber es war nicht genug.
Wenn ich basierend auf Tron grid
文檔的 PHP 腳本觸發(fā)交易時,它顯示 費用限制
為 10,因此我將 費用限制
verwende, erh?ht sich der Wert auf 15 TRX (15M SUN), aber es wird immer noch kein TRX verwendet, um die Transaktion einzureichen. Aber wenn ich sie manuell aus der TronLink-Wallet bereitstelle, ist alles in Ordnung.
Ich wei? nicht, was ich jetzt tun soll.
Ich habe die transferTrc20
-Methode unter https://github.com/iexbase/tron-api verwendet, um Broadcast-Transaktionen im TRX-Netzwerk durchzuführen.
我不知道是否需要,但我通過這種方式找到了解決方案。函數(shù)triggerConstantContract
可以返回實際網(wǎng)絡(luò)調(diào)用之前的能量消耗,但由于某種原因iexbase沒有實現(xiàn)這樣的邏輯。因此,我在 TransactionBuilder.php
中的 public function triggerConstantContract
之后添加了自己的函數(shù),該函數(shù)返回包含能量信息的完整結(jié)果
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); } }
因此你可以做類似的事情
$transfer = $this->_tron->getTransactionBuilder() ->triggerConstantContractFull( $this->abiData, $this->_tron->address2HexString($this->contractAddress), 'transfer', [$this->_tron->address2HexString($to), $tokenAmount], $this->_tron->address2HexString($from) );
以及對此的回應(yīng)
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', ), )