Skip to content
This repository was archived by the owner on Jun 8, 2022. It is now read-only.

Commit 89f194c

Browse files
authored
feat(challenges): configurable challenge count (#93)
* feat(challenges): configurable challenge count * ci(params): selectively generate 1KiB and 1GiB params
1 parent 0dc7a2d commit 89f194c

File tree

10 files changed

+70
-31
lines changed

10 files changed

+70
-31
lines changed

.circleci/config.yml

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ jobs:
1616
which paramcache || { printf '%s\n' "missing paramcache binary" >&2; exit 1; }
1717
- restore_parameter_cache
1818
- run:
19-
name: Generate Groth parameters and verifying keys
20-
command: paramcache
19+
name: Generate Groth parameters and verifying keys for 1KiB and 1GiB sectors
20+
command: paramcache -z=1024,1073741824
2121
no_output_timeout: 1h
2222
- save_parameter_cache
2323

@@ -271,16 +271,6 @@ workflows:
271271
requires:
272272
- cargo_fetch
273273
- obtain_parameters
274-
- ffi_regression:
275-
name: e2e_256MiB (lifecycle)
276-
sector_size: 268435456
277-
test_idx: 2
278-
requires:
279-
- cargo_fetch
280-
- obtain_parameters
281-
filters:
282-
branches:
283-
only: master
284274
- ffi_regression:
285275
name: e2e_1GiB (lifecycle)
286276
sector_size: 1073741824
@@ -342,7 +332,7 @@ commands:
342332
restore_parameter_cache:
343333
steps:
344334
- restore_cache:
345-
key: v17-proof-params-{{ arch }}
335+
key: v17b-proof-params-{{ arch }}
346336
paths:
347337
- /tmp/filecoin-parameter-cache
348338
restore_rust_cache:
@@ -352,7 +342,7 @@ commands:
352342
save_parameter_cache:
353343
steps:
354344
- save_cache:
355-
key: v17-proof-params-{{ arch }}
345+
key: v17b-proof-params-{{ arch }}
356346
paths:
357347
- /tmp/filecoin-parameter-cache
358348
save_rust_cache:

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sector-builder-ffi/examples/simple/main.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -867,9 +867,10 @@ unsafe fn sector_builder_lifecycle(sector_size: u64) -> Result<(), failure::Erro
867867
// generate and then verify a proof-of-spacetime for the sealed sector
868868
{
869869
let cseed = [1u8; 32];
870+
let ccount = 1;
870871
let p_set = ProvingSet::new(get_sector_info(&mut ctx, b_ptr));
871872

872-
let candidates = generate_candidates(b_ptr, cseed, &p_set).unwrap();
873+
let candidates = generate_candidates(b_ptr, cseed, ccount, &p_set).unwrap();
873874

874875
let winners: Vec<sector_builder_ffi_FFICandidate> = candidates
875876
.into_iter()
@@ -881,12 +882,13 @@ unsafe fn sector_builder_lifecycle(sector_size: u64) -> Result<(), failure::Erro
881882
})
882883
.collect();
883884

884-
let proofs = generate_post(b_ptr, cseed, &p_set, &winners).unwrap();
885+
let proofs = generate_post(b_ptr, cseed, ccount, &p_set, &winners).unwrap();
885886

886887
assert!(
887888
verify_post(
888889
cfg.sector_class.sector_size,
889890
cseed,
891+
ccount,
890892
&p_set,
891893
&proofs,
892894
&winners,

sector-builder-ffi/examples/simple/plumbing.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ include!(concat!(env!("OUT_DIR"), "/libsector_builder_ffi.rs"));
1212
pub(crate) unsafe fn generate_candidates(
1313
ptr: *mut sector_builder_ffi_SectorBuilder,
1414
challenge_seed: [u8; 32],
15+
challenge_count: u64,
1516
proving_set: &ProvingSet,
1617
) -> Result<Vec<sector_builder_ffi_FFICandidate>, (sector_builder_ffi_FCPResponseStatus, String)> {
1718
let flattened_comm_rs = proving_set.flattened_comm_rs();
@@ -22,6 +23,7 @@ pub(crate) unsafe fn generate_candidates(
2223
flattened_comm_rs.as_ptr(),
2324
flattened_comm_rs.len(),
2425
&mut challenge_seed.clone(),
26+
challenge_count,
2527
faulty_sector_ids.as_ptr(),
2628
faulty_sector_ids.len(),
2729
);
@@ -42,6 +44,7 @@ pub(crate) unsafe fn generate_candidates(
4244
pub(crate) unsafe fn generate_post(
4345
ptr: *mut sector_builder_ffi_SectorBuilder,
4446
challenge_seed: [u8; 32],
47+
challenge_count: u64,
4548
proving_set: &ProvingSet,
4649
winners: &[sector_builder_ffi_FFICandidate],
4750
) -> Result<Vec<u8>, (sector_builder_ffi_FCPResponseStatus, String)> {
@@ -52,6 +55,7 @@ pub(crate) unsafe fn generate_post(
5255
flattened_comm_rs.as_ptr(),
5356
flattened_comm_rs.len(),
5457
&mut challenge_seed.clone(),
58+
challenge_count,
5559
winners.as_ptr(),
5660
winners.len(),
5761
);
@@ -70,6 +74,7 @@ pub(crate) unsafe fn generate_post(
7074
pub(crate) unsafe fn verify_post(
7175
sector_size: u64,
7276
challenge_seed: [u8; 32],
77+
challenge_count: u64,
7378
proving_set: &ProvingSet,
7479
flattened_proofs: &[u8],
7580
winners: &[sector_builder_ffi_FFICandidate],
@@ -81,6 +86,7 @@ pub(crate) unsafe fn verify_post(
8186
let resp = sector_builder_ffi_reexported_verify_post(
8287
sector_size,
8388
&mut challenge_seed.clone(),
89+
challenge_count,
8490
sector_ids.as_ptr(),
8591
sector_ids.len(),
8692
flattened_comm_rs.as_ptr(),

sector-builder-ffi/src/api.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ pub unsafe extern "C" fn sector_builder_ffi_generate_candidates(
236236
flattened_comm_rs_ptr: *const u8,
237237
flattened_comm_rs_len: libc::size_t,
238238
challenge_seed: &[u8; 32],
239+
challenge_count: u64,
239240
faults_ptr: *const u64,
240241
faults_len: libc::size_t,
241242
) -> *mut types::GenerateCandidatesResponse {
@@ -250,7 +251,7 @@ pub unsafe extern "C" fn sector_builder_ffi_generate_candidates(
250251
.map(|x| SectorId::from(*x))
251252
.collect();
252253

253-
let result = (*ptr).generate_candidates(&comm_rs, challenge_seed, faults);
254+
let result = (*ptr).generate_candidates(&comm_rs, challenge_seed, challenge_count, faults);
254255

255256
let mut response = types::GenerateCandidatesResponse::default();
256257

@@ -304,6 +305,7 @@ pub unsafe extern "C" fn sector_builder_ffi_generate_post(
304305
flattened_comm_rs_ptr: *const u8,
305306
flattened_comm_rs_len: libc::size_t,
306307
challenge_seed: &[u8; 32],
308+
challenge_count: u64,
307309
winners_ptr: *const FFICandidate,
308310
winners_len: libc::size_t,
309311
) -> *mut types::GeneratePoStResponse {
@@ -319,7 +321,9 @@ pub unsafe extern "C" fn sector_builder_ffi_generate_post(
319321
.map(|c| c.try_into_candidate())
320322
.collect::<Result<_, _>>()
321323
.map_err(Into::into)
322-
.and_then(|winners| (*ptr).generate_post(&comm_rs, challenge_seed, winners));
324+
.and_then(|winners| {
325+
(*ptr).generate_post(&comm_rs, challenge_seed, challenge_count, winners)
326+
});
323327

324328
let mut response = types::GeneratePoStResponse::default();
325329

sector-builder-ffi/src/reexported.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ pub unsafe extern "C" fn sector_builder_ffi_reexported_generate_data_commitment(
7777
pub unsafe extern "C" fn sector_builder_ffi_reexported_verify_post(
7878
sector_size: u64,
7979
randomness: &[u8; 32],
80+
challenge_count: u64,
8081
sector_ids_ptr: *const u64,
8182
sector_ids_len: libc::size_t,
8283
flattened_comm_rs_ptr: *const u8,
@@ -93,6 +94,7 @@ pub unsafe extern "C" fn sector_builder_ffi_reexported_verify_post(
9394
filecoin_proofs_ffi::api::verify_post(
9495
sector_size,
9596
randomness,
97+
challenge_count,
9698
sector_ids_ptr,
9799
sector_ids_len,
98100
flattened_comm_rs_ptr,

sector-builder/src/builder.rs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,17 @@ impl<R: 'static + Send + std::io::Read> SectorBuilder<R> {
191191
&self,
192192
comm_rs: &[[u8; 32]],
193193
challenge_seed: &[u8; 32],
194+
challenge_count: u64,
194195
faults: Vec<SectorId>,
195196
) -> Result<Vec<Candidate>> {
196197
log_unrecov(self.run_blocking(|tx| {
197-
SchedulerTask::GenerateCandidates(Vec::from(comm_rs), *challenge_seed, faults, tx)
198+
SchedulerTask::GenerateCandidates(
199+
Vec::from(comm_rs),
200+
*challenge_seed,
201+
challenge_count,
202+
faults,
203+
tx,
204+
)
198205
}))
199206
}
200207

@@ -203,10 +210,17 @@ impl<R: 'static + Send + std::io::Read> SectorBuilder<R> {
203210
&self,
204211
comm_rs: &[[u8; 32]],
205212
challenge_seed: &[u8; 32],
213+
challenge_count: u64,
206214
winners: Vec<Candidate>,
207215
) -> Result<Vec<Vec<u8>>> {
208216
log_unrecov(self.run_blocking(|tx| {
209-
SchedulerTask::GeneratePoSt(Vec::from(comm_rs), *challenge_seed, winners, tx)
217+
SchedulerTask::GeneratePoSt(
218+
Vec::from(comm_rs),
219+
*challenge_seed,
220+
challenge_count,
221+
winners,
222+
tx,
223+
)
210224
}))
211225
}
212226

sector-builder/src/metadata_manager.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ impl<T: KeyValueStore> SectorMetadataManager<T> {
9898
&self,
9999
comm_rs: &[[u8; 32]],
100100
randomness: &[u8; 32],
101+
challenge_count: u64,
101102
faults: Option<Vec<SectorId>>,
102103
) -> GeneratePoStTaskPrototype {
103104
let fault_set: Option<HashSet<SectorId>> = faults.map(|f| f.into_iter().collect());
@@ -139,6 +140,7 @@ impl<T: KeyValueStore> SectorMetadataManager<T> {
139140

140141
GeneratePoStTaskPrototype {
141142
randomness: *randomness,
143+
challenge_count,
142144
post_config: self.sector_store.proofs_config().post_config,
143145
private_replicas: replicas,
144146
}

sector-builder/src/scheduler.rs

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,14 @@ pub enum SchedulerTask<T: Read + Send> {
5757
GenerateCandidates(
5858
Vec<[u8; 32]>,
5959
[u8; 32], // seed
60+
u64, // challenge count
6061
Vec<SectorId>, // faults
6162
mpsc::SyncSender<Result<Vec<Candidate>>>,
6263
),
6364
GeneratePoSt(
6465
Vec<[u8; 32]>,
6566
[u8; 32], // seed
67+
u64, // challenge count
6668
Vec<Candidate>, // winners
6769
mpsc::SyncSender<Result<Vec<Vec<u8>>>>,
6870
),
@@ -214,26 +216,39 @@ impl<T: KeyValueStore, V: 'static + Send + std::io::Read> TaskHandler<T, V> {
214216
tx.send(self.m.read_unsealed_bytes_from(result))
215217
.expects(FATAL_NOSEND);
216218
}
217-
SchedulerTask::GenerateCandidates(comm_rs, chg_seed, faults, tx) => {
218-
let proto =
219-
self.m
220-
.create_generate_post_task_proto(&comm_rs, &chg_seed, Some(faults));
219+
SchedulerTask::GenerateCandidates(
220+
comm_rs,
221+
challenge_seed,
222+
challenge_count,
223+
faults,
224+
tx,
225+
) => {
226+
let proto = self.m.create_generate_post_task_proto(
227+
&comm_rs,
228+
&challenge_seed,
229+
challenge_count,
230+
Some(faults),
231+
);
221232

222233
let callback = Box::new(move |r| tx.send(r).expects(FATAL_NOSEND));
223234

224235
self.worker_tx
225236
.send(WorkerTask::GenerateCandidates {
226237
randomness: proto.randomness,
238+
challenge_count: proto.challenge_count,
227239
private_replicas: proto.private_replicas,
228240
post_config: proto.post_config,
229241
callback,
230242
})
231243
.expects(FATAL_NOSEND);
232244
}
233-
SchedulerTask::GeneratePoSt(comm_rs, chg_seed, winners, tx) => {
234-
let proto = self
235-
.m
236-
.create_generate_post_task_proto(&comm_rs, &chg_seed, None);
245+
SchedulerTask::GeneratePoSt(comm_rs, challenge_seed, challenge_count, winners, tx) => {
246+
let proto = self.m.create_generate_post_task_proto(
247+
&comm_rs,
248+
&challenge_seed,
249+
challenge_count,
250+
None,
251+
);
237252

238253
let callback = Box::new(move |r| tx.send(r).expects(FATAL_NOSEND));
239254

sector-builder/src/worker.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ pub struct UnsealTaskPrototype {
3434
#[derive(Debug, Clone)]
3535
pub struct GeneratePoStTaskPrototype {
3636
pub(crate) randomness: [u8; 32],
37+
pub(crate) challenge_count: u64,
3738
pub(crate) post_config: PoStConfig,
3839
pub(crate) private_replicas: BTreeMap<SectorId, PrivateReplicaInfo>,
3940
}
@@ -74,6 +75,7 @@ type SealCommitCallback = Box<dyn FnOnce(SealCommitResult) + Send>;
7475
pub enum WorkerTask {
7576
GenerateCandidates {
7677
randomness: [u8; 32],
78+
challenge_count: u64,
7779
private_replicas: BTreeMap<SectorId, PrivateReplicaInfo>,
7880
post_config: PoStConfig,
7981
callback: GenerateCandidatesCallback,
@@ -139,13 +141,15 @@ impl Worker {
139141
match task {
140142
WorkerTask::GenerateCandidates {
141143
randomness,
144+
challenge_count,
142145
private_replicas,
143146
post_config,
144147
callback,
145148
} => {
146149
callback(filecoin_proofs::generate_candidates(
147150
post_config,
148151
&randomness,
152+
challenge_count,
149153
&private_replicas,
150154
prover_id,
151155
));

0 commit comments

Comments
 (0)