You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The block node service will provide ancillary services to inform users of node readiness and configuration
176
+
The block node service will provide ancillary services to inform users of node readiness and configuration.
177
+
178
+
The `serverStatus` endpoint will provide consumers with details around block ranges, node version and if historical
179
+
snapshots are supported.
154
180
155
181
```protobuf
156
182
/**
@@ -174,10 +200,12 @@ There will be 2 types of stream services offered
174
200
- Unverified block stream for low latency
175
201
- Verified block stream for high confidence
176
202
177
-
Depending on a user of tools needs they can optimize for requesting Block Items as fast as possible for their own
203
+
Depending on a user, consuming clients can optimize for requesting Block Items as fast as possible for their own
178
204
optional verification or rely on confirmed blocks as confirmed by a Block Node following the Block Proof algorithm.
179
205
180
206
Both streams may also offer filtering capabilities based on user requests and Block Node functionality support.
207
+
Filtering support is expanded upon in the Block Stream HIP 1056 and is charectorized buy the replacement of block items
208
+
with hash values whiles maintian the ability to carry out block and state proofs on the block information.
181
209
182
210
Initially filtering will be at the Block Item level (e.g. a Mirror Node may want only Transaction input and outputs)
183
211
but in the future block nodes could stream blockItems out based on the matching of state or transaction matches.
@@ -206,6 +234,7 @@ This approach can be used to increase the reliability and availability of networ
206
234
207
235
As the block stream is ongoing and items are sent out in real time, it is valuable to be able to request a historical
208
236
block in its entirety.
237
+
The `singleBlock` endpoint will allow a consumer to request a single verified block from the block node.
209
238
210
239
```protobuf
211
240
/**
@@ -237,16 +266,23 @@ service StateService {
237
266
```
238
267
239
268
<aside>
240
-
🚨 **Open Task:** Flesh out 4 different state related query endpoints
241
-
1.Live state querying i.e. what is the latest state
242
-
2.Historical state snapshot e.g. what was state at block number x
243
-
3. State changes e.g. what state changes occured in block x, this is a subset of the block query and avoid the transmission of extra block information beyond state
244
-
4. Single entity state query e.g. return account 0.0.x
245
-
269
+
🚨 **Open Task:** Flesh out 3 different state related query endpoints
270
+
1.State snapshot - covering latest state and hsitorical state. All cases represent verified state at the end of a block.
271
+
2.State changes e.g. what state changes occured in block x, this is a subset of the block query and avoid the transmission of extra block information beyond state
272
+
- Add new endpoint to proto
273
+
3. Single entity state query e.g. return account 0.0.x
274
+
- Add new endpoint to proto
246
275
</aside>
247
276
248
277
#### Reconnect Service
249
-
Support CN connecting to BN to be taught about latest stake instead of another CN
278
+
279
+
Today the network consensus node act as teachers to each other when a new node comes onlien and needs to ge the latest
280
+
hashgraph information and state. To ensure future sclaability it's improtant to relive the consensus node of any
281
+
unnecessary functionality that expens time and network resources that should be focused on transactions execution and
282
+
hashgraph state management.
283
+
284
+
As such the block node will replace the teaching role of a consensus node today and serve as a reliable teacher to any
285
+
consensus node or block node coming online and looking for latest network details.
250
286
251
287
<aside>
252
288
🚨 **Open Task:** Expand
@@ -256,6 +292,11 @@ Support CN connecting to BN to be taught about latest stake instead of another C
256
292
</aside>
257
293
258
294
#### Proof Service
295
+
296
+
Consensus nodes provided proof of state APIs has long been desired, however, this would put additional work on the
297
+
consensus node that could be better provied elsewhere. By maintaining live state and streaming block stream information
298
+
a block node can finally fill this gap and provide users with proofs including that of state.
299
+
259
300
<aside>
260
301
🚨 **Open Task:** Flesh out repsonse components
261
302
Noting the 3 different proof types
@@ -265,16 +306,23 @@ Noting the 3 different proof types
265
306
</aside>
266
307
267
308
### Discovery
309
+
310
+
To ensure a robust decentralized network it is improtant for block nodes to be easily discovered by clients.
311
+
268
312
<aside>
269
-
🚨 **Open Task:** Explain how block nodes are discovered
313
+
🚨 **Open Task:** Explain how block nodes provide discovery details.
314
+
Cosniderations
315
+
- Are they self reported?
316
+
- Are they onchain?
317
+
- What requirements if any are there for a block node and operator?
318
+
</aside>
270
319
320
+
<aside>
321
+
🚨 **Open Task:** Explain how block nodes are discovered
271
322
- by a client so they can query data
272
323
- by a CN so they can push data e.g. by address book
273
-
274
324
</aside>
275
325
276
-
### Upgradeability
277
-
278
326
279
327
### Monetization
280
328
@@ -371,11 +419,10 @@ a Block.
371
419
372
420
## Open Issues
373
421
374
-
1. Q: “As a block node operator I should be able to attach custom plugins to the block node, which can utilize its
375
-
functionality.” was previously listed as a user story. Is this an intent to be highlighted?
376
-
1. [Ans]
377
-
2. Q: Do we want to highlight anonymous node runners?
378
-
3. Q: Does the block node require or rely on a transmission of full state from a CN? If so what’s the contract between
422
+
-[ ] Q: “As a block node operator I should be able to attach custom plugins to the block node, which can utilize its
423
+
functionality.” How should this intent be highlighted in specification. Are the detail more implementation and future
424
+
expansions that should be captured in separate HIPs and product EPICs?
425
+
-[ ] Q: Does the block node require or rely on a transmission of full state from a CN? If so what’s the contract between
379
426
nodes here? Previously the CN output state every 15 mins
0 commit comments