Можно ли получить хеш транзакции из вызова функции Solidity?

В рамках функции Solidity хеш транзакции доступен как глобальная переменная из контракта? Я бы подумал, что это будет что-то вроде tx.hash таким же образом вы можете сделать tx.origin и т. д.

Мое мышление заключается в том, что хеш транзакции будет недоступен до тех пор, пока контракт не будет заминирован. Это верно?

19 голосов | спросил glider 5 PMpTue, 05 Apr 2016 13:45:12 +030045Tuesday 2016, 13:45:12

1 ответ


20

Здесь у вас есть все глобальные переменные в Solidity:

  

Глобальные переменные

     
  • block.coinbase (адрес): адрес текущего блока Miner
  •   
  • block.difficulty (uint): текущая сложность блока
  •   
  • block.gaslimit (uint): текущий блок gaslimit
  •   
  • block.number (uint): текущий номер блока
  •   
  • block.blockhash (функция (uint) возвращает (bytes32)): хэш данного блока - работает только для 256 последних блоков
  •   
  • block.timestamp (uint): текущая временная метка блока
  •   
  • msg.data (bytes): complete calldata ​​li>   
  • msg.gas (uint): оставшийся газ
  •   
  • msg.sender (адрес): отправитель сообщения (текущий вызов)
  •   
  • msg.value (uint): количество сообщений, отправленных с сообщением
  •   
  • now (uint): текущая временная метка блока (псевдоним для block.timestamp)
  •   
  • tx.gasprice (uint): цена на газ по сделке
  •   
  • tx.origin (адрес): отправитель транзакции (полная цепочка вызовов)
  •   
  • sha3 (...) возвращает (bytes32): вычисляет хэш Ethereum-SHA3 (плотно упакованных) аргументов
  •   
  • sha256 (...) возвращает (bytes32): вычисляет хэш SHA256 (плотно упакованных) аргументов
  •   
  • ripemd160 (...) возвращает (bytes20): вычисляет RIPEMD из 256 (плотно упакованных) аргументов
  •   
  • ecrecover (bytes32, uint8, bytes32, bytes32) возвращает (адрес): восстанавливает открытый ключ из сигнатуры эллиптической кривой
  •   
  • addmod (uint x, uint y, uint k) возвращает (uint): вычисляет (x + y)% k, где сложение выполняется с произвольной точностью и не выполняется   оберните вокруг 2 ** 256.
  •   
  • mulmod (uint x, uint y, uint k) возвращает (uint): вычисляет (x * y)% k, где умножение выполняется с произвольной точностью и   не обертывается на 2 ** 256.
  •   
  • этот (текущий контракт) тип: текущий контракт, явно конвертируемый в адрес
  •   
  • super: контракт на один уровень выше в иерархии наследования
  •   
  • selfdestruct (address): уничтожить текущий контракт, посылая свои средства на указанный адрес
  •   
  • .баланс: баланс адреса в Вэй
  •   
  • .send (uint256) возвращает (bool): отправить заданное количество Вэй для адреса, возвращает false при ошибке.
  •   

Как вы говорите, поскольку транзакция не заминирована, вы не можете найти здесь tx.hash.

ответил arodriguezdonaire 5 PMpTue, 05 Apr 2016 14:06:15 +030006Tuesday 2016, 14:06:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132