Skip to content

Commit

Permalink
Update the contract limit size to follow EIP170. Add tests against th…
Browse files Browse the repository at this point in the history
…e size limit.
  • Loading branch information
glaksmono committed Nov 20, 2018
1 parent 1f60fd8 commit 39fdd9f
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 1 deletion.
2 changes: 1 addition & 1 deletion eth/vm/forks/spurious_dragon/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
)

0 comments on commit 39fdd9f

Please sign in to comment.