From 61511491ef601d9a663c13d0f50bf0443bf1b612 Mon Sep 17 00:00:00 2001 From: bing Date: Fri, 15 Sep 2023 07:21:13 +0000 Subject: [PATCH] chore: sync upstream (#35) * Make GateRef value public * Better document constraints on addcy carries (#1139) * Add missing constraints on addcy carries. * Remove bit-checks; make documentation clearer. * Constrain keccak general * Reuse set_public_value_targets * Fix endianness in benefiary limbs * Convert to u32 instead of u64 * Clippy * Silence Poseidon warnings for ARM targets * Remove unused attributes * Fix trait import. (#1163) * Error instead of panicking for missing preprocessed circuits (#1159) * Set exception flag to 1. * Connect public values in aggregation circuit (#1169) * Connect public values in aggregation circuit * Minor * Write trie roots to memory before kernel bootstrapping (#1172) * Write trie roots * Remove CPU trace length * Update hash_initial/final_tries * Fix tests * Minor * PR feedback * Connect SHL/SHR operations to the Arithmetic table (#1166) * Add corresponding arithmetic operations to shift ones * Include SHL/SHR in the arithmetic CTL * Prevent overflow * Expand documentation for ctl_data_ternops() * Combine AND and OR flags in CpuStark * Reduce reallocations * Address review * Apply Nicholas comment * Revert changes in cyclic_subgroup_unknown_order * Fix logic CTL * Combine all logic flags together * Comment * Combine EQ and ISZERO flags * Combine jump flags * Add guidance for external contributors to README.md * Use Keccak config in simple tests * Remove is_cpu_cycle * Remove is_bootstrap_kernel column * Implement inverse from Fermat little theorem (#1176) * Add inverse from Fermat little theorem * Remove inlining for goldilocks try_inverse method * Remove copy on write for mpt_insert and mpt_delete * Combine a few constraints * Reduce overconstraining in decode module * Remove filtering in membus * Observe public values * Update tests to have a blockgaslimit fitting u32s * Update BlockBaseFee to fit in 2 limbs * Refactor * Apply comment * Combine get_context and set_context into one flag * Remove unnecessary changes in the Operation enum * Apply comment * Patched plonky2 to use a patch for eth_trie_utils * Implement receipts and logs Co-authored-by: Hamy Ratoanina Co-authored-by: Linda Guiga * Cleanup * Fix tests and address comments * Change receipts_trie in basic_smart_contract and self_balance_gas_cost * Cleanup * Clippy * Made `PublicValues` serializable - Needed by the prover scheduler. * make generate partial_witness pub * Update range from ReceiptTrie PR * fix: constrain higher bits of reg_preimage * Keccak STARK: constraint preimage to equal A on first round * Constrain next row's stack length * Add missing links between public values * Implement receipts of types 1 and 2 * Apply comments * Fix comment in `proof.rs` * Apply comments * Replace genesis state trie check with TODO * feat: serde for targets * Display actual trace lengths instead of number of ops * Remove duplicate code * Remove filter column for KeccakStark * Added mock feature flag and test * remove spurious * Add blockhash sys opcode * Apply comments * Change h256_ulimbs * Fix overflow check and test. Remove [..8] when using h256_limbs. * Clippy * Fix memop reads, from_prover_inputs and cleanup. * Fix Clippy * Removed mock feature flag and added mock_build * clippy * Now builds on the latest nightly * Also included clippy fixes introduced by new nightly * Apply Nick's comment * Apply Nick's comment * Now refers to sub-crates using paths (and removed `patch` section) - Previously refered to specific `crates.io` versions. - Motivation for this is to allow external projects to be able use specific revisions of this repo. Without this, a `[patch]` section is almost always required in the external project in order to force the internal plonky2 sub-crates to the same version, an approach which comes with its own issues. * Fixes * clippy * Made visibilities outside of crate to allow for forking partial witness gen outside of crate * latest nightly in CI and rust-toolchain * suppress incorrect Clippy error * fmt * clippy suggestions * clippy suggestions * clippy suggestions * clippy suggestions * clippy suggestions * more clippy suggestions * Move byte packing / unpacking to a distinct table (#1212) * Duplicate Memory trace into BytePacking one * Add mload_32bytes instruction * Use dedicated ops for byte packing trace * Change witness generation to reduce memory reads for MLOAD_32BYTES * Remove segments * Fix stack * Fix extra product when fixing CTL for byte_packing * Write output value in trace * Add constraints for BYTE_PACKING table * Add recursive constraints for BYTE_PACKING table * Fix constraints * Add address in trace and constraints * Add timestamp and batch inputs into BytePackingOp struct * Add extra column * Fix BytePackingStark CTL * Tiny fix in witness generation * Fix the Memory CTL * Add constraints for the new columns * Remove 1 column * Remove limb columns * Fix * Fix recursive circuit of BytePackingTable * Fix constraints * Fix endianness * Add MSTORE_32BYTES instruction and move decomposition to packing table * Add missing constraint * Add range-check for all bytes * Add extra constraint * Cleanup * Remove REMAINING_LEN column * Add corresponding implementations in interpreter * Fix recursive version * Remove debug assertion because of CI * Remove FILTER column * Update new test from rebasing * Reorder STARK modules to match TraceCheckPoint ordering * Address comments * Pacify clippy * Add documentation to the packing module * Fix doctest * Swap ordering in stack macro (#1230) * Swap ordering in stack macro * Update comment * Fix self_balance_gas_cost and basic_smart_contract. (#1227) * Fix self_balance_gas_cost and basic_smart_contract. * Fix Clippy * Combine arithmetic flags on the CPU side (#1187) * Combine FP254 flags * Combine basic binary ops together and do CTL with opcode value * Combine ternary ops together * Combine MUL DIV and MOD * Combine shift operations * Combine byte with other binary ops * Fix tests * Clean leftover comment * Update from latest main * Put the 'is_simulated' flag inside the Operation enum * Cleaner way to handle "simulated" operations SHL and SHR. * Fix comments. * Minor: suggestion for re-expressing `combined_ops`. * Update comment --------- Co-authored-by: Hamish Ivey-Law * Remove redundant Keccak sponge cols (#1233) * Rename columns in KeccakSponge for clarity * Remove redundant columns * Apply comments * Combine mstore_general and mload_general into one flag (#1188) * Combine mstore_general and mload_general into one flag * Add comments and make stack constraints cleaner. * Fix number of native instructions * Ordering * Cleanup * Update calls to stack eval from latest main --------- Co-authored-by: Robin Salen --------- Co-authored-by: Dimo99 Co-authored-by: Hamish Ivey-Law <426294+unzvfu@users.noreply.github.com> Co-authored-by: Robin Salen Co-authored-by: Robin Salen <30937548+Nashtare@users.noreply.github.com> Co-authored-by: Jacqueline Nabaglo Co-authored-by: Nicholas Ward Co-authored-by: Linda Guiga Co-authored-by: wborgeaud Co-authored-by: Hamy Ratoanina Co-authored-by: BGluth Co-authored-by: Linda Guiga <101227802+LindaGuiga@users.noreply.github.com> Co-authored-by: John Guibas Co-authored-by: Daniel Lubarov Co-authored-by: Ayush Shukla Co-authored-by: Uma Roy Co-authored-by: Hamish Ivey-Law --- README.md | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/README.md b/README.md index a022ac2908..43f179e565 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,108 @@ Jemalloc is known to cause crashes when a binary compiled for x86 is run on an A See [CONTRIBUTING.md](./CONTRIBUTING.md). +## Guidance for external contributors + +Do you feel keen and able to help with Plonky2? That's great! We +encourage external contributions! + +We want to make it easy for you to contribute, but at the same time we +must manage the burden of reviewing external contributions. We are a +small team, and the time we spend reviewing external contributions is +time we are not developing ourselves. + +We also want to help you to avoid inadvertently duplicating work that +is already underway, or building something that we will not +want to incorporate. + +First and foremost, please keep in mind that this is a highly +technical piece of software and contributing is only suitable for +experienced mathematicians, cryptographers and software engineers. + +The Polygon Zero Team reserves the right to accept or reject any +external contribution for any reason, including a simple lack of time +to maintain it (now or in the future); we may even decline to review +something that is not considered a sufficiently high priority for us. + +To avoid disappointment, please communicate your intention to +contribute openly, while respecting the limited time and availability +we have to review and provide guidance for external contributions. It +is a good idea to drop a note in our public Discord #development +channel of your intention to work on something, whether an issue, a +new feature, or a performance improvement. This is probably all that's +really required to avoid duplication of work with other contributors. + +What follows are some more specific requests for how to write PRs in a +way that will make them easy for us to review. Deviating from these +guidelines may result in your PR being rejected, ignored or forgotten. + + +### General guidance for your PR + +Obviously PRs will not be considered unless they pass our Github +CI. The Github CI is not executed for PRs from forks, but you can +simulate the Github CI by running the commands in +`.github/workflows/ci.yml`. + +Under no circumstances should a single PR mix different purposes: Your +PR is either a bug fix, a new feature, or a performance improvement, +never a combination. Nor should you include, for example, two +unrelated performance improvements in one PR. Please just submit +separate PRs. The goal is to make reviewing your PR as simple as +possible, and you should be thinking about how to compose the PR to +minimise the burden on the reviewer. + +Also note that any PR that depends on unstable features will be +automatically rejected. The Polygon Zero Team may enable a small +number of unstable features in the future for our exclusive use; +nevertheless we aim to minimise the number of such features, and the +number of uses of them, to the greatest extent possible. + +Here are a few specific guidelines for the three main categories of +PRs that we expect: + + +#### The PR fixes a bug + +In the PR description, please clearly but briefly describe + +1. the bug (could be a reference to a GH issue; if it is from a + discussion (on Discord/email/etc. for example), please copy in the + relevant parts of the discussion); +2. what turned out to the cause the bug; and +3. how the PR fixes the bug. + +Wherever possible, PRs that fix bugs should include additional tests +that (i) trigger the original bug and (ii) pass after applying the PR. + + +#### The PR implements a new feature + +If you plan to contribute an implementation of a new feature, please +double-check with the Polygon Zero team that it is a sufficient +priority for us that it will be reviewed and integrated. + +In the PR description, please clearly but briefly describe + +1. what the feature does +2. the approach taken to implement it + +All PRs for new features must include a suitable test suite. + + +#### The PR improves performance + +Performance improvements are particularly welcome! Please note that it +can be quite difficult to establish true improvements for the +workloads we care about. To help filter out false positives, the PR +description for a performance improvement must clearly identify + +1. the target bottleneck (only one per PR to avoid confusing things!) +2. how performance is measured +3. characteristics of the machine used (CPU, OS, #threads if appropriate) +4. performance before and after the PR + + ## Licenses All crates of this monorepo are licensed under either of