Conversation
illuzen
left a comment
There was a problem hiding this comment.
I would prefer not to have a 0 address fallback if decoding fails but it shouldn't fail if we have it set so it it's probably fine
|
postmortem PR review PR #372 Review: Treasury Config PalletOverviewThis PR replaces Substrate's full Critical Issues1. Naming collision: The new crate is named 2. Pallet index renumbering is a breaking change All pallet indices from 6 onward are renumbered (e.g., 3. Overly complex pub fn account_id() -> T::AccountId {
TreasuryAccount::<T>::get().unwrap_or_else(|| {
T::AccountId::decode(&mut sp_runtime::traits::TrailingZeroInput::zeroes())
.unwrap_or_else(|_| {
T::AccountId::decode(&mut &[0u8; 32][..])
.unwrap_or_else(|_| panic!("Cannot create fallback AccountId"))
})
})
}This has nested fallbacks with a Design Concerns4. Previously 5. Massive scope removal without explanation The PR removes:
The PR description is empty. This is a significant governance capability reduction that deserves a clear rationale — is treasury spending being reimplemented differently? Deferred to a future PR? Permanently removed? 6. No storage migration Switching from Substrate's Minor Issues7. Unused getter structs
8. Double In 9. There's no validation that the new treasury account is non-zero or otherwise valid. While root-only access is a reasonable guard, a zero/default account would silently break reward distribution. 10. Bare In What Looks Good
SummaryThe core idea — a lightweight config pallet for treasury account/portion — is sound. However, the PR needs attention on:
|
* feat: qp-header for Planck release (#338) * no circuit padding hasher for block header * *use custom hasher for header that encodes the pre-image in a felt aligned manner. * *bespoke header hasher * *patch bug with hash header fall back * *replace custom poseidon header hasher on generic header with a fork of header that has a custom hasher that overrides default on the header trait. * *rmv commented out impl of prior hash method * Update primitives/header/src/lib.rs Co-authored-by: Dastan <88332432+dastansam@users.noreply.github.com> * fixed tests * Use inherent struct method * Update Cargo.toml --------- Co-authored-by: Ethan <tylercemer@gmail.com> Co-authored-by: illuzen <illuzen@users.noreply.github.com> Co-authored-by: Dastan <88332432+dastansam@users.noreply.github.com> * burn high-security fee instead of sending to treasury (#357) * Continuous Mining (#358) * new block trigger * dedupe logic, remove unnecessary field * simplify again * fmt * clippy * fmt * feat: Vesting and MerkleAirdrop removed (#360) * feat: Merkle Airdrop - removed * feat: Vesting pallet - removed * fix: Clippy for header * Enable wormhole addresses in genesis (#359) * generate transfer proofs for genesis endowment * fmt * fix balances tests * fmt * add recover funds call (#361) * add recover funds call * add unit tests * fix up remaining tests * cargo fmt * fix benchmarks, update weights * fix merge error * feat: Custom Mutisig Pallet (#352) * feat: Merkle Airdrop - removed * feat: Vesting pallet - removed * poc: First multisig version * fix: Taplo * fix: Execution for expired & address simplified fallback * draft: Historical proposals - paginaged endpoint * draft: Historical proposals - from events only * ref: Events renamed + Deposits logic simplified * feat: GracePeriod param removed * fix: Reentrancy * feat: History cleaning redesigned * fix: Expiry - additional validation * feat: Proposal nonce * feat: Dynamic weights * feat: Multisig deposit fee * feat: MaxExpiry param * feat: Fees to Treasury * feat: History removable only by signers * fix: Weights * feat: Fees burned * feat: Filibuster protection * feat: Proposals auto cleaning * feat: Proposal id - nonce instead of hash * feat: Calls - production whitelist * feat: Remove call whitelisting * fix: Test fix after balances pallet update * fix: Review cleaning * fix: Multisig - auto-cleaning expanded (#364) * fix: Multisig - auto-cleaning expanded * fix: Weights related to storage size * QUIC miner (#363) * quic implementation * refactor for readability * simplify * miner initiates, multiple miners supported * simplify loop further * short job counters * simplify new_full * gracefully handle invalid seals * remove unused and log misbehaving miners * emoji * fmt * taplo * improve readability, logs, documentation * feat: High-Security Integration for Multisig Pallet (#368) * feat: Multisig + HS integrated * feat: Weights update * fix: Benchmarks + README * feat: HS trait defined in primitives * fix: Taplo * fix: Sell order tracking * feat: Deterministic address + simplified cleaning * fix: Deposits for multisig * fix: Dynamic weight + benchmarks refactor * feat: Execute - separated * feat: Multisig - benchamarks refactor * fix: Benchmarks - corrected HS multisig cost * feat: Dynamic cleaning methods * feat: Approve dissolve - two variants * feat: Approval with negative weight * Switch to new plonky2 (#367) * No pad hasher header (#327) * no circuit padding hasher for block header * *use custom hasher for header that encodes the pre-image in a felt aligned manner. * *bespoke header hasher * *patch bug with hash header fall back * *replace custom poseidon header hasher on generic header with a fork of header that has a custom hasher that overrides default on the header trait. * *rmv commented out impl of prior hash method * Update primitives/header/src/lib.rs Co-authored-by: Dastan <88332432+dastansam@users.noreply.github.com> * fixed tests * Use inherent struct method * Update Cargo.toml --------- Co-authored-by: Ethan <tylercemer@gmail.com> Co-authored-by: illuzen <illuzen@users.noreply.github.com> * Verify header in the wormhole proof (#295) * Use canonical balances pallet and add support for assets in wormhole (#333) * Use canonical balances pallet, add assets support to wormhole * Ignore old tests * Remove tests * Override native asset id * Use poseidon hasher * Use poseidon storage hasher * Passing wormhole proof tests * Update binaries * Update binaries * Update zk-circuits crates * Use crates.io dep versions * Use `ToFelts` trait in the wormhole pallet (#347) * Apply ToFelts changes to wormhole * Fix checks * Passing tests * Revert unit test line * Rename explicit AccountId * Add ValidateUnsigned impl to wormhole (#353) * feat: aggregated proof verification in wormhole (#351) * Aggregated proofs verification wormhole * clippy * check block hash in agg proof * feat: quantized funding amounts (#354) * feat/quantized_wormhole_funding_amount * *fix formatting * *rollback zk enabled circuit artfiact builds at runtime. * fmt --------- Co-authored-by: illuzen <illuzen@users.noreply.github.com> * Enforce miner wormhole address (#344) * feat: qp-header for Planck release (#338) * no circuit padding hasher for block header * *use custom hasher for header that encodes the pre-image in a felt aligned manner. * *bespoke header hasher * *patch bug with hash header fall back * *replace custom poseidon header hasher on generic header with a fork of header that has a custom hasher that overrides default on the header trait. * *rmv commented out impl of prior hash method * Update primitives/header/src/lib.rs Co-authored-by: Dastan <88332432+dastansam@users.noreply.github.com> * fixed tests * Use inherent struct method * Update Cargo.toml --------- Co-authored-by: Ethan <tylercemer@gmail.com> Co-authored-by: illuzen <illuzen@users.noreply.github.com> Co-authored-by: Dastan <88332432+dastansam@users.noreply.github.com> * Exponentially decaying token rewards (#340) * exponentially decaying token rewards * script to simulate emissions * clean up constants and switch python script to rust test * log if we hit max supply somehow * convert rewards_address to rewards_preimage to enforce wormhole address usage * better documentation * change arg name * Exponentially decaying token rewards (#340) * exponentially decaying token rewards * script to simulate emissions * clean up constants and switch python script to rust test * log if we hit max supply somehow * convert rewards_address to rewards_preimage to enforce wormhole address usage * better documentation * change arg name * address style comments --------- Co-authored-by: Cezary Olborski <cezary.olborski@gmail.com> Co-authored-by: Ethan <tylercemer@gmail.com> Co-authored-by: Dastan <88332432+dastansam@users.noreply.github.com> * update qp-poseidon version * made transfer count per-recipient * feat: enable wormhole verifier tests (#356) * bring back wormhole transfer proof generation tests * fmt --------- Co-authored-by: illuzen <illuzen@users.noreply.github.com> * remove painful test, we sent it to quantus-cli * burn half the volume fee * fmt * use new plonky2-verifier crate * fix: Remove no_random feature and patch plonky2 crates to use local versions - Remove no_random feature from qp-wormhole-verifier and qp-zk-circuits-common dependencies - Add patches to use local qp-plonky2 and qp-plonky2-field with fixed rand feature handling - These changes ensure consistent feature resolution across all workspace members * lock * new agg logic * better logging of agg proof failure modes * refresh bins * only one proof verified event necessary * update to latest rusty crystals * no minimum, no single proof verification * lock * handle new derivation rules * fmt * put wormhole transfer minimum back in, remove unused single-proof files * better lock * remove local plonky2 references * fix build.rs bin validation * remove unused functions * format * no more local deps * missing dev accounts * clippy --------- Co-authored-by: Dastan <88332432+dastansam@users.noreply.github.com> Co-authored-by: Ethan <tylercemer@gmail.com> Co-authored-by: Cezary Olborski <cezary.olborski@gmail.com> * generate TransferProofs on batch transfer * clippy + zk versions * feat: Treasury config pallet (#372) * feat: Treasury config pallet * fix: Taplo --------- Co-authored-by: Ethan <tylercemer@gmail.com> Co-authored-by: illuzen <illuzen@users.noreply.github.com> Co-authored-by: Dastan <88332432+dastansam@users.noreply.github.com> Co-authored-by: Nikolaus Heger <nheger@gmail.com>
No description provided.