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

integration: add create2 test case with duplicate salt #188

Merged
merged 7 commits into from
Feb 4, 2025

Conversation

xermicus
Copy link
Member

@xermicus xermicus commented Jan 31, 2025

Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com>
github-merge-queue bot pushed a commit to paritytech/polkadot-sdk that referenced this pull request Feb 3, 2025
…te contracts (#7414)

This PR changes the behavior of `instantiate` when the resulting
contract address already exists (because the caller tried to instantiate
the same contract with the same salt multiple times): Instead of
trapping the caller, return an error code.

Solidity allows `catch`ing this, which doesn't work if we are trapping
the caller. For example, the change makes the following snippet work:

```Solidity
try new Foo{salt: hex"00"}() returns (Foo) {
    // Instantiation was successful (contract address was free and constructor did not revert)
} catch {
    // This branch is expected to be taken if the instantiation failed because of a duplicate salt
}
```

`revive` PR: paritytech/revive#188

---------

Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
xermicus and others added 2 commits February 3, 2025 17:53
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com>
@xermicus xermicus force-pushed the cl/duplicate-address branch from 05a55f5 to 9f4cd37 Compare February 3, 2025 17:16
@xermicus xermicus force-pushed the cl/duplicate-address branch from 562260a to de65b28 Compare February 4, 2025 11:12
@xermicus xermicus merged commit de3e7bf into main Feb 4, 2025
6 checks passed
@xermicus xermicus deleted the cl/duplicate-address branch February 4, 2025 13:04
Ank4n pushed a commit to paritytech/polkadot-sdk that referenced this pull request Feb 6, 2025
…te contracts (#7414)

This PR changes the behavior of `instantiate` when the resulting
contract address already exists (because the caller tried to instantiate
the same contract with the same salt multiple times): Instead of
trapping the caller, return an error code.

Solidity allows `catch`ing this, which doesn't work if we are trapping
the caller. For example, the change makes the following snippet work:

```Solidity
try new Foo{salt: hex"00"}() returns (Foo) {
    // Instantiation was successful (contract address was free and constructor did not revert)
} catch {
    // This branch is expected to be taken if the instantiation failed because of a duplicate salt
}
```

`revive` PR: paritytech/revive#188

---------

Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.

1 participant