Hornet Node Software for Shimmer Beta Network
The full article was originally published by Shimmer on blog.shimmer.network. Read the full article here.
The New Stardust-Enabled Version of Hornet is Now Available
The Hornet node software is the backbone of the IOTA network. Its individual nodes run the software that helps maintain the state of the ledger through peer-to-peer communication. Nodes are also entry points to the network for users, and Hornet implements the core protocol that defines the network rules.
Stardust, IOTA’s next protocol version, was designed to be the infrastructure and settlement layer for smart contract chains operating on top of it. With it, new Layer 1 features such as on-chain data storage, tokenization, or conditional transfers, become available. Before going live on the IOTA mainnet, the new protocol will be trialed in the upcoming Shimmer network, which has just been released as a beta version.
Today we release Hornet v2.0.0-beta.1, the first version of Hornet that fully supports the upcoming Stardust protocol upgrade. Hornet v2.0.0-beta1 enables users to engage in public testing on the Shimmer beta network. There are a lot of cool new features in Hornet, so let’s jump right into it.
Modular Hornet architecture
The main purpose of node software is to:
- Communicate and sync with other network nodes peer-to-peer.
- Maintain the shared ledger state and ensure its consistency via consensus.
- Act as an entry point into the network for clients.
We have completely redesigned the architecture of Hornet to focus on these core services while keeping in mind software maintainability, modularity, and extensibility. We believe in “less is more” when it comes to robust infrastructure software, therefore any features that don’t belong to the three categories above have been expelled from the Hornet codebase.
Instead of polluting the node software with tooling and application-specific logic, Hornet now provides a generic gRPC interface for such applications to talk to the node. This framework is called IOTA Node Extension, or INX for short.
The advantages of INX are clear:
- Hornet codebase is simpler and easier to maintain.
- Node software is more robust as possible error surfaces are reduced. A fatal error in an INX module crashes only the erroneous module, but not the node.
- The network becomes more resilient under high load scenarios as critical node resources can be devoted to fulfilling core network services only.
- INX extensions enable anyone to extend the node with custom software, which may be written in any language of choice that implements the gRPC client interface.
To give some examples, the following node plugins and applications that use the new INX framework are currently available:
- INX-Participation: The former participation plugin of Hornet for on-chain voting.
- INX-MQTT: The event-based real-time streaming node API is now a standalone application.
- INX-Dashboard: Implements a node configuration dashboard for node owners.
- INX-Indexer: A ledger indexing tool to provide structured and queryable data to wallets and other applications. The indexer maintains its own database separate from that of the node.
- INX-Chronicle: The previous Permanode implementation has been completely rewritten in the INX framework to retain and expose historical network data. The new implementation focuses on optimized data storage and analytics instead of trying to mimic the operation of a regular network node.
- INX-Proof-of-Inclusion: Stardust introduces merkleized state commitments in milestones that enable generating and verifying Proof of Inclusion in the Tangle or the ledger state. Given a piece of data or transaction and the proof, one can verify whether it was included in the Tangle at a given point in time.
- INX-Coordinator: The Coordinator logic is completely separated from the node implementation into its own application.
- INX-Spammer: A tool to generate data transactions in the network thereby increasing reference and confirmation rates.
- INX-Faucet: A faucet application for test and development networks as well as for private networks.
Fluid protocol updates
Another cool new feature of Hornet is the ability to perform fluid protocol upgrades in a live network. Milestones are able to signal the commencing of upcoming protocol upgrades or the adjustment of protocol configuration parameters. Hornets listen to such announcements and automatically perform the operations without requiring human interaction if possible.
The upcoming Dynamic Proof of Work protocol feature will be the first-ever that relies on the fluid upgrade process, set to debut in the live Shimmer network.
New Node Core API
The new Stardust protocol demands a new node API to support the growing utility of the ledger. TIP-25 defines the Core API for the IOTA node software.
A significant change in the new API is the offloading of processing and indexing tasks related to blocks and transactions to INX modules. In light of the minimalistic architecture revamp, the core API only exposes what is strictly needed by nodes to operate the network; anything else is application or use-case-specific logic that should be carried out in INX modules.
A good example of this is the UTXO Indexer API (TIP-26) exposed from inx-indexer. It is not part of the core network services to index the ledger state, since nodes don’t need this information to operate the network, unlike clients wishing to generate transactions. As a result, indexing the ledger state is offloaded to a specific application serving user wallets.
We recommend running Hornet v2.0.0-beta via Docker. An easy node setup guide (this link opens a docker-compose file) is included in the release. All you need to do is execute the provided docker-compose file and you’ll have a complete node setup with:
- Hornet node.
- Reverse proxy (traefik).
- Monitoring tools such as Prometheus and Grafana.
- INX extensions: Indexer, MQTT, Participation, Spammer, Proof-of-Inclusion, and Dashboard.
We invite you to install Hornet in the Shimmer beta network, try out the different INX modules and help us test all components before the launch of Shimmer. As always, feel free to contribute by reporting any issues via GitHub. In case you have any questions, an awesome community will be happy to welcome you to our Discord.