ethereum.forks.arrow_glacier.vm.stackethereum.forks.gray_glacier.vm.stack

Ethereum Virtual Machine (EVM) Stack.

.. contents:: Table of Contents :backlinks: none :local:

Introduction

Implementation of the stack operators for the EVM.

pop

Pops the top item off of stack.

Parameters

stack : EVM stack.

Returns

value : U256 The top element on the stack.

def pop(stack: List[U256]) -> U256:
22
    """
23
    Pops the top item off of `stack`.
24
25
    Parameters
26
    ----------
27
    stack :
28
        EVM stack.
29
30
    Returns
31
    -------
32
    value : `U256`
33
        The top element on the stack.
34
35
    """
36
    if len(stack) == 0:
37
        raise StackUnderflowError
38
39
    return stack.pop()

push

Pushes value onto stack.

Parameters

stack : EVM stack.

value : Item to be pushed onto stack.

def push(stack: List[U256], ​​value: U256) -> None:
43
    """
44
    Pushes `value` onto `stack`.
45
46
    Parameters
47
    ----------
48
    stack :
49
        EVM stack.
50
51
    value :
52
        Item to be pushed onto `stack`.
53
54
    """
55
    if len(stack) == 1024:
56
        raise StackOverflowError
57
58
    return stack.append(value)