From 7e38c46bad599451dd52256dedc1e7cf8d782da6 Mon Sep 17 00:00:00 2001 From: Minhyuk Kim Date: Thu, 3 Oct 2024 17:22:05 -0600 Subject: [PATCH] Fix build error --- .circleci/config.yml | 30 +++++++++++++++++++++++------- Dockerfile.release | 4 ++-- Dockerfile.repro | 2 +- Makefile | 6 ++++++ go.mod | 7 +++---- go.sum | 8 ++++---- prestates.json | 3 ++- rvgo/cmd/witness.go | 4 ++-- rvgo/test/evm_test.go | 8 ++++---- rvsol/lib/optimism | 2 +- rvsol/scripts/Deploy_Stage_1_4.sol | 2 +- rvsol/test/RISCV.t.sol | 3 ++- 12 files changed, 51 insertions(+), 28 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7a6a12bf..05dfb4fe 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,7 +4,7 @@ parameters: ci_builder_image: type: string # depends with rvsol/lib/optimism submodule version - default: us-docker.pkg.dev/oplabs-tools-artifacts/images/ci-builder:v0.51.0 + default: us-docker.pkg.dev/oplabs-tools-artifacts/images/ci-builder:v0.53.0 workflows: main: @@ -27,9 +27,17 @@ workflows: requires: - devnet-allocs-including-asterisc - prestate-reproducibility: - matrix: - parameters: - version: ["1.0.0", "1.1.0", "1.2.0"] + version: "1.0.0" + asterisc-commit: "25feabf" + - prestate-reproducibility: + version: "1.1.0" + asterisc-commit: "25feabf" + - prestate-reproducibility: + version: "1.2.0" + asterisc-commit: "25feabf" + - prestate-reproducibility: + version: "1.3.1" + asterisc-commit: "25feabf" commands: checkout-with-monorepo: @@ -84,7 +92,7 @@ jobs: working_directory: rvsol/lib/optimism/packages/contracts-bedrock - run: name: Generate default allocs - command: make devnet-allocs + command: make devnet-allocs-tests working_directory: rvsol/lib/optimism - save_cache: name: Save Go modules cache @@ -130,7 +138,7 @@ jobs: name: run Go linter command: | # Identify how many cores it defaults to - golangci-lint --help | grep concurrency + golangci-lint run --help | grep concurrency make lint-go working_directory: rvsol/lib/optimism - save_cache: @@ -330,7 +338,7 @@ jobs: - run: name: Load devnet-allocs command: | - mkdir -p .devnet + mkdir -p .devnet-standard cp /tmp/workspace/.devnet-asterisc/allocs-l1.json .devnet-standard/allocs-l1.json cp /tmp/workspace/.devnet-asterisc/allocs-l2-delta.json .devnet-standard/allocs-l2-delta.json cp /tmp/workspace/.devnet-asterisc/allocs-l2-ecotone.json .devnet-standard/allocs-l2-ecotone.json @@ -369,8 +377,16 @@ jobs: parameters: version: type: string + asterisc-commit: + type: string steps: - checkout + - run: + name: Checkout asterisc to correct commit + command: | + cp prestates.json temp.json + git checkout "<>" + cp -f temp.json prestates.json - setup_remote_docker - run: name: Fetch submodules for asterisc diff --git a/Dockerfile.release b/Dockerfile.release index aaf78177..fe718fcd 100644 --- a/Dockerfile.release +++ b/Dockerfile.release @@ -1,4 +1,4 @@ -FROM golang:1.21.1-alpine3.18 AS builder +FROM golang:1.22.7-alpine3.20 AS builder WORKDIR /build # Copy the context into the container @@ -9,7 +9,7 @@ RUN apk add --no-cache git make bash RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build make -FROM alpine:3.18 AS export +FROM alpine:3.20 AS export RUN apk add --no-cache bash COPY --from=builder /build/rvgo/bin/asterisc /usr/local/bin/asterisc diff --git a/Dockerfile.repro b/Dockerfile.repro index 153a014f..3e3b0775 100644 --- a/Dockerfile.repro +++ b/Dockerfile.repro @@ -1,4 +1,4 @@ -FROM golang:1.21.3-alpine3.18 as builder +FROM golang:1.22.7-alpine3.20 as builder RUN apk add --no-cache make gcc musl-dev linux-headers git jq bash diff --git a/Makefile b/Makefile index 2b23f722..54fa2e62 100644 --- a/Makefile +++ b/Makefile @@ -108,6 +108,12 @@ devnet-clean: devnet-clean-monorepo .PHONY: devnet-clean reproducible-prestate: + @head -n 1 rvsol/lib/optimism/op-program/Dockerfile.repro > temp.repro && \ + tail -n +2 Dockerfile.repro >> temp.repro && \ + mv temp.repro Dockerfile.repro + @GO_VERSION=$$(go mod edit -json rvsol/lib/optimism/go.mod | jq -r '.Go'); \ + echo "Updating Go version to $$GO_VERSION"; \ + go mod edit -go=$$GO_VERSION; @docker build --output ./bin/ --progress plain -f Dockerfile.repro . @echo "Absolute prestate hash:" @cat ./bin/prestate.json | jq -r .stateHash diff --git a/go.mod b/go.mod index a6948f2b..fa8d0287 100644 --- a/go.mod +++ b/go.mod @@ -2,11 +2,10 @@ module github.com/ethereum-optimism/asterisc go 1.22 -toolchain go1.22.1 +toolchain go1.22.7 -replace github.com/ethereum/go-ethereum v1.14.8 => github.com/ethereum-optimism/op-geth v1.101408.0-rc.4.0.20240827042333-110c433a2469 - -replace github.com/ethereum-optimism/optimism v1.9.2 => github.com/testinprod-io/optimism v0.0.0-20241003225321-55d7533108f9 +replace github.com/ethereum/go-ethereum v1.14.11 => github.com/ethereum-optimism/op-geth v1.101408.1-0.20241002211323-d5a96613c22b +replace github.com/ethereum-optimism/optimism v1.9.2 => github.com/testinprod-io/optimism v0.0.0-20241003231047-9d908ccbe262 require ( github.com/ethereum-optimism/optimism v1.9.2 diff --git a/go.sum b/go.sum index 8ef3eee2..f80887ba 100644 --- a/go.sum +++ b/go.sum @@ -169,12 +169,12 @@ github.com/elastic/gosigar v0.14.3 h1:xwkKwPia+hSfg9GqrCUKYdId102m9qTJIIr7egmK/u github.com/elastic/gosigar v0.14.3/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 h1:RWHKLhCrQThMfch+QJ1Z8veEq5ZO3DfIhZ7xgRP9WTc= github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3/go.mod h1:QziizLAiF0KqyLdNJYD7O5cpDlaFMNZzlxYNcWsJUxs= +github.com/ethereum-optimism/op-geth v1.101408.1-0.20241002211323-d5a96613c22b h1:9C6WytqAcqWKXQTMw2Da/S/aIJJmMvT+2MUpFnMdGrg= +github.com/ethereum-optimism/op-geth v1.101408.1-0.20241002211323-d5a96613c22b/go.mod h1:7S4pp8KHBmEmKkRjL1BPOc6jY9hW+64YeMUjR3RVLw4= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240910145426-b3905c89e8ac h1:hCIrLuOPV3FJfMDvXeOhCC3uQNvFoMIIlkT2mN2cfeg= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240910145426-b3905c89e8ac/go.mod h1:XaVXL9jg8BcyOeugECgIUGa9Y3DjYJj71RHmb5qon6M= github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-ethereum v1.14.11 h1:8nFDCUUE67rPc6AKxFj7JKaOa2W/W1Rse3oS6LvvxEY= -github.com/ethereum/go-ethereum v1.14.11/go.mod h1:+l/fr42Mma+xBnhefL/+z11/hcmJ2egl+ScIVPjhc7E= github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ60YRB8ChToFTUzl8awsc3cJ8CbLjGIl/A= github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= @@ -711,8 +711,8 @@ github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45 github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a h1:1ur3QoCqvE5fl+nylMaIr9PVV1w343YRDtsy+Rwu7XI= github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -github.com/testinprod-io/optimism v0.0.0-20241003225321-55d7533108f9 h1:M9Wm97GqM/5QzKR2Kk3lUdjGk8jscx6Cu3rZJ5+UulU= -github.com/testinprod-io/optimism v0.0.0-20241003225321-55d7533108f9/go.mod h1:eeUe73d7TOnas4o97ULLR8K0xP6zfdOx6HPilL7v3No= +github.com/testinprod-io/optimism v0.0.0-20241003231047-9d908ccbe262 h1:dhPqoJchsMwwHenZ9hSuN4gjNsdVuWKpMlXx6eosd+E= +github.com/testinprod-io/optimism v0.0.0-20241003231047-9d908ccbe262/go.mod h1:eeUe73d7TOnas4o97ULLR8K0xP6zfdOx6HPilL7v3No= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= diff --git a/prestates.json b/prestates.json index 544ebe9e..c7aba328 100644 --- a/prestates.json +++ b/prestates.json @@ -2,6 +2,7 @@ "op-program": { "1.0.0": "0x030cd49ed1c865166b54e0f9f1b37b38a11a3659233fd4ffc69e6fd792da55b7", "1.1.0": "0x0338dc64405def7e3b9ce8f5076b422a846d831832617d227f13baf219cb5406", - "1.2.0": "0x0399525587d7ffb173aaa43f35e21b78f807a0bd3dc80ea6527f407732726351" + "1.2.0": "0x0399525587d7ffb173aaa43f35e21b78f807a0bd3dc80ea6527f407732726351", + "1.3.1": "0x03783cf16e3a9ae339e8a9168281fedc114a5493d1a90b2e5e97026cfcc479df" } } diff --git a/rvgo/cmd/witness.go b/rvgo/cmd/witness.go index 71ef91a1..be5ae025 100644 --- a/rvgo/cmd/witness.go +++ b/rvgo/cmd/witness.go @@ -2,8 +2,6 @@ package cmd import ( "fmt" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" "os" "github.com/urfave/cli/v2" @@ -12,6 +10,8 @@ import ( cannon "github.com/ethereum-optimism/optimism/cannon/cmd" "github.com/ethereum-optimism/optimism/op-service/ioutil" "github.com/ethereum-optimism/optimism/op-service/jsonutil" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" ) type WitnessOutput struct { diff --git a/rvgo/test/evm_test.go b/rvgo/test/evm_test.go index 633be1d6..c76ae8b1 100644 --- a/rvgo/test/evm_test.go +++ b/rvgo/test/evm_test.go @@ -20,6 +20,7 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/triedb" "github.com/ethereum-optimism/asterisc/rvgo/fast" ) @@ -102,13 +103,12 @@ func newEVMEnv(t *testing.T, contracts *Contracts, addrs *Addresses) *vm.EVM { bc := &dummyChain{startTime: *chainCfg.CancunTime + offsetBlocks*12} header := bc.GetHeader(common.Hash{}, 17034870+offsetBlocks) db := rawdb.NewMemoryDatabase() - statedb := state.NewDatabase(db) - state, err := state.New(types.EmptyRootHash, statedb, nil) + statedb, err := state.New(types.EmptyRootHash, state.NewDatabase(triedb.NewDatabase(db, nil), nil)) require.NoError(t, err) - blockContext := core.NewEVMBlockContext(header, bc, nil, chainCfg, state) + blockContext := core.NewEVMBlockContext(header, bc, nil, chainCfg, statedb) vmCfg := vm.Config{} - env := vm.NewEVM(blockContext, vm.TxContext{}, state, chainCfg, vmCfg) + env := vm.NewEVM(blockContext, vm.TxContext{}, statedb, chainCfg, vmCfg) env.StateDB.SetCode(addrs.RISCV, contracts.RISCV.DeployedBytecode.Object) env.StateDB.SetCode(addrs.Oracle, contracts.Oracle.DeployedBytecode.Object) env.StateDB.SetState(addrs.RISCV, common.Hash{}, common.BytesToHash(addrs.Oracle.Bytes())) // set storage slot pointing to preimage oracle diff --git a/rvsol/lib/optimism b/rvsol/lib/optimism index 874c0e98..9d908ccb 160000 --- a/rvsol/lib/optimism +++ b/rvsol/lib/optimism @@ -1 +1 @@ -Subproject commit 874c0e9878da51405b6939d927edb40586ad8c5d +Subproject commit 9d908ccbe26203bcf3e938e8457b80b9d487002e diff --git a/rvsol/scripts/Deploy_Stage_1_4.sol b/rvsol/scripts/Deploy_Stage_1_4.sol index 55c97083..4caac86c 100644 --- a/rvsol/scripts/Deploy_Stage_1_4.sol +++ b/rvsol/scripts/Deploy_Stage_1_4.sol @@ -142,7 +142,7 @@ contract Deploy is Deployer, StdAssertions { // `DisputeGameFactory` implementation alongside dependent contracts, which are always proxies. Types.ContractSet memory contracts = _proxiesUnstrict(); contracts.DisputeGameFactory = address(factory); - ChainAssertions.checkDisputeGameFactory({ _contracts: contracts, _expectedOwner: address(0) }); + ChainAssertions.checkDisputeGameFactory({ _contracts: contracts, _expectedOwner: address(0), _isProxy: true }); addr_ = address(factory); } diff --git a/rvsol/test/RISCV.t.sol b/rvsol/test/RISCV.t.sol index 27a75662..7f1cb3f2 100644 --- a/rvsol/test/RISCV.t.sol +++ b/rvsol/test/RISCV.t.sol @@ -3,6 +3,7 @@ pragma solidity 0.8.15; import { Test } from "@forge-std/Test.sol"; import { RISCV } from "src/RISCV.sol"; +import { IPreimageOracle } from "@optimism/src/cannon/interfaces/IPreimageOracle.sol"; import { PreimageOracle } from "@optimism/src/cannon/PreimageOracle.sol"; import { CommonTest } from "./CommonTest.sol"; import "@optimism/src/dispute/lib/Types.sol"; @@ -31,7 +32,7 @@ contract RISCV_Test is CommonTest { function setUp() public virtual override { super.setUp(); oracle = new PreimageOracle(0, 0); - riscv = new RISCV(oracle); + riscv = new RISCV(IPreimageOracle(address(oracle))); vm.store(address(riscv), 0x0, bytes32(abi.encode(address(oracle)))); vm.label(address(oracle), "PreimageOracle"); vm.label(address(riscv), "RISCV");