Skip to content

Commit

Permalink
Merge pull request #216 from defi-wonderland/fix/merge-conflict-lockb…
Browse files Browse the repository at this point in the history
…ox-8

fix: sync develop
  • Loading branch information
agusduha authored Jan 23, 2025
2 parents c856c30 + 1c3d1f1 commit 1d08b45
Show file tree
Hide file tree
Showing 416 changed files with 7,673 additions and 8,455 deletions.
72 changes: 56 additions & 16 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ version: 2.1
parameters:
ci_builder_image:
type: string
default: us-docker.pkg.dev/oplabs-tools-artifacts/images/ci-builder:v0.55.0
default: us-docker.pkg.dev/oplabs-tools-artifacts/images/ci-builder:v0.56.0
ci_builder_rust_image:
type: string
default: us-docker.pkg.dev/oplabs-tools-artifacts/images/ci-builder-rust:latest
Expand Down Expand Up @@ -698,7 +698,6 @@ jobs:
- "/root/.cache/go-build"
- notify-failures-on-develop


contracts-bedrock-tests-upgrade:
machine: true
resource_class: ethereum-optimism/latitude-1
Expand Down Expand Up @@ -966,30 +965,43 @@ jobs:
command: make -f cannon/Makefile sanitize-program GUEST_PROGRAM=op-program/bin/op-program-client.elf
- run:
name: generate cannon prestate
command: make cannon-prestate
command: make cannon-prestates
- save_cache:
key: cannon-prestate-{{ checksum "./cannon/bin/cannon" }}-{{ checksum "op-program/bin/op-program-client.elf" }}
name: Save Cannon prestate to cache
paths:
- "op-program/bin/prestate.bin.gz"
- "op-program/bin/meta.json"
- "op-program/bin/prestate-proof.json"
- run:
name: generate cannon-mt prestate
command: make cannon-prestate-mt
- save_cache:
key: cannon-prestate-mt-{{ checksum "./cannon/bin/cannon" }}-{{ checksum "op-program/bin/op-program-client.elf" }}
name: Save MT-Cannon prestate to cache
paths:
- "op-program/bin/prestate-mt.json"
- "op-program/bin/meta-mt.json"
- "op-program/bin/prestate-proof-mt.json"
- "op-program/bin/prestate*.bin.gz"
- "op-program/bin/meta*.json"
- "op-program/bin/prestate-proof*.json"
- persist_to_workspace:
root: .
paths:
- "op-program/bin"
- "cannon/bin"

publish-cannon-prestates:
docker:
- image: <<pipeline.parameters.ci_builder_image>>
steps:
- checkout
- attach_workspace:
at: "."
- gcp-cli/install
- gcp-oidc-authenticate:
gcp_cred_config_file_path: /root/gcp_cred_config.json
oidc_token_file_path: /root/oidc_token.json
- run:
name: Upload cannon prestates
command: |
gsutil cp ./op-program/bin/prestate.bin.gz \
gs://oplabs-network-data/proofs/op-program/cannon/${CIRCLE_BRANCH}.bin.gz
gsutil cp ./op-program/bin/prestate-mt.bin.gz \
gs://oplabs-network-data/proofs/op-program/cannon/${CIRCLE_BRANCH}-mt.bin.gz
gsutil cp ./op-program/bin/prestate-interop.bin.gz \
gs://oplabs-network-data/proofs/op-program/cannon/${CIRCLE_BRANCH}-interop.bin.gz
- notify-failures-on-develop:
mentions: "@proofs-team"

preimage-reproducibility:
docker:
- image: <<pipeline.parameters.ci_builder_image>>
Expand Down Expand Up @@ -1495,6 +1507,23 @@ workflows:
- oplabs-gcr-release
requires:
- hold
- cannon-prestate:
filters:
tags:
only: /^op-program\/v.*/
branches:
ignore: /.*/
- publish-cannon-prestates:
context:
- slack
- oplabs-network-optimism-io-bucket
requires:
- cannon-prestate
filters:
tags:
only: /^op-program\/v.*/
branches:
ignore: /.*/

scheduled-todo-issues:
when:
Expand Down Expand Up @@ -1556,6 +1585,17 @@ workflows:
requires:
- contracts-bedrock-build
- cannon-prestate
- publish-cannon-prestates:
context:
- slack
- oplabs-network-optimism-io-bucket
requires:
- cannon-prestate
- op-e2e-cannon-tests
filters:
branches:
only:
- develop

develop-kontrol-tests:
when:
Expand Down
16 changes: 13 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -135,25 +135,35 @@ reproducible-prestate: ## Builds reproducible-prestate binary
.PHONY: reproducible-prestate

# Include any files required for the devnet to build and run.
DEVNET_CANNON_PRESTATE_FILES := op-program/bin/prestate-proof.json op-program/bin/prestate.bin.gz op-program/bin/prestate-proof-mt.json op-program/bin/prestate-mt.bin.gz
DEVNET_CANNON_PRESTATE_FILES := op-program/bin/prestate-proof.json op-program/bin/prestate.bin.gz op-program/bin/prestate-proof-mt.json op-program/bin/prestate-mt.bin.gz op-program/bin/prestate-interop.bin.gz


$(DEVNET_CANNON_PRESTATE_FILES):
make cannon-prestate
make cannon-prestate-mt
make cannon-prestate-interop

cannon-prestates: cannon-prestate cannon-prestate-mt cannon-prestate-interop
.PHONY: cannon-prestates

cannon-prestate: op-program cannon ## Generates prestate using cannon and op-program
./cannon/bin/cannon load-elf --type singlethreaded-2 --path op-program/bin/op-program-client.elf --out op-program/bin/prestate.bin.gz --meta op-program/bin/meta.json
./cannon/bin/cannon run --proof-at '=0' --stop-at '=1' --input op-program/bin/prestate.bin.gz --meta op-program/bin/meta.json --proof-fmt 'op-program/bin/%d.json' --output ""
mv op-program/bin/0.json op-program/bin/prestate-proof.json
.PHONY: cannon-prestate

cannon-prestate-mt: op-program cannon ## Generates prestate using cannon and op-program in the multithreaded64-2 cannon format
./cannon/bin/cannon load-elf --type multithreaded64-2 --path op-program/bin/op-program-client64.elf --out op-program/bin/prestate-mt.bin.gz --meta op-program/bin/meta-mt.json
cannon-prestate-mt: op-program cannon ## Generates prestate using cannon and op-program in the latest 64-bit multithreaded cannon format
./cannon/bin/cannon load-elf --type multithreaded64-3 --path op-program/bin/op-program-client64.elf --out op-program/bin/prestate-mt.bin.gz --meta op-program/bin/meta-mt.json
./cannon/bin/cannon run --proof-at '=0' --stop-at '=1' --input op-program/bin/prestate-mt.bin.gz --meta op-program/bin/meta-mt.json --proof-fmt 'op-program/bin/%d-mt.json' --output ""
mv op-program/bin/0-mt.json op-program/bin/prestate-proof-mt.json
.PHONY: cannon-prestate-mt

cannon-prestate-interop: op-program cannon ## Generates interop prestate using cannon and op-program in the latest 64-bit multithreaded cannon format
./cannon/bin/cannon load-elf --type multithreaded64-3 --path op-program/bin/op-program-client-interop.elf --out op-program/bin/prestate-interop.bin.gz --meta op-program/bin/meta-interop.json
./cannon/bin/cannon run --proof-at '=0' --stop-at '=1' --input op-program/bin/prestate-interop.bin.gz --meta op-program/bin/meta-interop.json --proof-fmt 'op-program/bin/%d-interop.json' --output ""
mv op-program/bin/0-interop.json op-program/bin/prestate-proof-interop.json
.PHONY: cannon-prestate-interop

mod-tidy: ## Cleans up unused dependencies in Go modules
# Below GOPRIVATE line allows mod-tidy to be run immediately after
# releasing new versions. This bypasses the Go modules proxy, which
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ The Optimism Immunefi program offers up to $2,000,042 for in-scope critical vuln

<pre>
├── <a href="./docs">docs</a>: A collection of documents including audits and post-mortems
├── <a href="./kurtosis-devnet">kurtosis-devnet</a>: OP-Stack Kurtosis devnet
├── <a href="./op-batcher">op-batcher</a>: L2-Batch Submitter, submits bundles of batches to L1
├── <a href="./op-chain-ops">op-chain-ops</a>: State surgery utilities
├── <a href="./op-challenger">op-challenger</a>: Dispute game challenge agent
Expand All @@ -76,7 +77,6 @@ The Optimism Immunefi program offers up to $2,000,042 for in-scope critical vuln
├── <a href="./op-ufm">op-ufm</a>: Simulations for monitoring end-to-end transaction latency
├── <a href="./op-wheel">op-wheel</a>: Database utilities
├── <a href="./ops">ops</a>: Various operational packages
├── <a href="./ops-bedrock">ops-bedrock</a>: Bedrock devnet work
├── <a href="./packages">packages</a>
│ ├── <a href="./packages/contracts-bedrock">contracts-bedrock</a>: OP Stack smart contracts
├── <a href="./semgrep">semgrep</a>: Semgrep rules and tests
Expand Down
11 changes: 6 additions & 5 deletions cannon/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@ cannon64-impl:
# It should build the individual versions of cannons and copy them into place in hte multicannon/embeds directory
# Ideally, preserve backwards compatibility with this behaviour but if it needs to change, build-legacy-cannons.sh will
# need to be updated to account for different behaviours in different versions.
# Each embed is suffixed with the latest `StateVersion` number corresponding to the target VM and architecture.
cannon-embeds: cannon32-impl cannon64-impl
# singlethreaded-v2
# 32-bit singlethreaded vm
@cp bin/cannon32-impl ./multicannon/embeds/cannon-2
# multithreaded
@cp bin/cannon32-impl ./multicannon/embeds/cannon-1
# 64-bit multithreaded v2
@cp bin/cannon64-impl ./multicannon/embeds/cannon-4
# 32-bit multithreaded vm
@cp bin/cannon32-impl ./multicannon/embeds/cannon-5
# 64-bit multithreaded vm
@cp bin/cannon64-impl ./multicannon/embeds/cannon-6

cannon: cannon-embeds
env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v $(LDFLAGS) -o ./bin/cannon ./multicannon/
Expand Down
2 changes: 1 addition & 1 deletion cannon/cmd/load_elf.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ func LoadELF(ctx *cli.Context) error {
}
return program.PatchStack(state)
}
case versions.VersionMultiThreaded, versions.VersionMultiThreaded64_v2:
case versions.VersionMultiThreaded_v2, versions.VersionMultiThreaded64_v3:
createInitialState = func(f *elf.File) (mipsevm.FPVMState, error) {
return program.LoadELF(f, multithreaded.CreateInitialState)
}
Expand Down
1 change: 0 additions & 1 deletion cannon/mipsevm/debug.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,5 @@ type DebugInfo struct {
MaxStepsBetweenLLAndSC uint64 `json:"max_steps_between_ll_and_sc"`
ReservationInvalidationCount uint64 `json:"reservation_invalidation_count"`
ForcedPreemptionCount uint64 `json:"forced_preemption_count"`
FailedWakeupCount uint64 `json:"failed_wakeup_count"`
IdleStepCountThread0 uint64 `json:"idle_step_count_thread_0"`
}
1 change: 0 additions & 1 deletion cannon/mipsevm/debug_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ func TestDebugInfo_Serialization(t *testing.T) {
MaxStepsBetweenLLAndSC: 7,
ReservationInvalidationCount: 8,
ForcedPreemptionCount: 9,
FailedWakeupCount: 10,
IdleStepCountThread0: math.MaxUint64,
}

Expand Down
12 changes: 4 additions & 8 deletions cannon/mipsevm/exec/mips_syscalls.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,8 @@ const (

// SysFutex-related constants
const (
FutexWaitPrivate = 128
FutexWakePrivate = 129
FutexTimeoutSteps = 10_000
FutexNoTimeout = ^uint64(0)
FutexEmptyAddr = ^Word(0)
FutexWaitPrivate = 128
FutexWakePrivate = 129
)

// SysClone flags
Expand Down Expand Up @@ -99,15 +96,14 @@ const (
ClockGettimeMonotonicFlag = 1
)

func GetSyscallArgs(registers *[32]Word) (syscallNum, a0, a1, a2, a3 Word) {
func GetSyscallArgs(registers *[32]Word) (syscallNum, a0, a1, a2 Word) {
syscallNum = registers[register.RegSyscallNum] // v0

a0 = registers[register.RegSyscallParam1]
a1 = registers[register.RegSyscallParam2]
a2 = registers[register.RegSyscallParam3]
a3 = registers[register.RegSyscallParam4]

return syscallNum, a0, a1, a2, a3
return syscallNum, a0, a1, a2
}

func HandleSysMmap(a0, a1, heap Word) (v0, v1, newHeap Word) {
Expand Down
Loading

0 comments on commit 1d08b45

Please sign in to comment.