Skip to content

Changelog

What's new

v0.6.0

Breaking changes

See upgrade guide.

  • Add new State.STF and State.Hook static methods to define STFs and Hooks.
  • Remove ActionSchema. Input schemas are now defined directly inside the STFs.
  • Action signatures are now enforced over both STF name and inputs, as opposed to inputs only earlier.

Bug Fixes

  • Fix a bug where if a custom sequencer strategy were to discard actions, they would get removed from the action pool. Such discarded actions, if any, are now re-enqueued to the front of the action pool.

Improvements

Other changes

  • Updates in CLI v0.1.8, ESLint Plugin v0.1.2 and Playground for the above breaking changes. (Use latest for both for compatibility)

v0.5.5

Breaking changes

  • The getOrderedActions method of a sequencer strategy now accepts a list of actions as a Readonly<AcknowledgedAction[]> type and is supposed only to return the ordered list of action hashes as opposed to Action objects earlier.

Bug Fixes

  • Fix BigInt handling for PostgreSQL.

Improvements

  • Enable WAL for SQLite. This enables better concurrency between readers and writers.
  • Optimized execution time by removing duplicate calculation of state root before and after applying all of the block's actions.
  • Enforce max size on action's payload during submission (~128kb). This limit is also enforced when collecting actions for block building.

Other changes

  • Bumps dependencies version to address high-security vulnerabilities

CLI v0.1.6

  • Remove the add hook command.
  • Perform lint checks in compile command before building Wasm. This makes use of @stackr/eslint-plugin, an ESLint plugin with few rules to prevent devs from adding non-deterministic code in transition functions.

CLI v0.1.5

  • The EIP-712 domain for the app is now injected into the stf.wasm.
  • Outputs the actual error message if any step in compile (or deploy) command fails.
  • Fixes reading of leaf-level shorthand property assingments in stackr.config.ts.
  • Fixes using the deploymentFile property from stackr.config.ts for deployment file name if specified (defaults to deployment.json).

v0.5.4 (and CLI v0.1.4)

  • Sandbox mode now uses Sepolia's Chain ID (11155111) for faster testing.
  • Clear type hint for arguments of submitAction method.
  • [CLI] Default project READMEs updated with directory tree explanation, docker commands to load .env and more.

v0.5.3

Features / Improvements

  • Change datatype of msgSender and signature fields to string everywhere (such as STF args and ActionParams interface).

Bug Fixes

  • Fix ordering of properties in Domain type returned from MicroRollupResponse.config.domain.
  • Fix a bug where the L1 listener would at times run into "filter not found" error.

v0.5.2 (and CLI v0.1.2)

Breaking Changes

Features / Improvements

  • Micro-rollups can now be ran in "Sandbox" mode, without registration. The new config changes removes dependencies on deployment.json and stackrApp fields.
  • Expose emit in block hooks as well (previously it was available only in STFs). Learn more.
  • Add ability to unsubscribe or inspect/list active listeners to MRU events.
  • Perform C2, C3A and C3B syncs for stale blocks on MRU start-up. This is useful to quickly sync latest states if you re-run the MRU after some downtime.
  • Add previousState, previousStateRoot and executionHooksLogs fields to ExecutorEvents.EXECUTE_BLOCK event payload (ExecuteBlockEventArgs).
  • The sequencer.tick() method exposed in MicroRollupResponse now returns a boolean value indicating whether a new block was sequenced or not.
  • [CLI] New verify command: Verify that the source state machine binary matches with the registered binary on AppInbox. Learn more.

Bug Fixes

  • Fixes a bug where it was possible to force create an empty block by returning an empty list of actions from sequencer strategy.
  • [CLI] Registering app subsequently won't fail if hash values match.
  • [Playground] Fix state rendering for non-JSON state.

v0.5.1 (and CLI v0.1.1)

  • [SDK] fix: get missing block.batchInfo from actions.query()
  • [CLI] feat: Add Windows support for stackr CLI commands and improve error handling.
  • [CLI] feat: add --envFile flag to all commands to load environment variables from a different file than .env

v0.5.0 (and CLI v0.1.0)

Upgrade guide: here.

Breaking Changes

  • Blocks are now rolled up into batches by Vulcan every some fixed interval. Therefore, C3A and above confirmation levels are now received on the batch level from Vulcan and L1. Learn more.
  • State Updates are now stored on the Block level and not Action level. In case of a chain revert, the state reverts to the last block having status equal to or higher than Sequenced.
  • Renamed batchSize and batchTime fields in StackrConfig to blockSize and blockTime respectively.

Features / Improvements

  • Pre and post Block execution hooks. Learn more.
  • Ability to create empty blocks by setting sequencer.enableEmptyBlocks to true in StackrConfig.
  • Add logs and errors fields to ActionExecutionStatusEventArgs interface.
  • Make syncer.slotTime an optional field (in StackrConfig) having a default value of max(1000, blockTime) ms. If provided value is less than 1000 ms, it defaults to max(1000, blockTime) ms too.
  • Add C1X as a new action confirmation level that represents failed execution.
  • [CLI] Use dynamic linking for reduced Wasm binary size.

Bug Fixes

  • Prevent concurrent sequencer ticks.
  • Prevent concurrent Vulcan block submission ticks.
  • Fix some types not being exported correctly from the build.

v0.4.3

  • [SDK] On MRU bootup, if SDK version does not meet Vulcan's minimum SDK supported version requirement then the latest state is dumped in a JSON file. This is useful to restore state in a new MRU deployment.

v0.4.2 (and CLI v0.0.20)

Features

  • [SDK] Expose emit method in STF that can be used to record custom logs. Learn more.
  • [SDK] Add fields logs and errors to SerializedAction.
  • [SDK] Expose waitFor method in the SerializedAcknowledgement object returned from submitAction.

Improvements

  • [CLI] Minified bundled JS file to optimize Wasm binary size.
  • [SDK] Removed redundant state computation to optimize Wasm execution.

v0.2.18-alpha to v0.4.1, CLI v0.0.19 and more

SDK

Breaking Changes

  • Consolidate BlockEntity boolean fields into status
  • Merged the boolean fields isAcknowledgedByVulcanisFinalizedisRejectedisSubmitting into BlockStatus itself.
  • Added ProposedSubmitting and Rejected to BlockStatus.
  • Change BlockStatus.Unknown -> BlockStatus.Proposed.

Features

  • feat: C3B confirmation now comes on Consensus Layer finalization
  • feat: Prune state_updates for old finalized blocks
    • Remove all the state updates for actions in the finalized block once it receives C3B. This makes the datastore lighter.
  • feat: Store fuelConsumed in DB along with BlockData
  • feat: store l1BlockNumber and use it for query while doing C3B finalization
  • feat: add Block object (containing height, timestamp and parentHash) in STF
  • feat: new Bridge plugin
  • feat: expose actions.query in MicroRollupResponse

Other changes

  • feat: store & send l1Metadata with block
  • feat: positionInBlock for actions
  • feat: emit ChainEvents.REORG event
  • feat: Support new Block Status Response
  • feat: check minSupportedSDKVersion from Vulcan Healthcheck
  • perf: optimizations for fetch actions & acks
  • fix: [PLAYGROUND] remove 404 handler
  • fix: Respect logLevel for playground plugins logs
  • fix: use ZeroHash as parentHash of first block
  • fix: use stfSchemaMap to validate actions as per schema based on defined Transition functions
  • fix: remove l1RPC from playground config
  • fix: create partial block in DB & create one block at a time.
  • fix: backfill pending actions from DB to pool on bootup
  • fix: execute & sequence unfinalized blocks on bootup
  • fix: sync missed BlockSubmitted L1 events on bootup
  • fix: State revert to Genesis in case of first action getting rejected [BUG]
  • fix: await for advanceActionExecution and then enqueue [BUG]
  • fix: validate genesis state and getRootHash at MRU init
  • refactor: Remove internal Datastore
  • refactor: getBlockByActionHash
  • chore: add local server link in playground logs
  • chore: add Bytes32 to Solidity type
  • chore: add lint rule for no-floating-promises and all occurrences of no-floating-promises
  • test: BlockService.updateBlockState and few more

CLI

  • feat: Support default export and declaration export for State Machines
  • feat: Update datastore in config & fixes in query config
  • feat: [COMMAND] transfer-ownership along with --privateKey support
  • feat: add --privateKey flag support for for register and deploy
  • feat: [COMMAND] add <entity> <address> changes add-bridge to add bridge
  • docs: Add docker instructions in README
  • fix: handle quote in .env values
  • fix: handle errors globally
  • fix: use process.env.DB_URI as default
  • fix: don't ask if when no database

go-daash

Full Changelog: v0.1.7...v0.2.0

v0.2.12-alpha to v0.2.17-alpha

New Features

  1. [SDK] Playground Plugin
    1. Ability to add custom endpoints
    2. Function to interact with Reducers using selected actions.
    3. Configurable Port for playground & Link in terminal to directly open and connect Playground to your MRU
  2. [CLI] Use App Registration Fee from the Contract for the Operator
  3. [CLI/SDK] Add support for mariadb and mysql
  4. [CLI] Remove the existing DataStore on stack register
  5. [VULCAN] Support new Beta contracts
  6. [VULCAN] Interact with Router contract for block submission
  7. [VULCAN] Honouring Operator's configured preferredDA before trying fallback DAs.
  8. [VULCAN] Monitoring Setup for Unified MRU Ecosystem View and Metrics.

Improvements

  1. [VULCAN] Pre-deployment Validation of on-chain hashes for Genesis State and WASM Binary
  2. [SDK] Simplified State structure by dropping clone method from requirement and making WrappedState optional for trivial states.
  3. [SDK] Type Safety on inputs in STF by adding InputType as optional second param to STF<A, B> type.
  4. [CLI] New Templates added for initialising a Micro-rollup.
  5. [CLI ]initialise projects with basic README.md
  6. [CLI] Add chainId to deployment.json making it easier for user to get Chain Information for Signing Domain
  7. [CLI] Clean-up interim build files in process of making State Machine WASM
  8. [SDK] Take stateMachines in MRU constructor.
  9. [SDK] Take preferredDA in Config.
  10. [SDK] Utils
    1. Solidity-like REQUIRE function

Fixes

  1. [SDK] Fix duplication batch submission to Vulcan incase of high response times.
  2. [CLI] Sanitise URLs and payload before sending deployment requests to Parent Chain and Vulcan.
  3. [CLI] Handle Registration with falsy Genesis states.
  4. [SDK] Initialisation of Parent Chain listeners in sandbox Mode. [Lazy Initialisation]
  5. [SDK] Serialisation of bigint entities to number before sending it in batch to Vulcan.
  6. [VULCAN] Compare primitve and non-primitive Genesis States separately, to avoid serialisation causing validation failures.

v0.2.4-alpha to v0.2.11-alpha

New Features

  1. [SDK] Add Playground plugin
  2. [SDK] Emit Playground events
  3. [CLI] Brand new CLI
  4. [SDK] Separate Block Builder and Proposer
  5. [SDK] Add Builder signature in Block to support external Block builders
  6. [SDK] Add MRU shutdown within app
  7. [SDK] Add HTTP and WS server for playground
  8. [SDK] Handle Vulcan rejection - C2X
  9. [SDK] Add executionStatus for actions to block
  10. [SDK] Remove StateInput type from MRU

Improvements

  1. [SDK] Clean execution model
  2. [CLI/SDK] **Allow state machine to gracefully handle error for reverted Action
  3. [VULCAN] Handle incorrect msgSender
  4. [VULCAN] Handle C1 reverted actions gracefully
  5. [SDK] Allow default block building strategy
  6. [SDK] Better debug log response from Vulcan
  7. [CLI] Better Errors for config and on-chain contract calls

Fixes

  1. [SDK] Fix C2 confirmation status receiving
  2. [SDK] Sandbox database cleanup on exit
  3. [SDK] Send BlockData in ProposeBlock
  4. [SDK] Fix MRU re-initialization bug
  5. [CLI] pre-install deps & DB drivers as per user's choice
  6. [CLI] Mute console.logs from compiled binary

v0.2.1-alpha to v0.2.4-alpha

New Features

  1. Allow multiple State Transition Functions
  2. Added Plugins framework to build extensions/plugins on top of the SDK
  3. New Error Framework
  4. Allow Lazy addition of State Machines & Sequencer Strategies.
  5. Store granular state updates per block

Improvements

  1. Reduced package bundle size by ~60%
  2. Give State Transition Function access to msgSender and signature.
  3. Reduce the number of parameters in MRU constructor, just necessary config to start with.
  4. Allow dynamic store config to be able to connect with PostgreSQL alongside SQLite.
  5. Change MRU interface and expose more utility functions on top level

Fixes

  1. Backfill Rollup state machine in case servers crashes or restarts.
  2. Reduce the number of parameters in MRU constructor just necessary config to start with.
  3. Keep failed actions in batch
  4. Better serialization for data like Actions, Acknowledgements & Blocks.
  5. Improve blockhash attributes
  6. Prevent replay attacks.
  7. Separate flags control L1 Syncer, Vulcan Syncer and Block producer