runtimeverification / runtimeverification/evm-semantics
calling test contract from within test contract makes the proof fail
Nobody has claimed this yet.
- Dominant language
- KCL
- Stars
- 591
- Forks
- 156
- Avg merge
- 2h 19m
- Merged PRs (30d)
- 1
Description
prob related: https://github.com/runtimeverification/evm-semantics/issues/1691
when writing a test case such as:
function test_delegate() public {
address(this).delegatecall(abi.encodeWithSignature("transfer(address,uint256)", address(10987654321), 500));
}
the proof proving will fail.
$ kevm foundry-prove --test AssertTest.test_delegate
ERROR 2023-05-24 11:27:03,082 kevm_pyk.utils - Proof failed: AssertTest.test_delegate
PROOF FAILED: AssertTest.test_delegate
The kcfg-viewer gives us some more insight on the issue,
kevm foundry-kcfg-viewer AssertTest.test_delegate
@anvacaru thought that the reason is that the ACCT that is "from" is a symbolic Int which is not in the active accounts cell and makes the proof fail.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing AssertTest.test_delegate with kevm foundry-prove --test AssertTest.test_delegate, then inspect the resulting state in kevm foundry-kcfg-viewer AssertTest.test_delegate. Investigate the reported symbolic ACCT and active accounts behavior; done means the nested delegatecall test proof completes successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- solidity
- Domain
- blockchain, testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100