Releases: connext/indra
Indra 7.0.0-alpha.8
Indra v7.0.0-alpha.6
Breaking Changes
- #1079 - All client/node message communication includes a
nodeIdentifier
prefix.
Performance Improvements
- #1237 #1233 - Integrate pure-evm which runs a Rust-based WASM EVM in our client/node to avoid calling on-chain when running state transition code. Improves transfer speed by ~30%.
- #1234 - Use Postgres stored procedures to reduce DB round trips.
- #1238 - Move some config out of the DB and into node memory.
Stability Improvements
- #1249 #1250 #1253 #1251 #1227 - Huge improvements to sync protocol, added sync usage to recover from runtime errors as they occur. Protects against out-of-sync errors caused by network latency or client drop-outs.
New Features
- #1217 - Support for non-18 decimal tokens.
Other Fixes
Artifacts
Node Docker Image
NPM Packages
@connext/{types,utils,cf-core,apps,messaging,store,channel-provider,client,watcher}@7.0.0-alpha.6
Indra 7.0.0-alpha
Major version pre-release includes:
Performance Improvements
- Redis distributed lock replaced with queue
- Write through cache implemented
- Reduced install protocol interactivity
- Allowed users to update and uninstall simultaneously with a finalized state
General Improvements
- Migrated to ethers v5
- Added an optional reason when rejecting applications
ChannelSigners
can be instantiated with aJsonRpcProvider
- Transfer logic consolidation across client and node
- General bug fixes during protocol failure edge cases (offline tests)
Indra v6.6.3 | Client v6.6.3
Security Related
- #1046 - Stagger app timeouts so receiver app dispute always finishes before the sender app.
New Features
- #1176 - Refactor event emitter to EVT. Allows attaching events based on filters and easy removal. This functionality is exposed to client consumers as well.
- #1143 - Add events for protocol errors, these are exposed in the public interface.
Bugfixes
- #705 - Fixed withdrawal race conditions.
- #1145 - Now you can redeem your own links.
- #1128 - Improved concurrency.
- #1125 - Conditional transfer checks senders balance before starting app install.
- #1104 - Store improvements and bugfixes.
Refactors
- #1160, #1114 - Consolidate transfer logic so all transfers behave the same.
- #1158 - Inject validation into protocol middleware so it happens within the channel lock.
- #1151 - Rebalance process split up into distinct steps for collateralizing and reclaim, limit the places where we do this in order to reduce surface area, and increase throughput.
Indra v6.6.2 | Client v6.6.2
Bugfixes
- Fixed issue where
getHashlockTransfer
would not return preimage for uninstalled apps.
Indra v6.1.2 | Client v6.1.2
Indra v6.0.9 | Client v6.0.9
Indra v6.0.1 | Client v6.0.1
This might be the largest release we have made yet! Tons of new features, stability improvements, optimizations, and breaking changes. Keep reading for a thorough breakdown.
New Adjudication System
Rationale:
Old adjudication system had a lot of complexity and had edge cases that were hard to reason about for long-lived apps. With this update, we have moved to a simpler new system that splits disputes into two distinct phases which consolidate into one commitment type in one seamless flow.
Highlights:
- Entirely revamped contract adjudication layer. Moved to a two-phase system, allows commitments to be reused across both phases of dispute.
- Implemented new
cancelDispute
function. - Added domain separation to multisig address generation and all commitments. Stops replay attacks across chains.
- Modified
appIdentityHash
to use all parts of the app's identity for better replay protection. - Backwards-compatible commitments.
Deposit/Withdraw Overhaul
Rationale:
Legacy deposit/withdraw were brittle and contained vulnerabilities. Deposit/withdraw were blocking ops, doing them concurrently would break channels. Were implemented using custom code rather than the core protocol methods, increasing surface area. With this update, we moved to new protocols that are built into the existing counterfactual application-based lifecycle.
Highlights:
- Created a new withdraw application that involves signing a meta-transaction based on funds burned in the channel.
- Moved to inheritance pattern for multisig calldata.
- Added tracker for
totalAmountWithdrawn
in multisig and interpreters. - Created a new deposit application that uses
totalAmountWithdrawn
and multisig balance to calculate deposit within a period. - Store and retrieve multisig commitments within client stores to allow re-submission in case the node does not submit. By default, the node will submit on behalf of the user so that user does not need to spend gas.
New Application Development Framework
Rationale:
Building applications was time-consuming and highly custom. With this update, we modularized the applications and simplified the process by minimizing the touchpoints with the core system.
Highlights:
- Refactored validators and types into a separate module that is shared by the client and node.
- Added a new app registry service on the node and client that manages application life cycle, handling pre-install, post-install, and post-update.
- Allow injecting custom validation middleware into each protocol step.
- Sort
appInstance
participants by initiator/responder to correctly retain that context in disputes. - State-specific timeouts within apps to "shortcut" certain dispute cases.
- Automatically install receiver apps for certain transfers when sender installs.
- Persist
meta
in appInstances in store.
New Addressing Scheme
Rationale:
Dealing with xpubs and mnmonics was one of the big headaches for integrations. At the same time, we want Connext-specific addressing to avoid confusion about sending funds to an Ethereum address instead of a channel. With this update, we have moved to a new signing and addressing scheme that maintains the security needed to keep Connext transactions separate from Ethereum transactions but makes Connext compatible with existing signing best practices.
HIghlights:
- Moved to new address format.
indra + base58(publicKey)
- Allow clients to be instantiated using either private key or Ethers-compatible signing interface. Enables KMS/HSM based client instantiation!
- Moved to Connext-specific signed message prefix. This stops Connext signing functions from being used for signing Ethereum or Bitcoin transactions.
\x15Indra Signed Message:\n
- Created a new crypto library for Connext-specific signing and recovery. These libs are highly optimized to run using native crypto modules for browser, Node, and React Native environments.
New Conditional Transfers
Highlights:
- New transfer type: Hashlock Transfer. Allows unlocking transaction using a Lightning HTLC (more to come on this!).
- New transfer type: Signed Transfer. Allows the sender to specify an Ethereum address to sign a data packet to unlock a transaction.
- New conditional transfer events for reacting to and managing the lifecycle of transfers.
- Transfer latency optimizations.
New Store Interface
Rationale:
Legacy store was oversimplified to a simple get
and set
. This was unsustainable for certain store implementations like the node, which needed to do complex things like query across all channels. With this update, we broke up the store into more context-specific methods that are used within the protocols. This allows store implementations to optimize based on their specific storage medium.
Highlights:
- Store interface overhaul. Made store methods explicit to allow store implementations to be optimized for their underlying ops.
- Add Postgres implementation to store library.
- Optimized node DB queries to make use of Postgres relational data.
NATS Infrastructure
Highlights:
- Added bearer-token based NATS authentication. Required changes to NATS core lib itself (thanks @kthomas for the help with this!).
- Moved to the new ts-natsutil library which supports both Node-based and browser-based contexts out of the box (thanks again @kthomas).
- Switch from Nginx to HAProxy. Provides better WebSockets support.
Client v6.0.0-alpha.9
New Stuff
- #974 - Allow users to override messaging URL that is by default generated based on the node URL. This strategy won't work in custom deployments.
Bugfixes
- #963 - Add nonce to withdrawals, allowing repeated withdrawals.
- #964 - Added domain separation to mitigate replay attacks on other chains and enable cross-chain functionality.
Node Docker Tag
Client v6.0.0-alpha.10
Bugfix
- Consume updated
@connext/contracts
package version to get updated testnet contract addresses.