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

[WIP] Update the contract limit size to follow EIP170 and add tests against it #1483

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

glaksmono
Copy link
Contributor

What was wrong?

EIP170 states that the contract size limit was changed to 2**14 + 2**13 which is 24,576 bytes. The following line implementations the constant for EIP170, but it is off by one.

Issue Reference: #1466

How was it fixed?

  • Update the contract limit size to follow EIP170
  • Add tests against the contract size limit

Cute Animal Picture

put a cute animal picture link inside the parentheses

CANONICAL_ADDRESS_B = to_canonical_address("0xcd1722f3947def4cf144679da39c4c32bdc35681")
CONTRACT_CODE_A = b""
CONTRACT_CODE_B = b""
CONTRACT_CODE_C = b""
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pipermerriam Would like to get suggestion on what is the best way of having different kinds of contract code in our tests. Do we usually just hardcode the bytecode here?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typically yes. I assume we don't need complex code and we could just do something like: CODE = b'\x01' * 20000 or something to keep it concise.

@dherykw
Copy link
Contributor

dherykw commented Jul 10, 2019

@pipermerriam, @glaksmono .Is this issue still open? it seems that is pretty close to being resolved, May I give it a try?

@@ -10,4 +10,4 @@


# https://github.com/ethereum/EIPs/issues/170
EIP170_CODE_SIZE_LIMIT = 24577
EIP170_CODE_SIZE_LIMIT = 24576
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
EIP170_CODE_SIZE_LIMIT = 24576
EIP170_CODE_SIZE_LIMIT = 24576 # 2**14 + 2**13


NORMALIZED_ADDRESS_A = "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6"
NORMALIZED_ADDRESS_B = "0xcd1722f3947def4cf144679da39c4c32bdc35681"
CANONICAL_ADDRESS_A = to_canonical_address("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
CANONICAL_ADDRESS_A = to_canonical_address("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")
CANONICAL_ADDRESS_A = to_canonical_address(NORMALIZED_ADDRESS_A)

NORMALIZED_ADDRESS_A = "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6"
NORMALIZED_ADDRESS_B = "0xcd1722f3947def4cf144679da39c4c32bdc35681"
CANONICAL_ADDRESS_A = to_canonical_address("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")
CANONICAL_ADDRESS_B = to_canonical_address("0xcd1722f3947def4cf144679da39c4c32bdc35681")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
CANONICAL_ADDRESS_B = to_canonical_address("0xcd1722f3947def4cf144679da39c4c32bdc35681")
CANONICAL_ADDRESS_B = to_canonical_address(NORMALIZED_ADDRESS_B)

CANONICAL_ADDRESS_B = to_canonical_address("0xcd1722f3947def4cf144679da39c4c32bdc35681")
CONTRACT_CODE_A = b""
CONTRACT_CODE_B = b""
CONTRACT_CODE_C = b""
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typically yes. I assume we don't need complex code and we could just do something like: CODE = b'\x01' * 20000 or something to keep it concise.

)

"""
TODO: CONTRACT_CODE_B size is equal to EIP170_CODE_SIZE_LIMIT
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Test should probably be parametrized (or use a parametrized fixture) instead of testing all three in the same test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants