Skip to content

Commit 0fde8f9

Browse files
authored
feat: add support for Non-interactive PoRep (#98)
This commit introduces new registered proof types in order to support ni-porep.
1 parent ab7cb1f commit 0fde8f9

File tree

4 files changed

+201
-57
lines changed

4 files changed

+201
-57
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ version: 2.1
33
executors:
44
linux:
55
docker:
6-
- image: cimg/rust:1.67
6+
- image: cimg/rust:1.70
77
resource_class: small
88

99
jobs:

Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,9 @@ big-tests = []
3030
# This feature enables a fixed number of discarded rows for TreeR. The `FIL_PROOFS_ROWS_TO_DISCARD`
3131
# setting is ignored, no `TemporaryAux` file will be written.
3232
fixed-rows-to-discard = ["filecoin-proofs-v1/fixed-rows-to-discard", "storage-proofs-core/fixed-rows-to-discard"]
33+
34+
[patch.crates-io]
35+
filecoin-proofs = { git = "https://github.com/filecoin-project/rust-fil-proofs" }
36+
filecoin-hashers = { git = "https://github.com/filecoin-project/rust-fil-proofs" }
37+
fr32 = { git = "https://github.com/filecoin-project/rust-fil-proofs" }
38+
storage-proofs-core = { git = "https://github.com/filecoin-project/rust-fil-proofs" }

src/registry.rs

Lines changed: 140 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ pub enum RegisteredSealProof {
3333
StackedDrg512MiBV1_1_Feat_SyntheticPoRep,
3434
StackedDrg32GiBV1_1_Feat_SyntheticPoRep,
3535
StackedDrg64GiBV1_1_Feat_SyntheticPoRep,
36+
37+
StackedDrg2KiBV1_1_Feat_NonInteractivePoRep,
38+
StackedDrg8MiBV1_1_Feat_NonInteractivePoRep,
39+
StackedDrg512MiBV1_1_Feat_NonInteractivecPoRep,
40+
StackedDrg32GiBV1_1_Feat_NonInteractivePoRep,
41+
StackedDrg64GiBV1_1_Feat_NonInteractivePoRep,
3642
}
3743

3844
// This maps all registered seal proof enum types to porep_id values.
@@ -68,6 +74,26 @@ lazy_static! {
6874
RegisteredSealProof::StackedDrg64GiBV1_1_Feat_SyntheticPoRep,
6975
14
7076
),
77+
(
78+
RegisteredSealProof::StackedDrg2KiBV1_1_Feat_NonInteractivePoRep,
79+
15
80+
),
81+
(
82+
RegisteredSealProof::StackedDrg8MiBV1_1_Feat_NonInteractivePoRep,
83+
16
84+
),
85+
(
86+
RegisteredSealProof::StackedDrg512MiBV1_1_Feat_NonInteractivecPoRep,
87+
17
88+
),
89+
(
90+
RegisteredSealProof::StackedDrg32GiBV1_1_Feat_NonInteractivePoRep,
91+
18
92+
),
93+
(
94+
RegisteredSealProof::StackedDrg64GiBV1_1_Feat_NonInteractivePoRep,
95+
19
96+
),
7197
]
7298
.into_iter()
7399
.collect();
@@ -121,7 +147,12 @@ impl RegisteredSealProof {
121147
| StackedDrg8MiBV1_1_Feat_SyntheticPoRep
122148
| StackedDrg512MiBV1_1_Feat_SyntheticPoRep
123149
| StackedDrg32GiBV1_1_Feat_SyntheticPoRep
124-
| StackedDrg64GiBV1_1_Feat_SyntheticPoRep => ApiVersion::V1_1_0,
150+
| StackedDrg64GiBV1_1_Feat_SyntheticPoRep
151+
| StackedDrg2KiBV1_1_Feat_NonInteractivePoRep
152+
| StackedDrg8MiBV1_1_Feat_NonInteractivePoRep
153+
| StackedDrg512MiBV1_1_Feat_NonInteractivecPoRep
154+
| StackedDrg32GiBV1_1_Feat_NonInteractivePoRep
155+
| StackedDrg64GiBV1_1_Feat_NonInteractivePoRep => ApiVersion::V1_1_0,
125156
}
126157
}
127158

@@ -144,21 +175,26 @@ impl RegisteredSealProof {
144175
pub fn sector_size(self) -> SectorSize {
145176
use RegisteredSealProof::*;
146177
let size = match self {
147-
StackedDrg2KiBV1 | StackedDrg2KiBV1_1 | StackedDrg2KiBV1_1_Feat_SyntheticPoRep => {
148-
constants::SECTOR_SIZE_2_KIB
149-
}
150-
StackedDrg8MiBV1 | StackedDrg8MiBV1_1 | StackedDrg8MiBV1_1_Feat_SyntheticPoRep => {
151-
constants::SECTOR_SIZE_8_MIB
152-
}
178+
StackedDrg2KiBV1
179+
| StackedDrg2KiBV1_1
180+
| StackedDrg2KiBV1_1_Feat_SyntheticPoRep
181+
| StackedDrg2KiBV1_1_Feat_NonInteractivePoRep => constants::SECTOR_SIZE_2_KIB,
182+
StackedDrg8MiBV1
183+
| StackedDrg8MiBV1_1
184+
| StackedDrg8MiBV1_1_Feat_SyntheticPoRep
185+
| StackedDrg8MiBV1_1_Feat_NonInteractivePoRep => constants::SECTOR_SIZE_8_MIB,
153186
StackedDrg512MiBV1
154187
| StackedDrg512MiBV1_1
155-
| StackedDrg512MiBV1_1_Feat_SyntheticPoRep => constants::SECTOR_SIZE_512_MIB,
156-
StackedDrg32GiBV1 | StackedDrg32GiBV1_1 | StackedDrg32GiBV1_1_Feat_SyntheticPoRep => {
157-
constants::SECTOR_SIZE_32_GIB
158-
}
159-
StackedDrg64GiBV1 | StackedDrg64GiBV1_1 | StackedDrg64GiBV1_1_Feat_SyntheticPoRep => {
160-
constants::SECTOR_SIZE_64_GIB
161-
}
188+
| StackedDrg512MiBV1_1_Feat_SyntheticPoRep
189+
| StackedDrg512MiBV1_1_Feat_NonInteractivecPoRep => constants::SECTOR_SIZE_512_MIB,
190+
StackedDrg32GiBV1
191+
| StackedDrg32GiBV1_1
192+
| StackedDrg32GiBV1_1_Feat_SyntheticPoRep
193+
| StackedDrg32GiBV1_1_Feat_NonInteractivePoRep => constants::SECTOR_SIZE_32_GIB,
194+
StackedDrg64GiBV1
195+
| StackedDrg64GiBV1_1
196+
| StackedDrg64GiBV1_1_Feat_SyntheticPoRep
197+
| StackedDrg64GiBV1_1_Feat_NonInteractivePoRep => constants::SECTOR_SIZE_64_GIB,
162198
};
163199
SectorSize(size)
164200
}
@@ -202,6 +238,13 @@ impl RegisteredSealProof {
202238
.get(&constants::SECTOR_SIZE_64_GIB)
203239
.expect("invalid sector size")
204240
}
241+
StackedDrg2KiBV1_1_Feat_NonInteractivePoRep
242+
| StackedDrg8MiBV1_1_Feat_NonInteractivePoRep
243+
| StackedDrg512MiBV1_1_Feat_NonInteractivecPoRep
244+
| StackedDrg32GiBV1_1_Feat_NonInteractivePoRep
245+
| StackedDrg64GiBV1_1_Feat_NonInteractivePoRep => {
246+
constants::get_porep_non_interactive_partitions(self.sector_size().into())
247+
}
205248
}
206249
}
207250

@@ -224,7 +267,12 @@ impl RegisteredSealProof {
224267
| StackedDrg8MiBV1_1_Feat_SyntheticPoRep
225268
| StackedDrg512MiBV1_1_Feat_SyntheticPoRep
226269
| StackedDrg32GiBV1_1_Feat_SyntheticPoRep
227-
| StackedDrg64GiBV1_1_Feat_SyntheticPoRep => {
270+
| StackedDrg64GiBV1_1_Feat_SyntheticPoRep
271+
| StackedDrg2KiBV1_1_Feat_NonInteractivePoRep
272+
| StackedDrg8MiBV1_1_Feat_NonInteractivePoRep
273+
| StackedDrg512MiBV1_1_Feat_NonInteractivecPoRep
274+
| StackedDrg32GiBV1_1_Feat_NonInteractivePoRep
275+
| StackedDrg64GiBV1_1_Feat_NonInteractivePoRep => {
228276
filecoin_proofs_v1::SINGLE_PARTITION_PROOF_LEN
229277
}
230278
}
@@ -289,6 +337,20 @@ impl RegisteredSealProof {
289337
api_version: self.version(),
290338
api_features: vec![ApiFeature::SyntheticPoRep],
291339
}
340+
}
341+
StackedDrg2KiBV1_1_Feat_NonInteractivePoRep
342+
| StackedDrg8MiBV1_1_Feat_NonInteractivePoRep
343+
| StackedDrg512MiBV1_1_Feat_NonInteractivecPoRep
344+
| StackedDrg32GiBV1_1_Feat_NonInteractivePoRep
345+
| StackedDrg64GiBV1_1_Feat_NonInteractivePoRep => {
346+
assert_eq!(self.version(), ApiVersion::V1_1_0);
347+
PoRepConfig {
348+
sector_size: self.sector_size(),
349+
partitions: PoRepProofPartitions(self.partitions()),
350+
porep_id: self.porep_id(),
351+
api_version: self.version(),
352+
api_features: vec![ApiFeature::NonInteractivePoRep],
353+
}
292354
} // _ => panic!("Can only be called on V1 configs"),
293355
}
294356
}
@@ -370,21 +432,26 @@ impl RegisteredSealProof {
370432
use RegisteredPoStProof::*;
371433
use RegisteredSealProof::*;
372434
match self {
373-
StackedDrg2KiBV1 | StackedDrg2KiBV1_1 | StackedDrg2KiBV1_1_Feat_SyntheticPoRep => {
374-
StackedDrgWinning2KiBV1
375-
}
376-
StackedDrg8MiBV1 | StackedDrg8MiBV1_1 | StackedDrg8MiBV1_1_Feat_SyntheticPoRep => {
377-
StackedDrgWinning8MiBV1
378-
}
435+
StackedDrg2KiBV1
436+
| StackedDrg2KiBV1_1
437+
| StackedDrg2KiBV1_1_Feat_SyntheticPoRep
438+
| StackedDrg2KiBV1_1_Feat_NonInteractivePoRep => StackedDrgWinning2KiBV1,
439+
StackedDrg8MiBV1
440+
| StackedDrg8MiBV1_1
441+
| StackedDrg8MiBV1_1_Feat_SyntheticPoRep
442+
| StackedDrg8MiBV1_1_Feat_NonInteractivePoRep => StackedDrgWinning8MiBV1,
379443
StackedDrg512MiBV1
380444
| StackedDrg512MiBV1_1
381-
| StackedDrg512MiBV1_1_Feat_SyntheticPoRep => StackedDrgWinning512MiBV1,
382-
StackedDrg32GiBV1 | StackedDrg32GiBV1_1 | StackedDrg32GiBV1_1_Feat_SyntheticPoRep => {
383-
StackedDrgWinning32GiBV1
384-
}
385-
StackedDrg64GiBV1 | StackedDrg64GiBV1_1 | StackedDrg64GiBV1_1_Feat_SyntheticPoRep => {
386-
StackedDrgWinning64GiBV1
387-
}
445+
| StackedDrg512MiBV1_1_Feat_SyntheticPoRep
446+
| StackedDrg512MiBV1_1_Feat_NonInteractivecPoRep => StackedDrgWinning512MiBV1,
447+
StackedDrg32GiBV1
448+
| StackedDrg32GiBV1_1
449+
| StackedDrg32GiBV1_1_Feat_SyntheticPoRep
450+
| StackedDrg32GiBV1_1_Feat_NonInteractivePoRep => StackedDrgWinning32GiBV1,
451+
StackedDrg64GiBV1
452+
| StackedDrg64GiBV1_1
453+
| StackedDrg64GiBV1_1_Feat_SyntheticPoRep
454+
| StackedDrg64GiBV1_1_Feat_NonInteractivePoRep => StackedDrgWinning64GiBV1,
388455
}
389456
}
390457

@@ -400,21 +467,26 @@ impl RegisteredSealProof {
400467
use RegisteredPoStProof::*;
401468
use RegisteredSealProof::*;
402469
match self {
403-
StackedDrg2KiBV1 | StackedDrg2KiBV1_1 | StackedDrg2KiBV1_1_Feat_SyntheticPoRep => {
404-
StackedDrgWindow2KiBV1_2
405-
}
406-
StackedDrg8MiBV1 | StackedDrg8MiBV1_1 | StackedDrg8MiBV1_1_Feat_SyntheticPoRep => {
407-
StackedDrgWindow8MiBV1_2
408-
}
470+
StackedDrg2KiBV1
471+
| StackedDrg2KiBV1_1
472+
| StackedDrg2KiBV1_1_Feat_SyntheticPoRep
473+
| StackedDrg2KiBV1_1_Feat_NonInteractivePoRep => StackedDrgWindow2KiBV1_2,
474+
StackedDrg8MiBV1
475+
| StackedDrg8MiBV1_1
476+
| StackedDrg8MiBV1_1_Feat_SyntheticPoRep
477+
| StackedDrg8MiBV1_1_Feat_NonInteractivePoRep => StackedDrgWindow8MiBV1_2,
409478
StackedDrg512MiBV1
410479
| StackedDrg512MiBV1_1
411-
| StackedDrg512MiBV1_1_Feat_SyntheticPoRep => StackedDrgWindow512MiBV1_2,
412-
StackedDrg32GiBV1 | StackedDrg32GiBV1_1 | StackedDrg32GiBV1_1_Feat_SyntheticPoRep => {
413-
StackedDrgWindow32GiBV1_2
414-
}
415-
StackedDrg64GiBV1 | StackedDrg64GiBV1_1 | StackedDrg64GiBV1_1_Feat_SyntheticPoRep => {
416-
StackedDrgWindow64GiBV1_2
417-
}
480+
| StackedDrg512MiBV1_1_Feat_SyntheticPoRep
481+
| StackedDrg512MiBV1_1_Feat_NonInteractivecPoRep => StackedDrgWindow512MiBV1_2,
482+
StackedDrg32GiBV1
483+
| StackedDrg32GiBV1_1
484+
| StackedDrg32GiBV1_1_Feat_SyntheticPoRep
485+
| StackedDrg32GiBV1_1_Feat_NonInteractivePoRep => StackedDrgWindow32GiBV1_2,
486+
StackedDrg64GiBV1
487+
| StackedDrg64GiBV1_1
488+
| StackedDrg64GiBV1_1_Feat_SyntheticPoRep
489+
| StackedDrg64GiBV1_1_Feat_NonInteractivePoRep => StackedDrgWindow64GiBV1_2,
418490
}
419491
}
420492
}
@@ -876,7 +948,7 @@ mod tests {
876948
use super::*;
877949
use filecoin_proofs_v1::MAX_LEGACY_REGISTERED_SEAL_PROOF_ID;
878950

879-
const REGISTERED_SEAL_PROOFS: [RegisteredSealProof; 15] = [
951+
const REGISTERED_SEAL_PROOFS: [RegisteredSealProof; 20] = [
880952
RegisteredSealProof::StackedDrg2KiBV1,
881953
RegisteredSealProof::StackedDrg8MiBV1,
882954
RegisteredSealProof::StackedDrg512MiBV1,
@@ -892,6 +964,11 @@ mod tests {
892964
RegisteredSealProof::StackedDrg512MiBV1_1_Feat_SyntheticPoRep,
893965
RegisteredSealProof::StackedDrg32GiBV1_1_Feat_SyntheticPoRep,
894966
RegisteredSealProof::StackedDrg64GiBV1_1_Feat_SyntheticPoRep,
967+
RegisteredSealProof::StackedDrg2KiBV1_1_Feat_NonInteractivePoRep,
968+
RegisteredSealProof::StackedDrg8MiBV1_1_Feat_NonInteractivePoRep,
969+
RegisteredSealProof::StackedDrg512MiBV1_1_Feat_NonInteractivecPoRep,
970+
RegisteredSealProof::StackedDrg32GiBV1_1_Feat_NonInteractivePoRep,
971+
RegisteredSealProof::StackedDrg64GiBV1_1_Feat_NonInteractivePoRep,
895972
];
896973

897974
#[test]
@@ -948,6 +1025,21 @@ mod tests {
9481025
RegisteredSealProof::StackedDrg64GiBV1_1_Feat_SyntheticPoRep => {
9491026
"0e00000000000000000000000000000000000000000000000000000000000000"
9501027
}
1028+
RegisteredSealProof::StackedDrg2KiBV1_1_Feat_NonInteractivePoRep => {
1029+
"0f00000000000000000000000000000000000000000000000000000000000000"
1030+
}
1031+
RegisteredSealProof::StackedDrg8MiBV1_1_Feat_NonInteractivePoRep => {
1032+
"1000000000000000000000000000000000000000000000000000000000000000"
1033+
}
1034+
RegisteredSealProof::StackedDrg512MiBV1_1_Feat_NonInteractivecPoRep => {
1035+
"1100000000000000000000000000000000000000000000000000000000000000"
1036+
}
1037+
RegisteredSealProof::StackedDrg32GiBV1_1_Feat_NonInteractivePoRep => {
1038+
"1200000000000000000000000000000000000000000000000000000000000000"
1039+
}
1040+
RegisteredSealProof::StackedDrg64GiBV1_1_Feat_NonInteractivePoRep => {
1041+
"1300000000000000000000000000000000000000000000000000000000000000"
1042+
}
9511043
};
9521044
let hex: String = rsp
9531045
.porep_id()
@@ -985,7 +1077,12 @@ mod tests {
9851077
| RegisteredSealProof::StackedDrg8MiBV1_1_Feat_SyntheticPoRep
9861078
| RegisteredSealProof::StackedDrg512MiBV1_1_Feat_SyntheticPoRep
9871079
| RegisteredSealProof::StackedDrg32GiBV1_1_Feat_SyntheticPoRep
988-
| RegisteredSealProof::StackedDrg64GiBV1_1_Feat_SyntheticPoRep => {
1080+
| RegisteredSealProof::StackedDrg64GiBV1_1_Feat_SyntheticPoRep
1081+
| RegisteredSealProof::StackedDrg2KiBV1_1_Feat_NonInteractivePoRep
1082+
| RegisteredSealProof::StackedDrg8MiBV1_1_Feat_NonInteractivePoRep
1083+
| RegisteredSealProof::StackedDrg512MiBV1_1_Feat_NonInteractivecPoRep
1084+
| RegisteredSealProof::StackedDrg32GiBV1_1_Feat_NonInteractivePoRep
1085+
| RegisteredSealProof::StackedDrg64GiBV1_1_Feat_NonInteractivePoRep => {
9891086
assert!(!is_legacy)
9901087
}
9911088
}

0 commit comments

Comments
 (0)