Questions tagged [revert-opcode]

Questions about Solidity's `revert()` or the REVERT opcode.

Filter by
Sorted by
Tagged with
77
votes
4answers
26k views

Difference between require and assert and the difference between revert and throw

I was looking at the docs and Im looking for clarification on the difference between require and assert and throw and revert. assert(bool condition): abort execution and revert state changes if ...
38
votes
2answers
12k views

How do I detect a failed transaction after the Byzantium fork as the REVERT opcode does not consume all gas?

Pre Byzantium fork, I could use gas == gasUsed to detect when a transaction has failed (further details in How can the transaction status from a thrown error be detected when gas can be exactly the ...
21
votes
3answers
6k views

how to catch “revert” error in truffle test javascript?

How can I catch "revert" error in truffle test written in javascript? Error: VM Exception while processing transaction: revert Here is part of test contract, function doRevert() public { ...
12
votes
3answers
5k views

Why do `throw` and `revert()` create different bytecodes?

throw and revert() are both compiling to the revert operation (opcode 0xfd). According to the docs: The throw keyword can also be used as an alternative to revert(). Why is it then that the ...
10
votes
5answers
3k views

How to receive revert() reason for past transactions?

I run a geth/parity nodes for broadcasting user's transactions to Ethereum blockchain. Some of contract functions provide reasons for revert (see examble below): contract Example { function test (...
8
votes
1answer
3k views

Returning an error code with revert

According to the newest version of the yellow paper and Solidity assembly specification, revert opcode can return an error code. http://solidity.readthedocs.io/en/develop/assembly.html revert(p, s)...
6
votes
1answer
2k views

Will revert() refund all gas of the transaction or just the remaining gas?

According to the docs revert() will not consume any gas: Note that assert-style exceptions consume all gas available to the call, while revert-style exceptions will not consume any gas starting ...
6
votes
2answers
2k views

Getting error message from require()

I know that the latest Solidity supports error messages in require/revert (require(stuff, "problem")). Are there any clients that can get this message? Will I be able to see it if I execute the ...
5
votes
1answer
58 views

How to catch a `revert()` error using Brownie?

I am using Brownie to develop my smart contracts, which helps me to intract with the smart contracts, please see doc. When my call Example.greet() is there any way to return the error message and act ...
5
votes
1answer
668 views

Is it possible to perform a try-catch in Solidity?

Does Solidity support try-catch functionality? If so, how does it work? What are the limitations?
4
votes
3answers
1k views

How to catch solidity contract revert message using web3j

Is there any way to catch solidity revert message like Remix Javascript VM in web3j Revert message(Remix) transact to Erecruitment.issueNewAdmitCard errored: VM error: revert. revert The ...
4
votes
3answers
581 views

Is there a way to capture the require / revert failure reason?

In my contract, I have a bunch of checking at the start of a public function. It looks something like this: require ( prx < 1e18, "Value prx too high") require ( prx != 0, "Value prx cannot be ...
4
votes
1answer
398 views

Getting transaction receipt with a reverted transaction to determine how much gas was used?

In web3.js, if a revert occurs, it doesn't give a receipt along with it. I want to determine how much gas was actually used after a revert. In 1.0, I can't even get the tx hash from the event ...
4
votes
1answer
400 views

Will existing contracts behave differently when REVERT is implemented by Metropolis?

Solidity v0.4.10 introduced the revert() and require() functions, along with support for the REVERT opcode. As far as I can tell, this means that any contract compiled using ^0.4.10 will express ...
4
votes
0answers
182 views

Is it possible to trace a function call hitting revert?

It is possible to trace a transaction with debug_traceTransaction. But it needs the transaction hash, requiring it to be a transaction in first place. I'm debugging a function call that generates a ...
3
votes
3answers
2k views

why do we use revert() in payable function?

I have seen this snippet in many online examples could you please explain what this is doing and why are we using it in a payable function? function () public payable { revert () ; }
3
votes
2answers
197 views

Gas refunds via “Self-destruct” prior to a revert()

In a transaction that eventually calls revert(), if prior to the revert we have SELFDESTRUCT some contracts and thus received a gas refund, does the gas refund also get reverted?
3
votes
1answer
1k views

Truffle sendTransaction sending eth to contract address returns revert

I have a contract address not a deployed contract instance in which i want to send ETH to but it fails giving Error: VM Exception while processing transaction: revert MyContract.deployed() .then(...
3
votes
1answer
727 views

Difference between STOP and INVALID opcode

STOP halts execution and according to this mentions INVALID is used as an abort. Is the difference between these opcodes purely semantical?
3
votes
0answers
37 views

How do I check transaction status using go-ethereum simulated back-end?

Using the go-ethereum simulated backend, I would like to: 1) Instantly commit a transaction so that it either succeeds or reverts in a given simulated blockchain. So far I'm using sim.Commit() to ...
3
votes
0answers
122 views

Assuming EIP140, is remaining gas refunded when a called contract throws?

Under EIP140 (REVERT) and assuming Solidity ≥0.4.10. If I call from my contract to a function on an external contract, and this external function does an invalid jump, does my contract still call ...
2
votes
2answers
407 views

forward revert message from low level solidity call

I'm working on a proxy contract that will perform calls as follows: bool success; bytes memory returndata; (success, returndata) = _to.call.value(_value)(_data); require(success); this works great, ...
2
votes
1answer
309 views

Recently upgraded Solc and Web3. Transactions with zero addresses now reverting with “invalid address” message?

I recently upgraded Web3JS and Solc. Now every time I pass a zero address to a Solidity contact method the transaction reverts with an "invalid address" message. This message appears to be coming ...
2
votes
1answer
356 views

TypeError: Member “mint” not found or not visible after argument-dependent lookup in contract ERC20

token.mint(beneficiary, tokens) prevents code from fully compiling using Zeppelin 1.8. Casting your token as a MintableToken* solves this issue and allows your code to compile: MintableToken token = ...
2
votes
1answer
19 views

What is the purpose of a `// dev:` comment after a revert or require statement?

What does it mean when a Solidity contract includes a comment starting with // dev: after a revert or require statement? For example: contract Example { function greet(){ revert(); // ...
2
votes
1answer
83 views

On Etherscan, what is the difference between a failed transaction that says 'Reverted' and one that says 'Execution Reverted'?

On Etherscan, a failed transaction will provide a reason for failure. This can be Reverted, Out of Gas, Bad instruction, etc. However, there seems to be an inconsistent message on different testnets. ...
2
votes
2answers
171 views

Does a string message increase the gas usage of a `require` statement?

In solc 0.4.22 onward, it is possible to provide a string message containing details about the error that will be passed back to the caller (in require, assert and revert statements). Does the gas ...
2
votes
1answer
172 views

How to handle require/revert/assert errors properly

I'm trying to find an easy pattern to revert/rollback a write transaction. The first idea was to log a GenericErrorEvent but then I noticed that it will never be emited if any require/revert/assert ...
2
votes
2answers
169 views

Does ether transfer consume all gas in case of exception?

If addr.transfer() fails, does it use a revert- or throw-style exception? In other words, does a failed transfer consume all provided gas?
2
votes
0answers
44 views

How to know the reason of transaction's reversion in parity?

I am testing ERC20 USDT contract locally with parity. I imported contract to my private testnet and manually generated raw transaction that calls "transfer" method of contract. I send it to the node ...
2
votes
1answer
109 views

Ether in ERC-20 transactions?

I have one contract that I give tokens from a ERC20 contract implemantation. When I call the balanceOf function from the Token conract. Response me that I have x Tokens. Nice !! But when I try to ...
2
votes
0answers
225 views

Strange revert() behavior on Etherscan

I am testing my contract, which is for an auction. I've deployed it on the Rinkeby testnet. I have a payable function that calls revert() if the bid being placed isn't higher than the existing bid. ...
1
vote
3answers
950 views

Web3 transaction to a contract fails with revert. Same transaction works from truffle console

I have a simple contract transaction that creates another contract. This transaction when called from Node.js using Web3 and truffle-contract throws a revert. ContractFactory.deployed().then(function(...
1
vote
1answer
5k views

what is [Reverted] during contract execution

I have sent ETH to a contract address, and it "failed" the transaction saying it is: Warning! Error encountered during contract execution [Reverted] contract address and transaction failure here: ...
1
vote
2answers
169 views

How to get reason revert using web3.eth.call

I have a smart contract with required message and pretend to use the required/validation message in front end. require(bytes(hashAlreadyRegistered[hash]).length == 0, "Hash already registered&...
1
vote
1answer
34 views

Payable constructor gives revert message

I am trying to execute the following contract on remixe IDE: pragma solidity ^0.5.4; contract GuessTheNumberChallenge { constructor() public payable { require(msg.value == 1 ether); } ...
1
vote
1answer
289 views

Solidity/Remix Error : The constructor should be payable if you send value?

Simple contract, but don't transfer ETH! pragma solidity ^0.4.24; contract Upper { uint public count; constructor() payable public {} function() payable public { count++; } ...
1
vote
2answers
982 views

Smartcontract: Warning! contract execution experienced an error and gets [Reverted]

I have sent ropsten ETH to my newly created contract address (still on test mode on the Ropsten Test net). Unfortunately it kept "failing". The blockchain reports: Warning! Error encountered during ...
1
vote
1answer
177 views

lost transaction — not back in my MEW

i sent a transaction to credits ico and it came back with a transaction failure due to a revert opcode. the credits team say they are not responsible i should take it up with ethereum. the ether-...
1
vote
1answer
331 views

Is it good practice to use revert() in case a function does find a match in case of a search?

This Solidity function: function findSupplierByName(string supplierName) public view returns (address id, string name) { for (uint idx = 0; idx < supplierAddresses.length; idx++) { ...
1
vote
0answers
35 views

UnhandledPromiseRejectionWarning: Error: nonce generation function failed or private key is invalid in Ganache

In Go I am using go-ethereum to read data from the ethereum smart contract. My smart contract is maintained with truffle. I am trying to fetch candidate information based on candidate id. I have a ...
1
vote
2answers
99 views

How to decode error response from contact

When calling a contract function that I expect to fail by invoking revert, I receive the following JSON-RPC response: { "jsonrpc": "2.0", "id": 1, "result": "...
1
vote
0answers
33 views

Assert after critical instruction

I've seen a particular code style, where after any "critical" state modification operation, a check is done in order to assess the true good result of the operation. Something like: uint _count = ...
1
vote
1answer
73 views

why use up all the gasLimit when use assembly and revert together?

try to call erc20 token's transferFrom() using assembly(to save some gas), code like this: pragma solidity ^0.4.24; contract TestAssemblyAndRevert { function test(address from, address to, ...
1
vote
1answer
82 views

Calculating a minimum entry fee for a game based on typical minimum gas requirements?

I am creating a dApp that is a game where players compete for the prize pool and that pool is built from the sum of all the entry fees payed by the player at the start of the game. The player that ...
1
vote
0answers
424 views

How to catch reverted transaction while using metamask

I'm working with metamask and was testing a transaction that should trigger a revert statement inside my contract. When the error is thrown metamask gives the following output: this was while using ...
0
votes
2answers
99 views

Does reverted transactions considered as mined transactions?

I want to know if a reverted transaction is considered as mined one ? this is mean nonce should be incremented
0
votes
2answers
141 views

How can I get the revert reason of a call in Solidity so that I can use it in the same on-chain transaction?

I want to get the revert reason of a failed call and then use that revert reason in the same on-chain transaction. Is this possible?
0
votes
1answer
278 views

How to stop contract execution w/o losing events

Function revert() is supposed to stop contract execution and rollback every change on blockchain except events reported. That's exactly what I need, but it seems to me it is not working as expected. ...
0
votes
1answer
302 views

Is it safe to call revert() instead of returning a value?

I have the following piece of code: function func() public returns (bool) { if (some condition on msg.sender) { do some stuff return true; } revert(); } The compiler (0.4....