Repository: WorldDbs/rust-fil-proofs Branch: master Commit: 9ad3b80a9702 Files: 728 Total size: 5.3 MB Directory structure: gitextract_z6s4fmui/ ├── .circleci/ │ └── config.yml ├── .clippy.toml ├── .dockerignore ├── .gitignore ├── CHANGELOG.md ├── CODEOWNERS ├── CONTRIBUTING.md ├── COPYRIGHT ├── Cargo.toml ├── Dockerfile-ci ├── Dockerfile-profile ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.md ├── SECURITY.md ├── bench.config.toml ├── build.rs ├── console/ │ ├── bridge.go │ ├── bridge_test.go │ ├── console.go │ ├── console_test.go │ ├── prompt/ │ │ └── prompter.go │ └── testdata/ │ ├── exec.js │ └── preload.js ├── eth/ │ ├── api.go │ ├── api_backend.go │ ├── api_test.go │ ├── backend.go │ ├── bloombits.go │ ├── discovery.go │ ├── downloader/ │ │ ├── api.go │ │ ├── downloader.go │ │ ├── downloader_test.go │ │ ├── events.go │ │ ├── metrics.go │ │ ├── modes.go │ │ ├── peer.go │ │ ├── peer_test.go │ │ ├── queue.go │ │ ├── queue_test.go │ │ ├── resultstore.go │ │ ├── statesync.go │ │ ├── testchain_test.go │ │ └── types.go │ ├── ethconfig/ │ │ ├── config.go │ │ └── gen_config.go │ ├── fetcher/ │ │ ├── block_fetcher.go │ │ ├── block_fetcher_test.go │ │ ├── tx_fetcher.go │ │ └── tx_fetcher_test.go │ ├── filters/ │ │ ├── api.go │ │ ├── api_test.go │ │ ├── bench_test.go │ │ ├── filter.go │ │ ├── filter_system.go │ │ ├── filter_system_test.go │ │ └── filter_test.go │ ├── gasprice/ │ │ ├── gasprice.go │ │ └── gasprice_test.go │ ├── handler.go │ ├── handler_eth.go │ ├── handler_eth_test.go │ ├── handler_snap.go │ ├── handler_test.go │ ├── peer.go │ ├── peerset.go │ ├── protocols/ │ │ ├── eth/ │ │ │ ├── broadcast.go │ │ │ ├── discovery.go │ │ │ ├── handler.go │ │ │ ├── handler_test.go │ │ │ ├── handlers.go │ │ │ ├── handshake.go │ │ │ ├── handshake_test.go │ │ │ ├── peer.go │ │ │ ├── peer_test.go │ │ │ ├── protocol.go │ │ │ └── protocol_test.go │ │ └── snap/ │ │ ├── discovery.go │ │ ├── handler.go │ │ ├── peer.go │ │ ├── protocol.go │ │ ├── sync.go │ │ └── sync_test.go │ ├── state_accessor.go │ ├── sync.go │ ├── sync_test.go │ └── tracers/ │ ├── api.go │ ├── api_test.go │ ├── internal/ │ │ └── tracers/ │ │ ├── 4byte_tracer.js │ │ ├── assets.go │ │ ├── bigram_tracer.js │ │ ├── call_tracer.js │ │ ├── evmdis_tracer.js │ │ ├── noop_tracer.js │ │ ├── opcount_tracer.js │ │ ├── prestate_tracer.js │ │ ├── tracers.go │ │ ├── trigram_tracer.js │ │ └── unigram_tracer.js │ ├── testdata/ │ │ ├── call_tracer_create.json │ │ ├── call_tracer_deep_calls.json │ │ ├── call_tracer_delegatecall.json │ │ ├── call_tracer_inner_create_oog_outer_throw.json │ │ ├── call_tracer_inner_instafail.json │ │ ├── call_tracer_inner_throw_outer_revert.json │ │ ├── call_tracer_oog.json │ │ ├── call_tracer_revert.json │ │ ├── call_tracer_revert_reason.json │ │ ├── call_tracer_simple.json │ │ └── call_tracer_throw.json │ ├── tracer.go │ ├── tracer_test.go │ ├── tracers.go │ └── tracers_test.go ├── ethclient/ │ ├── ethclient.go │ ├── ethclient_test.go │ └── signer.go ├── ethstats/ │ └── ethstats.go ├── ffi-toolkit/ │ ├── Cargo.toml │ ├── LICENSE-APACHE │ ├── LICENSE-MIT │ ├── README.md │ └── src/ │ └── lib.rs ├── fil-proofs-param/ │ ├── Cargo.toml │ ├── LICENSE-APACHE │ ├── LICENSE-MIT │ ├── README.md │ ├── scripts/ │ │ ├── pin-params.sh │ │ └── verify-parameters-json.sh │ ├── src/ │ │ ├── bin/ │ │ │ ├── fakeipfsadd.rs │ │ │ ├── paramcache.rs │ │ │ ├── paramfetch.rs │ │ │ └── parampublish.rs │ │ └── lib.rs │ └── tests/ │ ├── paramfetch/ │ │ ├── mod.rs │ │ ├── session.rs │ │ └── support/ │ │ └── mod.rs │ ├── parampublish/ │ │ ├── mod.rs │ │ ├── prompts_to_publish.rs │ │ ├── read_metadata_files.rs │ │ ├── support/ │ │ │ ├── mod.rs │ │ │ └── session.rs │ │ └── write_json_manifest.rs │ ├── suite.rs │ └── support/ │ └── mod.rs ├── fil-proofs-tooling/ │ ├── .gitignore │ ├── Cargo.toml │ ├── LICENSE-APACHE │ ├── LICENSE-MIT │ ├── README.md │ ├── release.toml │ ├── scripts/ │ │ ├── aggregate-benchmarks.sh │ │ ├── benchy.sh │ │ ├── micro.sh │ │ ├── retry.sh │ │ ├── run-remote.sh │ │ ├── with-dots.sh │ │ └── with-lock.sh │ └── src/ │ ├── bin/ │ │ ├── benchy/ │ │ │ ├── hash_fns.rs │ │ │ ├── main.rs │ │ │ ├── merkleproofs.rs │ │ │ ├── prodbench.rs │ │ │ ├── stacked.rs │ │ │ ├── window_post.rs │ │ │ └── winning_post.rs │ │ ├── check_parameters/ │ │ │ └── main.rs │ │ ├── circuitinfo/ │ │ │ └── main.rs │ │ ├── fdlimit/ │ │ │ └── main.rs │ │ ├── gen_graph_cache/ │ │ │ └── main.rs │ │ ├── gpu-cpu-test/ │ │ │ ├── README.md │ │ │ └── main.rs │ │ ├── micro.rs │ │ ├── settings/ │ │ │ └── main.rs │ │ └── update_tree_r_cache/ │ │ └── main.rs │ ├── lib.rs │ ├── measure.rs │ ├── metadata.rs │ └── shared.rs ├── filecoin-hashers/ │ ├── Cargo.toml │ ├── LICENSE-APACHE │ ├── LICENSE-MIT │ ├── README.md │ └── src/ │ ├── blake2s.rs │ ├── lib.rs │ ├── poseidon.rs │ ├── poseidon_types.rs │ ├── sha256.rs │ └── types.rs ├── filecoin-proofs/ │ ├── .gitignore │ ├── Cargo.toml │ ├── LICENSE-APACHE │ ├── LICENSE-MIT │ ├── README.md │ ├── benches/ │ │ └── preprocessing.rs │ ├── build.rs │ ├── cbindgen.toml │ ├── examples/ │ │ ├── beacon-post.rs │ │ ├── drgporep-vanilla-disk.rs │ │ ├── drgporep-vanilla.rs │ │ ├── drgporep.rs │ │ ├── encoding.rs │ │ ├── ffi/ │ │ │ ├── .gitignore │ │ │ └── main.rs │ │ ├── merklepor.rs │ │ └── zigzag.rs │ ├── parameters.json │ ├── src/ │ │ ├── api/ │ │ │ ├── fake_seal.rs │ │ │ ├── internal.rs │ │ │ ├── mod.rs │ │ │ ├── post.rs │ │ │ ├── post_util.rs │ │ │ ├── responses.rs │ │ │ ├── seal.rs │ │ │ ├── sector_builder/ │ │ │ │ ├── errors.rs │ │ │ │ ├── helpers/ │ │ │ │ │ ├── add_piece.rs │ │ │ │ │ ├── get_seal_status.rs │ │ │ │ │ ├── get_sectors_ready_for_sealing.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── retrieve_piece.rs │ │ │ │ │ ├── seal.rs │ │ │ │ │ └── snapshots.rs │ │ │ │ ├── kv_store/ │ │ │ │ │ ├── fs.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── metadata.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── scheduler.rs │ │ │ │ ├── sealer.rs │ │ │ │ └── state.rs │ │ │ ├── util.rs │ │ │ ├── window_post.rs │ │ │ └── winning_post.rs │ │ ├── bin/ │ │ │ ├── fakeipfsadd.rs │ │ │ ├── paramcache.rs │ │ │ ├── paramfetch.rs │ │ │ ├── paramgen.rs │ │ │ ├── parampublish.rs │ │ │ └── phase2.rs │ │ ├── caches.rs │ │ ├── commitment_reader.rs │ │ ├── constants.rs │ │ ├── error.rs │ │ ├── fr32.rs │ │ ├── fr32_reader.rs │ │ ├── lib.rs │ │ ├── param.rs │ │ ├── parameters.rs │ │ ├── pieces.rs │ │ ├── serde_big_array.rs │ │ ├── singletons.rs │ │ └── types/ │ │ ├── bytes_amount.rs │ │ ├── mod.rs │ │ ├── piece_info.rs │ │ ├── porep_config.rs │ │ ├── porep_proof_partitions.rs │ │ ├── post_config.rs │ │ ├── post_proof_partitions.rs │ │ ├── private_replica_info.rs │ │ ├── public_replica_info.rs │ │ ├── sector_class.rs │ │ └── sector_size.rs │ └── tests/ │ ├── api.rs │ ├── constants.rs │ ├── mod.rs │ ├── paramfetch/ │ │ ├── mod.rs │ │ ├── prompts_to_fetch.rs │ │ └── support/ │ │ ├── mod.rs │ │ └── session.rs │ ├── parampublish/ │ │ ├── mod.rs │ │ ├── prompts_to_publish.rs │ │ ├── read_metadata_files.rs │ │ ├── support/ │ │ │ ├── mod.rs │ │ │ └── session.rs │ │ └── write_json_manifest.rs │ ├── pieces.rs │ ├── suite.rs │ └── support/ │ └── mod.rs ├── fr32/ │ ├── Cargo.toml │ ├── benches/ │ │ └── fr.rs │ └── src/ │ ├── convert.rs │ ├── lib.rs │ ├── padding.rs │ └── reader.rs ├── graphql/ │ ├── graphiql.go │ ├── graphql.go │ ├── graphql_test.go │ ├── schema.go │ └── service.go ├── issue_template.md ├── les/ │ ├── api.go │ ├── api_backend.go │ ├── api_test.go │ ├── bloombits.go │ ├── checkpointoracle/ │ │ └── oracle.go │ ├── client.go │ ├── client_handler.go │ ├── clientpool.go │ ├── clientpool_test.go │ ├── commons.go │ ├── costtracker.go │ ├── distributor.go │ ├── distributor_test.go │ ├── enr_entry.go │ ├── fetcher.go │ ├── fetcher_test.go │ ├── flowcontrol/ │ │ ├── control.go │ │ ├── manager.go │ │ └── manager_test.go │ ├── handler_test.go │ ├── metrics.go │ ├── odr.go │ ├── odr_requests.go │ ├── odr_test.go │ ├── peer.go │ ├── peer_test.go │ ├── protocol.go │ ├── pruner.go │ ├── pruner_test.go │ ├── request_test.go │ ├── retrieve.go │ ├── server.go │ ├── server_handler.go │ ├── server_requests.go │ ├── servingqueue.go │ ├── state_accessor.go │ ├── sync.go │ ├── sync_test.go │ ├── test_helper.go │ ├── txrelay.go │ ├── ulc.go │ ├── ulc_test.go │ ├── utils/ │ │ ├── exec_queue.go │ │ ├── exec_queue_test.go │ │ ├── expiredvalue.go │ │ ├── expiredvalue_test.go │ │ ├── limiter.go │ │ ├── limiter_test.go │ │ ├── timeutils.go │ │ ├── timeutils_test.go │ │ ├── weighted_select.go │ │ └── weighted_select_test.go │ └── vflux/ │ ├── client/ │ │ ├── api.go │ │ ├── fillset.go │ │ ├── queueiterator.go │ │ ├── queueiterator_test.go │ │ ├── requestbasket.go │ │ ├── requestbasket_test.go │ │ ├── serverpool.go │ │ ├── serverpool_test.go │ │ ├── timestats.go │ │ ├── timestats_test.go │ │ ├── valuetracker.go │ │ ├── valuetracker_test.go │ │ ├── wrsiterator.go │ │ └── wrsiterator_test.go │ ├── requests.go │ └── server/ │ ├── balance.go │ ├── balance_test.go │ ├── balance_tracker.go │ ├── clientdb.go │ ├── prioritypool.go │ ├── prioritypool_test.go │ └── service.go ├── liblangutil/ │ ├── CMakeLists.txt │ ├── CharStream.cpp │ ├── EVMVersion.cpp │ ├── ErrorReporter.cpp │ ├── Exceptions.cpp │ ├── ParserBase.cpp │ ├── Scanner.cpp │ ├── SemVerHandler.cpp │ ├── SourceLocation.cpp │ ├── SourceReferenceExtractor.cpp │ ├── SourceReferenceFormatter.cpp │ └── Token.cpp ├── logging-toolkit/ │ ├── Cargo.toml │ └── src/ │ └── lib.rs ├── parameters.json ├── proptest-regressions/ │ └── crypto/ │ └── sloth.txt ├── release.toml ├── rust-fil-proofs.config.toml.sample ├── rust-toolchain ├── scripts/ │ ├── bench-parser.sh │ ├── package-release.sh │ ├── pin-params.sh │ ├── publish-release.sh │ └── verify-parameters-json.sh ├── sector-base/ │ ├── .gitignore │ ├── Cargo.toml │ ├── LICENSE-APACHE │ ├── LICENSE-MIT │ ├── README.md │ └── src/ │ ├── api/ │ │ ├── disk_backed_storage.rs │ │ ├── errors.rs │ │ ├── mod.rs │ │ ├── sector_store.rs │ │ └── util/ │ │ └── mod.rs │ ├── error.rs │ ├── io/ │ │ ├── fr32.rs │ │ └── mod.rs │ └── lib.rs ├── sha2raw/ │ ├── Cargo.toml │ ├── README.md │ └── src/ │ ├── consts.rs │ ├── lib.rs │ ├── platform.rs │ ├── sha256.rs │ ├── sha256_intrinsics.rs │ └── sha256_utils.rs ├── src/ │ ├── bin/ │ │ └── bencher.rs │ └── lib.rs ├── storage-backend/ │ ├── .gitignore │ ├── Cargo.toml │ ├── LICENSE-APACHE │ ├── LICENSE-MIT │ ├── README.md │ └── src/ │ └── lib.rs ├── storage-proofs/ │ ├── .gitignore │ ├── Cargo.toml │ ├── LICENSE-APACHE │ ├── LICENSE-MIT │ ├── README.md │ ├── benches/ │ │ ├── blake2s.rs │ │ ├── drgraph.rs │ │ ├── pedersen.rs │ │ ├── preprocessing.rs │ │ ├── sha256.rs │ │ └── sloth.rs │ ├── build.rs │ ├── core/ │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── benches/ │ │ │ ├── blake2s.rs │ │ │ ├── drgraph.rs │ │ │ ├── encode.rs │ │ │ ├── fr.rs │ │ │ ├── merkle.rs │ │ │ ├── misc.rs │ │ │ ├── pedersen.rs │ │ │ ├── sha256.rs │ │ │ └── xor.rs │ │ └── src/ │ │ ├── cache_key.rs │ │ ├── compound_proof.rs │ │ ├── crypto/ │ │ │ ├── aes.rs │ │ │ ├── feistel.rs │ │ │ ├── mod.rs │ │ │ ├── pedersen.rs │ │ │ ├── sloth.rs │ │ │ └── xor.rs │ │ ├── data.rs │ │ ├── drgraph.rs │ │ ├── error.rs │ │ ├── fr32.rs │ │ ├── gadgets/ │ │ │ ├── bench/ │ │ │ │ └── mod.rs │ │ │ ├── constraint.rs │ │ │ ├── encode.rs │ │ │ ├── insertion.rs │ │ │ ├── metric/ │ │ │ │ └── mod.rs │ │ │ ├── mod.rs │ │ │ ├── multipack.rs │ │ │ ├── pedersen.rs │ │ │ ├── por.rs │ │ │ ├── test/ │ │ │ │ └── mod.rs │ │ │ ├── uint64.rs │ │ │ ├── variables.rs │ │ │ └── xor.rs │ │ ├── hasher/ │ │ │ ├── blake2s.rs │ │ │ ├── mod.rs │ │ │ ├── pedersen.rs │ │ │ ├── poseidon.rs │ │ │ ├── sha256.rs │ │ │ └── types.rs │ │ ├── lib.rs │ │ ├── measurements.rs │ │ ├── merkle/ │ │ │ ├── builders.rs │ │ │ ├── mod.rs │ │ │ ├── proof.rs │ │ │ └── tree.rs │ │ ├── multi_proof.rs │ │ ├── parameter_cache.rs │ │ ├── partitions.rs │ │ ├── pieces.rs │ │ ├── por.rs │ │ ├── proof.rs │ │ ├── sector.rs │ │ ├── settings.rs │ │ ├── test_helper.rs │ │ └── util.rs │ ├── parameters.json │ ├── porep/ │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── benches/ │ │ │ ├── batch_hasher.rs │ │ │ ├── encode.rs │ │ │ └── parents.rs │ │ ├── parent_cache.json │ │ └── src/ │ │ ├── drg/ │ │ │ ├── circuit.rs │ │ │ ├── compound.rs │ │ │ ├── mod.rs │ │ │ └── vanilla.rs │ │ ├── encode.rs │ │ ├── lib.rs │ │ ├── macros.rs │ │ ├── nse/ │ │ │ ├── mod.rs │ │ │ └── vanilla/ │ │ │ ├── batch_hasher.rs │ │ │ ├── butterfly_graph.rs │ │ │ ├── challenges.rs │ │ │ ├── config.rs │ │ │ ├── expander_graph.rs │ │ │ ├── labels.rs │ │ │ ├── mod.rs │ │ │ ├── nse.rs │ │ │ ├── porep.rs │ │ │ └── proof_scheme.rs │ │ └── stacked/ │ │ ├── circuit/ │ │ │ ├── column.rs │ │ │ ├── column_proof.rs │ │ │ ├── create_label.rs │ │ │ ├── hash.rs │ │ │ ├── mod.rs │ │ │ ├── params.rs │ │ │ └── proof.rs │ │ ├── mod.rs │ │ └── vanilla/ │ │ ├── cache.rs │ │ ├── challenges.rs │ │ ├── column.rs │ │ ├── column_proof.rs │ │ ├── create_label/ │ │ │ ├── mod.rs │ │ │ ├── multi.rs │ │ │ └── single.rs │ │ ├── create_label.rs │ │ ├── encoding_proof.rs │ │ ├── graph.rs │ │ ├── hash.rs │ │ ├── labeling_proof.rs │ │ ├── macros.rs │ │ ├── memory_handling.rs │ │ ├── mod.rs │ │ ├── params.rs │ │ ├── porep.rs │ │ ├── proof.rs │ │ ├── proof_scheme.rs │ │ └── utils.rs │ ├── post/ │ │ ├── Cargo.toml │ │ ├── README.md │ │ └── src/ │ │ ├── election/ │ │ │ ├── circuit.rs │ │ │ ├── compound.rs │ │ │ ├── mod.rs │ │ │ └── vanilla.rs │ │ ├── fallback/ │ │ │ ├── circuit.rs │ │ │ ├── compound.rs │ │ │ ├── mod.rs │ │ │ └── vanilla.rs │ │ ├── lib.rs │ │ └── rational/ │ │ ├── circuit.rs │ │ ├── compound.rs │ │ ├── mod.rs │ │ └── vanilla.rs │ └── src/ │ ├── batchpost.rs │ ├── beacon_post.rs │ ├── challenge_derivation.rs │ ├── circuit/ │ │ ├── beacon_post.rs │ │ ├── bench/ │ │ │ └── mod.rs │ │ ├── constraint.rs │ │ ├── drgporep.rs │ │ ├── kdf.rs │ │ ├── mod.rs │ │ ├── multi_proof.rs │ │ ├── pedersen.rs │ │ ├── por.rs │ │ ├── porc.rs │ │ ├── ppor/ │ │ │ └── mod.rs │ │ ├── sloth.rs │ │ ├── test/ │ │ │ └── mod.rs │ │ ├── variables.rs │ │ ├── vdf_post.rs │ │ ├── xor.rs │ │ └── zigzag.rs │ ├── compound_proof.rs │ ├── crypto/ │ │ ├── aes.rs │ │ ├── blake2s.rs │ │ ├── feistel.rs │ │ ├── kdf.rs │ │ ├── mod.rs │ │ ├── pedersen.rs │ │ ├── sloth.rs │ │ └── xor.rs │ ├── drgporep.rs │ ├── drgraph.rs │ ├── error.rs │ ├── example_helper.rs │ ├── fr32.rs │ ├── hasher/ │ │ ├── blake2s.rs │ │ ├── digest.rs │ │ ├── mod.rs │ │ ├── pedersen.rs │ │ ├── sha256.rs │ │ └── types.rs │ ├── layered_drgporep.rs │ ├── lib.rs │ ├── merkle.rs │ ├── merklepor.rs │ ├── parameter_cache.rs │ ├── partitions.rs │ ├── piece_inclusion_proof.rs │ ├── porc.rs │ ├── porep.rs │ ├── proof.rs │ ├── test_helper.rs │ ├── util.rs │ ├── vde.rs │ ├── vdf.rs │ ├── vdf_post.rs │ ├── vdf_sloth.rs │ ├── zigzag_drgporep.rs │ └── zigzag_graph.rs ├── storage-proofs-core/ │ ├── Cargo.toml │ ├── README.md │ ├── benches/ │ │ ├── blake2s.rs │ │ ├── drgraph.rs │ │ ├── merkle.rs │ │ ├── misc.rs │ │ ├── sha256.rs │ │ └── xor.rs │ ├── src/ │ │ ├── api_version.rs │ │ ├── cache_key.rs │ │ ├── compound_proof.rs │ │ ├── crypto/ │ │ │ ├── aes.rs │ │ │ ├── feistel.rs │ │ │ ├── mod.rs │ │ │ ├── sloth.rs │ │ │ └── xor.rs │ │ ├── data.rs │ │ ├── drgraph.rs │ │ ├── error.rs │ │ ├── gadgets/ │ │ │ ├── constraint.rs │ │ │ ├── encode.rs │ │ │ ├── insertion.rs │ │ │ ├── mod.rs │ │ │ ├── multipack.rs │ │ │ ├── por.rs │ │ │ ├── uint64.rs │ │ │ ├── variables.rs │ │ │ └── xor.rs │ │ ├── lib.rs │ │ ├── measurements.rs │ │ ├── merkle/ │ │ │ ├── builders.rs │ │ │ ├── mod.rs │ │ │ ├── proof.rs │ │ │ └── tree.rs │ │ ├── multi_proof.rs │ │ ├── parameter_cache.rs │ │ ├── partitions.rs │ │ ├── pieces.rs │ │ ├── por.rs │ │ ├── proof.rs │ │ ├── sector.rs │ │ ├── settings.rs │ │ ├── test_helper.rs │ │ └── util.rs │ └── tests/ │ ├── por_circuit.rs │ ├── por_compound.rs │ └── por_vanilla.rs ├── storage-proofs-porep/ │ ├── Cargo.toml │ ├── README.md │ ├── benches/ │ │ ├── encode.rs │ │ └── parents.rs │ ├── parent_cache.json │ ├── src/ │ │ ├── drg/ │ │ │ ├── circuit.rs │ │ │ ├── compound.rs │ │ │ ├── mod.rs │ │ │ └── vanilla.rs │ │ ├── encode.rs │ │ ├── lib.rs │ │ └── stacked/ │ │ ├── circuit/ │ │ │ ├── column.rs │ │ │ ├── column_proof.rs │ │ │ ├── create_label.rs │ │ │ ├── hash.rs │ │ │ ├── mod.rs │ │ │ ├── params.rs │ │ │ └── proof.rs │ │ ├── mod.rs │ │ └── vanilla/ │ │ ├── cache.rs │ │ ├── challenges.rs │ │ ├── column.rs │ │ ├── column_proof.rs │ │ ├── cores.rs │ │ ├── create_label/ │ │ │ ├── mod.rs │ │ │ ├── multi.rs │ │ │ └── single.rs │ │ ├── encoding_proof.rs │ │ ├── graph.rs │ │ ├── hash.rs │ │ ├── labeling_proof.rs │ │ ├── macros.rs │ │ ├── memory_handling.rs │ │ ├── mod.rs │ │ ├── params.rs │ │ ├── porep.rs │ │ ├── proof.rs │ │ ├── proof_scheme.rs │ │ └── utils.rs │ └── tests/ │ ├── drg_circuit.rs │ ├── drg_compound.rs │ ├── drg_vanilla.rs │ ├── stacked_circuit.rs │ ├── stacked_compound.rs │ └── stacked_vanilla.rs └── storage-proofs-post/ ├── Cargo.toml ├── README.md ├── src/ │ ├── election/ │ │ ├── circuit.rs │ │ ├── compound.rs │ │ ├── mod.rs │ │ └── vanilla.rs │ ├── fallback/ │ │ ├── circuit.rs │ │ ├── compound.rs │ │ ├── mod.rs │ │ └── vanilla.rs │ ├── lib.rs │ └── rational/ │ ├── circuit.rs │ ├── compound.rs │ ├── mod.rs │ └── vanilla.rs └── tests/ ├── election_circuit.rs ├── election_compound.rs ├── election_vanilla.rs ├── fallback_circuit.rs ├── fallback_compound.rs ├── fallback_vanilla.rs ├── rational_circuit.rs ├── rational_compound.rs └── rational_vanilla.rs ================================================ FILE CONTENTS ================================================ ================================================ FILE: .circleci/config.yml ================================================ version: 2.1 parameters: nightly-toolchain: type: string default: "nightly-2021-04-24" executors: default: docker: - image: filecoin/rust:latest working_directory: /mnt/crate resource_class: 2xlarge+ gpu: machine: image: ubuntu-1604-cuda-10.1:201909-23 working_directory: ~/gpuci resource_class: gpu.nvidia.medium arm: machine: image: ubuntu-2004:202101-01 resource_class: arm.large setup-env: &setup-env FIL_PROOFS_PARAMETER_CACHE: "/tmp/filecoin-proof-parameters/" RUST_LOG: info jobs: ensure_groth_parameters_and_keys_linux: executor: default environment: *setup-env steps: - checkout - restore_parameter_cache - ensure_filecoin_parameters - save_parameter_cache cargo_fetch: executor: default environment: *setup-env steps: - checkout - run: name: Calculate dependencies command: cargo generate-lockfile no_output_timeout: 30m - restore_rustup_cache - run: rustup install $(cat rust-toolchain) - run: rustup default $(cat rust-toolchain) - run: rustup install << pipeline.parameters.nightly-toolchain >> - run: rustup component add rustfmt-preview - run: rustup component add clippy - run: cargo update - run: cargo fetch - run: rustc +$(cat rust-toolchain) --version - run: rustup toolchain list --verbose - persist_to_workspace: root: "." paths: - Cargo.lock - save_rustup_cache test: executor: default environment: *setup-env parameters: crate: type: string steps: - checkout - attach_workspace: at: "." - restore_rustup_cache - restore_parameter_cache - run: name: Test (<< parameters.crate >>) command: cargo +$(cat rust-toolchain) test --verbose --package << parameters.crate >> no_output_timeout: 30m test_release: executor: default environment: *setup-env steps: - checkout - attach_workspace: at: "." - restore_rustup_cache - restore_parameter_cache - run: name: Test in release profile command: | ulimit -n 20000 ulimit -u 20000 ulimit -n 20000 cargo +$(cat rust-toolchain) test --verbose --release --workspace RUSTFLAGS="-D warnings" cargo +$(cat rust-toolchain) build --examples --release --workspace no_output_timeout: 30m test_ignored_release: executor: default environment: *setup-env parameters: crate: type: string features: type: string default: "" steps: - checkout - attach_workspace: at: "." - restore_rustup_cache - restore_parameter_cache - run: name: Test ignored in release profile command: | ulimit -n 20000 ulimit -u 20000 ulimit -n 20000 cd << parameters.crate >> cargo test --release << parameters.features >> -- --ignored --nocapture environment: RUST_TEST_THREADS: 1 no_output_timeout: 30m # Running with `use_multicore_sdr=true` should be integrated directly into the test code. For now we # just re-run the lifecycle tests to exercise the use_multicore_sdr code path with that setting set. test_multicore_sdr: executor: default environment: *setup-env steps: - checkout - attach_workspace: at: "." - restore_rustup_cache - restore_parameter_cache - run: name: Test with use_multicore_sdr pairing enabled command: | ulimit -n 20000 ulimit -u 20000 ulimit -n 20000 cargo +<< pipeline.parameters.nightly-toolchain >> test --all --verbose --release lifecycle -- --ignored --nocapture cargo +<< pipeline.parameters.nightly-toolchain >> test -p storage-proofs-porep --features single-threaded --release checkout_cores -- --test-threads=1 no_output_timeout: 30m environment: RUST_TEST_THREADS: 1 FIL_PROOFS_USE_MULTICORE_SDR: true - run: name: Test with use_multicore_sdr and blst enabled command: | ulimit -n 20000 ulimit -u 20000 ulimit -n 20000 cargo +<< pipeline.parameters.nightly-toolchain >> test --all --no-default-features --features gpu,blst --verbose --release lifecycle -- --ignored --nocapture no_output_timeout: 30m environment: RUST_TEST_THREADS: 1 FIL_PROOFS_USE_MULTICORE_SDR: true test_gpu_tree_building: executor: gpu environment: *setup-env steps: - checkout - attach_workspace: at: "." - restore_rustup_cache - restore_parameter_cache - run: name: Set the PATH env variable command: | echo 'export PATH="~/.cargo/bin:$PATH"' | tee --append $BASH_ENV source $BASH_ENV - run: name: Install required libraries for GPU support command: | sudo apt-get update -y sudo apt install -y ocl-icd-opencl-dev libhwloc-dev - run: name: Test with GPU column and tree builders. command: | ulimit -n 20000 ulimit -u 20000 ulimit -n 20000 cargo +<< pipeline.parameters.nightly-toolchain >> test --all --no-default-features --features gpu,blst --verbose --release lifecycle -- --ignored --nocapture no_output_timeout: 30m environment: RUST_TEST_THREADS: 1 FIL_PROOFS_USE_GPU_COLUMN_BUILDER: true FIL_PROOFS_USE_GPU_TREE_BUILDER: true test_no_gpu: executor: default environment: *setup-env parameters: features: type: string steps: - checkout - attach_workspace: at: "." - restore_rustup_cache - restore_parameter_cache - run: name: Test with no gpu (<< parameters.features >>) command: | cargo +<< pipeline.parameters.nightly-toolchain >> test --all --verbose --no-default-features --features << parameters.features >> no_output_timeout: 30m test_arm_no_gpu: executor: arm environment: *setup-env parameters: features: type: string steps: - checkout - attach_workspace: at: "." - restore_rustup_cache - restore_parameter_cache - run: name: Install Rust command: | curl https://sh.rustup.rs -sSf | sh -s -- -y - run: rustup install $(cat rust-toolchain) - run: rustup default $(cat rust-toolchain) - run: rustup install << pipeline.parameters.nightly-toolchain >> - run: cargo update - run: cargo fetch - run: name: Install required libraries command: | sudo apt-get update -y sudo apt install -y libhwloc-dev - run: name: Test arm with no gpu (<< parameters.features >>) command: | cargo +<< pipeline.parameters.nightly-toolchain >> -Zpackage-features test --release --all --verbose --no-default-features --features << parameters.features >> no_output_timeout: 90m test_blst: executor: default environment: *setup-env parameters: crate: type: string features: type: string default: "gpu,blst" steps: - checkout - attach_workspace: at: "." - restore_rustup_cache - restore_parameter_cache - run: name: Test ignored with blst enabled (<< parameters.crate >>) command: | ulimit -n 20000 ulimit -u 20000 ulimit -n 20000 RUST_LOG=trace cargo +<< pipeline.parameters.nightly-toolchain >> test --no-default-features --features << parameters.features >> --verbose --release --package << parameters.crate >> -- --nocapture no_output_timeout: 30m environment: RUST_TEST_THREADS: 1 test_blst_ignored: executor: default environment: *setup-env parameters: crate: type: string steps: - checkout - attach_workspace: at: "." - restore_rustup_cache - restore_parameter_cache - run: name: Test with blst enabled (<< parameters.crate >>) command: | ulimit -n 20000 ulimit -u 20000 ulimit -n 20000 cargo +<< pipeline.parameters.nightly-toolchain >> test --no-default-features --features gpu,blst --verbose --package << parameters.crate >> --release -- --ignored --nocapture no_output_timeout: 30m bench: executor: default environment: *setup-env steps: - checkout - attach_workspace: at: "." - restore_rustup_cache - restore_parameter_cache - run: name: Benchmarks command: cargo +$(cat rust-toolchain) build --benches --verbose --workspace no_output_timeout: 15m rustfmt: executor: default environment: *setup-env steps: - checkout - attach_workspace: at: "." - restore_rustup_cache - run: name: Run cargo fmt command: cargo fmt --all -- --check clippy: executor: default environment: *setup-env steps: - checkout - attach_workspace: at: "." - restore_rustup_cache - run: name: Run cargo clippy command: cargo +$(cat rust-toolchain) clippy --workspace test_darwin: macos: xcode: "10.0.0" working_directory: ~/crate resource_class: large environment: *setup-env steps: - checkout - run: name: Install hwloc 2.3.0 command: | cd /tmp curl https://download.open-mpi.org/release/hwloc/v2.3/hwloc-2.3.0.tar.gz --location --output /tmp/hwloc-2.3.0.tar.gz tar xzvf hwloc-2.3.0.tar.gz cd hwloc-2.3.0 ./configure make sudo make install - run: name: Install Rust command: | curl https://sh.rustup.rs -sSf | sh -s -- -y - run: rustup install $(cat rust-toolchain) - run: rustup default $(cat rust-toolchain) - run: cargo update - run: cargo fetch - run: name: Test Darwin command: | sudo ulimit -n 20000 sudo ulimit -u 20000 ulimit -n 20000 cargo +$(cat rust-toolchain) test --release --verbose --workspace -- --nocapture no_output_timeout: 2h commands: ensure_filecoin_parameters: steps: - run: name: Build paramcache if it doesn't already exist command: | set -x; test -f /tmp/paramcache.awesome \ || (cargo build --release --workspace && find . -type f -name paramcache | xargs -I {} mv {} /tmp/paramcache.awesome) - run: name: Obtain filecoin groth parameters command: /tmp/paramcache.awesome --sector-sizes='2048,4096,16384,32768' no_output_timeout: 60m - run: name: Make the parameters world readable command: chmod -R 755 ${FIL_PROOFS_PARAMETER_CACHE} save_rustup_cache: steps: # Move things from the home directory to `/tmp` first, so that it can be # restored on executors that have a different home directory. - run: cp -R ~/.cargo ~/.rustup /tmp/ - save_cache: name: "Save rustup cache" key: cargo-v28-e-{{ checksum "rust-toolchain" }}-{{ checksum "Cargo.toml" }}-{{ checksum "Cargo.lock" }} paths: - /tmp/.cargo - /tmp/.rustup restore_rustup_cache: steps: - restore_cache: name: "Restore rustup cache" key: cargo-v28-e-{{ checksum "rust-toolchain" }}-{{ checksum "Cargo.toml" }}-{{ checksum "Cargo.lock" }} # Cache might not be created yet, hence ignore if the move fails - run: cp -R /tmp/.cargo /tmp/.rustup ~/ || true save_parameter_cache: steps: - save_cache: name: "Save parameter cache" key: proof-params-v28-e-{{ checksum "filecoin-proofs/parameters.json" }} paths: - "/tmp/paramcache.awesome" - "/tmp/filecoin-proof-parameters/" restore_parameter_cache: steps: - restore_cache: name: "Restore parameter cache" key: proof-params-v28-e-{{ checksum "filecoin-proofs/parameters.json" }} workflows: version: 2.1 test_all: jobs: - ensure_groth_parameters_and_keys_linux - cargo_fetch - rustfmt: requires: - cargo_fetch - clippy: requires: - cargo_fetch - test_release: requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_ignored_release: name: test_ignored_release_storage_proofs_post crate: "storage-proofs-post" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_ignored_release: name: test_ignored_release_storage_proofs_core crate: "storage-proofs-core" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_ignored_release: name: test_ignored_release_storage_proofs_porep crate: "storage-proofs-porep" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_ignored_release: name: test_ignored_release_filecoin_proofs crate: "filecoin-proofs" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_gpu_tree_building: requires: #- cargo_fetch_gpu - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_multicore_sdr: requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_blst: name: test_blst_filecoin_proofs crate: "filecoin-proofs" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_blst_ignored: name: test_blst_ignored_filecoin_proofs crate: "filecoin-proofs" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test: name: test_filecoin_proofs crate: "filecoin-proofs" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_blst: name: test_blst_storage_proofs_core crate: "storage-proofs-core" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_blst_ignored: name: test_blst_ignored_storage_proofs_core crate: "storage-proofs-core" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test: name: test_storage_proofs_core crate: "storage-proofs-core" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_blst: name: test_blst_storage_proofs_post crate: "storage-proofs-post" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_blst_ignored: name: test_blst_ignored_storage_proofs_post crate: "storage-proofs-post" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test: name: test_storage_proofs_post crate: "storage-proofs-post" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_blst: name: test_blst_storage_proofs_porep crate: "storage-proofs-porep" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_blst_ignored: name: test_blst_ignored_storage_proofs_porep crate: "storage-proofs-porep" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test: name: test_storage_proofs_porep crate: "storage-proofs-porep" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_blst: name: test_blst_fil_proofs_tooling crate: "fil-proofs-tooling" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test: name: test_fil_proofs_tooling crate: "fil-proofs-tooling" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test: name: test_sha2raw crate: "sha2raw" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_blst: name: test_blst_filecoin_hashers crate: "filecoin-hashers" features: "blst,gpu,poseidon,sha256,blake2s" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test: name: test_filecoin_hashers crate: "filecoin-hashers" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_blst: name: test_blst_fil_proofs_param crate: "fil-proofs-param" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test: name: test_fil_proofs_param crate: "fil-proofs-param" requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_no_gpu: name: test_no_gpu_pairing features: 'pairing' requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_no_gpu: name: test_no_gpu_blst features: 'blst' requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_arm_no_gpu: name: test_arm_no_gpu_pairing features: 'pairing' requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_arm_no_gpu: name: test_arm_no_gpu_blst features: 'blst' requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - bench: requires: - cargo_fetch - ensure_groth_parameters_and_keys_linux - test_darwin - test: name: test_fr32 crate: "fr32" requires: - cargo_fetch - test_blst: name: test_blst_fr32 crate: "fr32" requires: - cargo_fetch ================================================ FILE: .clippy.toml ================================================ type-complexity-threshold = 400 ================================================ FILE: .dockerignore ================================================ .git /target/* ================================================ FILE: .gitignore ================================================ /target **/*.rs.bk Cargo.lock .criterion **/*.h heaptrack* .bencher *.profile *.heap rust-fil-proofs.config.toml ================================================ FILE: CHANGELOG.md ================================================ # Changelog All notable changes to rust-fil-proofs will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://book.async.rs/overview/stability-guarantees.html). ## Unreleased ## [7.0.1] - 2021-05-06 - Added Apple M1 asm support via updated sha2 dependency [#1457](https://github.com/filecoin-project/rust-fil-proofs/pull/1457) - Remove additional build warnings and update CI nightly toolchain [#1456](https://github.com/filecoin-project/rust-fil-proofs/pull/1456) - Fix aarch64/Linux build regression [#1455](https://github.com/filecoin-project/rust-fil-proofs/pull/1455) - Fix changelog errors and typos [#1451](https://github.com/filecoin-project/rust-fil-proofs/pull/1451) - Fix initial value for cache_count [#1454](https://github.com/filecoin-project/rust-fil-proofs/pull/1454) ## [7.0.0] - 2021-04-28 - Split up non-gpu tests for improved CI [#1448](https://github.com/filecoin-project/rust-fil-proofs/pull/1448) - Use latest version of dialoguer [#1447](https://github.com/filecoin-project/rust-fil-proofs/pull/1447) - Fix circuitinfo's binary name [#1443](https://github.com/filecoin-project/rust-fil-proofs/pull/1443) - Remove deprecated calls and clean-up warnings; add parallelization [#1436](https://github.com/filecoin-project/rust-fil-proofs/pull/1436) - Migrate gpu2 to default gpu code; Update rust toolchain to 1.51.0 [#1441](https://github.com/filecoin-project/rust-fil-proofs/pull/1441) - Improve unsealing memory performance [#1401](https://github.com/filecoin-project/rust-fil-proofs/pull/1401) - Update codeowners to current [#1432](https://github.com/filecoin-project/rust-fil-proofs/pull/1432) - Update config.json for the benches [#1431](https://github.com/filecoin-project/rust-fil-proofs/pull/1431) ## [6.1.0] - 2021-03-09 - Update bellperson to the latest version [#1430](https://github.com/filecoin-project/rust-fil-proofs/pull/1430) - Remove unused metrics capture CI job [#1428](https://github.com/filecoin-project/rust-fil-proofs/pull/1428) - Split up pc1/pc2 in the Window PoSt bench [#1427](https://github.com/filecoin-project/rust-fil-proofs/pull/1427) - Use `compress,asm` features of sha2 for aarch64 [#1404](https://github.com/filecoin-project/rust-fil-proofs/pull/1404) - Add gpu2, an optional feature that uses `neptune`'s opencl backend [#1397](https://github.com/filecoin-project/rust-fil-proofs/pull/1397) - Clean-up imports and remove globs [#1394](https://github.com/filecoin-project/rust-fil-proofs/pull/1394) - Remove `storage-proofs` sub-crate [#1393](https://github.com/filecoin-project/rust-fil-proofs/pull/1393) - Re-factor parameter related binaries [#1392](https://github.com/filecoin-project/rust-fil-proofs/pull/1392) - Fix merkle bench for poseidon hashing [#1389](https://github.com/filecoin-project/rust-fil-proofs/pull/1389) - Move `phase2` code into its own crate [#1388](https://github.com/filecoin-project/rust-fil-proofs/pull/1388) - Move `fr32` into its own crate [#1387](https://github.com/filecoin-project/rust-fil-proofs/pull/1387) - Ensure that builds without gpu support work [#1386](https://github.com/filecoin-project/rust-fil-proofs/pull/1386) - Increase parallelism in fallback PoSt [#1384](https://github.com/filecoin-project/rust-fil-proofs/pull/1384) - Move checkout_cores test behing a single-threaded feature [#1383](https://github.com/filecoin-project/rust-fil-proofs/pull/1383) - Improve the cache preservation in Window PoSt bench [#1382](https://github.com/filecoin-project/rust-fil-proofs/pull/1382) - Correct some typos in the Changelog [#1381](https://github.com/filecoin-project/rust-fil-proofs/pull/1381) ## [6.0.0] - 2020-12-01 - Add PoR gadget that does not add a public input [#1374](https://github.com/filecoin-project/rust-fil-proofs/pull/1374) - Update README and fix some typos [#1377](https://github.com/filecoin-project/rust-fil-proofs/pull/1377) - Update bellperson using new blstrs, which in turn now uses`blst@0.3.2` [#1376](https://github.com/filecoin-project/rust-fil-proofs/pull/1376) - Fix tree_c and tree_r_last generation in GPU mode [#1375](https://github.com/filecoin-project/rust-fil-proofs/pull/1375) - Add API version enum for determining runtime behaviour [#1362](https://github.com/filecoin-project/rust-fil-proofs/pull/1362) - Parallelize CI test runs across packages [#1358](https://github.com/filecoin-project/rust-fil-proofs/pull/1358) - Update paramcache run for metrics capture CI job [#1363](https://github.com/filecoin-project/rust-fil-proofs/pull/1363) - Re-organize filecoin-proofs source [#1352](https://github.com/filecoin-project/rust-fil-proofs/pull/1352) - Move hashers into `filecoin-hashers` crate [#1356](https://github.com/filecoin-project/rust-fil-proofs/pull/1356) - Speed up Fr32Reader [#1341](https://github.com/filecoin-project/rust-fil-proofs/pull/1341) - Serialize GPU tree building with GPU lock [#1335](https://github.com/filecoin-project/rust-fil-proofs/pull/1335) - Disable `phase2` tests that require external files [#1342](https://github.com/filecoin-project/rust-fil-proofs/pull/1342) - Move `phase2` into its own crate [#1340](https://github.com/filecoin-project/rust-fil-proofs/pull/1340) - Raise soft fdlimit to max at runtime (OS X/Linux) [#1338](https://github.com/filecoin-project/rust-fil-proofs/pull/1338) - Improve clippy lints (rust 2018 idioms) [#1337](https://github.com/filecoin-project/rust-fil-proofs/pull/1337) ## [5.4.0] - 2020-11-02 - Fix graph generation [#1336](https://github.com/filecoin-project/rust-fil-proofs/pull/1336) ## [5.3.0] - 2020-10-29 - Integrate blst backend and proof verification optimizations [#1332](https://github.com/filecoin-project/rust-fil-proofs/pull/1332) - Remove unused pedersen hasher [#1331](https://github.com/filecoin-project/rust-fil-proofs/pull/1331) - Sanity check commitments [#1330](https://github.com/filecoin-project/rust-fil-proofs/pull/1330) - Install hwloc to fix metrics capture on CI [#1328](https://github.com/filecoin-project/rust-fil-proofs/pull/1328) - Remove no longer used exports [#1315](https://github.com/filecoin-project/rust-fil-proofs/pull/1315) - Add tests for resumable sealing [#1309](https://github.com/filecoin-project/rust-fil-proofs/pull/1309) - Add circuitinfo CLI tool to count circuit constraints [#1325](https://github.com/filecoin-project/rust-fil-proofs/pull/1325) - Remove mutex from settings access [#1321](https://github.com/filecoin-project/rust-fil-proofs/pull/1321) - Add SECURITY.md [#1317](https://github.com/filecoin-project/rust-fil-proofs/pull/1317) - Update hwloc dependency for CI [#1316](https://github.com/filecoin-project/rust-fil-proofs/pull/1316) ## [5.2.3] - 2020-10-13 - Update neptune dependency version ## [5.2.2] - 2020-10-13 - Add notes about param and cache verification [#1313](https://github.com/filecoin-project/rust-fil-proofs/pull/1313) - Update incorrect log message [#1312](https://github.com/filecoin-project/rust-fil-proofs/pull/1312) - Bind threads to cores in multicore SDR [#1305](https://github.com/filecoin-project/rust-fil-proofs/pull/1305) - Add hwloc dependency to CI [#1307](https://github.com/filecoin-project/rust-fil-proofs/pull/1307) ## [5.2.1] - 2020-10-01 - Pin neptune to version 1.2.x [#1302](https://github.com/filecoin-project/rust-fil-proofs/pull/1302) - Add correct sizes for metrics capture CI [#1301](https://github.com/filecoin-project/rust-fil-proofs/pull/1301) - Ensure all PoSt code paths are tested [#1299](https://github.com/filecoin-project/rust-fil-proofs/pull/1299) - Add byte_unit dep for handling benchy input sizes [#1297](https://github.com/filecoin-project/rust-fil-proofs/pull/1297) - Implement prefetch macro for aarch64 [#1294](https://github.com/filecoin-project/rust-fil-proofs/pull/1294) ## [5.2.0] - 2020-09-28 - Add Seal resume by skipping existing layers [#1292](https://github.com/filecoin-project/rust-fil-proofs/pull/1292) - Use two producers in all layers [#1296](https://github.com/filecoin-project/rust-fil-proofs/pull/1296) - Re-export some methods that moved for api access [#1291](https://github.com/filecoin-project/rust-fil-proofs/pull/1291) - Update rustc to 1.46.0 [#1290](https://github.com/filecoin-project/rust-fil-proofs/pull/1290) - Optimize Phase 1 (Replication) [#1289](https://github.com/filecoin-project/rust-fil-proofs/pull/1289) - Add Seal resume testing to the Window PoSt bench [#1288](https://github.com/filecoin-project/rust-fil-proofs/pull/1288) - Add labeling test vectors [#1285](https://github.com/filecoin-project/rust-fil-proofs/pull/1285) - Remove artificial requirement that sector count be 1 for single vanilla proof [#1283](https://github.com/filecoin-project/rust-fil-proofs/pull/1283) - Add Parent Cache and parameter verification and settings to enable [#1265](https://github.com/filecoin-project/rust-fil-proofs/pull/1265) - Improve SectorId logging [#1280](https://github.com/filecoin-project/rust-fil-proofs/pull/1280) - Split up Window PoSt API into separate calls [#1278](https://github.com/filecoin-project/rust-fil-proofs/pull/1278) - Destructure settings [#1273](https://github.com/filecoin-project/rust-fil-proofs/pull/1273) ## [5.1.4] - 2020-09-08 - Add FaultySectors error to Fallback PoSt [#1274](https://github.com/filecoin-project/rust-fil-proofs/pull/1274) ## [5.1.3] - 2020-09-07 - Make fil-blst usage in Window PoSt possible [#1272](https://github.com/filecoin-project/rust-fil-proofs/pull/1272) ## [5.1.2] - 2020-09-03 - Accelerate SNARK verification [#1271](https://github.com/filecoin-project/rust-fil-proofs/pull/1271) - Decompress proofs in parallel [#1268](https://github.com/filecoin-project/rust-fil-proofs/pull/1268) - Eliminate wasteful public-input conversions [#1267](https://github.com/filecoin-project/rust-fil-proofs/pull/1267) - Remove usage of unwrap [#1260](https://github.com/filecoin-project/rust-fil-proofs/pull/1260) - Pin params to the filecoin collab cluster [#1263](https://github.com/filecoin-project/rust-fil-proofs/pull/1263) ## [5.1.1] - 2020-08-12 - Only perform subgroup check on 'after' params [#1258](https://github.com/filecoin-project/rust-fil-proofs/pull/1258) ## [5.1.0] - 2020-08-12 - Add Phase2 cli verify raw g1 point command [#1256](https://github.com/filecoin-project/rust-fil-proofs/pull/1256) ## [5.0.0] - 2020-08-10 - Publish v28 parameters and update Changelog for release [#1254](https://github.com/filecoin-project/rust-fil-proofs/pull/1254) - Fix benchmark examples in README [#1253](https://github.com/filecoin-project/rust-fil-proofs/pull/1253) - Remove unused dependencies [#1124](https://github.com/filecoin-project/rust-fil-proofs/pull/1124) and [#1252](https://github.com/filecoin-project/rust-fil-proofs/pull/1252) - Add script to validate parameter checksums in parameters.json [#1251](https://github.com/filecoin-project/rust-fil-proofs/pull/1251) - phase2-cli force small-raw contributions [#1248](https://github.com/filecoin-project/rust-fil-proofs/pull/1248) - phase2-cli parse command [#1247](https://github.com/filecoin-project/rust-fil-proofs/pull/1247) - phase2-cli merge command [#1242](https://github.com/filecoin-project/rust-fil-proofs/pull/1242) - phase2-cli paramgen and filename parsing [#1240](https://github.com/filecoin-project/rust-fil-proofs/pull/1240) - Verify transitions from non-raw to raw parameters in phase2-cli [#1239](https://github.com/filecoin-project/rust-fil-proofs/pull/1239) - Add a check parameter command that maps parameter files [#1238](https://github.com/filecoin-project/rust-fil-proofs/pull/1238) - Add tool to split phase2 parameters [#1235](https://github.com/filecoin-project/rust-fil-proofs/pull/1235) ## [4.0.5] - 2020-07-28 - Include proofs and snark security audit documents, with updated references [#1233](https://github.com/filecoin-project/rust-fil-proofs/pull/1233) - Remove `stacked` benchmark from benchy (broken) [#1229](https://github.com/filecoin-project/rust-fil-proofs/pull/1229) - Update range for feistel tests [#1228](https://github.com/filecoin-project/rust-fil-proofs/pull/1228) - Allow for compilation on aarch64 [#1204](https://github.com/filecoin-project/rust-fil-proofs/pull/1204) - Implement `fauxrep2`: a testable fake replication API [#1218](https://github.com/filecoin-project/rust-fil-proofs/pull/1218) - Fix CI `metrics_capture` jobs from consistently failing [#1215](https://github.com/filecoin-project/rust-fil-proofs/pull/1215) - Correct `rows_to_discard` value during post [#1220](https://github.com/filecoin-project/rust-fil-proofs/pull/1220) ## [4.0.4] - 2020-07-15 - Default parent cache path to use FIL_PROOFS_CACHE_DIR if set [#1207](https://github.com/filecoin-project/rust-fil-proofs/pull/1207) - Investigate CI metrics capture [#1212](https://github.com/filecoin-project/rust-fil-proofs/pull/1212) and [#1213](https://github.com/filecoin-project/rust-fil-proofs/pull/1213) - Additional README updates and corrections [#1211](https://github.com/filecoin-project/rust-fil-proofs/pull/1211) - Update README [#1208](https://github.com/filecoin-project/rust-fil-proofs/pull/1208) - Swap buffers instead of memcpy in generate_labels [#1197](https://github.com/filecoin-project/rust-fil-proofs/pull/1197) - Apply suggested security audit fixes [#1196](https://github.com/filecoin-project/rust-fil-proofs/pull/1196) - Make pieces::Stack methods private [#1202](https://github.com/filecoin-project/rust-fil-proofs/pull/1202) - Remove dead code [#1201](https://github.com/filecoin-project/rust-fil-proofs/pull/1201) - Test feistel implementation is a valid permutation [#1193](https://github.com/filecoin-project/rust-fil-proofs/pull/1193) ## [4.0.3] - 2020-07-01 - Add fauxrep to API for fake sealing [#1194](https://github.com/filecoin-project/rust-fil-proofs/pull/1194) - Streaming phase2 contribution and fast I/O [#1188](https://github.com/filecoin-project/rust-fil-proofs/pull/1188) - Add omitted changelog updates [#1190](https://github.com/filecoin-project/rust-fil-proofs/pull/1190) ## [4.0.2] - 2020-06-25 - Allow parameters map to be accessible externally [#1186](https://github.com/filecoin-project/rust-fil-proofs/pull/1186) - Extend update_tree_r_cache command with new features [#1175](https://github.com/filecoin-project/rust-fil-proofs/pull/1175) - Add OpenCL to the build instructions [#1112](https://github.com/filecoin-project/rust-fil-proofs/pull/1112) - Use file locking for cache generation [#1179](https://github.com/filecoin-project/rust-fil-proofs/pull/1179) - Add logging to all public API functions [#1137](https://github.com/filecoin-project/rust-fil-proofs/pull/1137) - Upgrade some dependencies [#1126](https://github.com/filecoin-project/rust-fil-proofs/pull/1126) - Fix clippy warnings [#1147](https://github.com/filecoin-project/rust-fil-proofs/pull/1147) - Partial caching for SDR [#1163](https://github.com/filecoin-project/rust-fil-proofs/pull/1163) - Add tool to rebuild tree_r_last from a replica [#1170](https://github.com/filecoin-project/rust-fil-proofs/pull/1170) - Verify consistent use of porep_id when sealing [#1167](https://github.com/filecoin-project/rust-fil-proofs/pull/1167) ## [4.0.1] - 2020-06-22 - This release is a hotfix that pinned dependencies to avoid a build break [#1182](https://github.com/filecoin-project/rust-fil-proofs/pull/1182) ## [4.0.0] - 2020-06-15 - Change default rows_to_discard for cached oct-trees [#1165](https://github.com/filecoin-project/rust-fil-proofs/pull/1165) - Remove validate commit message [#1164](https://github.com/filecoin-project/rust-fil-proofs/pull/1164) - Modularized window-post bench [#1162](https://github.com/filecoin-project/rust-fil-proofs/pull/1162) - Updated reported PoSt constraints (in comments) [#1161](https://github.com/filecoin-project/rust-fil-proofs/pull/1161) ## [3.0.0] - 2020-06-08 - Publish v27 parameters: [#1158](https://github.com/filecoin-project/rust-fil-proofs/pull/1158) - Update toolchain to rust stable: [#1149](https://github.com/filecoin-project/rust-fil-proofs/pull/1149) - Allow tree_r_last to be built on the GPU: [#1138](https://github.com/filecoin-project/rust-fil-proofs/pull/1138) - Improve performance of building tree_c on the GPU - Properly remove tree_c when no longer needed - Update circuit test constraints - Update neptune dependency version: [#1159](https://github.com/filecoin-project/rust-fil-proofs/pull/1159) - Update total challenge count and increase partitions: [#1153](https://github.com/filecoin-project/rust-fil-proofs/pull/1153) - Improve UX of paramcache: [#1152](https://github.com/filecoin-project/rust-fil-proofs/pull/1152) - Add porep_id to construct replica_id and graph seeds: [#1144](https://github.com/filecoin-project/rust-fil-proofs/pull/1144) - Include layer index before node when creating label preimage: [#1139](https://github.com/filecoin-project/rust-fil-proofs/pull/1139) - Circuit optimizations for oct/quad insertion: [#1125](https://github.com/filecoin-project/rust-fil-proofs/pull/1125) ## [2.0.0] - 2020-05-27 - Add a method 'unseal_range' to unseal a sector to a file descriptor - Calculate required config count based on tree shape - Update merkle tree cached tree usage (fixing an incorrect size usage) - Replace merkle_light 'height' property usage with 'row_count' - Update stacked bench usage of recent replica changes ## [1.0.0] - 2020-05-19 - Initial stable release [Unreleased]: https://github.com/filecoin-project/rust-fil-proofs/compare/v7.0.1...HEAD [7.0.1]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v7.0.1 [7.0.0]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v7.0.0 [6.1.0]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v6.1.0 [6.0.0]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v6.0.0 [5.4.0]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v5.4.0 [5.3.0]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v5.3.0 [5.2.3]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v5.2.3 [5.2.2]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v5.2.2 [5.2.1]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v5.2.1 [5.2.0]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v5.2.0 [5.1.4]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v5.1.4 [5.1.3]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v5.1.3 [5.1.2]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v5.1.2 [5.1.1]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v5.1.1 [5.1.0]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v5.1.0 [5.0.0]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v5.0.0 [4.0.5]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v4.0.5 [4.0.4]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v4.0.4 [4.0.3]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v4.0.3 [4.0.2]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v4.0.2 [4.0.1]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v4.0.0 [3.0.0]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v3.0.0 [2.0.0]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v2.0.0 [1.0.0]: https://github.com/filecoin-project/rust-fil-proofs/tree/releases/v1.0.0 ================================================ FILE: CODEOWNERS ================================================ # Global Owners * @dignifiedquire ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing Welcome, it is great that you found your way here. In order to make the best of all our time, we have gathered some notes below which we think can be helpful when contributing to this project. ## Getting Started Please start by reviewing this file. ## Coding Standards - No compiler warnings. - No [clippy](https://github.com/rust-lang/rust-clippy) warnings. - Minimize use of `unsafe` and justify usage in comments. - Prefer `expect` with a good description to `unwrap`. - Write unit tests in the same file. - Format your code with `rustfmt` - Code should compile on `stable` and `nightly`. If adding `nightly` only features they should be behind a flag. - Write benchmarks for performance sensitive areas. We use [criterion.rs](https://github.com/japaric/criterion.rs). ## General Guidelines - PRs require code owner approval to merge. - Please scope PRs to areas in which you have expertise. This code is still close to research. - Please follow our commit guideline described below. - Welcome contribution areas might include: - SNARKs - Proof-of-replication - Rust improvements - Optimizations - Documentation (expertise would require careful reading of the code) ## PR Merge Policy (Git topology) ### Allowed (white list) - Single fast-forward merge commit, with all internal commits squashed. - Non-fast-forward merge commit, with all internal commits squashed -- rebased to branch from the previous commit to master. - Non-fast-forward merge commit, with curated (as appropriate), linear, internal commits preserved -- rebased to branch from the previous commit to master. ### Disallowed (black list) - Non-rebased merge commits which branch from anywhere but the previous commit to master. - Merge commits whose internal history contains merge commits (except in rare circumstances). - Multiple fast-forward merge commits for a single PR. - Internal junk commits — (e.g. strings of WIP). ### In Practice - In general, please rebase PRs before merging. - To avoid having approvals dismissed by rebasing, authors may instead choose to: - First use GitHub's 'resolve conflicts' button; - Then merge with GitHub's 'squash and merge' button. If automated conflict resolution is not possible, you will need to rebase and seek re-approval. In any event, please note the guidelines and prefer either a single commit or a usefully curated set of commits. ## Resources for learning Rust - Beginners - [The Rust Book](https://doc.rust-lang.org/book/) - [Rust Playground](https://play.rust-lang.org/) - [Rust Docs](https://doc.rust-lang.org/) - [Clippy](https://github.com/rust-lang/rust-clippy) - [Rustfmt](https://github.com/rust-lang/rustfmt) - Advanced - What does the Rust compiler do with my code? [Godbolt compiler explorer](https://rust.godbolt.org/) - How to safely write unsafe Rust: [The Rustonomicon](https://doc.rust-lang.org/nomicon/) - Did someone say macros? [The Little Book of Rust Macros](https://danielkeep.github.io/tlborm/book/index.html) ## Commit Message Guidelines We have very precise rules over how our git commit messages can be formatted. This leads to **more readable messages** that are easy to follow when looking through the **project history**. But also, we use the git commit messages to **generate the change log programmatically**. ### Commit Message Format Each commit message consists of a **header**, a **body** and a **footer**. The header has a special format that includes a **type**, a **scope** and a **subject**: ``` ():