feat (libzkp-v0.9.8): recordStorageDetail even when LogConfig.DisableStorage == true (#564)

* trace: recordStorageDetail even when LogConfig.DisableStorage == true

* Set `DisableStorage` to true.

* Update libzkp to zkevm-circuits `feat/remove-step-storage-from-trace` branch.

* Add `strict-ccc` feature to libzkp.

* Upgrade libzkp to use prover `v0.9.8`.

* Update params version.

* Update params version.

---------

Co-authored-by: Steven Gu <asongala@163.com>
This commit is contained in:
Zhang Zhuo 2023-11-22 14:44:08 +08:00 committed by GitHub
parent f4b247da15
commit 9f143b47b2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 24 deletions

View file

@ -119,6 +119,7 @@ func CreateTraceEnv(chainConfig *params.ChainConfig, chainContext ChainContext,
env := CreateTraceEnvHelper( env := CreateTraceEnvHelper(
chainConfig, chainConfig,
&vm.LogConfig{ &vm.LogConfig{
DisableStorage: true,
EnableMemory: false, EnableMemory: false,
EnableReturnData: true, EnableReturnData: true,
}, },

View file

@ -234,16 +234,14 @@ func (l *StructLogger) CaptureState(pc uint64, op OpCode, gas, cost uint64, scop
storageKey common.Hash storageKey common.Hash
storageValue common.Hash storageValue common.Hash
) )
if !l.cfg.DisableStorage { if op == SLOAD && stack.len() >= 1 {
if op == SLOAD && stack.len() >= 1 { recordStorageDetail = true
recordStorageDetail = true storageKey = stack.data[stack.len()-1].Bytes32()
storageKey = stack.data[stack.len()-1].Bytes32() storageValue = l.env.StateDB.GetState(contract.Address(), storageKey)
storageValue = l.env.StateDB.GetState(contract.Address(), storageKey) } else if op == SSTORE && stack.len() >= 2 {
} else if op == SSTORE && stack.len() >= 2 { recordStorageDetail = true
recordStorageDetail = true storageKey = stack.data[stack.len()-1].Bytes32()
storageKey = stack.data[stack.len()-1].Bytes32() storageValue = stack.data[stack.len()-2].Bytes32()
storageValue = stack.data[stack.len()-2].Bytes32()
}
} }
if recordStorageDetail { if recordStorageDetail {
contractAddress := contract.Address() contractAddress := contract.Address()
@ -251,7 +249,9 @@ func (l *StructLogger) CaptureState(pc uint64, op OpCode, gas, cost uint64, scop
l.storage[contractAddress] = make(Storage) l.storage[contractAddress] = make(Storage)
} }
l.storage[contractAddress][storageKey] = storageValue l.storage[contractAddress][storageKey] = storageValue
structLog.Storage = l.storage[contractAddress].Copy() if !l.cfg.DisableStorage {
structLog.Storage = l.storage[contractAddress].Copy()
}
if err := traceStorage(l, scope, structLog.getOrInitExtraData()); err != nil { if err := traceStorage(l, scope, structLog.getOrInitExtraData()); err != nil {
log.Error("Failed to trace data", "opcode", op.String(), "err", err) log.Error("Failed to trace data", "opcode", op.String(), "err", err)

View file

@ -24,7 +24,7 @@ import (
const ( const (
VersionMajor = 5 // Major version component of the current release VersionMajor = 5 // Major version component of the current release
VersionMinor = 1 // Minor version component of the current release VersionMinor = 1 // Minor version component of the current release
VersionPatch = 4 // Patch version component of the current release VersionPatch = 5 // Patch version component of the current release
VersionMeta = "mainnet" // Version metadata to append to the version string VersionMeta = "mainnet" // Version metadata to append to the version string
) )

View file

@ -16,7 +16,7 @@ dependencies = [
[[package]] [[package]]
name = "aggregator" name = "aggregator"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.7#2055cc0bb970aa28d597c945b6078e2469af8862" source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.8#8f17df87ba70f5a8fcaa23f4fcb7fb112f5a815a"
dependencies = [ dependencies = [
"ark-std", "ark-std",
"env_logger 0.10.0", "env_logger 0.10.0",
@ -297,7 +297,7 @@ checksum = "3c6ed94e98ecff0c12dd1b04c15ec0d7d9458ca8fe806cea6f12954efe74c63b"
[[package]] [[package]]
name = "bus-mapping" name = "bus-mapping"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.7#2055cc0bb970aa28d597c945b6078e2469af8862" source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.8#8f17df87ba70f5a8fcaa23f4fcb7fb112f5a815a"
dependencies = [ dependencies = [
"eth-types", "eth-types",
"ethers-core", "ethers-core",
@ -971,7 +971,7 @@ dependencies = [
[[package]] [[package]]
name = "eth-types" name = "eth-types"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.7#2055cc0bb970aa28d597c945b6078e2469af8862" source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.8#8f17df87ba70f5a8fcaa23f4fcb7fb112f5a815a"
dependencies = [ dependencies = [
"ethers-core", "ethers-core",
"ethers-signers", "ethers-signers",
@ -1128,7 +1128,7 @@ dependencies = [
[[package]] [[package]]
name = "external-tracer" name = "external-tracer"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.7#2055cc0bb970aa28d597c945b6078e2469af8862" source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.8#8f17df87ba70f5a8fcaa23f4fcb7fb112f5a815a"
dependencies = [ dependencies = [
"eth-types", "eth-types",
"geth-utils", "geth-utils",
@ -1308,7 +1308,7 @@ dependencies = [
[[package]] [[package]]
name = "gadgets" name = "gadgets"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.7#2055cc0bb970aa28d597c945b6078e2469af8862" source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.8#8f17df87ba70f5a8fcaa23f4fcb7fb112f5a815a"
dependencies = [ dependencies = [
"digest 0.7.6", "digest 0.7.6",
"eth-types", "eth-types",
@ -1340,7 +1340,7 @@ dependencies = [
[[package]] [[package]]
name = "geth-utils" name = "geth-utils"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.7#2055cc0bb970aa28d597c945b6078e2469af8862" source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.8#8f17df87ba70f5a8fcaa23f4fcb7fb112f5a815a"
dependencies = [ dependencies = [
"env_logger 0.9.3", "env_logger 0.9.3",
"gobuild 0.1.0-alpha.2 (git+https://github.com/scroll-tech/gobuild.git)", "gobuild 0.1.0-alpha.2 (git+https://github.com/scroll-tech/gobuild.git)",
@ -1949,7 +1949,7 @@ dependencies = [
[[package]] [[package]]
name = "keccak256" name = "keccak256"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.7#2055cc0bb970aa28d597c945b6078e2469af8862" source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.8#8f17df87ba70f5a8fcaa23f4fcb7fb112f5a815a"
dependencies = [ dependencies = [
"env_logger 0.9.3", "env_logger 0.9.3",
"eth-types", "eth-types",
@ -2157,7 +2157,7 @@ dependencies = [
[[package]] [[package]]
name = "mock" name = "mock"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.7#2055cc0bb970aa28d597c945b6078e2469af8862" source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.8#8f17df87ba70f5a8fcaa23f4fcb7fb112f5a815a"
dependencies = [ dependencies = [
"eth-types", "eth-types",
"ethers-core", "ethers-core",
@ -2173,7 +2173,7 @@ dependencies = [
[[package]] [[package]]
name = "mpt-zktrie" name = "mpt-zktrie"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.7#2055cc0bb970aa28d597c945b6078e2469af8862" source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.8#8f17df87ba70f5a8fcaa23f4fcb7fb112f5a815a"
dependencies = [ dependencies = [
"eth-types", "eth-types",
"halo2-mpt-circuits", "halo2-mpt-circuits",
@ -2595,7 +2595,7 @@ dependencies = [
[[package]] [[package]]
name = "prover" name = "prover"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.7#2055cc0bb970aa28d597c945b6078e2469af8862" source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.8#8f17df87ba70f5a8fcaa23f4fcb7fb112f5a815a"
dependencies = [ dependencies = [
"aggregator", "aggregator",
"anyhow", "anyhow",
@ -4212,7 +4212,7 @@ checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
[[package]] [[package]]
name = "zkevm-circuits" name = "zkevm-circuits"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.7#2055cc0bb970aa28d597c945b6078e2469af8862" source = "git+https://github.com/scroll-tech/zkevm-circuits.git?tag=v0.9.8#8f17df87ba70f5a8fcaa23f4fcb7fb112f5a815a"
dependencies = [ dependencies = [
"array-init", "array-init",
"bus-mapping", "bus-mapping",

View file

@ -20,7 +20,7 @@ maingate = { git = "https://github.com/scroll-tech/halo2wrong", branch = "halo2-
halo2curves = { git = "https://github.com/scroll-tech/halo2curves.git", branch = "0.3.1-derive-serde" } halo2curves = { git = "https://github.com/scroll-tech/halo2curves.git", branch = "0.3.1-derive-serde" }
[dependencies] [dependencies]
prover = { git = "https://github.com/scroll-tech/zkevm-circuits.git", tag = "v0.9.7", default-features = false, features = ["parallel_syn", "scroll", "shanghai"] } prover = { git = "https://github.com/scroll-tech/zkevm-circuits.git", tag = "v0.9.8", default-features = false, features = ["parallel_syn", "scroll", "shanghai", "strict-ccc"] }
anyhow = "1.0" anyhow = "1.0"
log = "0.4" log = "0.4"