zkevm

package
v0.0.0-...-3805acb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 24, 2024 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Settings

type Settings struct {
	Keccak           keccak.Settings
	Statemanager     statemanager.Settings
	Arithmetization  arithmetization.Settings
	Ecdsa            ecdsa.Settings
	Modexp           modexp.Settings
	Ecadd, Ecmul     ecarith.Limits
	Ecpair           ecpair.Limits
	Sha2             sha2.Settings
	PublicInput      publicInput.Settings
	CompilationSuite compilationSuite
	Metadata         wizard.VersionMetadata
}

List the options set to initialize the zkEVM

type Witness

type Witness struct {
	// ExecTracesFPath is the filepath toward the execution traces to use for
	// proof trace generation.
	ExecTracesFPath string
	// StateManager traces
	SMTraces [][]statemanager.DecodedTrace
	// TxSignatures lists the signatures of the transaction as found
	// chronologically in the block.
	TxSignatures []ethereum.Signature
	// TxHashes lists the hash of the transactions in the order found in the
	// block.
	TxHashes        [][32]byte
	L2BridgeAddress common.Address
	ChainID         uint
}

Witness is a collection of prover inputs used to derive an assignment to the full proving scheme.

func (Witness) TxSignatureGetter

func (w Witness) TxSignatureGetter(i int, txHash []byte) (r, s, v *big.Int, err error)

TxSignatureGetter implements the ecdsa.TxSignatureGetter interface

type ZkEvm

type ZkEvm struct {

	// PublicInput gives access to the public inputs of the wizard-IOP and is
	// used to access them to define the outer-circuit.
	PublicInput *publicInput.PublicInput

	// Contains the actual wizard-IOP compiled object. This object is called to
	// generate the inner-proof.
	WizardIOP *wizard.CompiledIOP
	// contains filtered or unexported fields
}

ZkEvm defines the wizard responsible for proving execution of the zk

func CheckerZkEvm

func CheckerZkEvm(tl *config.TracesLimits) *ZkEvm

The checker is not meant to generate proofs, it is meant to be used to check that the provided prover inputs are correct. It typically is used to audit the traces of the arithmetization. Currently, it does not include the keccaks nor does it include the state-management checks.

func FullZkEVMCheckOnly

func FullZkEVMCheckOnly(tl *config.TracesLimits) *ZkEvm

func FullZkEvm

func FullZkEvm(tl *config.TracesLimits) *ZkEvm

FullZkEvm compiles the full prover zkEVM. It memoizes the results and returns it for all the subsequent calls. That is, it should not be called twice with different configuration parameters as it will always return the instance compiled with the parameters it received the first time. This behavior is motivated by the fact that the compilation process takes time and we don't want to spend the compilation time twice, plus in practice we won't need to call it with different configuration parameters.

func NewZkEVM

func NewZkEVM(
	settings Settings,
) *ZkEvm

NewZkEVM instantiates a new ZkEvm instance. The function returns a fully initialized and compiled zkEVM object tuned with the caller's parameters and the input compilation suite.

The function can take a bit of time to complete. It will populate the zkEVM struct and needs to be called before running the prover of the inner-proof.

func PartialZkEvm

func PartialZkEvm(tl *config.TracesLimits) *ZkEvm

Returns the zkEVM objects corresponding to the light zkEVM prover. Namely, it will generate a proof checking only a small portion of the requested computation it is meant primarily for testing and integration testing purpose. When called for the first time, it will compile the corresponding light zkEVM using the config option. The next times it is called, it will ignore the configuration options and directly return the previously compiled object. It therefore means that it should not be called twice with different config options.

func (*ZkEvm) Limits

func (z *ZkEvm) Limits() *config.TracesLimits

Limits returns the configuration limits used to instantiate the current zk-EVM.

func (*ZkEvm) ProveInner

func (z *ZkEvm) ProveInner(input *Witness) wizard.Proof

Prove assigns and runs the inner-prover of the zkEVM and then, it returns the inner-proof

func (*ZkEvm) VerifyInner

func (z *ZkEvm) VerifyInner(proof wizard.Proof) error

Verify verifies the inner-proof of the zkEVM

Directories

Path Synopsis
prover
ecarith
Package ecarith provides the integrations of the EC_MUL and EC_ADD precompile calls.
Package ecarith provides the integrations of the EC_MUL and EC_ADD precompile calls.
hash/keccak
The keccak package implements the utilities for proving the hash over a single provider.
The keccak package implements the utilities for proving the hash over a single provider.
hash/keccak/acc_module
The accumulator package is responsible for accumulating the data from different arithmetization module.
The accumulator package is responsible for accumulating the data from different arithmetization module.
hash/keccak/keccakf
The keccakf package implements to keccakf module.
The keccakf package implements to keccakf module.
hash/packing
Packing package implements the utilities for Packing the limbs of variable length to the lanes of fixed length.
Packing package implements the utilities for Packing the limbs of variable length to the lanes of fixed length.
hash/sha2
The sha2 package provides all the necessary tools to verify the calls to the sha2 precompiles in the Linea's zkevm.
The sha2 package provides all the necessary tools to verify the calls to the sha2 precompiles in the Linea's zkevm.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL