Skip to content

sol: strip CBOR metadata from mock bytecode#676

Merged
parkan merged 1 commit intomainfrom
fix/deterministic-bytecode
Apr 23, 2026
Merged

sol: strip CBOR metadata from mock bytecode#676
parkan merged 1 commit intomainfrom
fix/deterministic-bytecode

Conversation

@parkan
Copy link
Copy Markdown
Collaborator

@parkan parkan commented Apr 23, 2026

Summary

`forge inspect` appends a CBOR metadata section to the deployedBytecode: an IPFS hash of the compiler metadata JSON plus the solc version tag. That IPFS hash drifts between forge versions even with `solc` pinned in `foundry.toml`. Locally (forge 1.5.1) it matches what was committed in #669; in CI (`foundry:latest`, newer) `go generate ./...` produces different trailing bytes and `git diff --exit-code` fails.

Fix: `bytecode_hash = "none"` + `cbor_metadata = false` -- solc omits the metadata section entirely. Output is deterministic across forge versions and solc patches. Regenerated the three .txt files against the new config; runtime bytecode is unchanged (FVM precompile mocks don't consult the metadata).

Currently blocks #670, #673, #674 after #675 unblocked the missing-`forge` issue.

Test plan

  • `make -C util/testutil/sol clean bytecode` produces the committed output under forge 1.5.1
  • `go test ./util/testutil/...` pass
  • `go test ./service/dealpusher/...` pass (DDO / PDP mocks exercise the stripped bytecode)
  • CI

forge inspect emits the solc CBOR metadata section (ipfs hash of compiler
metadata + solc version) appended to the bytecode. That metadata hash
varies between forge versions even when solc itself is pinned, so
'go generate ./...' in CI produced .txt files that differ from whatever
was committed locally.

bytecode_hash = none + cbor_metadata = false tells solc to omit the
metadata section entirely. The runtime bytecode is unchanged and the
tests are unaffected (FVM precompile mocks don't depend on the metadata).

Regenerated the three .txt files against the new config.
@parkan parkan merged commit 002b032 into main Apr 23, 2026
1 check passed
@parkan parkan deleted the fix/deterministic-bytecode branch April 23, 2026 16:59
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