Mechanismus blokové synchronizace na Neo - Neo dobrém ekonomickém systému # CryptoNews


Binární možnosti bitcoinů a etereum


Zprávy o koronaviru v přímém přenosu

Neo sloupec

V Neo2 je metoda synchronizace bloku mimořádně sofistikovaná. Existují dva kroky: synchronizace záhlaví bloků a synchronizace bloků.

Jak je prokázáno v následujícím stanovení, je pohybový diagram synchronizačního mechanismu Neo2. Synchronizace záhlaví bloků odpovídá 1,2 krokům:

1. Když nativní uzel zjistí, že pík nativního blockchainu je nižší než vrchol vzdáleného uzlu, odešle zprávu GetHeanders (hash záhlaví), místo hash záhlaví je hash podobný hlavě bloku se samotnou hlavou nejlepší vrchol nativního uzlu.

2. Poté, co vzdálený uzel obdrží požadavek, vrátí požadovanou rozmanitost záhlaví z odpovídající záhlaví v hashe záhlaví do nativního uzlu (výchozí většina různých požadavků záhlaví je 2000).

Po synchronizaci záhlaví bloků se bloky synchronizují. Tento průběh odpovídá krokům v rámci stanovení 3–7:

3. Po synchronizaci záhlaví bloků se musí objevit hash podobný nativnímu bloku s nejlepším vrcholem.

4. Zaslání zprávy GetBlock (hash) do vzdáleného uzlu primárně na základě objeveného hashe.

5. Když vzdálený uzel obdrží požadavek, dostane hash podobný počátečnímu bloku a různým požadovaným blokům (výchozí výchozí množství je 500). Poté, v rozsahu od tohoto hashu, se získají odpovídající hodnoty hash požadované palety bloků a všechny hashe se vloží do jednoho hashu []. Když je načtení plné, hash [] se vrátí do nativního uzlu jako zpráva Inv.

6. Když nativní uzel obdrží zprávu Inv, filtruje hash [] ve zprávě Inv a umístí filtrovanou hash [] do požadavku Getdata a odešle ji do vzdáleného uzlu.

7. Vzdálený uzel obdrží požadavek GetData (hash []), získá odpovídající blok pro každý hash v rámci hash [] a odešle bloky do nativního uzlu.

Je vidět, že mechanismus synchronizace bloků Neo2 je poměrně komplikovaný, s následujícími problémy:

1. Ukázka synchronizace záhlaví bloků první, po které mají bloky zásadní výhody v blockchainech, které se budou rozvětvovat, v důsledku synchronizace záhlaví by mohla být velmi rychlá a mohla by rychle vybrat delší řetězec. Algoritmus konsensu používaný NEO však určuje, že jeho blockchain nebude vidličkou. Výhody režimu prvního záhlaví se tedy změnily jako zastaralé. Pokud nyní tento vzorek nepoužíváme, uložíme režii synchronizace záhlaví komunity.

2. Současný příkaz GetBlocks je neefektivní a identifikace je klamná. Identifikací získáme bloky, ale ve skutečnosti dostaneme zprávu Inv obsahující hash pole. Hašovací pole ve zprávě Inv je poté filtrováno a odpovídající bloky jsou získány pomocí příkazu GetData (hash []).

V souladu s některými problémy v synchronizačním mechanismu bloků Neo2 jsme vylepšili synchronizační mechanismus bloků v Neo3 takto:

1. Synchronizační mechanismus záhlaví bloků byl odstraněn a vrchol bloku byl použit pro okamžitou synchronizaci bloků jako náhrada.

2. Přidejte zprávu GetBlockData (IndexStart, spolehněte se), možná můžete okamžitě získat požadované bloky z IndexStart, žádné se nemusíte dostat pomocí Inv zprávy, omezte režii komunitní komunikace.

3. Přidán SyncManager pro zpracování povinností synchronizace bloků.

Jak je prokázáno v následujícím stanovení, je pohybový diagram mechanismu synchronizace bloku Neo3.

Je primárně rozdělena do následujících kroků:

1. Nejprve je vrchol blockchainu synchronizován se vzdáleným uzlem pomocí zprávy PingPong.

2. Pokud je vrchol nativního blockchainu nižší než vrchol vzdáleného uzlu, je odeslána zpráva GetBlockData, aby se získaly chybějící bloky.

3. Vzdálený uzel odešle bloky požadavku převrácené do nativního uzlu.

4. SyncManger data získaných indexů bloků.

5. Vložte získaný blok do nativního uzlu.

6. Nativní uzel ověřuje platnost bloku. Pokud je to legitimní blok, je Persevered Block Index dodáván do SyncManageru a synchronizace bloků končí.

7. Ať už se jedná o neplatný blok, zašlete Neplatný index bloku do SyncManageru a SyncManager znovu vybere různé uzly pro přiřazení povinnosti. A označte uzel, který poslal neplatný blok.

Pro synchronizační mechanismus Neo2 a Neo3 jsme zkoumali rychlost synchronizace bloku pod zcela odlišnými okolnostmi takto:

Čas synchronizace P2P (v sekundách) s intimovaným StatesDumperem (počínaje indexem 0)
Vylepšete asi 7 případů.

Čas synchronizace P2P (v sekundách) s integrovanými státy StatesDumper (počínaje indexem 30)
Vylepšete asi 4 ~ 5x.

Závěr: Zcela nový mechanismus synchronizace bloku úspěšně snižuje režii komunikace v komunitě a výrazně zvyšuje rychlost synchronizace P2P bloků. Navíc poskytuje inspiraci pro blaho uzlu.

Upozornění: Kód přidružený k výše uvedenému schématu zůstává pod vyhodnocením a v zásadě neznamená konečný návrhový plán.

Od Xiaoyun Yang

Zdroj: https://www.bitcointe.com/2020/03/26/block-synchronization-mechanism-on-neo-neo-good-economic-system/