Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Py evm 1466 #1799

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Update the contract limit size to follow EIP170. Add tests against th…
…e size limit.
  • Loading branch information
glaksmono committed Nov 20, 2018
commit 39fdd9f16d82e5a3e4cafb3e4525a7f608e347d7
2 changes: 1 addition & 1 deletion eth/vm/forks/spurious_dragon/constants.py
Original file line number Diff line number Diff line change
@@ -10,4 +10,4 @@


# https://github.com/ethereum/EIPs/issues/170
EIP170_CODE_SIZE_LIMIT = 24577
EIP170_CODE_SIZE_LIMIT = 24576
85 changes: 85 additions & 0 deletions tests/core/vm/test_spurious_dragon_computation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
import pytest

from eth_utils import (
to_canonical_address,
)

from eth.vm.message import (
Message,
)

from eth.vm.forks.spurious_dragon.computation import (
SpuriousDragonComputation,
)

from eth.vm.transaction_context import (
BaseTransactionContext,
)


NORMALIZED_ADDRESS_A = "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6"
NORMALIZED_ADDRESS_B = "0xcd1722f3947def4cf144679da39c4c32bdc35681"
CANONICAL_ADDRESS_A = to_canonical_address("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")
CANONICAL_ADDRESS_B = to_canonical_address("0xcd1722f3947def4cf144679da39c4c32bdc35681")
CONTRACT_CODE_A = b""
CONTRACT_CODE_B = b""
CONTRACT_CODE_C = b""


@pytest.fixture
def state(chain_without_block_validation):
state = chain_without_block_validation.get_vm().state
state.account_db.set_balance(CANONICAL_ADDRESS_A, 1000)
return state


@pytest.fixture
def transaction_context():
tx_context = BaseTransactionContext(
gas_price=1,
origin=CANONICAL_ADDRESS_B,
)
return tx_context


def test_code_size_limit(transaction_context, state):
"""
CONTRACT_CODE_A size is greater than EIP170_CODE_SIZE_LIMIT
"""
message_contract_code_a = Message(
to=CANONICAL_ADDRESS_A,
sender=CANONICAL_ADDRESS_B,
value=100,
data=b'',
code=CONTRACT_CODE_A,
gas=100,
)
computation = SpuriousDragonComputation(
state=state,
message=message_contract_code_a,
transaction_context=transaction_context,
)

"""
TODO: CONTRACT_CODE_B size is equal to EIP170_CODE_SIZE_LIMIT
"""
message_contract_code_b = Message(
to=CANONICAL_ADDRESS_A,
sender=CANONICAL_ADDRESS_B,
value=100,
data=b'',
code=CONTRACT_CODE_B,
gas=100,
)

"""
TODO: CONTRACT_CODE_C size is lower than EIP170_CODE_SIZE_LIMIT
"""
message_contract_code_c = Message(
to=CANONICAL_ADDRESS_A,
sender=CANONICAL_ADDRESS_B,
value=100,
data=b'',
code=CONTRACT_CODE_C,
gas=100,
)