Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
41ff0d8
Add seed & runs to CI (#14017)
JosepBove Jan 28, 2025
d83cefb
op-supervisor: Add cross-safe L1 block to SuperRootResponse (#13951)
Inphi Jan 28, 2025
c023165
add Kailua dispute game type (#13986)
hashcashier Jan 29, 2025
d39eb24
op-program: Fix missing block re-exec preimages in host (#14027)
Inphi Jan 29, 2025
9ded4bc
fix ForkLive: cannot upgrade and use ops repo revert when useOpsRepo …
prateek105 Jan 29, 2025
b5d2544
Add code freeze ci (#14024)
AmadiMichael Jan 29, 2025
eedd862
docs: Add frozen code checks docs to readme. (#14057)
maurelian Jan 29, 2025
d32dc32
kt-devnet: removes mini-devnet (#14047)
zhwrd Jan 29, 2025
500d1fe
op-node: update interop optimistic block system deposit tx sender add…
protolambda Jan 29, 2025
f4506a8
Fix Step Scheduling Delay (#14052)
axelKingsley Jan 29, 2025
c5653d0
Do not filter on ChainID when triggering Chain Processors (#14042)
axelKingsley Jan 29, 2025
4cf140d
fix: damgr_test.go (#14050)
vdrg Jan 30, 2025
491b2a5
kurtosis-devnet: Add link to kurtosis binaries (#14036)
piersy Jan 30, 2025
65c6ab1
dependabot(gomod): bump github.com/minio/minio-go/v7 (#13861)
dependabot[bot] Jan 30, 2025
7b53454
Fix cannon e2e tests (#14060)
ajsutton Jan 30, 2025
e08bd0f
vm-runner: Add extra logging when selecting L1 head (#14061)
ajsutton Jan 30, 2025
cf7a37b
proofs: Add action test for unhappy consolidation (#14019)
Inphi Jan 30, 2025
be2033f
Initialize vm runner counter metrics to 0 (#13523)
pauldowman Jan 30, 2025
f5c9874
dependabot(gomod): bump github.com/consensys/gnark-crypto (#13872)
dependabot[bot] Jan 30, 2025
acf7d69
feat: Add PermissionedDisputeGame to frozen code (#14070)
maurelian Jan 30, 2025
90ac036
op-node: change default L1 cache size to 900 (#14045)
sebastianst Jan 30, 2025
ee5f34a
op-deployer: Support upgrades (#14028)
mslipper Jan 30, 2025
2d48217
feat: prevent deployments of mips32 on opcm upgrade 13 (#14025)
maurelian Jan 30, 2025
1eb6d93
skip tests for superchain ops (#14069)
prateek105 Jan 30, 2025
15ca917
dependabot(gomod): bump github.com/lmittmann/w3 from 0.17.4 to 0.17.5…
dependabot[bot] Jan 31, 2025
1170ab0
op-challenger: Support downloading prestates with a specific filename…
ajsutton Jan 31, 2025
6430775
feat: Descope liquidity migration interop (#13978)
gotzenx Jan 31, 2025
203bc78
devnet testing sdk prototype (#14026)
sigma Jan 31, 2025
cddad87
ci: Run mips-linux-gnu-objdump outside of the shell pipeline (#14078)
ajsutton Jan 31, 2025
bd418e6
op-program: Write tx/receipts trie nodes to kv (#14051)
Inphi Jan 31, 2025
68cc927
challenger: Transition to invalid hash at superroot boundaries (#14034)
ajsutton Jan 31, 2025
e8e0af6
op-program: Fix config validation for interop (#14079)
ajsutton Jan 31, 2025
c38ebfc
op-deployer: Cache downloaded artifacts (#14076)
mslipper Jan 31, 2025
6819d8a
Update op-geth dependency to upstream pre-v1.15.0 master merge & igno…
sebastianst Jan 31, 2025
070375d
ci: Remove CI builder (#13965)
mslipper Jan 31, 2025
2441901
Fix LastCommonL1 Function ; Add Tests (#14086)
axelKingsley Jan 31, 2025
1d36fd4
op-deployer: Use deterministic deployments for MIPS/DGs (#14087)
mslipper Jan 31, 2025
d06c7c6
ci: Fix broken proofs jobs (#14088)
mslipper Jan 31, 2025
4bb98fa
op-batcher: handle EIP-7623 in DA switching calculation (#13870)
geoknee Jan 31, 2025
d9b449d
op-program/prestates: Add 1.5.0-rc.1 release prestate hashes (#14085)
sebastianst Jan 31, 2025
d64038b
custom gas token: remove e2e test (#14094)
tynes Feb 1, 2025
bd59a53
vm-runner: Handle L1 finalized block being 0 (#14100)
ajsutton Feb 2, 2025
0b6ee92
CONTRIBUTING.md: no more typo fix noise (#14105)
protolambda Feb 3, 2025
a0a6a6d
feat: speed up snapshots (#14096)
smartcontracts Feb 3, 2025
66fea80
op-node: Use withdrawals-root for replacement block attrs (#14102)
Inphi Feb 3, 2025
ef532a4
interop: Reorg support (#13953)
tcrypt25519 Feb 3, 2025
b496924
feat: remove unused arg from OPCM upgrade tests (#14113)
maurelian Feb 3, 2025
dd1921b
feat: Remove mips64 and updates to MTCannon (#14119)
maurelian Feb 3, 2025
216b085
cannon: Update SLL(V) to mask out upper bits before sign extending (#…
mbaxter Feb 4, 2025
9a0fca8
op-challenger: Check chain-specific safe heads (#14121)
ajsutton Feb 4, 2025
de17b70
chore: Remove CI builder ops packages (#14091)
mslipper Feb 4, 2025
4ef5643
op-batcher: handle errors more gracefully on shutdown (#14111)
geoknee Feb 4, 2025
10ccc92
op-deployer: Add book (#14136)
mslipper Feb 4, 2025
3e9e692
op-node,op-service: Add Timeout Flag for L2 Engine (#13853)
pengin7384 Feb 4, 2025
bdfa83f
dependabot(gomod): bump github.com/cockroachdb/pebble (#13927)
dependabot[bot] Feb 4, 2025
10185fa
op-proposer: use atomic.Bool instead of bool+mutex (#13122)
jsvisa Feb 4, 2025
4f02af1
feat: ensure mipsVersion == 1 (#14133)
maurelian Feb 4, 2025
31da5ed
Merge branch 'develop' into fix/merge-conflict-lockbox-10
agusduha Feb 4, 2025
92576f1
fix: pre pr
agusduha Feb 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
269 changes: 167 additions & 102 deletions .circleci/config.yml

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ cache
!op-chain-ops/foundry/testdata/srcmaps/cache
!op-chain-ops/foundry/testdata/srcmaps/artifacts

!op-deployer/pkg/deployer/artifacts

packages/contracts-bedrock/deployments/devnetL1
packages/contracts-bedrock/deployments/anvil

Expand Down
12 changes: 11 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,19 @@ You can:
- **IMPORTANT**: If you believe your report impacts the security of this repository, refer to the canonical [Security Policy](https://github.com/ethereum-optimism/.github/blob/master/SECURITY.md) document.
- Fix issues that are tagged as [`D-good-first-issue`](https://github.com/ethereum-optimism/optimism/labels/D-good-first-issue) or [`S-confirmed`](https://github.com/ethereum-optimism/optimism/labels/S-confirmed).
- Larger projects are listed on [this project board](https://github.com/orgs/ethereum-optimism/projects/31/views/9). Please talk to us if you're considering working on one of these, they may not be fully specified so it will reduce risk to discuss the approach and ensure that it's still relevant.
- Help improve the [Optimism Developer Docs](https://github.com/ethereum-optimism/docs) by reporting issues, fixing typos, or adding missing sections.
- Help improve the [Optimism Docs] by reporting issues or adding missing sections.
- Get involved in the protocol design process by joining discussions within the [OP Stack Specs](https://github.com/ethereum-optimism/specs/discussions) repository.

[Optimism Docs]: https://github.com/ethereum-optimism/docs

### Contributions Related to Spelling and Grammar

At this time, we will not be accepting contributions that primarily fix
spelling, stylistic or grammatical errors in documentation, code or elsewhere.

Pull Requests that ignore this guideline will be closed,
and may be aggregated into new Pull Requests without attribution.

## Code of Conduct

Interactions within this repository are subject to a [Code of Conduct](https://github.com/ethereum-optimism/.github/blob/master/CODE_OF_CONDUCT.md) adapted from the [Contributor Covenant](https://www.contributor-covenant.org/version/1/4/code-of-conduct/).
Expand Down
20 changes: 8 additions & 12 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,6 @@ lint-go-fix: ## Lints Go code with specific linters and fixes reported issues
golangci-lint run -E goimports,sqlclosecheck,bodyclose,asciicheck,misspell,errorlint --timeout 5m -e "errors.As" -e "errors.Is" ./... --fix
.PHONY: lint-go-fix

ci-builder: ## Builds the CI builder Docker image
docker build -t ci-builder -f ops/docker/ci-builder/Dockerfile .
.PHONY: ci-builder

golang-docker: ## Builds Docker images for Go components using buildx
# We don't use a buildx builder here, and just load directly into regular docker, for convenience.
GIT_COMMIT=$$(git rev-parse HEAD) \
Expand Down Expand Up @@ -135,15 +131,15 @@ 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 op-program/bin/prestate-interop.bin.gz
DEVNET_CANNON_PRESTATE_FILES := op-program/bin/prestate-proof.json op-program/bin/prestate.bin.gz op-program/bin/prestate-proof-mt64.json op-program/bin/prestate-mt64.bin.gz op-program/bin/prestate-interop.bin.gz


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

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

cannon-prestate: op-program cannon ## Generates prestate using cannon and op-program
Expand All @@ -152,11 +148,11 @@ cannon-prestate: op-program cannon ## Generates prestate using cannon and op-pro
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 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-mt64: 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-mt64.bin.gz --meta op-program/bin/meta-mt64.json
./cannon/bin/cannon run --proof-at '=0' --stop-at '=1' --input op-program/bin/prestate-mt64.bin.gz --meta op-program/bin/meta-mt64.json --proof-fmt 'op-program/bin/%d-mt64.json' --output ""
mv op-program/bin/0-mt64.json op-program/bin/prestate-proof-mt64.json
.PHONY: cannon-prestate-mt64

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
Expand Down
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@ See the [Node Software Releases](https://docs.optimism.io/builders/node-operator

The full set of components that have releases are:

- `ci-builder`
- `op-batcher`
- `op-contracts`
- `op-challenger`
Expand Down
3 changes: 2 additions & 1 deletion cannon/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ elf:
make -C ./testdata/example elf

sanitize-program:
@if ! { mips-linux-gnu-objdump -d -j .text $$GUEST_PROGRAM | awk '{print $$3}' | grep -Ew -m1 "$(UNSUPPORTED_OPCODES)"; }; then \
mips-linux-gnu-objdump -d -j .text $$GUEST_PROGRAM > ./bin/dump.txt
@if ! { cat ./bin/dump.txt | awk '{print $$3}' | grep -Ew -m1 "$(UNSUPPORTED_OPCODES)"; }; then \
echo "guest program is sanitized for unsupported instructions"; \
else \
echo "found unsupported instructions in the guest program"; \
Expand Down
9 changes: 7 additions & 2 deletions cannon/mipsevm/exec/mips_instructions.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ const (

// Return address register
RegRA = 31

// Masks
U32Mask = 0xFFffFFff
)

func GetInstructionDetails(pc Word, memory *memory.Memory) (insn, opcode, fun uint32) {
Expand Down Expand Up @@ -205,14 +208,16 @@ func ExecuteMipsInstruction(insn uint32, opcode uint32, fun uint32, rs, rt, mem

switch fun {
case 0x00: // sll
return SignExtend((rt&0xFFFFFFFF)<<((insn>>6)&0x1F), 32)
shiftAmt := (insn >> 6) & 0x1F
return SignExtend((rt<<shiftAmt)&U32Mask, 32)
case 0x02: // srl
return SignExtend((rt&0xFFFFFFFF)>>((insn>>6)&0x1F), 32)
case 0x03: // sra
shamt := Word((insn >> 6) & 0x1F)
return SignExtend((rt&0xFFFFFFFF)>>shamt, 32-shamt)
case 0x04: // sllv
return SignExtend((rt&0xFFFFFFFF)<<(rs&0x1F), 32)
shiftAmt := rs & 0x1F
return SignExtend((rt<<shiftAmt)&U32Mask, 32)
case 0x06: // srlv
return SignExtend((rt&0xFFFFFFFF)>>(rs&0x1F), 32)
case 0x07: // srav
Expand Down
16 changes: 12 additions & 4 deletions cannon/mipsevm/tests/evm_common_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -552,10 +552,18 @@ func TestEVM_SingleStep_SlSr(t *testing.T) {
funct uint16
expectVal Word
}{
{name: "sll", funct: uint16(4) << 6, rt: Word(0x20), rsReg: uint32(0x0), expectVal: Word(0x20) << uint8(4)}, // sll t0, t1, 3
{name: "srl", funct: uint16(4)<<6 | 2, rt: Word(0x20), rsReg: uint32(0x0), expectVal: Word(0x20) >> uint8(4)}, // srl t0, t1, 3
{name: "sra", funct: uint16(4)<<6 | 3, rt: Word(0x80_00_00_20), rsReg: uint32(0x0), expectVal: signExtend64(0xF8_00_00_02)}, // sra t0, t1, 3
{name: "sllv", funct: uint16(4), rt: Word(0x20), rs: Word(4), rsReg: uint32(0xa), expectVal: Word(0x20) << Word(4)}, // sllv t0, t1, t2
{name: "sll", funct: uint16(4) << 6, rt: Word(0x20), rsReg: uint32(0x0), expectVal: Word(0x20) << uint8(4)}, // sll t0, t1, 3
{name: "sll with overflow", funct: uint16(1) << 6, rt: Word(0x8000_0000), rsReg: uint32(0x0), expectVal: 0x0},
{name: "sll with sign extension", funct: uint16(4) << 6, rt: Word(0x0800_0000), rsReg: uint32(0x0), expectVal: signExtend64(0x8000_0000)},
{name: "sll with max shift, sign extension", funct: uint16(31) << 6, rt: Word(0x01), rsReg: uint32(0x0), expectVal: signExtend64(0x8000_0000)},
{name: "sll with max shift, overflow", funct: uint16(31) << 6, rt: Word(0x02), rsReg: uint32(0x0), expectVal: 0x0},
{name: "srl", funct: uint16(4)<<6 | 2, rt: Word(0x20), rsReg: uint32(0x0), expectVal: Word(0x20) >> uint8(4)}, // srl t0, t1, 3
{name: "sra", funct: uint16(4)<<6 | 3, rt: Word(0x80_00_00_20), rsReg: uint32(0x0), expectVal: signExtend64(0xF8_00_00_02)}, // sra t0, t1, 3
{name: "sllv", funct: uint16(4), rt: Word(0x20), rs: Word(4), rsReg: uint32(0xa), expectVal: Word(0x20) << Word(4)}, // sllv t0, t1, t2
{name: "sllv with overflow", funct: uint16(4), rt: Word(0x8000_0000), rs: Word(1), rsReg: uint32(0xa), expectVal: 0x0},
{name: "sllv with sign extension", funct: uint16(4), rt: Word(0x0800_0000), rs: Word(4), rsReg: uint32(0xa), expectVal: signExtend64(0x8000_0000)},
{name: "sllv with max shift, sign extension", funct: uint16(4), rt: Word(0x01), rs: Word(31), rsReg: uint32(0xa), expectVal: signExtend64(0x8000_0000)},
{name: "sllv with max shift, overflow", funct: uint16(4), rt: Word(0x02), rs: Word(31), rsReg: uint32(0xa), expectVal: 0x0},
{name: "srlv", funct: uint16(6), rt: Word(0x20_00), rs: Word(4), rsReg: uint32(0xa), expectVal: Word(0x20_00) >> Word(4)}, // srlv t0, t1, t2
{name: "srav", funct: uint16(7), rt: Word(0xdeafbeef), rs: Word(12), rsReg: uint32(0xa), expectVal: signExtend64(Word(0xfffdeafb))}, // srav t0, t1, t2
}
Expand Down
2 changes: 1 addition & 1 deletion cannon/mipsevm/testutil/evm.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ func NewEVMEnv(contracts *ContractMetadata) (*vm.EVM, *state.StateDB) {
blockContext := core.NewEVMBlockContext(header, bc, nil, chainCfg, state)
vmCfg := vm.Config{}

env := vm.NewEVM(blockContext, vm.TxContext{}, state, chainCfg, vmCfg)
env := vm.NewEVM(blockContext, state, chainCfg, vmCfg)
// pre-deploy the contracts
env.StateDB.SetCode(contracts.Addresses.Oracle, contracts.Artifacts.Oracle.DeployedBytecode.Object)

Expand Down
25 changes: 25 additions & 0 deletions devnet-sdk/constraints/constraints.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package constraints

import (
"log/slog"

"github.com/ethereum-optimism/optimism/devnet-sdk/types"
)

type WalletConstraint interface {
CheckWallet(wallet types.Wallet) bool
}

type WalletConstraintFunc func(wallet types.Wallet) bool

func (f WalletConstraintFunc) CheckWallet(wallet types.Wallet) bool {
return f(wallet)
}

func WithBalance(amount types.Balance) WalletConstraint {
return WalletConstraintFunc(func(wallet types.Wallet) bool {
balance := wallet.Balance()
slog.Debug("checking balance", "wallet", wallet.Address(), "balance", balance, "needed", amount)
return balance.GreaterThan(amount)
})
}
Loading