Changelog
What's new
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
submitActionmethod. - [CLI] Default project READMEs updated with directory tree explanation, docker commands to load
.envand more.
v0.5.3
Features / Improvements
- Change datatype of
msgSenderandsignaturefields tostringeverywhere (such asSTFargs andActionParamsinterface).
Bug Fixes
- Fix ordering of properties in
Domaintype returned fromMicroRollupResponse.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
- Revamp the fields in
StackrConfigand arguments toMicroRollupconstructor. See upgrade guide. - Remove
previousStateRootandnewStateRootfields fromExecutorEvents.EXECUTE_ACTIONevent payload (ExecuteActionEventArgs).
Features / Improvements
- Micro-rollups can now be ran in "Sandbox" mode, without registration. The new config changes removes dependencies on
deployment.jsonandstackrAppfields. - Expose
emitin 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,previousStateRootandexecutionHooksLogsfields toExecutorEvents.EXECUTE_BLOCKevent payload (ExecuteBlockEventArgs). - The
sequencer.tick()method exposed inMicroRollupResponsenow returns a boolean value indicating whether a new block was sequenced or not. - [CLI] New
verifycommand: 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.batchInfofromactions.query() - [CLI] feat: Add Windows support for
stackrCLI commands and improve error handling. - [CLI] feat: add
--envFileflag 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
batchSizeandbatchTimefields inStackrConfigtoblockSizeandblockTimerespectively.
Features / Improvements
- Pre and post Block execution hooks. Learn more.
- Ability to create empty blocks by setting
sequencer.enableEmptyBlockstotrueinStackrConfig. - Add
logsanderrorsfields toActionExecutionStatusEventArgsinterface. - Make
syncer.slotTimean optional field (inStackrConfig) having a default value ofmax(1000, blockTime)ms. If provided value is less than1000ms, it defaults tomax(1000, blockTime)ms too. - Add
C1Xas 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
emitmethod in STF that can be used to record custom logs. Learn more. - [SDK] Add fields
logsanderrorstoSerializedAction. - [SDK] Expose
waitFormethod in theSerializedAcknowledgementobject returned fromsubmitAction.
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
isAcknowledgedByVulcan,isFinalized,isRejected,isSubmittingintoBlockStatusitself. - Added
Proposed,SubmittingandRejectedtoBlockStatus. - Change
BlockStatus.Unknown->BlockStatus.Proposed.
Features
- feat:
C3Bconfirmation now comes on Consensus Layer finalization - feat: Prune
state_updatesfor 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
fuelConsumedin DB along with BlockData - feat: store
l1BlockNumberand use it for query while doing C3B finalization - feat: add
Blockobject (containing height, timestamp and parentHash) in STF - feat: new Bridge plugin
- feat: expose
actions.queryin MicroRollupResponse
Other changes
- feat: store & send
l1Metadatawith block - feat:
positionInBlockfor actions - feat: emit
ChainEvents.REORGevent - feat: Support new Block Status Response
- feat: check
minSupportedSDKVersionfrom Vulcan Healthcheck - perf: optimizations for fetch actions & acks
- fix: [PLAYGROUND] remove 404 handler
- fix: Respect logLevel for playground plugins logs
- fix: use
ZeroHashas parentHash of first block - fix: use
stfSchemaMapto validate actions as per schema based on defined Transition functions - fix: remove
l1RPCfrom 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
advanceActionExecutionand 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.updateBlockStateand 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-ownershipalong with--privateKeysupport - feat: add
--privateKeyflag support for forregisteranddeploy - feat: [COMMAND]
add <entity> <address>changesadd-bridgetoadd bridge - docs: Add docker instructions in README
- fix: handle quote in
.envvalues - fix: handle errors globally
- fix: use
process.env.DB_URIas default - fix: don't ask if when no database
go-daash
go-daashNewv0.2.0release!- BlobstreamX integration by @0xRampey in #8
- VectorX integration by @0xRampey in #13.
- Refactor of DA interface by @0xRampey in #13.
Full Changelog: v0.1.7...v0.2.0
v0.2.12-alpha to v0.2.17-alpha
New Features
- [SDK] Playground Plugin
- Ability to add
customendpoints - Function to interact with Reducers using selected actions.
- Configurable Port for playground & Link in terminal to directly open and connect Playground to your MRU
- Ability to add
- [CLI] Use App Registration Fee from the Contract for the Operator
- [CLI/SDK] Add support for
mariadbandmysql - [CLI] Remove the existing DataStore on
stack register - [VULCAN] Support new
Betacontracts - [VULCAN] Interact with Router contract for block submission
- [VULCAN] Honouring Operator's configured
preferredDAbefore trying fallback DAs. - [VULCAN] Monitoring Setup for Unified MRU Ecosystem View and Metrics.
Improvements
- [VULCAN] Pre-deployment Validation of on-chain hashes for Genesis State and WASM Binary
- [SDK] Simplified State structure by dropping
clonemethod from requirement and making WrappedState optional for trivial states. - [SDK] Type Safety on inputs in STF by adding
InputTypeas optional second param toSTF<A, B>type. - [CLI] New Templates added for initialising a Micro-rollup.
- [CLI ]initialise projects with basic
README.md - [CLI] Add
chainIdtodeployment.jsonmaking it easier for user to get Chain Information for Signing Domain - [CLI] Clean-up interim build files in process of making State Machine WASM
- [SDK] Take
stateMachinesin MRU constructor. - [SDK] Take
preferredDAin Config. - [SDK] Utils
- Solidity-like
REQUIREfunction
- Solidity-like
Fixes
- [SDK] Fix duplication batch submission to Vulcan incase of high response times.
- [CLI] Sanitise URLs and payload before sending deployment requests to Parent Chain and Vulcan.
- [CLI] Handle Registration with
falsyGenesis states. - [SDK] Initialisation of Parent Chain listeners in
sandboxMode. [Lazy Initialisation] - [SDK] Serialisation of
bigintentities tonumberbefore sending it in batch to Vulcan. - [VULCAN] Compare
primitveandnon-primitiveGenesis States separately, to avoid serialisation causing validation failures.
v0.2.4-alpha to v0.2.11-alpha
New Features
- [SDK] Add Playground plugin
- [SDK] Emit Playground events
- [CLI] Brand new CLI
- [SDK] Separate Block Builder and Proposer
- [SDK] Add Builder signature in Block to support external Block builders
- [SDK] Add MRU shutdown within app
- [SDK] Add HTTP and WS server for playground
- [SDK] Handle Vulcan rejection - C2X
- [SDK] Add executionStatus for actions to block
- [SDK] Remove StateInput type from MRU
Improvements
- [SDK] Clean execution model
- [CLI/SDK] **Allow state machine to gracefully handle error for reverted Action
- [VULCAN] Handle incorrect msgSender
- [VULCAN] Handle C1 reverted actions gracefully
- [SDK] Allow default block building strategy
- [SDK] Better debug log response from Vulcan
- [CLI] Better Errors for config and on-chain contract calls
Fixes
- [SDK] Fix C2 confirmation status receiving
- [SDK] Sandbox database cleanup on exit
- [SDK] Send BlockData in ProposeBlock
- [SDK] Fix MRU re-initialization bug
- [CLI] pre-install deps & DB drivers as per user's choice
- [CLI] Mute console.logs from compiled binary
v0.2.1-alpha to v0.2.4-alpha
New Features
- Allow multiple State Transition Functions
- Added Plugins framework to build extensions/plugins on top of the SDK
- New Error Framework
- Allow Lazy addition of State Machines & Sequencer Strategies.
- Store granular state updates per block
Improvements
- Reduced package bundle size by ~60%
- Give State Transition Function access to
msgSenderandsignature. - Reduce the number of parameters in MRU constructor, just necessary config to start with.
- Allow dynamic store config to be able to connect with PostgreSQL alongside SQLite.
- Change MRU interface and expose more utility functions on top level
Fixes
- Backfill Rollup state machine in case servers crashes or restarts.
- Reduce the number of parameters in MRU constructor just necessary config to start with.
- Keep failed actions in
batch - Better serialization for data like Actions, Acknowledgements & Blocks.
- Improve blockhash attributes
- Prevent replay attacks.
- Separate flags control L1 Syncer, Vulcan Syncer and Block producer