Releases: 0xMiden/protocol
Releases · 0xMiden/protocol
v0.14.0
Features
- Added single-word
Arraystandard (#2203). - Added
SignedBlockstruct (#2355). - Enabled
CodeBuilderto add advice map entries to compiled scripts (#2275). - Implemented verification of AggLayer deposits (claims) against GER (#2288, #2295).
- Added
Ownable2Stepaccount component with two-step ownership transfer (transfer_ownership,accept_ownership,renounce_ownership) andowner,nominated_ownerprocedures (#2292). - Added double-word array data structure abstraction over storage maps (#2299).
- Added
BlockNumber::MAXconstant to represent the maximum block number (#2324). - Introduced
TokenMetadatatype to encapsulate fungible faucet metadata (#2344). - Added
PackageKindandProcedureExport(#2358). - Added
AccountTargetNetworkNotetype andNetworkNoteExttrait withis_network_note()/as_account_target_network_note()helpers (#2365). - [BREAKING] Added
get_assetandget_initial_assetkernel procedures and removedget_balance,get_initial_balanceandhas_non_fungible_assetkernel procedures (#2369). - Added
p2id::newMASM constructor procedure for creating P2ID notes from MASM code (#2381). - Implemented
assert_valid_gerprocedure for verifying GER against storage (#2388). - Added
P2idNoteStorageandP2ideNoteStorage(#2389). - Added
StandardNote::from_script_root()andStandardNote::name()methods, and exposedNoteTypePUBLIC/PRIVATEmasks as public constants (#2411). - Resolve standard note scripts directly in
TransactionExecutorHostinstead of querying the data store (#2417). - Added AggLayer faucet registry to bridge account with conversion metadata,
CONFIG_AGG_BRIDGEnote for faucet registration, and FPI-based asset conversion inbridge_out(#2426). - Added
DEFAULT_TAGconstant tomiden::standards::note_tagMASM module (#2482). - Added
NoteExecutionHintvariant constants (NONE,ALWAYS,AFTER_BLOCK,ON_BLOCK_SLOT) tomiden::standards::note::execution_hintMASM module (#2493). - Added
Packagesupport inMockChainBuilder&NoteScript(#2502). - Added PSM authentication procedures and integrated them into
AuthMultisig(#2527). - Added
CodeBuilder::with_warnings_as_errors()to promote assembler warning diagnostics to errors (#2558). - Added
MintPolicyConfigfor flexible minting policy enforcement (#2559) - Added
MockChain::add_pending_batch()to allow submitting user batches directly (#2565). - Implemented the
on_before_asset_added_to_accountasset callback (#2571). - Added
ProgramExecutorhooks to support DAP and other custom transaction program executors (#2574). - Added
create_fungible_keyfor construction of fungible asset keys (#2575). - Added metadata hash storage to AggLayer faucet and FPI retrieval during bridge-out leaf construction (#2583).
- Added
SwapNoteStoragefor typed serialization/deserialization of SWAP note storage (#2585). - Added
InputNoteCommitment::from_parts()for construction of input note commitments from a nullifier and optional note header (#2588). - Added
boolschema type to the type registry and updated ACL auth component to use it for boolean config fields (#2591). - Implemented the
on_before_asset_added_to_noteasset callback (#2595). - Added
component_metadata()to all account components to expose their metadata (#2596). - [BREAKING] Changed
native_account::remove_assetto return the asset value remaining in the vault instead of the removed value (#2626). - Implemented
TransactionEventId::event_nameandHost::resolve_eventfor better VM diagnostics during even handler failures (#2628). - Added
FixedWidthStringfor fixed-width UTF-8 string storage inmiden-standards(miden::standards::utils::string). (#2633)
Changes
- [BREAKING] Renamed
NoteInputstoNoteStorageto better reflect that values are stored data associated with a note rather than inputs (#1662, #2316). - Introduced NOTE_MAX_SIZE (256 KiB) and enforce it on individual output notes (#2205, #2651).
- Restructured
miden-agglayer/asmdirectory to separate bridge and faucet into per-component libraries, preventing cross-component procedure exposure (#2294). - Skip requests to the
DataStorefor asset vault witnesses which are already in transaction inputs (#2298). - [BREAKING] Refactored
TransactionAuthenticator::get_public_key()method to returnArc<PublicKey>instead of&PublicKey(#2304). - Removed
NoteType::Encrypted(#2315). - [BREAKING] Updated note tag length to support up to 32 bits (#2329).
- [BREAKING] Renamed
WellKnownComponenttoStandardAccountComponent,WellKnownNotetoStandardNote, andWellKnownNoteAttachmenttoStandardNoteAttachment(#2332). - Added B2AGG and UPDATE_GER note attachment target checks (#2334).
- Removed protocol-reserved faucet sysdata storage slot (#2335).
- [BREAKING] Moved standard note code into individual note modules (#2363).
- [BREAKING] Prefixed transaction kernel events with
miden::protocol(#2364). - [BREAKING] Added
miden::standards::note_tagmodule for account target note tags (#2366). - [BREAKING] Made
AccountComponentMetadataa required parameter ofAccountComponent::new(); removedwith_supported_type,with_supports_all_types, andwith_metadatamethods fromAccountComponent; simplifiedAccountComponentMetadata::new()to take justname; renamedAccountComponentTemplateErrortoComponentMetadataError(#2373, #2395). - [BREAKING] Changed note scripts to be compiled as libraries with
@note_scriptannotation for marking the entrypoint procedure (#2339, #2374). - Made kernel procedure offset constants public and replaced accessor procedures with direct constant usage (#2375).
- Removed redundant note storage item count from advice map (#2376).
- Added
miden::protocol::authmodule with public auth event constants (#2377). - Moved
NoteExecutionHinttomiden-standards(#2378). - [BREAKING] Simplified
NoteMetadata::new()constructor to not require tag parameter; tag defaults to zero and can be set viawith_tag()builder method (#2384). - Unified the underlying representation of
ExitRootandSmtNodeand use type aliases (#2387). - Changed GER storage to a map (#2388).
- [BREAKING] Consolidated authentication components ([#2390] (#2390))
- [BREAKING] Refactored assets in the tx kernel and
miden::protocolfrom one to two words, i.e.ASSETbecomesASSET_KEYandASSET_VALUE(#2396, #2410). - Fixed MASM inline comment casing to adhere to commenting conventions (#2398).
- Prefixed standar...
v0.14.0-rc.1
What's Changed
- feat(AggLayer): bridging spec by @mmagician in #2469
- Fix numbering and formatting in algorithm steps by @krlosMata in #2547
- feat: support bool types on schemas by @igamigo in #2591
- fix: move recompute logic to
OutputNoteBuilder::add_assetto avoid repeated hashing by @PoulavBhowmick03 in #2577 - Create storage helpers for
AggLayerBridgeby @Fumuran in #2562 - feat: expose
AccountComponentMetadatathrough public method by @juan518munoz in #2596 - Fix
TokenSymbol::try_from(Felt)underflow by @Himess in #2568 - feat: implement asset callbacks by @PhilippGackstatter in #2571
- feat: implement
on_before_asset_added_to_notecallback by @PhilippGackstatter in #2595 - feat: validate asset metadata by @PhilippGackstatter in #2609
- refactor: reorient
CLAIMnote consumption flow by @partylikeits1983 in #2528 - Flexible Minting Policies for Token Standards by @onurinanc in #2559
- feat(agglayer): process CLAIM notes from a rollup by @mmagician in #2573
- Compute claimed global index chain hash by @Fumuran in #2516
- refactor: move storage schema component into a separate file by @bobbinth in #2603
- chore(AggLayer):
verify_leaf_bridgeis no longer part of the bridge interface by @mmagician in #2612 - feat: add
Packagesupport inMockChainBuilder&NoteScriptby @lima-limon-inc in #2502 - Refactor asset handling and introduce SwapNoteStorage by @PoulavBhowmick03 in #2592
- feat: add callback docs by @PhilippGackstatter in #2604
- Add hooks to enable TX debugging by @djolertrk in #2574
- feat: implement CLAIM note nullifier tracking by @partylikeits1983 in #2610
- Migrate to Miden VM
v0.22.0-alpha.1by @Fumuran in #2625 - AggLayer: Normalize storage slot naming by @Fumuran in #2521
- feat: add FixedWidthString utility by @afa7789 in #2633
- feat(agglayer): store and use metadata hash for bridge-out leaves by @mmagician in #2583
- feat: implement
TransactionEventId::event_nameand host name resolution by @PhilippGackstatter in #2628 - chore: merge tx kernel audit fixes to
nextby @PhilippGackstatter in #2635 - feat: change
native_account::remove_assetto return the remaining asset by @PhilippGackstatter in #2626 - chore: bring changes from v0.14.0-beta into
nextby @mmagician in #2647 - refactor: minor improvements to
AccountComponentCodeby @igamigo in #2597
Full Changelog: v0.14.0-beta.2...v0.14.0-rc.1
v0.14.0-beta.4
What's Changed
- chore: Bump
NOTE_MAX_SIZEto 256 KiB by @PhilippGackstatter in #2651
Full Changelog: v0.14.0-beta.2...v0.14.0-beta.4
v0.14.0-alpha.2
What's Changed
- feat(AggLayer): bridging spec by @mmagician in #2469
- Fix numbering and formatting in algorithm steps by @krlosMata in #2547
- Create storage helpers for
AggLayerBridgeby @Fumuran in #2562
v0.14.0-beta.2
v0.14.0-beta.1
What's Changed
- chore: refactor tx kernel from
ASSETtoASSET_KEYandASSET_VALUEby @PhilippGackstatter in #2396 - chore: refactor
miden::protocolfromASSETtoASSET_KEYandASSET_VALUEby @PhilippGackstatter in #2410 - feat: adapt the layout of
Assets to the double word representation by @PhilippGackstatter in #2437 - feat: migrate to miden VM 0.21 and miden crypto 0.22 by @PhilippGackstatter in #2508
- feat: optimize layouts and procedures for little-endian by @PhilippGackstatter in #2512
- fix: remove unused MASM imports by @PhilippGackstatter in #2543
- fix: enable
miden-crypto/stdintestingfeature to fix MSRV check by @mmagician in #2544 - chore: enable CI on merge queue trigger by @mmagician in #2540
- feat: enable warning as errors for CodeBuilder by @igamigo in #2558
- refactor: enforce defining supported types on metadata by @igamigo in #2554
- feat: enforce maximum serialized size for output notes by @Forostovec in #2205
- Refactor(account) introducing account id key by @swaploard in #2495
- fix: make format and remove unused import by @PhilippGackstatter in #2564
- feat: make
NoteMetadataHeaderpublic by @SantiagoPittella in #2561 - chore: ProvenBlock constructor with validation by @sergerad in #2553
- refactor: remove
OrdandPartialOrdfromStorageSlotby @PercyDikec in #2549 - chore: Replace SMT leaf conversion function by @sergerad in #2271
- feat(MockChain): add ability to submit user batches by @igamigo in #2565
- Integrate PSM Contracts to AuthMultisig by @onurinanc in #2527
- refactor: remove
ProvenTransactionBuilderin favor ofProvenTransaction::newby @Himess in #2567 - Ownable 2 step feature by @afa7789 in #2292
- feat(standards): prefix account components with miden::standards namespace by @Himess in #2400
- Rename output note structs by @bobbinth in #2569
- feat(asm): add
create_fungible_keyproc for fungible asset vault keys by @PoulavBhowmick03 in #2575 - feat: migrate miden-agglayer to VM 0.21 and crypto 0.22 by @mmagician in #2546
- chore: bump versions to v0.14.0-beta.1 by @mmagician in #2582
- Make Ownable2Step AccountComponent by @onurinanc in #2572
- feat: add
from_parts_unchecked()method forInputNoteCommitmentby @juan518munoz in #2588 - chore: bring in latest changes from
nexttov0.14-betaby @mmagician in #2589
Full Changelog: v0.14.0-alpha.1...v0.14.0-beta.1
v0.14.0-alpha.1
What's Changed
- feat(testing): improve error message quality in miden-testing by @avorylli in #2251
- Make TransactionAuthenticator return Arc for public key by @bobbinth in #2304
- chore: use workspace dependencies for
serde,tokioandfs-errby @mmagician in #2313 - Remove
asset_witnessesfield fromTransactionInputsby @bobbinth in #2298 - chore: deduplicate attachment constants by @PhilippGackstatter in #2311
- feat: rename NoteInputs to NoteStorage by @Farukest in #2282
- refactor: remove Encrypted note type and update related documentation by @swaploard in #2315
- feat: Enable CodeBuilder to add advice map entries to compiled scripts by @huitseeker in #2275
- chore: note inputs to note storage rename followup by @PhilippGackstatter in #2316
- feat: add BlockNumber::MAX by @SantiagoPittella in #2324
- fix: rename note inputs to note storage in docs by @PhilippGackstatter in #2322
- chore: replace release-plz with cargo publish workflow by @huitseeker in #2325
- refactor: rename WellKnown.. types to Standard.. by @sashass1315 in #2332
- feat: Single-word
Arrayabstraction by @mmagician in #2203 - feat: Add SignedBlock struct by @sergerad in #2355
- feat: re-export
PackageKind&ProcedureExportby @lima-limon-inc in #2358 - chore: use
bytes_to_packed_u32_feltsinstead of defining our own inmiden-baseby @mmagician in #2359 - Note tag 32bit routing(#2309) by @swaploard in #2329
- Move standard notes into individual files by @bobbinth in #2363
- feat: add
miden::standards::note_tagmodule by @PhilippGackstatter in #2366 - refactor: prefix tx kernel events with
miden::protocolby @VolodymyrBg in #2364 - refactor: convert note scripts from program to library format by @Farukest in #2340
- feat(AggLayer): implement
verify_leaf_bridgeby @mmagician in #2288 - chore: remove faucet sysdata storage slot by @PhilippGackstatter in #2335
- Feat/remove note libraries by @Farukest in #2374
- refactor: remove redundant note storage item count from advice map by @Farukest in #2376
- Simplify
NoteMetadataconstructor by making tag optional by @Copilot in #2384 - feat: double-word Array abstraction by @mmagician in #2299
- refactor: add miden::protocol::auth module with public auth event constants by @Farukest in #2377
- feat: Replace
get_balanceandhas_non_fungible_assetwithget_assetby @PhilippGackstatter in #2369 - refactor: move NoteExecutionHint to miden-standards by @Farukest in #2378
- chore: Add safe constructor and validation fns to signed block by @sergerad in #2382
- Implement
verify_merkle_proofformiden::agglayerby @Fumuran in #2361 - feat(AggLayer):
B2AGGnote consumption check by @mmagician in #2334 - chore:
InitStorageDatafollowups by @igamigo in #2296 - chore: merge
agglayerintonextby @mmagician in #2354 - feat: introduce TokenMetadata type for fungible faucet metadata by @Farukest in #2380
- refactor: replace auth event constant workarounds with direct imports by @Farukest in #2404
- MASM lowercase inline comments by @mmagician in #2398
- fix(AggLayer): use correct byte<>
Feltconversion by @mmagician in #2387 - feat: add
StandardNoteconstructor from note script by @TomasArrachea in #2411 - refactor: enforce component metadata in account component by @igamigo in #2373
- chore: rename error by @igamigo in #2395
- refactor: make tx kernel procedure offset constants public by @Farukest in #2375
- feat: handle standards scripts directly in
TransactionExecutorHostw/oDataStorequery by @mmagician in #2417 - feat: add p2id::new MASM constructor for creating P2ID notes by @Farukest in #2381
- fix: u64 limb ordering by @PhilippGackstatter in #2441
- feat(AggLayer claim e2e #1): Move padding to the end of
NoteStorageforCLAIMnote by @mmagician in #2405 - feat(AggLayer claim e2e #2): byte packing from felts by @mmagician in #2401
- feat(AggLayer claim e2e #3):
GlobalIndexwrapper by @mmagician in #2407 - feat(AggLayer claim e2e #4): e2e bridge-in flow with real bridge data by @mmagician in #2413
- chore(Agglayer): refactors to make scaling down easier by @mmagician in #2446
- Execute FPI with one
syscallby @Fumuran in #2408 - chore: reorder account ID and nonce memory and advice layout by @PhilippGackstatter in #2442
- feat: add
make test-releasecommand running without debug mode by @PhilippGackstatter in #2448 - feat: increase
TokenSymbolmax length from 6 to 12 uppercase characters by @Farukest in #2420 - feat: u256 to felt scaling procedure by @partylikeits1983 in #2331
- feat(AggLayer bridge-out e2e #1): process bridging-out data and load
LeafDatato memory by @mmagician in #2425 - feat(AggLayer): Store
hash(GER)in the bridge storage and implementassert_valid_gerby @mmagician in #2388 - feat(AggLayer bridge-out e2e #2): store Local Exit Tree in
AggLayerBridgecontract and update it uponB2AGGconsumption by @mmagician in #2424 - chore: Remove BlockSigner trait by @sergerad in #2447
- feat: account builder helper for schema commitment by @igamigo in #2419
- feat(AggLayer): faucet registry by @mmagician in #2426
- Adding p2id p2ide note storage(#2368) by @swaploard in #2389
- feat: add
DEFAULT_TAGconstant tonote_tagMASM module by @mmagician in #2482 - fix: batch test assumes wrong input note order by @PhilippGackstatter in #2485
- feat: add solidity-compat test for generating local
claimAsset()param data by @partylikeits1983 in #2474 - refactor: address review nits from PR #2474 by @mmagician in #2489
- fix: avoid collisions in random numbers by @PhilippGackstatter in #2492
- feat: add native asset claim amount as element in
NoteStorageofCLAIMnote by @partylikeits1983 in #2460 - Consolidation of Authentication Components by @onurinanc in #2390
- feat(AggLayer): Note checks tracking PR by @mmagician in #2490
- refactor(Agglayer): restructure tracking PR by @mmagician in #2477
- refactor: refactor
verify_u256_to_native_amountto be a wrapper procedure by @partylikeits1983 in #2504 - feat(standards): add
NoteExecutionHintconstants to MASM standards by @mmagician in #2493 - refactor: enforce
CLAIMnote consumer viaNetworkAccountTargetattachment, notNoteStorageby @mmagician in #2480 - chore: update stale miden-base references to protocol by @Himess in #2503
- fix: Move sender validation from note script into bridge procedures by @mmagician in #2511
- docs(AggLayer): fix doc comments and inline comments for bridge components by @mmagician in #2510
- refactor: remove
OutputNoteDatafromAdviceMapinCLAIMnote by @partylikeits1983 in #2509 - chore: rename
SchemaTypeIdby @igamigo in #2494 - Agglayer tracking PR by @mmagician ...
v0.13.3
- Fixed
CLAIMnote creation to useNetworkAccountTargetattachment (#2352). - Added standards for working with
NetworkAccountTargetattachments (#2338). - Fixed
PartialBlockchain::add_block()not adding block headers to theblocksmap whentrack=true, which causedprune_to()to never untrack old blocks, leading to unbounded memory growth (#2353).