Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
18 changes: 14 additions & 4 deletions prover/circuits/invalidity/invalidity.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import (
emPlonk "github.com/consensys/gnark/std/recursion/plonk"
"github.com/consensys/linea-monorepo/prover/circuits"
wizardk "github.com/consensys/linea-monorepo/prover/circuits/pi-interconnection/keccak/prover/protocol/wizard"
"github.com/consensys/linea-monorepo/prover/maths/field"
"github.com/consensys/linea-monorepo/prover/protocol/distributed"
wizard "github.com/consensys/linea-monorepo/prover/protocol/wizard"
public_input "github.com/consensys/linea-monorepo/prover/public-input"
"github.com/ethereum/go-ethereum/common"
Expand Down Expand Up @@ -226,17 +228,25 @@ func (b *builder) Compile() (constraint.ConstraintSystem, error) {
}

type limitlessBuilder struct {
congWIOP *wizard.CompiledIOP
congWIOP *wizard.CompiledIOP
vkMerkleRoot field.Octuplet
}

func NewBuilderLimitless(congWIOP *wizard.CompiledIOP) *limitlessBuilder {
return &limitlessBuilder{congWIOP: congWIOP}
func NewBuilderLimitless(congWIOP *wizard.CompiledIOP, vkMerkleRoot field.Octuplet) *limitlessBuilder {
return &limitlessBuilder{congWIOP: congWIOP, vkMerkleRoot: vkMerkleRoot}
}

func (b *limitlessBuilder) Compile() (constraint.ConstraintSystem, error) {
vk0 := b.congWIOP.ExtraData[distributed.VerifyingKeyPublicInput].(field.Octuplet)
vk1 := b.congWIOP.ExtraData[distributed.VerifyingKey2PublicInput].(field.Octuplet)

circuit := &CircuitInvalidity{
SubCircuit: &BadPrecompileCircuit{
ExecutionCtx: ExecutionCtx{LimitlessMode: true},
ExecutionCtx: ExecutionCtx{
LimitlessMode: true,
CongloVK: [2]field.Octuplet{vk0, vk1},
VKMerkleRoot: b.vkMerkleRoot,
},
},
}
circuit.Allocate(Config{ZkEvmComp: b.congWIOP})
Expand Down
10 changes: 8 additions & 2 deletions prover/cmd/prover/cmd/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,12 @@ func createCircuitBuilder(c circuits.CircuitID, cfg *config.Config, args SetupAr
// buf is intentionally not released: zero-copy deserialization means conglo
// points into the mmap region, which must stay mapped until Compile() finishes.
// For a one-shot setup process this is safe — the OS reclaims it at exit.
return invalidity.NewBuilderLimitless(conglo.RecursionCompBLS), extraFlags, nil
vkTree, err := zkevm.LoadVerificationKeyMerkleTree(cfg)
if err != nil {
return nil, nil, fmt.Errorf("failed to load VK merkle tree for invalidity limitless: %w", err)
}
vkMerkleRoot := vkTree.GetRoot()
return invalidity.NewBuilderLimitless(conglo.RecursionCompBLS, vkMerkleRoot), extraFlags, nil
}

logrus.Info("execution-limitless assets not found; generating them now for invalidity limitless setup")
Expand All @@ -383,10 +388,11 @@ func createCircuitBuilder(c circuits.CircuitID, cfg *config.Config, args SetupAr
return nil, nil, fmt.Errorf("failed to write limitless invalidity prover assets: %w", err)
}
compCong := asset.DistWizard.CompiledConglomeration
vkMerkleRoot := asset.DistWizard.VerificationKeyMerkleTree.GetRoot()
asset = nil
runtime.GC()

return invalidity.NewBuilderLimitless(compCong.RecursionCompBLS), extraFlags, nil
return invalidity.NewBuilderLimitless(compCong.RecursionCompBLS, vkMerkleRoot), extraFlags, nil
case circuits.InvalidityFilteredAddressCircuitID:
keccakComp := invalidity.MakeKeccakCompiledIOP(cfg.Invalidity.MaxRlpByteSize, keccak.WizardCompilationParameters()...)
return invalidity.NewBuilder(
Expand Down
Loading