Connext Indra Versions Save

[LEGACY] Monorepo containing everything related to the core Connext protocols and network.

indra-7.0.0-alpha.8

3 years ago

Minor release with some general bug fixes including:

  • 📝 Docs for the new watcher module (#1270)
  • 🧹 Proper cleanup of supported apps (#1274)
  • ⚠️ Proper error handling (#1263)
  • 🤑 Generic signed transfer app (#1276)

indra-7.0.0-alpha.6

3 years ago

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

  • #1252
  • #1084

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.0

3 years ago

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 a JsonRpcProvider
  • Transfer logic consolidation across client and node
  • General bug fixes during protocol failure edge cases (offline tests)

indra-6.6.3

4 years ago

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-6.6.2

4 years ago

Bugfixes

  • Fixed issue where getHashlockTransfer would not return preimage for uninstalled apps.

indra-6.1.2

4 years ago

Features

  • #1062 #1064 - Reuse lock hashes for ConditionalTransferTypes.HashLockTransfer transfers for separate assetIds. Good for cross-chain swaps.

Bugfixes

  • Add CORS headers to proxy and node to allow browser access from different domains.

indra-6.0.9

4 years ago

Bugfixes

  • #1060 - Fixed issue where some calls during transfer were not immune to multiple calls and can now pick up where they left off.
  • #1049 - Make sure all store calls are atomic.
  • #1052 - Conditional transfer events cleanup.

indra-6.0.1

4 years ago

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.

npm-publish-6.0.0-alpha.10

4 years ago

Bugfix

  • Consume updated @connext/contracts package version to get updated testnet contract addresses.

Node Docker Image

connextproject/indra_node:63a40cb3

npm-publish-6.0.0-alpha.9

4 years ago

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

connextproject/indra_node:b0a68721