Skip to content

Commit 32d79cd

Browse files
committed
bring back full_node.md
1 parent 22024f7 commit 32d79cd

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

node/full_node.md

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# Full Node
2+
3+
## Abstract
4+
5+
A Full Node is a top-level service that encapsulates different components of Evolve and initializes/manages them.
6+
7+
## Details
8+
9+
### Full Node Details
10+
11+
A Full Node is initialized inside the Cosmos SDK start script along with the node configuration, a private key to use in the P2P client, a private key for signing blocks as a block proposer, a client creator, a genesis document, and a logger. It uses them to initialize the components described above. The components TxIndexer, BlockIndexer, and IndexerService exist to ensure cometBFT compatibility since they are needed for most of the RPC calls from the `SignClient` interface from cometBFT.
12+
13+
Note that unlike a light node which only syncs and stores block headers seen on the P2P layer, the full node also syncs and stores full blocks seen on both the P2P network and the DA layer. Full blocks contain all the transactions published as part of the block.
14+
15+
The Full Node mainly encapsulates and initializes/manages the following components:
16+
17+
### genesis
18+
19+
The [genesis] document contains information about the initial state of the chain, in particular its validator set.
20+
21+
### conf
22+
23+
The [node configuration] contains all the necessary settings for the node to be initialized and function properly.
24+
25+
### P2P
26+
27+
The [peer-to-peer client] is used to gossip transactions between full nodes in the network.
28+
29+
### Mempool
30+
31+
The [Mempool] is the transaction pool where all the transactions are stored before they are added to a block.
32+
33+
### Store
34+
35+
The [Store] is initialized with `DefaultStore`, an implementation of the [store interface] which is used for storing and retrieving blocks, commits, and state. |
36+
37+
### blockManager
38+
39+
The [Block Manager] is responsible for managing the operations related to blocks such as creating and validating blocks.
40+
41+
### dalc
42+
43+
The [Data Availability Layer Client][dalc] is used to interact with the data availability layer. It is initialized with the DA Layer and DA Config specified in the node configuration.
44+
45+
### hExService
46+
47+
The [Header Sync Service] is used for syncing block headers between nodes over P2P.
48+
49+
### bSyncService
50+
51+
The [Block Sync Service] is used for syncing blocks between nodes over P2P.
52+
53+
## Message Structure/Communication Format
54+
55+
The Full Node communicates with other nodes in the network using the P2P client. It also communicates with the application using the ABCI proxy connections. The communication format is based on the P2P and ABCI protocols.
56+
57+
## Assumptions and Considerations
58+
59+
The Full Node assumes that the configuration, private keys, client creator, genesis document, and logger are correctly passed in by the Cosmos SDK. It also assumes that the P2P client, data availability layer client, mempool, block manager, and other services can be started and stopped without errors.
60+
61+
## Implementation
62+
63+
See [full node]
64+
65+
## References
66+
67+
[1] [Full Node][full node]
68+
69+
[2] [Genesis Document][genesis]
70+
71+
[3] [Node Configuration][node configuration]
72+
73+
[4] [Peer to Peer Client][peer-to-peer client]
74+
75+
[5] [Store][Store]
76+
77+
[6] [Store Interface][store interface]
78+
79+
[7] [Block Manager][block manager]
80+
81+
[8] [Data Availability Layer Client][dalc]
82+
83+
[9] [Header Sync Service][Header Sync Service]
84+
85+
[10] [Block Sync Service][Block Sync Service]
86+
87+
[full node]: https://github.com/evstack/ev-node/blob/main/node/full.go
88+
[genesis]: https://github.com/cometbft/cometbft/blob/main/spec/core/genesis.md
89+
[node configuration]: https://github.com/evstack/ev-node/blob/main/pkg/config/config.go
90+
[peer-to-peer client]: https://github.com/evstack/ev-node/blob/main/pkg/p2p/client.go
91+
[Store]: https://github.com/evstack/ev-node/blob/main/pkg/store/store.go
92+
[store interface]: https://github.com/evstack/ev-node/blob/main/pkg/store/types.go
93+
[Block Manager]: https://github.com/evstack/ev-node/blob/main/block/manager.go
94+
[dalc]: https://github.com/evstack/ev-node/blob/main/core/da/da.go
95+
[Header Sync Service]: https://github.com/evstack/ev-node/blob/main/pkg/sync/sync_service.go
96+
[Block Sync Service]: https://github.com/evstack/ev-node/blob/main/pkg/sync/sync_service.go

0 commit comments

Comments
 (0)