Initial Block Download

Mula sa matagumpay na koneksyon, ang isang node ay mag-uupdate na ng kanyang impormasyon patungkol sa blockchain. Initial Block Download (IBD) ang tawag dito. Tutulungan ito ng peer na mas updated o sync node.

Ang bagong saltang node ay mayroon lamang block 0 – ang genesis block na hard coded sa Bitcoin Core. Mag-uumpisa itong humingi ng block headers muna, gamit ang “getheaders” na mensahe. Ang sagot ng sync node ay headers na mensahe na maaaring maglaman ng hanggang 2000 block headers. Ang IBD node ay magsisimula nang patunayan ang data ng mga headers na natanggap. Tapos, magkahilerang gagawin nito na:

  • Mag download ng karagdagang headers – tig 2000 libong headers ang matatanggap sa bawat sagot ng sync node hanggang sa ang huli ay mas konti na. Bilang proteksyon, magpapadala ang IBD node sa lahat ng outbound peers nito ng getheaders na mensahe. Ikukumpara nito ang matatanggap na headers para matukoy kung ano ang pinakamahusay na chain.
  • Magdownload ng blocks – Ito ay gagawin sa pamamagitan ng “getdata” na mensahe, na pwedeng ipadala sa 8 full relay outgoing nodes. Hanggang 16 na blocks ang maaaring hilingin kada ougoing node, o 128 na magkakasabay na hiling ang magaganap. Ang sync node ay sasagot ng block na mensahe na naglalaman na nga ng 1 block. Ang IBD node ay nagpapatunay (o validate) na ng bawat block na natatanggap.

Sunud-sunod dapat ang pag validate ng blocks. Kaya, kapag may inaabangang block na hindi pa dumarating, at naunahan na ng mas bagong blocks galing sa ibang node, maghihintay ng 2 segundo o higit pa ang Bitcoin Core. Kapag wala pa rin, puputulin na ang koneksyon sa node na hindi agad nakapadala, at maghahanap ng ibang node na pwedeng magbigay ng kailangang block. Ang moving download window na ito ay may taas na 1024 blocks.

Tandaan lang na ang getdata ay may iba-ibang identifiers ng data na hinihingi, hindi lang ito para sa paghingi ng block.

Blocks-first vs Headers-first

Sa mga naunang bersyon ng Bitcoin Core, blocks-first ang operasyon. “Getblocks” ang mensahe na ipapadala ng IBD node, na sasagutin naman ng “inv” (inventory) na mensahe ng sync node. Ang inv ay mensahe na maaring magbigay ng block headers o transaksyon. Maaaring maglaman ng hanggang 500 na block headers ang isasagot na inv ng sync node sa IBD node. Tapos, hihiling na ito ng getdata message na tumutukoy sa mga blocks, na pwedeng 128 magkakasabay, pero sa iisang sync node lamang. Isa-isa nang magpapadala ng buong block. Makikita mo ang kalamangan ng bagong implementasyon na getheaders, na tinalakay kanina. Headers-first ang operasyon ng mga peers na mas bago ang software.

Kapag ang IBD node ay nai-sync na sa dulo ng blockchain, maaari na itong tumanggap ng bagong blocks mula sa miner nodes o kung sinumang naunang nakaalam na node.


Kitakits sa ika-21.

Salamat sa Grok para sa mga imaheng nagawa at pinagsama sa pambungad na imahe.

Mag-iwan ng Tugon

Ang iyong email address ay hindi ipa-publish. Ang mga kinakailangang mga field ay markado ng *