Tuesday, April 12, 2016

Bitcoin дата - биткойны блокийн бүтэц

Bitcoin дата - биткойны блокийн бүтэц


Биткойны гүйлгээний мэдээллүүд нь блок тэмдэглэгээнд бүрмөсөн устахгүйгээр хадгалагдсан байдаг. Блокууд нь бие биенийхээ араас дараалж цуварсан байдлаар орших бөгөөд үүнийг гинжэн блок буюу blockchain гэж нэрлэнэ. Шинээр хийгдсэн гүйлгээнүүдийг блок болгон бүрдүүлсний дараа уурхайчдын тусламжтайгаар гинжэн блокийн төгсгөлд нэмэх бөгөөд ингэсний дараа сүлжээ нь тухайн шинэ блокийг хүлээн авсаны дараа өөрчлөх буюу гээх ямар ч боломжгүй болно. (софтвар нь өнчин блокийг харин гээж хүчингүй болгодгийг санаарай.)


FieldDescriptionSize
Шидэт дугаарямагт 0xD9B4BEF9 утгатай байна.4 byte
Блок хэмжээ (blocksize)Блокийн төгсгөл хүртэл хэмжээг byte-аар илэрхийлнэ.4 byte
Блокийн толгой (blockheader)толгой нь дотроо 6-н зүйлээс бүрдэнэ80 byte
Гүйлгээ тоолуур (transaction counter)эерэг бүхэл тоо VI = VarInt1 - 9 byte
Гүйлгээнүүдхоосон бус гүйлгээний жагсаалтГүйлгээнүүдийн тооноос шалтгаалаад өөр өөр байна. 

Блокийн бүтэц

Тайлбар

Блок бүр нь олон янзын тэмдэглэгээнүүдээс бүрдэх бөгөөд тэдгээрээс хамгийн онцлох тэмдэглэгээнүүд нь блокт хамаарагдах саяхан хийгдсэн гүйлгээ болон түрүүчийн блокийг заасан тэмдэглэгээнүүд орно. Мөн блок нь математекийн хувьд тайлахад хэцүү бодлогын хариуг агуулсан бөгөөд энэ нь блок тус бүрт өөр өөр байна. Шинээр хийгдсэн блокийг тухайн бодлогын хариуг гаргалгүйгээр сүлжээнд шилжүүлэн нийлүүлж болохгүй бөгөөд - энэхүү бодлогын хариуг гаргахын тулд уурхайчид хоорондоо өрсөлдөнө. Тухайн математикийн бодлогын хариуг гаргах нь их хэцүү бөгөөд харин нэгэнт хариу нь гарсан бол сүлжээ нь тухайн хариуг баталгаажуулах нь маш амархан байна. Тухайн блок нь хэд хэдэн өөр хариутай байх бөгөөд тайлахын тул ганц хариуг нь олсон байхад л хангалттай. 
Блокийн хариуг тайлахад шагналтай гэдгийг та мэдэж байгаа харин тухайн блокийг тайлсан шагналыг хүлээн авах хаягууд болон script-үүд нь мөн блокт тэмдэглэгдсэн байдаг. Энэхүү рекордыг generation гүйлгээ буюу coinbase гүйлгээ хэмээн нэрлэх бөгөөд тухайн блок дахь гүйлгээнүүдийн хамгийн эхний гүйлгээ нь байна. Нэг блок бүрдэх болгонд 25 биткойн үйлдвэрлэгдэх бөгөөд, энэ нь 210,000 блокийн дараа энэ нь түрүүчийнхээс хагас нь болж багасна. (ойролцоогоор 4 жил тутамд).
Биткойны гүйлгээ нь тухайн гүйлгээг эхэлсэн хүнээс сүлжээ рүү цацагдах бөгөөд сүлжээнд оролцож буй уурхайчдын компьютерүүд нь өөр өөрсдийн тайлах гэж буй блоктоо гүйлгээний рекордыг нэмнэ. Уурхайчид нь гүйлгээг өөр өөрсдийн блокт тэмдэглэх ашиг сонирхолтой байх бөгөөд учир нь гүйлгээ бүр нь гүйлгээний шимтгэлтэй учраас тэр юм. 
Блокийг тайлах математикийн тайлах цагийг цагт дунджаар 6 блок тайлж болохоор хүнд хөнгөнийг нь сүлжээгээр автоматаар тохируулна. 2016 блок бүрт (дунджаар 2 долоо хоног тутамд), биткойны бүх үйлчлэгчидүүд нь тухайн хугацаанд хэдэн блок үүсгэснийг харьцуулан үзээд зөрүүнээс нь шалтгаалан дараагийн 2016 блокийг тайлах хүнд хөнгөнийг нь тохируулна. Үүнээс үүдэн сүлжээ нь зөвшилцөөнд хүрсэний дараа блокийг үүсгэхэд шаардагдах математикийн хариун хүнд хөнгөнийг ихэсгэнэ (эсвэл багасгана).
Блок бүр нь түрүүчийн бүтээгдсэн блокийг заасан утгыг агуулсан байдаг учир, бүр блокууд нь нийлээд гинжэн цуваа үүсгэнэ. Зарим тохиолдолд гинжэн цуваа нь түр зуур салаалаль үүсэх магадлалтай, учир нь 2 уурхайчид тухайн блокийг тайлах зөв утгуудыг яг нэг цаг мөчид олсон байж болно. Энэхүү тохиолдолд сүлжээ нь энэхүү салаалтын аль нэгийг богино хугацаанд сонгож шийднэ.
Сүлжээнд буй үйлчлэгч мөн салаалсан тохиолдолд аль урт салаалсан хэсэг байна түүнийг сонгоно. Тухайн салаалалтын "урт"-ыг хэдэн блокоос бүрдсэн бус харин аль салаа нь хамгийн хэцүү утгуудыг тайлсан байна түүний нийлбэрээр нь дүгнэнэ. Ингэснээр ямар нэгэн халдагч этгээд хялбар аргаар тайлсан маш урт хэмжээний блокуудыг үүсгэн сүлжээнд нийлүүлэхээс сэргийлэх болно.


Блокийн тухай ерөнхий асуулт хариултууд:

Одоогоор хэдэн блокууд хийгдээд байна вэ?
Одоогоор хийгдээд буй блокийн тоог дараах линкээс харж болно: 
https://blockexplorer.com/api/status?q=getBlockCount

Хамгийн дээд тал нь хэдэн блок байж болох вэ?

Блокийн дээд хэмжээ гэж байхгүй, блокууд 10 минут тутамд үүсэн гинжэн цувралд залгагдаж байна. 

Биткойны дээд хэмжээ нь 21 сая биткойн гэж байгаа, хамгийн сүүлчийн биткойныг ухаж гаргасан ч блок нэмэгдсээр байх уу? 

Тийм. Блок нь тухайн гүйлгээг тэмдэглэх л үүрэгтэй. Бүх битконыг малтан гаргаж шинээр гаргах боломжгүй болсон тохиолдолд ч гүйлгээ бол хийгдсээр байна, тийм тул хүмүүс биткойныг ашиглан бизнес хийсээр байгаа тохиолдолд шинээр блокууд хийгдсээр байна гэсэн үг. 
Even when all 21 million coins have been generated?
Блокийг үүсгэхэд хэр хугацаа шаардагдах вэ?
Үүнийг тодорхой хэлэх боломжгүй. Блок үүсэхэд шаардагдах хугацааг дараах тооцоолон бодох линкээр орж харж болно:
https://en.bitcoin.it/wiki/Generation_Calculator

Хэрвээ би блокийг тайлах бодлогын 1%-ийг нь тайлж гаргасан байвал яах вэ?

Блокийг тайлахад тэдэн хувь үлдлээ, тэдэн хувь гүйцэтгэлтэй байна гэсэн ойлголт байхгүй болно. 24 цагийн турш тайлах оролдлого хийсэн хүний хувьд түүний хувьд дөнгөж тайлж эхэлж буй хүн 2-ын тайлах магадлал яг адилхан байна. 

Өөр илүү мэдээллийг хаанаас олж авч болох вэ?

Блок хаш хийх алгоритмийн тухай мэдээллийг дараах линк дээрээс олж авч болно:
https://en.bitcoin.it/wiki/Block_hashing