La transaction USDT TRC20 a échoué en raison d'un manque d'énergie
P粉412533525
P粉412533525 2023-12-24 20:46:43
0
1
802

J'ai essayé de diffuser certaines transactions USDT chaque jour et après quelques jours, j'ai reçu des messages OUT_OF_ENERGY pour certaines transactions.

Je fais quelques métiers tous les jours, parfois je fais environ 30 métiers.

Tout d'abord, j'ai essayé de miser environ 20 000 TRX pour gagner de l'énergie et de la bande passante, mais ce n'était pas suffisant.

Lorsque j'utilise basé sur Tron grid 文档的 PHP 脚本触发交易时,它显示 费用限制 为 10,因此我将 费用限制 , il est passé à 15 TRX (15M SUN) mais aucun TRX n'est toujours utilisé pour soumettre la transaction. Mais si je les fournis manuellement depuis le portefeuille TronLink, tout va bien.

Je ne sais pas ce que je dois faire maintenant.

J'ai utilisé la méthode transferTrc20 sur https://github.com/iexbase/tron-api pour effectuer des transactions de diffusion sur le réseau TRX.

P粉412533525
P粉412533525

répondre à tous(1)
P粉512526720

Je ne sais pas si c'est nécessaire, mais j'ai trouvé la solution de cette façon. Fonction triggerConstantContract可以返回实际网络调用之前的能量消耗,但由于某种原因iexbase没有实现这样的逻辑。因此,我在 TransactionBuilder.php 中的 public function triggerConstantContract J'ai ensuite ajouté ma propre fonction qui renvoie le résultat complet, y compris les informations énergétiques

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);
    }

}

Pour que tu puisses faire quelque chose comme ça

$transfer = $this->_tron->getTransactionBuilder()
    ->triggerConstantContractFull(
        $this->abiData,
        $this->_tron->address2HexString($this->contractAddress),
        'transfer',
        [$this->_tron->address2HexString($to), $tokenAmount],
        $this->_tron->address2HexString($from)
    );

et réponses à cela

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',
  ),
)
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!