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

docs(weaver/samples): pin solc to v0.8.8 and turn off IR for Besu asset exchange #2430

Merged
merged 1 commit into from
May 30, 2023

Conversation

petermetz
Copy link
Contributor

@petermetz petermetz commented May 22, 2023

  1. Without having it pinned to v0.8.8, some breaking changes that solc
    has snuck in [1] [2] around v0.8.15 (for IR) are breaking the contract
    deployment in a way that opcodes end up in the migration contract's
    constructor that Besu does not recognize ("opcode INVALID" in the besu
    logs if you set the log level to "ALL") in the Besu logs and then sends
    back an "internal error" message via the JSON-RPC response, which is a
    bug IMO it should state that the user input was invalid (user input
    being the contract)
  2. Disabled IR in the truffle (solc) config which is a step backwards
    because it's a new feature of the solidity compiler that has certain
    benefits to it compared to the legacy compilation mode, but enabling it
    breaks the build so it just had to be done. In the future if someone
    has time to do a deep dive on why exactly it's failing, then it should
    be re-enabled because having the legacy compilation mode being our default
    is technical debt that should be paid off rather sooner than later because
    we never know how it will come back to cause different issues later on.

When IR is enabled, the following error occurs (even on the pinned v0.8.8 solc):

Compiling ./contracts/transferInterface.sol
YulException: Variable var_amount_3290 is 9 slot(s) too deep inside the stack.

[1] https://docs.soliditylang.org/en/v0.8.15/ir-breaking-changes.html#semantic-only-changes
[2] ethereum/solidity#13311 (comment)

Fixes #2423

Signed-off-by: Peter Somogyvari peter.somogyvari@accenture.com

@petermetz petermetz changed the title Petermetz/issue2423 docs(weaver/samples): pin solc to v0.8.8 and turn off IR for Besu asset exchange May 22, 2023
Copy link
Contributor

@izuru0 izuru0 left a comment

Choose a reason for hiding this comment

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

LGTM

…et exchange

1. Without having it pinned to v0.8.8, some breaking changes that solc
has snuck in [1][2] around v0.8.15 (for IR) are breaking the contract
deployment in a way that opcodes end up in the migration contract's
constructor that Besu does not recognize ("opcode INVALID" in the besu
logs if you set the log level to "ALL") in the Besu logs and then sends
back an "internal error" message via the JSON-RPC response, which is a
bug IMO it should state that the user input was invalid (user input
being the contract)
2. Disabled IR in the truffle (solc) config which is a step backwards
because it's a new feature of the solidity compiler that has certain
benefits to it compared to the legacy compilation mode, but enabling it
breaks the build so it just had to be done. In the future if someone
has time to do a deep dive on why exactly it's failing, then it should
be re-enabled because having the legacy compilation mode being our default
is technical debt that should be paid off rather sooner than later because
we never know how it will come back to cause different issues later on.

When IR is enabled, the following error occurs (even on the pinned v0.8.8 solc):
> Compiling ./contracts/transferInterface.sol
> YulException: Variable var_amount_3290 is 9 slot(s) too deep inside the stack.

[1]: https://docs.soliditylang.org/en/v0.8.15/ir-breaking-changes.html#semantic-only-changes
[2]: ethereum/solidity#13311 (comment)

Fixes hyperledger-cacti#2423

Signed-off-by: Peter Somogyvari <peter.somogyvari@accenture.com>
@sandeepnRES sandeepnRES enabled auto-merge (rebase) May 30, 2023 05:44
@sandeepnRES sandeepnRES merged commit 0943531 into hyperledger-cacti:main May 30, 2023
@petermetz petermetz deleted the petermetz/issue2423 branch August 12, 2023 01:15
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.

fix(ci): Asset Exchange Besu workflow failing after PR #2420
5 participants