Solana Turbine Block Propagation

Solana Turbine Block Propagation

Solana中的共识节点称之为 validators,所有的 validators 构成一个 cluster(簇)。每次只有一个共识节点负责出块,这个负责出块的节点称之为 Leader(领导)。每个 Leader 有固定的出块区间,Solana中将其称之为 slot。

当一个 Leader 生产一个新区块后,需要尽快将其分发给其他 validator,为此,Solana 使用了一种称之为 Turbine 的方法。在这种方法中,当 Leader 分发新区块时,使用纠删码对新区块进行切分成若干份,随后将每一份数据分发给一个 validator。每个 validator 收到一份数据后,再将自己收到的数据分发给其他 validator。这是一种树形分发方式,其方式完全就是 split-stream 的翻版。

数据分发结构

当 Leader 分发区块时,会选择 DATA_PLANE_FANOUT 个节点,并向这些节点分发数据。DATA_PLANE_FANOUT 是配置的一个值。当前 Leader 选择时,直接按照各个 validator 质押的 stake 份额的高低选择,Leader 会按照从高到低选择一批节点,然后使用随机选取 DATA_PLANE_FANOUT 个节点,进行随机选择的目的是为了提高安全性。可以看出,质押份额越高的节点是最快收到新区块的节点。

假设 Leader 是分发过程中的根节点,构成了第 0 层(layer),那么 Leader 刚开始选择的这些节点构成了第 1 层,第一层的节点再次选择其他节点构成第 3 层,依次类推,最终,整个数据的分发方式构成了一个多播树,其方式类似下图,每个节点的子节点数由 DATA_PLANE_FANOUT 决定,当前这个值是在系统启动时配置好的。

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3NDQiIGhlaWdodD0iMzA0Ij4KICA8c3R5bGU+CiAgICBsaW5lLCBwYXRoLCBjaXJjbGUsIHJlY3QsIHBvbHlnb257c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1vcGFjaXR5OjE7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO310ZXh0e2ZvbnQtZmFtaWx5Oklvc2V2a2EgRml4ZWQsIG1vbm9zcGFjZTtmb250LXNpemU6MTRweDt9cmVjdC5iYWNrZHJvcHtzdHJva2U6bm9uZTtmaWxsOndoaXRlO30uYnJva2Vue3N0cm9rZS1kYXNoYXJyYXk6ODt9LmZpbGxlZHtmaWxsOmJsYWNrO30uYmdfZmlsbGVke2ZpbGw6d2hpdGU7fS5ub2ZpbGx7ZmlsbDp3aGl0ZTt9LmVuZF9tYXJrZWRfYXJyb3d7bWFya2VyLWVuZDp1cmwoI2Fycm93KTt9LnN0YXJ0X21hcmtlZF9hcnJvd3ttYXJrZXItc3RhcnQ6dXJsKCNhcnJvdyk7fS5lbmRfbWFya2VkX2RpYW1vbmR7bWFya2VyLWVuZDp1cmwoI2RpYW1vbmQpO30uc3RhcnRfbWFya2VkX2RpYW1vbmR7bWFya2VyLXN0YXJ0OnVybCgjZGlhbW9uZCk7fS5lbmRfbWFya2VkX2NpcmNsZXttYXJrZXItZW5kOnVybCgjY2lyY2xlKTt9LnN0YXJ0X21hcmtlZF9jaXJjbGV7bWFya2VyLXN0YXJ0OnVybCgjY2lyY2xlKTt9LmVuZF9tYXJrZWRfb3Blbl9jaXJjbGV7bWFya2VyLWVuZDp1cmwoI29wZW5fY2lyY2xlKTt9LnN0YXJ0X21hcmtlZF9vcGVuX2NpcmNsZXttYXJrZXItc3RhcnQ6dXJsKCNvcGVuX2NpcmNsZSk7fS5lbmRfbWFya2VkX2JpZ19vcGVuX2NpcmNsZXttYXJrZXItZW5kOnVybCgjYmlnX29wZW5fY2lyY2xlKTt9LnN0YXJ0X21hcmtlZF9iaWdfb3Blbl9jaXJjbGV7bWFya2VyLXN0YXJ0OnVybCgjYmlnX29wZW5fY2lyY2xlKTt9CiAgICA8IS0tc2VwYXJhdG9yLS0+CiAgICAKICA8L3N0eWxlPgogIDxkZWZzPgogICAgPG1hcmtlciBpZD0iYXJyb3ciIHZpZXdCb3g9Ii0yIC0yIDggOCIgcmVmWD0iNCIgcmVmWT0iMiIgbWFya2VyV2lkdGg9IjciIG1hcmtlckhlaWdodD0iNyIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPgogICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAwLDQgNCwyIDAsMCI+PC9wb2x5Z29uPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyIGlkPSJkaWFtb25kIiB2aWV3Qm94PSItMiAtMiA4IDgiIHJlZlg9IjQiIHJlZlk9IjIiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj4KICAgICAgPHBvbHlnb24gcG9pbnRzPSIwLDIgMiwwIDQsMiAyLDQgMCwyIj48L3BvbHlnb24+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIgaWQ9ImNpcmNsZSIgdmlld0JveD0iMCAwIDggOCIgcmVmWD0iNCIgcmVmWT0iNCIgbWFya2VyV2lkdGg9IjciIG1hcmtlckhlaWdodD0iNyIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPgogICAgICA8Y2lyY2xlIGN4PSI0IiBjeT0iNCIgcj0iMiIgY2xhc3M9ImZpbGxlZCI+PC9jaXJjbGU+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIgaWQ9Im9wZW5fY2lyY2xlIiB2aWV3Qm94PSIwIDAgOCA4IiByZWZYPSI0IiByZWZZPSI0IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+CiAgICAgIDxjaXJjbGUgY3g9IjQiIGN5PSI0IiByPSIyIiBjbGFzcz0iYmdfZmlsbGVkIj48L2NpcmNsZT4KICAgIDwvbWFya2VyPgogICAgPG1hcmtlciBpZD0iYmlnX29wZW5fY2lyY2xlIiB2aWV3Qm94PSIwIDAgOCA4IiByZWZYPSI0IiByZWZZPSI0IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+CiAgICAgIDxjaXJjbGUgY3g9IjQiIGN5PSI0IiByPSIzIiBjbGFzcz0iYmdfZmlsbGVkIj48L2NpcmNsZT4KICAgIDwvbWFya2VyPgogIDwvZGVmcz4KICA8cmVjdCBjbGFzcz0iYmFja2Ryb3AiIHg9IjAiIHk9IjAiIHdpZHRoPSI3NDQiIGhlaWdodD0iMzA0Ij48L3JlY3Q+CiAgPHJlY3QgeD0iNCIgeT0iMjE2IiB3aWR0aD0iMTY4IiBoZWlnaHQ9IjY0IiBjbGFzcz0ic29saWQgbm9maWxsIiByeD0iMCI+PC9yZWN0PgogIDx0ZXh0IHg9IjM0IiB5PSIyNTIiID5OZWlnaGJvcmhvb2Q8L3RleHQ+CiAgPHRleHQgeD0iMTM4IiB5PSIyNTIiID4zPC90ZXh0PgogIDxyZWN0IHg9IjE4OCIgeT0iMjE2IiB3aWR0aD0iMTY4IiBoZWlnaHQ9IjY0IiBjbGFzcz0ic29saWQgbm9maWxsIiByeD0iMCI+PC9yZWN0PgogIDx0ZXh0IHg9IjIxOCIgeT0iMjUyIiA+TmVpZ2hib3Job29kPC90ZXh0PgogIDx0ZXh0IHg9IjMyMiIgeT0iMjUyIiA+NDwvdGV4dD4KICA8cmVjdCB4PSIzODAiIHk9IjIxNiIgd2lkdGg9IjE2OCIgaGVpZ2h0PSI2NCIgY2xhc3M9InNvbGlkIG5vZmlsbCIgcng9IjAiPjwvcmVjdD4KICA8dGV4dCB4PSI0MTAiIHk9IjI1MiIgPk5laWdoYm9yaG9vZDwvdGV4dD4KICA8dGV4dCB4PSI1MTQiIHk9IjI1MiIgPjU8L3RleHQ+CiAgPHJlY3QgeD0iNTY0IiB5PSIyMTYiIHdpZHRoPSIxNjgiIGhlaWdodD0iNjQiIGNsYXNzPSJzb2xpZCBub2ZpbGwiIHJ4PSIwIj48L3JlY3Q+CiAgPHRleHQgeD0iNTk0IiB5PSIyNTIiID5OZWlnaGJvcmhvb2Q8L3RleHQ+CiAgPHRleHQgeD0iNjk4IiB5PSIyNTIiID42PC90ZXh0PgogIDx0ZXh0IHg9IjMwNiIgeT0iNDQiID5OZWlnaGJvcmhvb2Q8L3RleHQ+CiAgPHRleHQgeD0iNDEwIiB5PSI0NCIgPjA8L3RleHQ+CiAgPHRleHQgeD0iMTU0IiB5PSIxNDAiID5OZWlnaGJvcmhvb2Q8L3RleHQ+CiAgPHRleHQgeD0iMjU4IiB5PSIxNDAiID4xPC90ZXh0PgogIDx0ZXh0IHg9IjQ3NCIgeT0iMTQwIiA+TmVpZ2hib3Job29kPC90ZXh0PgogIDx0ZXh0IHg9IjU3OCIgeT0iMTQwIiA+MjwvdGV4dD4KICA8Zz4KICAgIDxsaW5lIHgxPSIyNzYiIHkxPSI4IiB4Mj0iNDQ0IiB5Mj0iOCIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8bGluZSB4MT0iMjc2IiB5MT0iOCIgeDI9IjI3NiIgeTI9IjcyIiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSI0NDQiIHkxPSI4IiB4Mj0iNDQ0IiB5Mj0iNzIiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjIwNCIgeTE9IjQwIiB4Mj0iMjc2IiB5Mj0iNDAiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjIwNCIgeTE9IjQwIiB4Mj0iMjA0IiB5Mj0iODQiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjQ0NCIgeTE9IjQwIiB4Mj0iNTMyIiB5Mj0iNDAiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjUzMiIgeTE9IjQwIiB4Mj0iNTMyIiB5Mj0iODQiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjI3NiIgeTE9IjcyIiB4Mj0iNDQ0IiB5Mj0iNzIiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPHBvbHlnb24gcG9pbnRzPSIyMDAsODQgMjA4LDg0IDIwNCw5NiIgY2xhc3M9ImZpbGxlZCI+PC9wb2x5Z29uPgogICAgPHBvbHlnb24gcG9pbnRzPSI1MjgsODQgNTM2LDg0IDUzMiw5NiIgY2xhc3M9ImZpbGxlZCI+PC9wb2x5Z29uPgogIDwvZz4KICA8Zz4KICAgIDxsaW5lIHgxPSIxMjQiIHkxPSIxMDQiIHgyPSIyOTIiIHkyPSIxMDQiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjEyNCIgeTE9IjEwNCIgeDI9IjEyNCIgeTI9IjE2OCIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8bGluZSB4MT0iMjkyIiB5MT0iMTA0IiB4Mj0iMjkyIiB5Mj0iMTY4IiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSIxMjQiIHkxPSIxNjgiIHgyPSIyOTIiIHkyPSIxNjgiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjE1NiIgeTE9IjE2OCIgeDI9IjE1NiIgeTI9IjE5NiIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8bGluZSB4MT0iMjA0IiB5MT0iMTY4IiB4Mj0iMjA0IiB5Mj0iMTk2IiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxwb2x5Z29uIHBvaW50cz0iMTUyLDE5NiAxNjAsMTk2IDE1NiwyMDgiIGNsYXNzPSJmaWxsZWQiPjwvcG9seWdvbj4KICAgIDxwb2x5Z29uIHBvaW50cz0iMjAwLDE5NiAyMDgsMTk2IDIwNCwyMDgiIGNsYXNzPSJmaWxsZWQiPjwvcG9seWdvbj4KICA8L2c+CiAgPGc+CiAgICA8bGluZSB4MT0iNDQ0IiB5MT0iMTA0IiB4Mj0iNjEyIiB5Mj0iMTA0IiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSI0NDQiIHkxPSIxMDQiIHgyPSI0NDQiIHkyPSIxNjgiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjYxMiIgeTE9IjEwNCIgeDI9IjYxMiIgeTI9IjE2OCIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8bGluZSB4MT0iNDQ0IiB5MT0iMTY4IiB4Mj0iNjEyIiB5Mj0iMTY4IiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSI1MzIiIHkxPSIxNjgiIHgyPSI1MzIiIHkyPSIxOTYiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjU4MCIgeTE9IjE2OCIgeDI9IjU4MCIgeTI9IjE5NiIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8cG9seWdvbiBwb2ludHM9IjUyOCwxOTYgNTM2LDE5NiA1MzIsMjA4IiBjbGFzcz0iZmlsbGVkIj48L3BvbHlnb24+CiAgICA8cG9seWdvbiBwb2ludHM9IjU3NiwxOTYgNTg0LDE5NiA1ODAsMjA4IiBjbGFzcz0iZmlsbGVkIj48L3BvbHlnb24+CiAgPC9nPgo8L3N2Zz4=)

Shred 分发过程

当 Leader 分发新区块时,Leader 在第 0 层。然后把编码为若干个分片,每个分片称之为一个 Shred。

当分发一个 Shred 时,Leader 节点选择并发送给一个特定的节点,这个节点称之为这个Turbine 树的根节点(root node)或者锚节点(anchor node)。锚节点会将该 Shred 分发给第 1 层的节点,同时还会发送给第 2 层的节点。因此,一个 锚节点需要将一个 Shred 分发给 2×DATA_PLANE_FANOUT12 \times DATA\_PLANE\_FANOUT - 1 个节点,而普通节点只需要发送给下一层的 DATA_PLANE_FANOUTDATA\_PLANE\_FANOUT 个节点。

下图展示了一个 Leader 在 fanout 设置为 2 的情况下把一个 Shred 分发给 Neighborhood 0 的过程。Leader 首先选择将 Shred 发送给 Validator 1(根节点),随后 Validator 1 将 Shred 转发给 Validator 2,而 Validator 1 和 Validator 2 构成了第 1 层。

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1NTIiIGhlaWdodD0iMjU2Ij4KICA8c3R5bGU+CiAgICBsaW5lLCBwYXRoLCBjaXJjbGUsIHJlY3QsIHBvbHlnb257c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1vcGFjaXR5OjE7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO310ZXh0e2ZvbnQtZmFtaWx5Oklvc2V2a2EgRml4ZWQsIG1vbm9zcGFjZTtmb250LXNpemU6MTRweDt9cmVjdC5iYWNrZHJvcHtzdHJva2U6bm9uZTtmaWxsOndoaXRlO30uYnJva2Vue3N0cm9rZS1kYXNoYXJyYXk6ODt9LmZpbGxlZHtmaWxsOmJsYWNrO30uYmdfZmlsbGVke2ZpbGw6d2hpdGU7fS5ub2ZpbGx7ZmlsbDp3aGl0ZTt9LmVuZF9tYXJrZWRfYXJyb3d7bWFya2VyLWVuZDp1cmwoI2Fycm93KTt9LnN0YXJ0X21hcmtlZF9hcnJvd3ttYXJrZXItc3RhcnQ6dXJsKCNhcnJvdyk7fS5lbmRfbWFya2VkX2RpYW1vbmR7bWFya2VyLWVuZDp1cmwoI2RpYW1vbmQpO30uc3RhcnRfbWFya2VkX2RpYW1vbmR7bWFya2VyLXN0YXJ0OnVybCgjZGlhbW9uZCk7fS5lbmRfbWFya2VkX2NpcmNsZXttYXJrZXItZW5kOnVybCgjY2lyY2xlKTt9LnN0YXJ0X21hcmtlZF9jaXJjbGV7bWFya2VyLXN0YXJ0OnVybCgjY2lyY2xlKTt9LmVuZF9tYXJrZWRfb3Blbl9jaXJjbGV7bWFya2VyLWVuZDp1cmwoI29wZW5fY2lyY2xlKTt9LnN0YXJ0X21hcmtlZF9vcGVuX2NpcmNsZXttYXJrZXItc3RhcnQ6dXJsKCNvcGVuX2NpcmNsZSk7fS5lbmRfbWFya2VkX2JpZ19vcGVuX2NpcmNsZXttYXJrZXItZW5kOnVybCgjYmlnX29wZW5fY2lyY2xlKTt9LnN0YXJ0X21hcmtlZF9iaWdfb3Blbl9jaXJjbGV7bWFya2VyLXN0YXJ0OnVybCgjYmlnX29wZW5fY2lyY2xlKTt9CiAgICA8IS0tc2VwYXJhdG9yLS0+CiAgICAKICA8L3N0eWxlPgogIDxkZWZzPgogICAgPG1hcmtlciBpZD0iYXJyb3ciIHZpZXdCb3g9Ii0yIC0yIDggOCIgcmVmWD0iNCIgcmVmWT0iMiIgbWFya2VyV2lkdGg9IjciIG1hcmtlckhlaWdodD0iNyIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPgogICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAwLDQgNCwyIDAsMCI+PC9wb2x5Z29uPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyIGlkPSJkaWFtb25kIiB2aWV3Qm94PSItMiAtMiA4IDgiIHJlZlg9IjQiIHJlZlk9IjIiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj4KICAgICAgPHBvbHlnb24gcG9pbnRzPSIwLDIgMiwwIDQsMiAyLDQgMCwyIj48L3BvbHlnb24+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIgaWQ9ImNpcmNsZSIgdmlld0JveD0iMCAwIDggOCIgcmVmWD0iNCIgcmVmWT0iNCIgbWFya2VyV2lkdGg9IjciIG1hcmtlckhlaWdodD0iNyIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPgogICAgICA8Y2lyY2xlIGN4PSI0IiBjeT0iNCIgcj0iMiIgY2xhc3M9ImZpbGxlZCI+PC9jaXJjbGU+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIgaWQ9Im9wZW5fY2lyY2xlIiB2aWV3Qm94PSIwIDAgOCA4IiByZWZYPSI0IiByZWZZPSI0IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+CiAgICAgIDxjaXJjbGUgY3g9IjQiIGN5PSI0IiByPSIyIiBjbGFzcz0iYmdfZmlsbGVkIj48L2NpcmNsZT4KICAgIDwvbWFya2VyPgogICAgPG1hcmtlciBpZD0iYmlnX29wZW5fY2lyY2xlIiB2aWV3Qm94PSIwIDAgOCA4IiByZWZYPSI0IiByZWZZPSI0IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+CiAgICAgIDxjaXJjbGUgY3g9IjQiIGN5PSI0IiByPSIzIiBjbGFzcz0iYmdfZmlsbGVkIj48L2NpcmNsZT4KICAgIDwvbWFya2VyPgogIDwvZGVmcz4KICA8cmVjdCBjbGFzcz0iYmFja2Ryb3AiIHg9IjAiIHk9IjAiIHdpZHRoPSI1NTIiIGhlaWdodD0iMjU2Ij48L3JlY3Q+CiAgPHJlY3QgeD0iNCIgeT0iMTA0IiB3aWR0aD0iNTM2IiBoZWlnaHQ9IjEyOCIgY2xhc3M9InNvbGlkIG5vZmlsbCIgcng9IjAiPjwvcmVjdD4KICA8cmVjdCB4PSIzNjQiIHk9IjEzNiIgd2lkdGg9IjE0NCIgaGVpZ2h0PSI2NCIgY2xhc3M9InNvbGlkIG5vZmlsbCIgcng9IjAiPjwvcmVjdD4KICA8dGV4dCB4PSIzOTQiIHk9IjE3MiIgPlZhbGlkYXRvcjwvdGV4dD4KICA8dGV4dCB4PSI0NzQiIHk9IjE3MiIgPjI8L3RleHQ+CiAgPHRleHQgeD0iMjE4IiB5PSIxNDAiID5OZWlnaGJvcmhvb2Q8L3RleHQ+CiAgPHRleHQgeD0iMzIyIiB5PSIxNDAiID4wPC90ZXh0PgogIDx0ZXh0IHg9IjY2IiB5PSIxNzIiID5WYWxpZGF0b3I8L3RleHQ+CiAgPHRleHQgeD0iOTAiIHk9IjE4OCIgPlJvb3Q8L3RleHQ+CiAgPHRleHQgeD0iMTQ2IiB5PSIxNzIiID4xPC90ZXh0PgogIDx0ZXh0IHg9IjI1MCIgeT0iNDQiID5MZWFkZXI8L3RleHQ+CiAgPGc+CiAgICA8bGluZSB4MT0iMjEyIiB5MT0iOCIgeDI9IjMzMiIgeTI9IjgiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjIxMiIgeTE9IjgiIHgyPSIyMTIiIHkyPSI3MiIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8bGluZSB4MT0iMzMyIiB5MT0iOCIgeDI9IjMzMiIgeTI9IjcyIiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSIxMDgiIHkxPSI0MCIgeDI9IjIxMiIgeTI9IjQwIiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSIxMDgiIHkxPSI0MCIgeDI9IjEwOCIgeTI9IjExNiIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8bGluZSB4MT0iMjEyIiB5MT0iNzIiIHgyPSIzMzIiIHkyPSI3MiIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8cG9seWdvbiBwb2ludHM9IjEwNCwxMTYgMTEyLDExNiAxMDgsMTI4IiBjbGFzcz0iZmlsbGVkIj48L3BvbHlnb24+CiAgPC9nPgogIDxnPgogICAgPGxpbmUgeDE9IjM2IiB5MT0iMTM2IiB4Mj0iMTgwIiB5Mj0iMTM2IiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSIzNiIgeTE9IjEzNiIgeDI9IjM2IiB5Mj0iMjAwIiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSIxODAiIHkxPSIxMzYiIHgyPSIxODAiIHkyPSIyMDAiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjE4MCIgeTE9IjE1MiIgeDI9IjM1MiIgeTI9IjE1MiIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8cG9seWdvbiBwb2ludHM9IjM1MiwxNDggMzYwLDE1MiAzNTIsMTU2IiBjbGFzcz0iZmlsbGVkIj48L3BvbHlnb24+CiAgICA8bGluZSB4MT0iMzYiIHkxPSIyMDAiIHgyPSIxODAiIHkyPSIyMDAiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogIDwvZz4KPC9zdmc+)

如下图所示,Validator 1 和 Validator 2 继续将 Shred 发送给第 2 层的节点。可以看出,Validator 1 作为锚节点总共发送了 2×21=32\times2-1=3 次,而 Validator 2 只发送了 22 次。

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1NTIiIGhlaWdodD0iMzIwIj4KICA8c3R5bGU+CiAgICBsaW5lLCBwYXRoLCBjaXJjbGUsIHJlY3QsIHBvbHlnb257c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1vcGFjaXR5OjE7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO310ZXh0e2ZvbnQtZmFtaWx5Oklvc2V2a2EgRml4ZWQsIG1vbm9zcGFjZTtmb250LXNpemU6MTRweDt9cmVjdC5iYWNrZHJvcHtzdHJva2U6bm9uZTtmaWxsOndoaXRlO30uYnJva2Vue3N0cm9rZS1kYXNoYXJyYXk6ODt9LmZpbGxlZHtmaWxsOmJsYWNrO30uYmdfZmlsbGVke2ZpbGw6d2hpdGU7fS5ub2ZpbGx7ZmlsbDp3aGl0ZTt9LmVuZF9tYXJrZWRfYXJyb3d7bWFya2VyLWVuZDp1cmwoI2Fycm93KTt9LnN0YXJ0X21hcmtlZF9hcnJvd3ttYXJrZXItc3RhcnQ6dXJsKCNhcnJvdyk7fS5lbmRfbWFya2VkX2RpYW1vbmR7bWFya2VyLWVuZDp1cmwoI2RpYW1vbmQpO30uc3RhcnRfbWFya2VkX2RpYW1vbmR7bWFya2VyLXN0YXJ0OnVybCgjZGlhbW9uZCk7fS5lbmRfbWFya2VkX2NpcmNsZXttYXJrZXItZW5kOnVybCgjY2lyY2xlKTt9LnN0YXJ0X21hcmtlZF9jaXJjbGV7bWFya2VyLXN0YXJ0OnVybCgjY2lyY2xlKTt9LmVuZF9tYXJrZWRfb3Blbl9jaXJjbGV7bWFya2VyLWVuZDp1cmwoI29wZW5fY2lyY2xlKTt9LnN0YXJ0X21hcmtlZF9vcGVuX2NpcmNsZXttYXJrZXItc3RhcnQ6dXJsKCNvcGVuX2NpcmNsZSk7fS5lbmRfbWFya2VkX2JpZ19vcGVuX2NpcmNsZXttYXJrZXItZW5kOnVybCgjYmlnX29wZW5fY2lyY2xlKTt9LnN0YXJ0X21hcmtlZF9iaWdfb3Blbl9jaXJjbGV7bWFya2VyLXN0YXJ0OnVybCgjYmlnX29wZW5fY2lyY2xlKTt9CiAgICA8IS0tc2VwYXJhdG9yLS0+CiAgICAKICA8L3N0eWxlPgogIDxkZWZzPgogICAgPG1hcmtlciBpZD0iYXJyb3ciIHZpZXdCb3g9Ii0yIC0yIDggOCIgcmVmWD0iNCIgcmVmWT0iMiIgbWFya2VyV2lkdGg9IjciIG1hcmtlckhlaWdodD0iNyIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPgogICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAwLDQgNCwyIDAsMCI+PC9wb2x5Z29uPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyIGlkPSJkaWFtb25kIiB2aWV3Qm94PSItMiAtMiA4IDgiIHJlZlg9IjQiIHJlZlk9IjIiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj4KICAgICAgPHBvbHlnb24gcG9pbnRzPSIwLDIgMiwwIDQsMiAyLDQgMCwyIj48L3BvbHlnb24+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIgaWQ9ImNpcmNsZSIgdmlld0JveD0iMCAwIDggOCIgcmVmWD0iNCIgcmVmWT0iNCIgbWFya2VyV2lkdGg9IjciIG1hcmtlckhlaWdodD0iNyIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPgogICAgICA8Y2lyY2xlIGN4PSI0IiBjeT0iNCIgcj0iMiIgY2xhc3M9ImZpbGxlZCI+PC9jaXJjbGU+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIgaWQ9Im9wZW5fY2lyY2xlIiB2aWV3Qm94PSIwIDAgOCA4IiByZWZYPSI0IiByZWZZPSI0IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+CiAgICAgIDxjaXJjbGUgY3g9IjQiIGN5PSI0IiByPSIyIiBjbGFzcz0iYmdfZmlsbGVkIj48L2NpcmNsZT4KICAgIDwvbWFya2VyPgogICAgPG1hcmtlciBpZD0iYmlnX29wZW5fY2lyY2xlIiB2aWV3Qm94PSIwIDAgOCA4IiByZWZYPSI0IiByZWZZPSI0IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+CiAgICAgIDxjaXJjbGUgY3g9IjQiIGN5PSI0IiByPSIzIiBjbGFzcz0iYmdfZmlsbGVkIj48L2NpcmNsZT4KICAgIDwvbWFya2VyPgogIDwvZGVmcz4KICA8cmVjdCBjbGFzcz0iYmFja2Ryb3AiIHg9IjAiIHk9IjAiIHdpZHRoPSI1NTIiIGhlaWdodD0iMzIwIj48L3JlY3Q+CiAgPHJlY3QgeD0iNCIgeT0iOCIgd2lkdGg9IjUzNiIgaGVpZ2h0PSIxNzYiIGNsYXNzPSJzb2xpZCBub2ZpbGwiIHJ4PSIwIj48L3JlY3Q+CiAgPHRleHQgeD0iMjE4IiB5PSI0NCIgPk5laWdoYm9yaG9vZDwvdGV4dD4KICA8dGV4dCB4PSIzMjIiIHk9IjQ0IiA+MDwvdGV4dD4KICA8dGV4dCB4PSI2NiIgeT0iNzYiID5WYWxpZGF0b3I8L3RleHQ+CiAgPHRleHQgeD0iOTAiIHk9IjkyIiA+Um9vdDwvdGV4dD4KICA8dGV4dCB4PSIxNDYiIHk9Ijc2IiA+MTwvdGV4dD4KICA8dGV4dCB4PSIzOTQiIHk9Ijc2IiA+VmFsaWRhdG9yPC90ZXh0PgogIDx0ZXh0IHg9IjQ3NCIgeT0iNzYiID4yPC90ZXh0PgogIDxyZWN0IHg9IjI4IiB5PSIyMzIiIHdpZHRoPSIxNjgiIGhlaWdodD0iNjQiIGNsYXNzPSJzb2xpZCBub2ZpbGwiIHJ4PSIwIj48L3JlY3Q+CiAgPHRleHQgeD0iNTgiIHk9IjI2OCIgPk5laWdoYm9yaG9vZDwvdGV4dD4KICA8dGV4dCB4PSIxNjIiIHk9IjI2OCIgPjE8L3RleHQ+CiAgPHJlY3QgeD0iMzQ4IiB5PSIyMzIiIHdpZHRoPSIxNjgiIGhlaWdodD0iNjQiIGNsYXNzPSJzb2xpZCBub2ZpbGwiIHJ4PSIwIj48L3JlY3Q+CiAgPHRleHQgeD0iMzc4IiB5PSIyNjgiID5OZWlnaGJvcmhvb2Q8L3RleHQ+CiAgPHRleHQgeD0iNDgyIiB5PSIyNjgiID4yPC90ZXh0PgogIDxnPgogICAgPGxpbmUgeDE9IjM2IiB5MT0iNDAiIHgyPSIxODAiIHkyPSI0MCIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8bGluZSB4MT0iMzYiIHkxPSI0MCIgeDI9IjM2IiB5Mj0iMTA0IiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSIxODAiIHkxPSI0MCIgeDI9IjE4MCIgeTI9IjEwNCIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8bGluZSB4MT0iMTgwIiB5MT0iNTYiIHgyPSIzNTIiIHkyPSI1NiIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8cG9seWdvbiBwb2ludHM9IjM1Miw1MiAzNjAsNTYgMzUyLDYwIiBjbGFzcz0iZmlsbGVkIj48L3BvbHlnb24+CiAgICA8bGluZSB4MT0iMzYiIHkxPSIxMDQiIHgyPSIxODAiIHkyPSIxMDQiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjEwOCIgeTE9IjEwNCIgeDI9IjEwOCIgeTI9IjIxMiIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8bGluZSB4MT0iMTI0IiB5MT0iMTA0IiB4Mj0iMTI0IiB5Mj0iMTM2IiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSIxMjQiIHkxPSIxMzYiIHgyPSIzNjQiIHkyPSIxMzYiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjM2NCIgeTE9IjEzNiIgeDI9IjM2NCIgeTI9IjIxMiIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8cG9seWdvbiBwb2ludHM9IjEwNCwyMTIgMTEyLDIxMiAxMDgsMjI0IiBjbGFzcz0iZmlsbGVkIj48L3BvbHlnb24+CiAgICA8cG9seWdvbiBwb2ludHM9IjM2MCwyMTIgMzY4LDIxMiAzNjQsMjI0IiBjbGFzcz0iZmlsbGVkIj48L3BvbHlnb24+CiAgPC9nPgogIDxnPgogICAgPGxpbmUgeDE9IjM2NCIgeTE9IjQwIiB4Mj0iNTA4IiB5Mj0iNDAiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjM2NCIgeTE9IjQwIiB4Mj0iMzY0IiB5Mj0iMTA0IiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSI1MDgiIHkxPSI0MCIgeDI9IjUwOCIgeTI9IjEwNCIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8bGluZSB4MT0iMzY0IiB5MT0iMTA0IiB4Mj0iNTA4IiB5Mj0iMTA0IiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSI0MjAiIHkxPSIxMDQiIHgyPSI0MjAiIHkyPSIxNTIiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPGxpbmUgeDE9IjQzNiIgeTE9IjEwNCIgeDI9IjQzNiIgeTI9IjIxMiIgY2xhc3M9InNvbGlkIj48L2xpbmU+CiAgICA8bGluZSB4MT0iMTY0IiB5MT0iMTUyIiB4Mj0iNDIwIiB5Mj0iMTUyIiBjbGFzcz0ic29saWQiPjwvbGluZT4KICAgIDxsaW5lIHgxPSIxNjQiIHkxPSIxNTIiIHgyPSIxNjQiIHkyPSIyMTIiIGNsYXNzPSJzb2xpZCI+PC9saW5lPgogICAgPHBvbHlnb24gcG9pbnRzPSIxNjAsMjEyIDE2OCwyMTIgMTY0LDIyNCIgY2xhc3M9ImZpbGxlZCI+PC9wb2x5Z29uPgogICAgPHBvbHlnb24gcG9pbnRzPSI0MzIsMjEyIDQ0MCwyMTIgNDM2LDIyNCIgY2xhc3M9ImZpbGxlZCI+PC9wb2x5Z29uPgogIDwvZz4KPC9zdmc+)

需要说明的是,上述图解只是如何发送一份 Shred 的过程,实际上,Leader 会使用纠删码把一个区块编码为多个 Shred,然后针对每一个 Shred,把每个 Shred 发送给不同的根节点。假设整个区块被编码为 2 个 Shred,随后 Validator 1 将收到的 Shred 1 发送给 Validator2,而 Validator 2 会将收到的 Shred 2 发送给 Validator 2。最终 Validator 1 和 Validator 2 都可以通过纠删码解码原始的区块。

为了快速传输数据,Solana 使用 UDP 协议进行传输,而 UDP 不是可靠传输,因此,传输过程中加入 FEC 以增加数据的鲁棒性。

参考资料

  1. Slolana Document-Turbine Block Propagation