Обработка String msg, возвращаемого из revert() в Solidity

Это мой образец договора..

pragma solidity ^ 0.4.15;

contract Sample{

  struct Info
  {
    address pubKey;        //key
    bytes32 Id;
  }

  mapping(address => Info) public userMap;

  // Registration
  function register(bytes32 orgId, address pubKey) public returns(bool){
    if (pubKey == 0x0 || orgId == 0x0 ) {
        revert("Pub Key & Org Id are mandatory");
    }
    if (userMap[pubKey].pubKey == pubKey) {
        revert("User already exists");
    }
    userMap[pubKey].pubKey = pubKey;
    userMap[pubKey].orgId = orgId;
    return true;
  }
  //getting the given Details
  function getUser(address pubKey) public returns(bytes32 orgId){
    orgId = userMap[pubKey].orgId;
  }
}

Мне нужно обработать сообщение, возвращаемое из функции revert() в API (node.js). Получу ли я это сообщение в transactionReceipt соответствующей транзакции, такой как web3.eth.getTransaction(txhash), или где я могу прочитать вышеуказанное сообщение?

Ответы (1)

Короче говоря, невозможно прочитать данные о возврате из квитанции о транзакции. Это верно как для данных успешного возврата, так и для причины возврата. Единственный способ, которым вы действительно можете сделать это в настоящее время, — это зарегистрировать событие, уведомляющее внешний интерфейс об ошибке и возвращающее false вместо возврата.