The Zilliqa Mainnet is composed of several types of nodes that perform different functions or provide specialized services.
Shard nodes are the mining nodes in the Zilliqa Network. They are named as such because they are assigned to one of several clusters (i.e., shards) within the network. Nodes that belong to the same shard process the same set of transactions assigned to their shard. After processing, the nodes must achieve consensus over the transaction set in order to generate the shard's microblock. For their work, shard nodes are rewarded $ZIL at the end of every DS epoch.
Shard membership is determined by the DS committee after shard nodes successfully submit solutions to a Proof-of-Work (PoW) problem, which occurs once every DS epoch.
DS (Directory Service) nodes are also mining nodes, with the additional responsibilities of (1) aggregating shard microblocks to form the Transaction Block and (2) creating the DS Block at the start of every DS epoch. As with the shard nodes, DS nodes are rewarded $ZIL at the end of every DS epoch.
The collection of DS nodes in the network is referred to as the DS committee. Unlike the shards, which are completely revised every DS epoch, the DS committee stays relatively stable across several DS epochs, as only a small fraction of the committee is replaced every DS epoch. DS committee membership is determined by Proof-of-Work of a higher difficulty. The length of a DS node's tenure within the committee is also affected by its performance within the duration of the DS epoch.
Lookup nodes are full nodes, i.e., they store all of the blockchain data generated by the DS and shard nodes (including transactions, microblocks, Transaction Blocks, and DS Blocks). They provide the data to nodes that are syncing with or attempting to join the network. Lookups also dispatch transactions to the shards and DS Committee.
Seed nodes are full nodes (like lookup nodes) that do not directly dispatch transactions to the shards and DS committee. They are used mainly for serving JSON-RPC requests, including creating new transactions. Transactions are regularly bundled by seed nodes and forwarded to lookups for eventual dispatch to the shards and DS committee.
Staked seed nodes (SSNs) are a variant of seed nodes. SSNs are run by staking partners and are expected to serve JSON-RPC requests from the community. In return for the service, these nodes are regularly given staking rewards in the form of $ZILs. Staking rewards are determined based on the performance of the SSN. For more information on staked seed nodes, please refer to our staking feature documentation in Zilliqa Improvement Proposal #3.