Skip to content

[mkdocs] docs: add consensus and harvesting concepts#855

Merged
segfaultxavi merged 5 commits into
NemProject:new-docsfrom
zero4862:docs-consensus-concept
May 19, 2026
Merged

[mkdocs] docs: add consensus and harvesting concepts#855
segfaultxavi merged 5 commits into
NemProject:new-docsfrom
zero4862:docs-consensus-concept

Conversation

@zero4862
Copy link
Copy Markdown

@zero4862 zero4862 commented May 13, 2026

Adapts Consensus and Harvesting concept to NEM technology.

Differences with Symbol:

Consensus

  • Finalization: Not supported on NEM, there's a rewrite limit instead.
  • Voting nodes: Not applicable on NEM.
  • Receipts: Not supported on NEM.

Harvesting

  • Hit calculation: NEM uses a deterministic hash of (parent generation hash, harvester public key). Symbol uses a VRF over the parent generation hash and the harvester's VRF key.
  • Harvesting modes: Two on NEM (local, delegated). Three on Symbol (local, remote, delegated).
  • Delegation primitive: One ImportanceTransferTransaction on NEM. Symbol uses AccountKeyLinkTransactionV1 plus PersistentDelegationRequest.
  • Minimum balance: 10,000 XEM vested on NEM. 10,000 XYM on Symbol (no vesting concept).
  • PoI inputs: Vested balance plus a PageRank-like outlink score on NEM. Stake, transaction, and node scores on Symbol.
  • Recalculation cadence: Every 359 blocks on NEM. Every 720 blocks on Symbol.
  • Rewards composition: Transaction fees only on NEM (no inflation) + Super nodes program. Fees plus inflation on Symbol.
  • Rewards routing: 100% to the harvester (or lessor) on NEM. Symbol splits 5% to a network sink, 25% to a node beneficiary, rest to the harvester.

Comment thread mkdocs/pages/en/textbook/harvesting.md
Comment thread mkdocs/pages/en/textbook/harvesting.md
Comment on lines +40 to +41
If any of its harvester accounts produces a hit below the target, the node assembles a candidate block
from the <unconfirmed pool:> and announces it to the rest of the network.
Copy link
Copy Markdown
Author

@zero4862 zero4862 May 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In NEM, the block is prepared after verifying that the hit < target.

In Symbol, we say the block is prepared before checking hit < target. We should review the order in Symbol in case it is reversed.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In Symbol the block must be prepared before the hit is calculated, because the block's hash is used to compute the hit, no?


Other nodes then verify the block, ensuring:

* The block signature comes from the claimed harvester.
Copy link
Copy Markdown
Author

@zero4862 zero4862 May 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added this sentence vs Symbol docs:

* "The block signature comes from the claimed harvester."

And removed "The target and hit values were correctly calculated" since is it covered already by "The hit is indeed lower than the target."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not only about hit being lower than target, it's also about the hit being correctly calculated from the block's hash, the VRF, etc. So I think that sentence is OK in Symbol.
I'll add the point about the signature to the Symbol docs 👍

Comment thread mkdocs/pages/en/textbook/harvesting.md
Comment thread mkdocs/pages/en/textbook/harvesting.md Outdated
Comment thread mkdocs/pages/en/textbook/transactions.md
@zero4862 zero4862 marked this pull request as ready for review May 13, 2026 10:46
Comment thread mkdocs/pages/en/textbook/harvesting.md
@segfaultxavi segfaultxavi self-requested a review May 19, 2026 06:41
Copy link
Copy Markdown
Contributor

@segfaultxavi segfaultxavi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've added a couple minor changes, and it's good to go!

Comment thread mkdocs/pages/en/textbook/harvesting.md
Comment thread mkdocs/pages/en/textbook/harvesting.md
Comment thread mkdocs/pages/en/textbook/harvesting.md Outdated
The higher the importance, the higher its target will be.

For each of its harvester accounts, the node computes a number called the _hit_ from the candidate block's
[generation hash](blocks.md#derived-fields).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like to use the ./ path even for sibling pages, in case some day we enable the plugin that automatically locates pages when they have no path.

Comment on lines +40 to +41
If any of its harvester accounts produces a hit below the target, the node assembles a candidate block
from the <unconfirmed pool:> and announces it to the rest of the network.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In Symbol the block must be prepared before the hit is calculated, because the block's hash is used to compute the hit, no?


Other nodes then verify the block, ensuring:

* The block signature comes from the claimed harvester.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not only about hit being lower than target, it's also about the hit being correctly calculated from the block's hash, the VRF, etc. So I think that sentence is OK in Symbol.
I'll add the point about the signature to the Symbol docs 👍

Comment thread mkdocs/pages/en/textbook/harvesting.md Outdated
Comment thread mkdocs/pages/en/textbook/harvesting.md
@segfaultxavi segfaultxavi merged commit ff322d2 into NemProject:new-docs May 19, 2026
0 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants