Skip to content

Commit e33d11d

Browse files
committed
apply features in configuration
1 parent 642ee2f commit e33d11d

File tree

6 files changed

+24
-5
lines changed

6 files changed

+24
-5
lines changed

coordinator/internal/config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ type AssetConfig struct {
6666
// VerifierConfig load zk verifier config.
6767
type VerifierConfig struct {
6868
MinProverVersion string `json:"min_prover_version"`
69+
Features string `json:"features,omitempty"`
6970
Verifiers []AssetConfig `json:"verifiers"`
7071
}
7172

coordinator/internal/logic/verifier/verifier.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ func NewVerifier(cfg *config.VerifierConfig) (*Verifier, error) {
6767
return nil, err
6868
}
6969

70+
if cfg.Features != "" {
71+
libzkp.SetDynamicFeature(cfg.Features)
72+
}
7073
libzkp.InitVerifier(string(configBytes))
7174

7275
v := &Verifier{

crates/libzkp/src/lib.rs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,24 @@ use std::path::Path;
1212
use tasks::chunk_interpreter::{ChunkInterpreter, TryFromWithInterpreter};
1313

1414
/// global features: use legacy encoding for witness
15-
pub(crate) static LEGACY_WITNESS_ENCODING: bool = false;
15+
static mut LEGACY_WITNESS_ENCODING: bool = false;
16+
pub(crate) fn witness_use_legacy_mode() -> bool {unsafe{LEGACY_WITNESS_ENCODING}}
1617

17-
pub fn set_dynamic_feature(feats: &str){
1818

19+
pub fn set_dynamic_feature(feats: &str){
20+
for feat_s in feats.split(':') {
21+
22+
match feat_s.trim().to_lowercase().as_str() {
23+
"legacy_witness" => {
24+
tracing::info!("set witness encoding for legacy mode");
25+
unsafe {
26+
// the function is only called while initialize step
27+
LEGACY_WITNESS_ENCODING = true;
28+
}
29+
}
30+
s => tracing::warn!("unrecognized dynamic feature: {s}"),
31+
}
32+
}
1933
}
2034

2135

crates/libzkp/src/tasks/batch.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ impl TryFrom<BatchProvingTask> for ProvingTask {
8484

8585
fn try_from(value: BatchProvingTask) -> Result<Self> {
8686
let witness = value.build_guest_input();
87-
let serialized_witness = if crate::LEGACY_WITNESS_ENCODING {
87+
let serialized_witness = if crate::witness_use_legacy_mode() {
8888
let legacy_witness = LegacyBatchWitness::from(witness);
8989
to_rkyv_bytes::<RancorError>(&legacy_witness)?.into_vec()
9090
} else {

crates/libzkp/src/tasks/bundle.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ impl TryFrom<BundleProvingTask> for ProvingTask {
7070

7171
fn try_from(value: BundleProvingTask) -> Result<Self> {
7272
let witness = value.build_guest_input();
73-
let serialized_witness = if crate::LEGACY_WITNESS_ENCODING {
73+
let serialized_witness = if crate::witness_use_legacy_mode() {
7474
to_rkyv_bytes::<RancorError>(&witness)?.into_vec()
7575
} else {
7676
super::encode_task_to_witness(&witness)?

crates/libzkp/src/tasks/chunk.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ impl TryFrom<ChunkProvingTask> for ProvingTask {
6868

6969
fn try_from(value: ChunkProvingTask) -> Result<Self> {
7070
let witness = value.build_guest_input();
71-
let serialized_witness = if crate::LEGACY_WITNESS_ENCODING {
71+
let serialized_witness = if crate::witness_use_legacy_mode() {
7272
let legacy_witness = LegacyChunkWitness::from(witness);
7373
to_rkyv_bytes::<RancorError>(&legacy_witness)?.into_vec()
7474
} else {
@@ -146,6 +146,7 @@ impl ChunkProvingTask {
146146

147147
/// this method check the validate of current task (there may be missing storage node)
148148
/// and try fixing it until everything is ok
149+
#[deprecated]
149150
pub fn prepare_task_via_interpret(
150151
&mut self,
151152
interpreter: impl ChunkInterpreter,

0 commit comments

Comments
 (0)