- Introduce the possibility of using YAML configuration file and revamp the configuration infrastructure to make the YAML a default base for all configuration types (env vars, cmd line args) (#4796)
- Extend
hopli
so that it can derive peer ID from identity files. Addinitiate-node
to perform all the necessary on-chain operations before launching a HOPR node. Accept identity from path. (#4894) - Introduce new types & optimize cryptographic code (#4974)
- Create DB functionality shim in Rust (#4885)
- Migrate interface for using the DB in core packet processing (#5025)
- Migrate all core types to Rust and remove all TypeScript types (#5039)
- Migrate packet construction code and all related cryptography to Rust and remove the Typescript implementation (#4834)
- Align terminologies used in the protocol ("network", "chain" and "environment") (#4938)
- All cryptography related code has been migrated to Rust with TS implementations removed (#5063)
- Migrate interfaces for using the DB in core-ethereum (#5072)
- Upgrade OpenZeppelin dependency to 4.8.3 and Solidity to 0.8.19 (#5094)
- Add support for logs in wasm environment Rust tests (#5108)
- Migrate Packet and Acknowledgement interactions to Rust (#5074)
- Change keystore to hold
chain_key
andpacket_key
(#5175) - Switch to Curve25519 to generate Sphinx keys, use Ed25519 PeerIDs for transport (#5069)
- Remove Avado build support (#5181)
- Upgrade to Node v18 as default runtime (#5184)
- Use transitive Rust build features and fix various build issues (#5187)
- Change
core-ethereum
to operate on EthereumAddress
es rather thanPublicKey
s (#5189) - Change the ticket auto redeem and check unrealized balance cli arguments (#5235)
- Fixed DB deadlocks and changed the DB backend & fixed channel and ticket issues in the DB (#5229)
- Replace the js-libp2p connection mechanism with the rust-libp2p (#5153)
- Add
application_tag
into the payload of HOPR protocol, prepare Message Inbox backend (#5260) - Rest API: Replace v2 with v3 which adds message inbox support and compatibility with new smart contracts (#5297)
- Tickets 2.0: tickets use a VRF (verified random function) and no longer depend on external randomness ("iterated hash") (#5338)
- Tickets 2.0: payment channel funding happens immediately as it no longer requires any on-chain commitments (#5338)
- Prevent relayers from extracting multiple base amounts (#5385)
- Added dynamic price per packet via the TicketPriceOracle smart contract (#5372)
- Introduced capability-based signature verification for on-chain node management (or staking v2)(#5211)
- Fixed crash during ticket redemption procedure which prevented channels from being closed (#5433)
- Prevent excessive restart upon startup errors (#5434)
- Use Rusty-levelDB as a database backend with Node.js FS bindings (#5433)
- Prune and update both cli arg and YAML based configuration (#5486)
- Migrate the
Heartbeat
,Ping
andNetwork
functionality into Rust (#4568) - Rebrand
foundry-tool
tohopli
and allow it to interact with identities and network-registry (#4652) - Migrate mixer code to Rust (#4567)
- Fix initial network peer registration from the Peer Store (#4741)
hopli
accepts floating number for the amount of tokens to be transferred/minted. Loosen requirement on the identity file. (#4723)- Use simple moving average for smoothing network peer numbers presented to the Promiscuous strategy, add more logging (#4763)
- Added Rust implementations of all the cryptographic functionality used in the HOPR protocol (#3842)
- Add reported HOPR protocol version information to
ping
andpeers
endpoints (#4777) - Extend the Grafana dashboards with the new mixer metrics (current mixer queue size & average mixer delay) (#4768)
- Expose full payment channel graph in
/channels
API (#4756) - Fixed issue with too many channels being opened by the Promiscuous strategy, added option to enforce the maximum number of opened channels (#4827)
- Added mitigation for connection leakage to prevent DHT and p2p connection failures (#4870)
- Fixed incorrect recording of some Ping metrics (#4867)
- Enforced 1 GB memory usage limit of HOPRd on Avado (#4898)
- Added RelayState cleanup which prevents excessive connection leakage on public relay nodes (#4912)
- Reduced maximum number of relay connections to 2000 (#4912)
- Add pruning in the relay connections keep-alive mechanism (#4916)
- Enforce closing and clean-up of libp2p2 connections (#4957)
- Wipe libp2p's AddressManager cache when publishing new addresses to the DHT (#4958)
- Add metrics & logs relevant for RPCh debugging (#4995)
- Enhance debug logs in dialing logic to enhance debugging (#5004)
- Fix address coercion issue in libp2p address handling (#5020)
- Ensure public relay nodes don't create relay connections (#5023)
- Add heartbeat and cleanup to API websocket connections (#5023)
- Add send message over websocket support (#4882)
- Increase Avado memory limit to 2GB (#5051)
- Removal of HOPR admin from
hoprd
(#4420) - Includes removal of CLI option
--admin
,--adminHost
and--adminPort
- HOPR admin may now be used as a stand-alone component, see https://github.com/hoprnet/hopr-admin
- Add
--disableApiAuthentication
CLI option to allow using the API without authentication, default for Avado & Dappnode (#4466) - Grafana dashboards integration for all supported platforms (#4472)
- Migrate environment checker code to Rust (#4492)
- Migrate hoprd CLI to Rust (#4491)
- Smart contract toolchain upgrade (#4382)
- Switch staging environment to using Gnosis Chain instead of Goerli (#4497)
- Introduced Promiscuous Strategy v1, strategies migrated to Rust (#4506)
- Fix of ticket validation to be order-independent, thus not rejecting older tickets (#4527
- Migrate
heartbeat
ping network interaction to Rust using Rustfutures::stream::Stream
(#4539) - Added strategy related metrics, refactoring of the strategy code (#4537)
- API: Allow user to specify number of intermediate hops when sending a message (#4563)
- API: Add capability-based authorization (#4560)
- Automatic ticket redemption disabled by default, added
--autoTicketRedemption
CLI option to enable it explicitly (#4565) - Return explict message for unsupported closing incoming channel (#4551) with a fix in admin UI (hopr-admin/#3)
- Bring back
fund
command, to open outgoing and incoming channels with counterpart (#4566) - Improve Grafana dashboards & compose setup (#4479)
- API: Prevent API privilege escalation (#4625)
- Assign commitent at ticket redemption, so that tickets can be redeemed with a gap in ticket index (#4643)
- Make maximum parallel connections configurable (#4675)
- Reduce overall connection timeout from 10s to 3s (#4680)
- Migrate mixer code to Rust (#4567)
- Primitive & basic types re-created in Rust (#4645))
- Automatically switch to DHT
server
-mode if node announces public addresses to DHT (#4685) - Enhance address to sorting when dialing nodes (#4684)
- Adjust NAT detection mechanism to correctly detect exposed ports on GCP (#4692)
- Include HOPR Staking Season 5 smart contracts (#4221)
- Various optimizations of Rust crates (#4221)
- Add Metrics API for Prometheus,
metrics
API endpoint and collection of various metrics (#4233) - Improve pre-merge check to prevent PR from merging when the upstream deployment is in the failed state (#4294)
- Add Health Status Indicator in the Admin UI (#4197)
- Allow connectivity indicator to be GREEN on public nodes too (#4314)
- Show correct counterparty in the
channels
command output (#4370) - Docker build pipeline refactor: use Alpine Linux + toolchain base image (#4362)
- Improve error messages passed to the User (#4375)
- Fix channel metrics, add channel balances metrics (#4374)
- Fix ticket redemption (#4382)
- Increase wait timeout for on-chain transactions to 60 seconds (#4425)
- Fix bug in waiting logic for on-chain transactions (#4425)
- Fixed incorrect acknowledged tickets handling in the DB
- Fix non-registered nodes can connect despite they are not allowed to so (#4454)
- Fix STUN functionality, enhance it to check if host is exposed and a keep-alive mechanism to keep NAT port mapping (#4401)
- Fix DAppnode / AVADO announcing internal container addresses (#4467)
- Add
--disableApiAuthentication
CLI option to allow using the API without authentication, default for Avado & Dappnode (#4466)
- Improve Network Registry smart contract to allow 1-to-many node registration, add enable/disable make targets (#4008)
- Replace
yarn
withnpx
inpluto
Docker image to runhoprd
to fix binary discoverability issue - Add support for communication between different releases within the same environment
- Avado: limit Docker container memory to maximum 1GB
- Reduce memory copy operations by reusing underlying memory pages (#4168)
- Fix public node resolution for connectivity indicator (#4205)
- Remove charset complexity validation on API token (#4210)
- Properly encode API token passed from the Admin UI (#4210)
- Refactor timeouts for more throughput and increase usage of iterables (#4238)
- Fix incoming channels being listed as outgoing and vice versa in API (#4236)
- Refactor packet forward interaction for less locking (#4232)
- Refactor mixer to migitate backpressure (#4232)
- Filter addresses before adding them to libp2p's PeerStore (#4246)
- Reuse existing connections to establish relayed connections over public relay (#4245)
- Reuse existing connections to connections to entry nodes (#4250)
- Remove recurring DHT ping queue cleanup and turn all public relay nodes into DHT servers (#4247)
- Various enhancements regarding memory consumption and overall efficiency, spread over multiple PRs
- Remove obsolete stream compatibility layer (#4276)
- Allow
info
command before node startup has finished (#4273) - Turn libp2p dual DHT into single DHT by forking DHT package in order to avoid a memory leak hoprnet#4288
- Turn db operations into
zero-copy
operations (#4293) - Close existing connections once there is new one (#4281)
- Properly remove closed connections from libp2p's
ConnectionManager
(#4281) - Reimplement stream handling
class
es withfunction
s inconnect
package for better performance (#4285) - Fix ticket redemption mechanism & acknowledged ticket fix in the DB (#4437)
- Pluto: Fix initialization of channels once the cluster has started up (#4436)
- Reduce eth_getBlockByNumber calls when indexing and sending transactions (#3814)
- Marge hopr-stake contracs into monorepo and relevant deploy scripts
- Add additional CLI parameters
--heartbeatThreshold
,--networkQualityThreshold
and--onChainConfirmations
- Allow configuration via environment variables instead of CLI parameters for all supported options
- Reenable e2e tests and enhance REST API (#3836)
- Fix decoding error when API token contains certain characters
- Bump
[email protected]
(#3879) - Reimplement simulated NAT using libp2p's connection gater API (#3879)
- Refactor module injection system of
connect
module to align with[email protected]
(#3879) - Automatically resend queuing transactions when provider is reset or a node receives sufficient native tokens
- Make environment variables for
hoprd
accessible in Avado package configuration (#3885) - Add Docker image (hopr-hardhat) running hardhat using the Hopr environment and smart contracts (useful for testing and development)
- Add Docker image (hopr-pluto) running a full hoprd test cluster for local dApp testing
- Add script that allow self register and self deregister on the Network Registry contract
- Add documentations around network registry
- Refactor and simplify stream handover functionality to be more robust (#3898)
- Added possibility to specify custom RPC provider in Avado
- Add connectivity health indicator & NR eligibility status of the node to the
info
command (#3921) - Fix message encoding/decoding in HOPRd (#3943)
- Properly display the reason of
ping
failure (#3964) - Removed deprecated
API V1
- Removed deprecated
--rest
,--restHost
, and--restPort
HOPRd flags - Removed deprecated
fund
command withinhopr-admin
- Upgrades to
hopr-admin
(#3647)- it now adheres to the HOPR dApp standard
- uses
typescript
- command parsing has been overhauled to support more complex commands
- improved user experience with more consistent messages
- Warn when manual path selection contains duplicate adjacent entries
- Correctly recognize Avado/Dappnode private subnet (#4032)
- Redesign entry node code to recycle knowledge and automatically reconnect (#3990)
- Add
entryNodes
command to API andhopr-admin
(#4049) - Refactor Docker build process to respect lockfiles generated by Yarn and Cargo (#4060)
- Changed
release/paleochora
default environment tomonte_rosa
in preparation of next release - Fix broken package link in Avado (#4082)
- Automate contract verification on Gnosis chain and Goerli testnet.
- Add support for communication between different releases within the same environment
Bump [email protected]
which came with many bugfixes, plenty of internal API changes and different module injection system and made lots of workarounds obsolete.
-
Use npm-shrinkwrap to publish correct lockfiles
-
Add
--provider
flag for setting a custom blockchain RPC provider -
Improvements in our API v2 unit tests (#3643)
-
Improvements in our integration E2E tests (#3643)
-
API v2
/api/v2/node/peers
now returnsmultiaddr
for connected peers (#3643) -
Add connectivity health indicator updates to the logs (#3816)
-
Introduce Rust WASM support into the build toolchain (#3829)
-
Optimize build pipeline and migrate to Makefile (#3851)
-
When sending an Ethereum transaction, also release nonce lock if transaction is considered a duplicate (#3856)
-
Within E2E tests, disable hardhat autmining after deployment is done (#3851)
-
Migration to ECMAscript module standard (ESM), drop support for CommonJS (#3825)
1.88 (2022-03-18)
- New API v2 endpoint
/api/v2/node/stream/websockets
(#3514) - Do not attempt to reconnect to relays we already have a connection to (#3411)
- New API v2 endpoint
/api/v2/node/peers
(#3617) - Bug fix endpoint
/api/v2/channels/{peerId}
(#3627) - Various bug fixes in
core
- Performance improvements in
core
- Enhanced database queries through range queries and batched operations (#3648)
- Automatically cleanup stale connections to correctly handle reconnects (#3688)
- Add
--provider
flag for setting a custom blockchain RPC provider - Use a default address sorter for all address classes (#3731)
- Enhance TCP socket listening logic and cleanup keepAlive interval (#3750)
- Try to reconnect to entry nodes after connection has been dropped (#3751)
- Unhandled rejection in relay requests (#3779)
- Ping & DHT query timeout increased (#3780)
- Dial refactoring and optimization (#3780)
- onAbort unhandled promise rejection workaround fix (#3780)
- Fix event listener leak and increase maximum number of event listeners to 20 (#3790)
1.87 (2022-02-10)
- Expanded API v2, covering most of the legacy hopr-admin commands (#3367)
- New API v2 endpoints allow fetching and redeeming tickets from specific channels (#3367)
- Flags
--rest
,--restHost
, and--restPort
are being deprecated in favor of--api
,--apiHost
, and--apiPort
- Fixed automatic and manual ticket redemption (#3395)
- In-order processing of blocks and in-order processing of on-chain events (#3392)
1.86 (2022-01-26)
- Fixed behavior when no network was found or invalid password is entered (#3147)
- Added new API v2 endpoint
/messages/sign
to support message authentication (#3243) - Fixed NAT-to-NAT connection using entry nodes (#3237)
- Removed recursive reset of periodic checks and replaced recursive util function by iterative counterparts (#3237)
- Use UPNP to determine external IP address (#3237)
- Use a relay tag to announce in the DHT that a node acts as a relayer for a specific node (#3237)
- Added simulated NAT to E2E tests (#3237)
- Automatic deployment of NAT nodes to GCloud (#3165)
- Automatically extend TTL of relay tokens in the DHT (#3304)
- Do not dial localhost unless the port is different from the ones we're listening on (#3321)
- Add CLI parameter
--allowLocalNodeConnections
to explicitly allow connections to localhost (#3349) - Add CLI parameter
--allowPrivateNodeConnections
to explicitly allow connections to private nodes (#3390) - Normalize protocol version before checking the relay usability (#3442)
- Fix connection parameters to prevent stalling of the Node.js process and update maximal number of relays (#3471)
- Fix locking issues in various parts of the code (#3515)
- Fix unhandled promise rejection in strategy code and infinite loop in ticket redemption logic (#3515)
- Fixed locking issues in transaction processing (#3568)
- Publish
hoprd
andcover-traffic-daemon
NPM packages with lockfiles fornpm
andyarn
(#3646) - Upgraded libp2p to v0.36.2 which includes multiple memory-usage improvements (#3620)
- Added new CLI parameters
--heartbeatInterval
and--heartbeatVariance
to configure heartbeat behaviour (#3515)
1.85 (2021-12-17)
- Rest API v2 (#3093), see API specification
- Update ping to use Blake2s instead of SHA256 for response computation ((#3080))
- Fix broken AVADO build (#3150)
- Fix nodes talking to nodes deployed in other environments (#3127)
- Fix issues with STUN code (#3124)
- Fixes various issues with indexer (#3132, #3129, #3111, #3043)
- Improve handling of provider errors (#3116)
- Improved unit tests and e2e tests and mocks (#3115, #3118, #3097, #3020)
1.84 (2021-12-03)
- Add better handler for unhandled Promise rejections (#3037)
- Multiple bug fixes preventing crashes.
randomInteger
function is now cryptographically safe- ECDSA signatures now use a more compact representation (64 instead 65 bytes)
- Initial commitment seed is derived using node key and channel information
1.83 (2021-11-15)
Due to the configuration changes (refer to #2778), transport packets are now properly encapsulated between environments/releases. Thus, existing nodes won't be able to communicate to new nodes.
- Added git hash in
hopr-admin
page (#2869) - Remove legacy bi-directional channels code (#2765)
- Use environments as central configuration for hoprd releases (#2778)
1.82 (2021-10-15)
None
- improve ticket redemption (#2711)
- bump HoprChannels solidity compiler to
0.8.9
(#2697) - more tech team processes (#2686)
- transaction confirmation improvements (#2715)
- various CI/CD fixes (#2494)
- various CT fixes (#2634, #2680)
- refactor commitments (#2671)
1.81 (2021-10-04)
Nodes are required to Announce
before being able to have an open channel.
- improve CI (#2466, #2475, #2540)
- switch to renovate
- require
Announce
(#2473) - CT improvements (#2474)
- various bug fixes (#2529, #2556, #2558, #2562)
- various yellow paper updates
- dependancy version updates
1.75 (2021-07-30)
Deprecate Node 14 and require Node 16
- Automatically populate and use list of potential low-level relay nodes (#2133)
- Bind release to specific networks and contract addresses (#2104)
- Align yellow paper with smart contract
- UX improvement, including reachability of frontend and showing incoming channels (#2124)
- Allow transaction aggregation (Multicall) (#2113)
- Stack updates:
- Node.js@16
- [email protected]
- [email protected]