Questions tagged [evm]

EVM is the Ethereum Virtual Machine, the protected, distributed "sandbox area" (virtual machine) where contract execution occurs, replicated on every node in the network. EVM is also the name of the bytecode that runs on the virtual machine -- what Solidity, Serpent and LL get compiled down to before deployment.

The EVM is a virtual machine that can execute the instructions that comprise Ethereum smart contracts. It is specially optimized for blockchain usage: all operations are completely deterministic (which is essential for nodes to reach consensus on the resulting state changes of the execution), memory and computation are carefully tracked, and certain cryptographic operations are "built in".

EVM bytecode is the instruction set of the Ethereum Virtual Machine, which is produced when compiling the higher-level languages, Solidity, Serpent and LLL. The term EVM is also used to refer to the bytecode itself.

1032 questions
14
votes
1 answer

Rationale behind 256-bit words in EVM

What were the design factors driving having EVM native words as 256-bit? It feels excessive, especially if one needs to process as large data set as blockchain.
Mikko Ohtamaa
  • 22,269
  • 6
  • 62
  • 127
7
votes
1 answer

Any similar quasi Turing complete systems?

In the literature, are there any remotely similar quasi Turing complete systems like Ethereum (EVM), that "charge" for each step of computation? Anything that the EVM could learn from?
eth
  • 85,679
  • 53
  • 285
  • 406
6
votes
0 answers

Exploit mitigation in EVM JIT

Ethereum is moving to JIT-compiled EVM code: https://blog.ethereum.org/2016/06/02/go-ethereums-jit-evm/ As JIT compiled machine code has turned out to be a common attack vector in the base of web browsers (JavaScript) and Java, what additional…
Mikko Ohtamaa
  • 22,269
  • 6
  • 62
  • 127
6
votes
1 answer

Are there any specifications/details on the call stack?

I am trying to understand how the call stack inside the EVM works. I can't find anything in the yellow paper not else where online. Can anyone explain how the call stack works and if you can access its values in any way (EVM or solidity)?
DAnsermino
  • 125
  • 3
6
votes
2 answers

Separated Ethereum VM

I'm trying to figure out if anyone has separated out the Ethereum VM for experimentation. It would be interesting to play with the interface to the EVM for smart contract testing without all of the other trappings of Ethereum. Has anyone done this?
MattyB
  • 171
  • 3
4
votes
0 answers

Why is there a CALL instruction in this contract?

This is a code snippet from a real contract. I wonder why the compiled code (can be obtained online from https://chriseth.github.io/browser-solidity) has several CALL instructions, although the contract does not make any call? contract ReleaseOracle…
Loi.Luu
  • 2,103
  • 3
  • 13
  • 16
4
votes
1 answer

How is function data encoded/decoded if a string exceeds the 32 byte length?

So function data input has a limit of 32 bytes. How exactly do the internals of the EVM work when you pass in a string arg that exceeds this limit? Does it pass a pointer to some value in memory instead? If so, how is it possible to retrospectively…
Origami
  • 136
  • 3
3
votes
0 answers

Geth, how to revert back to certain EVM state/block

I am trying to fuzz a smart contract on Geth, which involves contract state exploration. In order to explore a contract state S1, different contract functions with different inputs will be executed on the given state. E.g., executing function F1 on…
Huadong Feng
  • 211
  • 2
  • 8
3
votes
3 answers

Running a local development evm virtual machine

Is there a way to compile, run and debug a solidity class on my developpment computer. I do not want to connect to an ethereum network. I just want to debug my class Thanks
Bob5421
  • 1,457
  • 1
  • 12
  • 38
3
votes
1 answer

does EVM support pop() that returns the last element?

pop() that returns the last element is a method I have found would be good to have in smart contract development. Since v0.5.0 released a year ago, Solidity supports pop() for removing the last element of an array, but without returning it. Do other…
mArgo
  • 63
  • 5
3
votes
1 answer

Unable to resolve all static JUMP destinations while disassembling ethereum vm bytecode

For educational purpose I've created a simple python based evm bytecode disassembler (see github::ethereum-dasm) that attempts to resolve static jumps (JUMP,JUMPI instructions) in order to make the disassembly more readable. The disassembler is…
tintin
  • 275
  • 3
  • 8
3
votes
1 answer

Create a slightly customized version of ethereum and run it as a node on a public ethereum blockchain

I might need a small modification to ethereum virtual machine but I still want to run it as a node on the public blockchain not private, if that makes sense. I assume its doable? Since I will not be changing the protocol at all. Do any other…
3
votes
1 answer

which nodes have evms and how do they compare the results?

which nodes have ethereum vm? I have read that nodes with evms run the transactions and check if they all got the same result. How do they sync and compare their results?
adi
  • 197
  • 1
  • 10
3
votes
1 answer

How does the EVM connect to all the blockchain nodes?

Someone recently told me that Ethereum does not use IP addresses to work out the node connections. I know networkid is used in the connection but how does networkid translate into the EVM finding the relevant nodes? I assume there must be a…
Trevor Oakley
  • 777
  • 9
  • 20
3
votes
2 answers

Is it possible to retrieve an event log from a reverted transaction?

I know there is an upcoming change to solidity which will allow the returning of require() calls with a string error message. But I'm wondering if it's possible to do something like this now. Since each node has to run the code up to the revert…
Lsaether
  • 350
  • 1
  • 9
1
2 3 4