-
Notifications
You must be signed in to change notification settings - Fork 256
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
t8n tool errors #773
Comments
https://drive.google.com/file/d/1VGKDS1WkT9wlwtHiB-EAD8yWglx1XeO6/view?usp=drive_link |
We had concluded that these test cases are not possible since they have zero We have ignored |
why? such case is possible on first rules, so it could have left over on the mainnet (even if its not the case) in Frontier this is totally possible |
We're of the opinion that if something hasn't happened on mainnet, we can create a "retroactive" EIP prohibiting the behaviour, in the same way that EIP-2681 retroactively limits account nonces.
What would this look like? |
{ (CREATE 0 0 (lll { [[1]]1 } 0)) } If your evm fails on empty contract then ot will fail on this instruction on Frontier, so technically it will be a bug |
We handle empty accounts in general fine. All of these test case relate to questions of what happens when you create a smart contract at an address which already has storage. The account must have no nonce and no code, otherwise the create would fail. This is only possible if you find an address collision (costing billions of dollars in compute) and deploy an empty contract there prior to Spurious Dragon. Whether this counts as an impossible situation is debatable. Early in the development of the specs we followed |
I think I have figured it out. According to the test suite, the semantics of
We implement 1, but not 2. Due to architectural differences between us and production clients, it's not trivial for us to implement 2. The problem is that |
@winsvega I looked at the remaining 38 tests in your list and they actually pass in our CI process. Let me outline the test that we perform in our CI process and do let me know if we are missing anything here.
Please let me know in case you see any issue with this testing approach. |
Ah this particular one must be coinbase touch. Its an issue only with state tests as it has 0 reward touch. So coinbase gets touched and an empty account created on pre EIP150. Since I assume the state transition is equivalent to the block sealing. Even with mining reward of 0. Or 0 tx (high nonce tx gets rejected) But let me check the logs of pyt8n |
I will make a PR to fix the issue I mentioned above. That should fix |
here is the thing. in blockchain test we can't check rejected transaction exceptions. I do export it in bc tests too but runners don't verify this. so when a tx get rejected in state tests -> blockchain test convertion. we get empty block. that means such test do nothing. I still put this info into blockchain test:
to indicate that this tx was rejected from the block. we do have transaction tests for verification, this is just an attempt to check transaction rejection and its exceptions in realistic bc scenario using state tests. currently there are only a few tests like this |
So u recommend using the |
No, I am fixing those tests now. So its a question about what should happen to empty coinbase when state reward set to 0 and 0 transactions provided in txs.(pre eip158) And as for empty accounts, the t8n must support pre state with empty accounts having storage as on firrst networks it was possible to generate those |
This should be handled post #794 |
updated the errors. some errors still happen when unexpected type transaction is imported on prior forkrules. |
I have checked the last remaining failing tests on the list and the following seems to be true.
|
we are down to 2 issues: |
Here is the results of t8n execution on the state tests (skipping ConstantinopleFix as it is not declared in tool)
Fixed
0x305060..
) (empty contract collision)0x600160..
) (tr has nonce overflow the allowed value)0x..
) (tr has gaslimit x gasprice overflow)0x600060..
) (empty account collision)0x305060..
) (empty accounts?)0x00..
) (merge support?)0x..
) (intrinsic gas exception):label valid 0x1a8451..
):label T1baseInList 0x693c61..
):label T2baseInList 0x693c61..
):label addrs_0_keys_0 0x00..
):label declaredKeyWrite 0x693c61..
):label allGood 0x5a3031..
):label delegateCallerInAccessList 0x693c61..
):label invalid 0x601080..
)0x693c61..
)0x000000..
):label declaredKeyWrite 0x00..
)0x00..
)0x00..
):label declaredKeyWrite 0x00..
)0x00..
)0x..
):label declaredKeyWrite 0x00..
):label declaredKeyWrite 0x00..
)0x693c61..
)0x00..
)0x00..
)0x00..
)0x..
)0x..
)0x00..
)0x..
):label success 0x1a8451..
):label yes 0x1a8451..
) (statisticall python crash)0x00ff..
) (statisticall python crash)The text was updated successfully, but these errors were encountered: