Saturday, September 19, 2015

Blockchain II (Block height, fork - блокийн өндөр, салаа блокууд)

Блок-ын өндөр, салаа блок(ууд)

(хяналт хийж бна...)
Блок-ын толгойн хэсэгийн хашийг тоон хязгаараас доош утгаар амжилттай хаш хийсэн ямар ч уурхайчин нь, тухайн блок нь хүчинтэй тохиолдолд гинжэлсэн блокууд руу нэмж болно. Эдгээр блокууд нь блок-ын "өндөр"-тэй байх бөгөөд энэ нь хамгийн эхний блок No.0 болох генесис блок болон тухайн блок хоёрын хооронд хийгдсэн блокуудын тоогоор илэрхийлэгдэнэ. 
Жишээ нь хамгийн эхний блокд хаш тайлах хэр хэцүүг дахин тодорхойлсон блок нь 2016-р блок болно. 
Common And Uncommon Block Chain Forks
Хэд хэдэн блокууд ижилхэн "өндөр"-тэй байх тохиолдолд байж болох бөгөөд эдгээр нь нэгээс илүү уурхайчинд алилхан буюу ойролцоо цаг мөчид зэрэг блок бүтээсэн тохиолдолд байж болно. Ингэснээр гинжилсэн блокуудад салаалалт (fork) үүсэх боломжтой. (Дээрх зураг дээр харуулснаар).

Хэрэв энэ тохиолдолд зэрэг өндөртэй блокуудаас сүлжээнд оролцож буй зангилаа бүр аль блокийг сонгох сонголт хийх хэрэгтэй болно. Ямар нэгэн өөр дүрэм бичигдээгүй тохиолдолд ихэнхдээ зангилаанд хүрж ирсэн эхний блокийг сонгоно.

Эцэстээ уурхайчин дахин блок үүсгэн түүнийгээ түрүүчийн хэсэгт зэрэг хийгдсэн блокуудын аль нэгт нь залгах хэрэгтэй болно. Ингэснээр тухайн залгасан блокийн үүсгэсэн салаа нь бусад салаалалтаасаа илүү хүчинтэй болно. Тухайн салаалалт дахь орших блокууд хүчинтэй л бол уурхайчид хамгийн их хүч чармайлт нэхэгдэх салаалалтыг дагаснаар бусад салаанууд хүчингүй болно. Эдгээр бусад салааг нь stale блок, өнчин (orphan) блок гэх мэтээр олон янзаар нэрлэгддэг. Зарим тохиололд жинхэнэ өнчин блок гэж байх бөгөөд энэ нь өмнөх блок нь устсан буюу байхгүй тохиолдолд ингэж нэрлэгдэнэ.

Зарим тохиолдолд салаалалт нь удаан хугацаагаар оршин тогтнох үе байдаг бөгөөд энэ нь уурхайчид тухайн салаалалтыг цаашин үргэлжлүүлж ажилладаг. Энэ үед бусад уурхайчид 51%-ын халдалт хийх оролдлого хийж байж болно.

Нэгээс илүү блокууд нь адилхан өндөртэй байх боломжтой тул блокын өндрөөр нь таних тэмдэг болгох нь тохиромжгүй юм. Харин үүний оронд блокын таних тэмдэгийг толгойн тэмдэглэгээний хаш утгаар нь дуудан, заах нь илүү тохиромжтой.

Гүйлгээний мэдээлэл

Блок бүр нь нэг буюу түүнээс дээш гүйлгээг хадгалж байдаг. Эдгээр гүйлгээний хамгийн эхнийх нь үндсэн зоосон (coinbase, a.k.a generation transaction) гүйлгээ гэж нэрлэгдэх бөгөөд энэ нь гүйлгээ нь блок хийгдсэн шагналыг хуримтлуулж, зарцуулах зориулалттай байна. Блок хийгдсэн шагнал нь гүйлгээний шимтгэл болон блок хөнгөлөлт (block subsudy) зэргээс бүрдэнэ. Дээр өгүүлсэнээр зарцуулагдаагүй гүйлгээ буюу UTXO (Unspent transaction Output) нь үндсэн зоосны гүйлгээ байсан тохиолдолд дараагийн 100 блокт зарцуулагдах боломжгүй байна. Ингэснээр тухайн блок салаалан, салаалсны дараа хүчингүй болсон тохиолдолд уурхайчинг шагнах боломжгүй бөгөөд хүчингүй болохоос өмнө уурхайчин шимтгэлийг зарцуулахаас сэргийлнэ.
Блок нь үндсэн бус гүйлгээ (non-coinbase transaction)-г агуулах шаардлагагүй боловч уурхайчид аль ч тохиолдолд үндсэн бус гүйлгээг блокт багтаадаг ба ингэснээрээ шагнал хүртэх боломжтой болно. Бүх гүйлгээнүүд нь (үндсэн гүйлгээ ч адил) блокт түүхий тэмдэглэгээ  форматаар (raw transaction format) болон үлдэнэ.
Түүхий гүйлгээний формат нь гүйлгээний таних тэмдэг-(transaction identifier) ийг бүтээхэд ашиглагддаг. Эдгээр форматыг ашиглан, merkle мод (tree) үүсгэнэ. Merkle модыг хоёр гүйлгээний таних тэмдгүүдийг нийлүүлсний дараа хаш хийж түүнийгээ дахин өөр адилхан замаар хийсэн хаш-тай нийлүүлэн дахин хаш хийх маягаар үүсгэнэ. Хэрэв гүйлгээнүүдийн тоо нь сондгой утгатай байсан тохиолдолд, тухайн сондгойрсон гүйлгээний таних тэмдэгт ганцаар хаш хийж өөртэй хаштай нийлүүлнэ. Энэ замаар хаш-уудыг нийлүүлж хаш хийгдсээр эцэстээ нэг хаш үлдэх бөгөөд үүнийг merkle модны үндэс гэж нэрлэнэ (merkle root).
Жишээ нь 5 гүйлгээнээс бүрдсэн merkle мод болон түүний үндэс хийгдэх зургийг дор харуулав:
       ABCDEEEE .......Merkle үндэс
      /        \
   ABCD        EEEE
  /    \      /
 AB    CD    EE .......E нь сондгой учир 2 дахин давтаж түүн дээрээ хаш хийнэ.
/  \  /  \  /
A  B  C  D  E .........гүйлгээнүүд



SPV буюу хялбаржуулсан төлбөрийн баталгаажуулалт нь merkle модыг ашиглаж хийгдэнэ. Ингэхдээ client системүүдэд гүйлгээ нь блокт байрлуулсаныг шалгахын тулд блокын толгойн хэсэг дэх merkle үндсэн хаш болон,  зэргэлдээх бүрэн хэмжээний системүүд-(full peer)-ээс дундын хаш-уудын жагсаалтыг ашиглан шалгалт хийнэ. Зэргэлдээх бүрэн хэмжээний системд итгэх эсэх шаардлага гарахгүй учир нь хуурамч блокийн толгойн тэмдэглэгээ болон дундын хаш-уудыг гаргах үнэ өртөг нь өндөр байна эс бөгөөс шалгалт нь буруу гарна.

Жишээ нь, гүйлгээ D блокт нэмэгдсэнийг шалгая гэж бодьё, тэгсэн тохиолдолд SPV буюу хялбаршуулсан шалгалт хийж буй client нь C, AB болон EEEE хашуудыг merkle үндэсэн хаш-тай хамт хэрэглэн шалгалт хийнэ, өөр ямарваа нэгэн мэдээлэл хэрэггүй болно. Хэрвээ эдгээр 5-н гүйлгээг агуулсан блокуудыг бүгдийг хуулан авахад 500,000-аас илүү byte шаардлагатай болно. Харин зөвхөн хаш болон блокийн эхэн тэмдэглэлийг ашигласнаар зөвхөн 140 byte download хийх шаардлагатай.

Жич: Хэрэв нэг блок дотор адил таних тэмдэг олдсон тохиолдолд, merkle мод нь өөр блоктой зөрчилдөх талтай, учир нь тухайн өөр блокоос зарим эсвэл бүх давхар тэмдэглэгээнүүдийг хассан байж болох талтай. Ингэж хасагдсан шалтгаан нь тэнцвэргүй merklee мод үүсэх нөхцлийг бүрдүүлэх талтай.

Адил таних тэмдэгтэй тусдаа гүйлгээнүүд нь практикийн хувьд тохиромжгүй тул, шударга программ хангамжид энэ нь дараа болохгүй ба; харин блокийн хүчингүй статусыг хадгалах эсхийг шалгах хэрэгтэй. Ингэхгүй тохиолдолд, адилхан тэмдэглэгээтэй хэсгийг нь устгасан хүчинтэй блок нь адил merkle үндсэн хаш болон блок хаштай байж болох бөгөөд, энэ хүчинтэй блок нь хадгалсан хүчингүй блокийн улмаас хүчингүй болох боломжтой юм. (CVE-2012-2459)

Зөвшилцлийн дүрэмийг өөрчлөх

Сүлжээнд буй зангилаанууд зөвшилцлийн байдалд оршихын тулд бүгд ижил зөвшилцлийн дүрэм ашиглан блок-т шалгалт хийнэ. Зарим тохиолдолд шинээр нэмэлт шаардлагатай өөрчлөлт болон сүлжээг зүй бусаар ашиглахаас хамгаалсан өөрчлөлтүүд хэрэгтэй болж "зөвшилцлийн дүрэмд" өөрчлөлт оруулах шаардлагатай болно. Энэ тохиолдолд шинээр өөрчлөлт хийсний дараа түр хугацаанд зарим зангилаанууд нь хуучин дүрмийг ашигласаар байх тохиолдолд бий бөгөөд энэ нь дараах 2 янзаар "зөвшилцлийн дүрэм" зөрчигдөх болно:
1. Шинэ зөвшилцлийн дүрмээр бүтээгдсэн блок-ийг шинэ upgrade хийсэн зангилаанууд хүлээн авч, хуучин дүрмээр ажиллаж буй зангилаанууд хүлээн авахаас татгалзах болно.
2. Хуучин зөвшилцлийн дүрмээр бүтээгдсэн блок-ийг хуучин дүрмээр ажиллаж буй зангилаанууд хүлээн авч шинээр upgrade хийж шинэ дүрмээр ажиллаж буй зангилаанууд хүлээн авахаас татгалзана.

Эхний тохиолдолд, хуучин дүрмээр ажиллаж буй зангилаанууд нь шинэ дүрмээр бүтээгдсэн блокууд-ыг хүлээн авалгүйгээр хуучин блокоос бүрдсэн салаалалт үүсгэж эхэлнэ. Энийг hard fork буюу хатуу салаалалт гэж нэрлэнэ.
Hard Fork
Хоёр дахь тохиолдолд upgrade хийсэн зангилаанууд нь хаш-уудын ихэнхийг хийж эхэлсэн тохиолдолд салаалалт үүсгэхээс сэргийлж болно. Үүний тулд upgrade хийгээгүй хуучин дүрмээр ажиллаж буй программууд нь аль ч шинэ блокийг upgrade хийсэн зангилаанаас татгалзалгүй хүлээн авна. Энэ тохиолдолд үүссэн салаалалтыг soft fork буюу зөөлөн салаалалт гэнэ.
Soft Fork
Үүнээс үүдэн зөвшилцлийн дүрэмд өөрчлөлт хийх нь хатуу эсвэл зөөлөн салаалалт хийх магадлалыг буй болгоно. Жишээ нь блок-ын хэмжээг 1mb-аас дээш болгох зөвшилцлийн дүрмийн өөрчлөлт хатуу салаалалт бий болгох нь зайлшгүй юм. Энэ тохиолдолд яг гинжэн блокийн салаалалт заавал хэрэггүй гэхдээ болзошгүй зүйл юм??

Нэмэль мэдээллүүд: BIP16BIP30, мөн BIP34 өөрчлөлтүүд нь зөөлөн салаалалт хийгдэж болзошгүй дүрмийн өөрчлөлтүүд юм.BIP50-д харин хатуу салаалалт санаандгүй үүссэн бөгөөд үүнийг түр хугацаанд upgrade хийгдсэн зангилаануудыг буцаан түр хугацаанд downgrade хийж зохиомол хатуу салаалалт үүсгэж шийдвэрлэсэн.
Гэвин Андрэсэн-ий дараах нийтлэл нь ирээдүйд хийгдэх дүрмийн өөрчлөлтүүд хэрхэн хийгдэхийг тайлбарласан байна: how future rule changes may be implemented.

Салаалалтыг нээж илрүүлэх

Upgrade хийгээгүй зангилаанууд нь хуучин дүрмээр хэсэг хугацаанд ч болов блок-уудыг үүсгэн энэнээс үүдэн хөрөнгө мөнгөний алдагдал гарах хэд хэдэн нөхцөл байдлыг үүсгэдэг. Ялангуяа хуучин зангилаанууд нь гүйлгээг хүлээн авч боловсруулсан ч түүнээс үүдсэн блокууд нь нийтээр хүлээн зөвшөөрөгдөх гинжэн блок-т хамрагдах боломжгүй болж болно. Мөн хуучин зангилаанууд нь гинжэн блокт хийгдсэн гүйлгээнүүдийг хүлээн авалгүйгээр дутуу мэдээлэл үүсгэж болно. 

Bitcoin Core нь гинжэн блок дахь гүйцэтгэлийн батламжийн мэдээллийг ашиглан хатуу салаалалтыг олж илрүүлэхээр бичигдсэн байдаг. Хэрэв upgrade хийгээгүй зангилаа нь хамгийн сайн гинжэн салаанаас 6-н блокоор илүү гүйцэтгэлийн баталгаатай блокийн толгой хэсгийг хүлээн авсан тохиолдолд, зангилаа нь getinfo RPC -д алдаа зааж alertnotify коммандыг гүйцэтгэнэ. Ингэснээр upgrade хийгээгүй зангилаа нь операторт хамгийн сайн гинжэн блок руу шилжих боломжгүй байгааг анхааруулна.

Бүрэн хэмжээний зангилаа нь мөн блок болон гүйлгээний version-ыг заасан дугаарыг мөн шалгаж болно. Хэрэв сүүлийн хэдэн блокуудын version дугаар нь түрүүчийн блокуудынхаас ахисан тохиолдолд, одоо хэрэглэгдэж буй зөвшилцлийн дүрмийг хэрэглэж болохгүй гэж ойлгож болно. Bitcoin core 0.10.0 нь үүнийг getinfo RPC болон alertnotify мэдээлж болно.

Зөвхөн version дугаарыг ашиглах нь мөн хангалтгүй байж болох ба учир нь блок болон гүйлгээний мэдээлэл нь upgrade хийгээгүй (шинээр өөрчилсөн зөвшилцлийн дүрэмийг ашиглаагүй) зангилаанаас ирсэн байж болох талтай юм. SPV буюу хялбарчилсан гүйлгээний шалгалт хийж буй client нь хэд хэдэн бүрэн хэмжээний зангилаатай холбогдон тэдгээр нь бүгд адил гинжэн дээр болон адилхан блокийн өндөр дээр байгаа эсэхийг шалган хатуу салаалалт үүссэн эсэхийг мэдэж болно. Аль нэг зангилаанд хазайлт үүссэн (тухайн зангилаа нь өөр салаан дээр ажиллаж буй тохиолдолд) SPV client нь тухайн зангилаанаас холбоогоо тасалж болно.
SPV client-үүд мөн блок болон гүйлгээний version дугаарыг хянаж, ирсэн гүйлгээнүүдийг шинэ зөвшилцлийн дүрмээр шинэ гүйлгээ хийх хэрэгтэй.




Blockchain - I (Blockchain structure - Гинжэн блок ерөнхий бүтэц, Proof of work - гүйцэтгэлийн баталгаа)

Blockchain - I (Blockchain structure - Гинжэн блок ерөнхий бүтэц, Proof of work - гүйцэтгэлийн баталгаа)

(хяналт хийж бна...)
Энэхүү хөгжүүлэгчийн хөтөч нь биткойн-д тулгуурласан апп хийхэд хэрэгтэй мэдээллүүдийг багтаасан байна, гэвч энэ нь албан ёсны specification биш юм. Энэхүү хөтөчийг бүрнээр нь ашиглахын тулд  bitcoin core -ын хамгийн сүүлийн хувилбарыг download хийн суулгах хэрэгтэй.
Ямар нэгэн асуулт байвал биткойн хөгжүүлэгчдийн хэлэлцүүлэг дээр асуулт тавих хэрэгтэй.

Гинжэн блок
Гинжэн блок нь биткойны гүйлгээг нийтэд дэлгэн нээлттэй болгох зориулалттай зохиогдсон бөгөөд дэс дараалагдсан, хийгдсэн он цагийг агуулсан гүйлгээний тэмдэглээ юм. Энэ нь ямарваа нэгэн гүйлгээг дахин хуурамчаар хийх, хийгдсэн гүйлгээнд зохиомлоор өөр болгох зэргээс сайн хамгаалагдсан байна. Сүлжээн дэх зангилаа бүр зөвхөн өөрийн баталгаажуулсан блокийг агуулсан гинжэн блокийг тусадаа хадгалж байдаг. Хэрэв хэд хэдэн зангилаанууд хоорондоо адил блокуудыг хадгалж байвал тэдгээр нь "зөвшилцсөн" (consensus) байдалд байна. Эдгээр зангилаа нар хоорондоо зөвшилцөөнд хүрэхдээ тусгай баталгаажуулалтын дүрмийг (validation) ашиглах бөгөөд үүнийг "зөвшилцөөний дүрэм" (consensus rules) гэж нэрлэнэ. Дараах хэсэг нь энэхүү bitcoin core-д ашиглагддаг зөвшилцөөний дүрмүүдийг тайлбарласан байна.

Block Chain Overview

Дээр үзүүлсэн зураг нь гинжэн блокийн амарчилсан зураг болно. Нэг буюу түүнээс илүү гүйлгээнүүд нь блокийн хэсэг болон тэмдэглэгдэнэ. Гүйлгээний хуулбар болгонд хаш хийж, хашийг хамтатгасны дараа ганц хаш үлдтэл хаш дахин дахин хийгдэнэ. Энэхүү сүүлчийн хан нь merkle tree-ын merkle root юм.

Merkle root нь блокийн толгой хэсэгт (header)-т байрлагдана. Мөн блок бүр нь өмнөх блокийн хаш-ийг агуулж өмнөх блоктой холбогдоно. Ингэж холбогдсоноор тухайн гүйлгээ өөрчлөх боломжгүй болно учир нь гүйлгээг өөрчлөхийн тулд гүйлгээг тэмдэглэсэн блок болон тухайн блокийн дараа хийгдэх блокийг өөрчлөх хэрэгтэй.

Гүйлгээнүүд мөн хоорондоо гинжэн хэлхээгээр холбогдоно. Биткойн түрийвчны программ нь сатоши-г түрийвчнээс илгээж буй мэтээр хэрэглэгчдэд харагдана, харин яг үнэндээ бол биткойн нь нэг гүйлгээнээс нөгөө гүйлгээ рүү л шилжүүлэгдэнэ. Гүйлгээ бүр нь урьд нь хийгдсэн нэг буюу түүнээс илүү хийгдсэн гүйлгээнүүс ирсэн сатоши-г зарцуулах ба ингэснээр тухайн гүйлгээний оролт нь (input) нь түрүүчийн гүйлгээнүүдийн гаралт (output) юм.

Transaction Propagation

Нэг гүйлгээ хийгдэхэд хэд хэдэн гаралт (output) үүсэж боломжтой юм. Энэ нь хэд хэдэн өөр түрийвч рүү гүйлгээ хийсэн тохиолдол байж болно. Харин тухайн гүйлгээний гаралт бүр нь гинжэн блокт нэг удаа л оролт болон тэмдэглэгдэнэ. Ямарваа нэгэн тохиолдолд тухайн гаралтад дахин хандсан тохиолдол нь хориотой бөгөөд - энэ нь сатоши-г дахин хэрэглэх оролдлого юм. Үүнийг double spending буюу "дахин зарцуулалт" гэж нэрлэнэ.

Гаралтууд нь "гүйлгээний таних тэмдэг"(transaction identifiers (TXID))-тай уялдан орших бөгөөд, энэ нь гүйлгээний хаш утга юм. Дээр өгүүлсэнчлэн нэг гүйлгээний гаралтын утга нь ганц удаа л ашиглах боломжтой тул, гинжэн блок-т орших нийт гүйлгээ нь 2 янзаар хувааж болно:
1. "зарцуулагдаагүй гүйлгээний гаралтууд" (Unspent Transaction Outputs (UTXO))
2. "зарцуулагдсан гүйлгээний гаралтууд.
Ямарваа нэгэн төлбөр нь хүчинтэй байхын тулд, тухайн гүйлгээ нь зарцуулагдаагүй гүйлгээний гаралтууд (UTXO-unspend transaction output)-аас л ашиглах ёстой.
Ямарваа нэгэн гүйлгээний гаралтын хэмжээ нь оролтын хэмжээнээс өөр бол дараах дүрмийг ашиглана:
- Гүйлгээний гаралтын хэмжээ нь оролтын хэмжээнээс их бол тухайн гүйлгээг хорьж гүйлгээ цуцлагдана
- Гүйлгээний гаралтын хэмжээ нь оролтын хэмжээнээс бага бол, зөрүүг нь тухайн гүйлгээг агуулсан блокийг хийсэн биткойны уурхайчин гүйлгээний шимтгэл болгон авна.
Жишээ нь дээр харуулсан зурагнаас гүйлгээ бүр нь тухайн гүйлгээний оролтуудаас 10000-аар цөөн сатошиг зарцуулах ба 10000 сатоши нь уурхайчид гүйлгээний шимтгэл болон очих болно.

Гүйцэтгэлийн баталгаажуулалт (Proof of work)
Гинжэн блок нь сүлжээн дэх нэргүй оролцогчдын тусламжтайгаар оршиж байдаг тул, биткойны блокийг баталгаажуулалт хийгдэх их хэмжээний гүйцэтгэл хийх хэрэгтэй. Учир нь хэн нэг нь түрүүчийн хийгдсэн блокуудыг дүрэм зөрчин өөрчлөх оролдлого хийсэн тохиолдолд, шинээр блок үүсгэж буй дүрмийн дагуу оролцогчдоос илүү их оролдлого хийж тэдгээрийг гүйцэн очих шаардлагатай болно.
Блокууд бүгд гинжэн хэлхээгээр холбогдсон тул ямарваа нэгэн блокийг өөрчлөхийн тулд тухайн блокийн дараах бүх блокийг засан янзлах хэрэгтэй болно. Харин гинжэн блокт цагаас цагт нэмэгдэж буй тул тэдгээрийг мөн гүйцэн очиж өөрчилөх хэрэгтэй бөгөөд ингэснээр блок бүрийг өөрчлөх зардал нь блок нэмэгдэх тутамд ихсэж байна гэсэн үг. Ингэснээр гүйцэтгэлийн баталгаажуулалт нь блок нэмэгдэх тутамд илүү баталгаажиж байна гэсэн үг.

Гүйцэтгэлийн баталгаажуулалтад шифрлэлтийн хашийн хариуг нь урьдчилан тодорхойлох боломжгүй чанарыг ашигладаг. Сайн шифрлэлтийн алгоритмийн шифрлэлтийн хариу нь урьдчилан тодорхойлох боломжгүй тусмаа сайн гэж үздэг. Үндсэн текстийг өөрчилсөн тохиолдолд шифрлэлтийн утга мөн өөрчлөгдөх ба энэхүү өөрчлөлтийг урьдчилан мэдэх аргагүй байна. Таныг тухайн блокийг бүтээхийн тулд илүү хөдөлмөр хийснийг батлахын тулд, та блокийн толгойн хэсгийг хаш-лах ба утга нь тодорхой утгаас хэтрэхгүй байх хэрэгтэй. Жишээ нь, хашийн хамгийн өндөр утга нь 2^256-1 тохиолдолд, та 2^255-аас бага утга олсоноороо 2 хүртэл комбинацыг оролдлого хийснийг батална. Дээрхи жишээний хувьд та дунджаар, 2 хаш хийх оролдлого тутмын 1-д нь амжилттай хаш хийнэ гэсэн үг. Тэр ч байтугай та тухайн хашийн оролдлого нь тухайн тоот хязгаар-(target threshold) аас бага гарах эсхийг магадлаж болно.
Биткойны дизайны хувьд тоот хязгаарыг багасгах ба багасганаас үүдсэнээс оролдлого нь ихсэх ба энэ 2-ын харьцаа нь шугаман (linear) хамааралтай байна.

Шинээр хийгдсэн блок нь тухайн блокийн хаш нь зөвшилцдлийн протоколд заасан хашийг олох хэр хэцүүг тодорхойлсон хашийн нөхцлийг хангасан тохиолдолд д гинжэн блокт нэмэгдэнэ. 2016 блок болгоны эцэст, сүлжээ нь блокийн толгойн хэсэгт тэмдэглэгдсэн он цагийн тэмдэглэгээг ашиглан, 2016 блок дахь эхний болон эцсийн блок хийгдсэн хугацааг тодорхойлно. Энэхүү хугацаа интервал нь 1209600 секунд байсан тохиолдолд хамгийн тохиромжтой гэж үздэг ба энэ нь дунджаар 2 долоо хоног юм.

Хэрэв 2016 блокууд нь 2 долоо хоногоос бага хугацаанд хийгдсэн тохиолдолд, хашийн утгыг олоход пропорцоор (300% хүртэл) илүү хүнд болгоно. Ингэж тохиргоо хийсэн тохиолдолд дараагийн 2016 блок нь дунджаар 2 долоо хоногт хийгдэхээр тохиргоо хийгдэнэ.

Хэрэв 2016 блокууд нь 2 долоо хоногоос илүү хугацаанд хийгдсэн тохиолдолд, хашийн утгыг олоход илүү амар болгосноор (75% хүртэл багасгана) мөн дараагийн 2016 блокууд нь 2 долоо хоногт хийгдэхээр тохиргоо хийгдэнэ.

(Bitcoin Core-ын программд 2016 блокийг off-by-one алдааны уршгаас 2015 блокоос огноог гаргаснаар бага зэрэг хазайлт үүссэ болно.)

Үүнээс үүдэн ямар нэгэн блокийг хакердах тохиолдолд, тухайн блокоос хойших бүх блокийг өөрчилсөн тохиолдолд л болно гэдэгийг санаарай. Мөн түүнчлэн блок бүрийг бүтээхийн тулд тоот хязгаар (target threshold)-аас доош хаш утга гарган авах хэрэгтэй тул тухайн блокийг дүрмийн дагуу халдлага хийх тохиолдолд тухайн блок болон түүнээс цааших блок бүрийг бүтээхэд зарцуулсан их хэмжээний хаш тооцоолон бодох хүчин чадал хэрэгтэй болно. Үүнийг гүйцэлдүүлэхийн тулд, нийт сүлжээний 51-ээс дээш хувийг эзэмшсэнээр л хийх боломжтой. (Зарим тохиолдолд 50%-оос доош хаш хийх хүчин чадалтай тохиолдолд халдлага хийх боломжтой: Блокийн толгой хэсгийн тэмдэглэгээ нь хэд хэдэн засахад амар тэмдэглэгээнүүд бий, жишээ нь dedicated nonce field-ийг өөрчилсөнөөр шинээр гүйлгээ хүлээх шаардлагагүй. Мөн блокийн толгойн хэсгээс зөвхөн эхний 80 байт-д хаш хийж гүйцэтгэлийн баталгаажуулалт хийгдэнэ, мөн шинээр гүйлгээ нэмэх үед хаш гаргаж авахад блок дахь merklee tree-д орсон урьд блокийн хаш-ууд дээр зөвхөн хаш хийгдэнэ.)


Blockchain-ы бүтэц (цуврал)

Blockchain-ы дотоод бүтэц цуврал

Thursday, August 13, 2015

Биткойныг хадгалах ямар сонголтууд байна?

Биткойн түрийвч нь биет биш үсэг тооноос бүрдсэн хувийн нууц түлхүүр бөгөөд үүнийгээ ашиглан хаяг руугаа орж өөртөө буй биткойнуудыг ашиглана. Биткойны түрийвч маш олон сонголттой бөгөөд янз бүрийн хэлбэрээр сонголт байна. Тэр ч атугай түрийвчээ компьютерт хадгалалгүйгээр цаасан дээр хэвлэн авах ч боломж бий. Аль ч тохиолдолд та өөрийнхөө түрийвчийг сайн чандлан хадгалж, мөн backup хийх нь маш чухал юм. 
Биткойн нь орчин үеийн цаасан мөнгийг орлуулж болох төлбөрийн хэрэгсэл бөгөөд өдрөөс өдөрт бизнесүүд энэхүү төлбөрийн хэрэгслийг хүлээн авдаг болж байна. Бусад нийтлэлээс та биткойн хэрхэн үүсгэдэг болон гүйлгээ хийгддэгийг харсан байх, харин биткойныг яаж хадгалах вэ? Бид цаасан мөнгөө биет түрийвчэд хийж хадгалдаг харин биткойн нь төстэй ч дижиталаар хадгалагдана.
Яг үнэндээ бол биткойныг хаана ч хадгална гэсэн ойлголт байхгүй. Түүний оронд түрийвч нь нууц хувийн түлхүүр (secure digital key/private key) бөгөөд түүнийгээ ашиглан та нийтийн хаяг (public key) руу ороод гүйлгээг шифрлэлт хийнэ. Зөвхөн эдгээр мэдээлэл л биткойны түрийвчэнд оршино. 
Биткойны түрийвч нь ширээний компьютер, мобайль гар утас, хэвлэсэн цаасан дээр эсвэл компьютерийн биет төхөөрөмжүүд дээр байж болно. 
Ширээний компьютер буюу PC
Хэрэв та анх гарч ирсэн биткойны client болох Bitcoin Core software-ийг ашиглаж буй бол, та аль хэдийн түрийвч ашиглаж байна гэсэн үг. Энэ программаар гүйлгээг биткойны сүлжээ рүү дамжуулж, мөн өөртөө хаяг үүсгэн, нууц түлхүүрээ хадгалах боломжтой. 
Бусад desktop client-үүд гэвэл: MultiBit, Hive, Armory гэх мэт байна. Мөн darkwallet нь жижиг хэмжээний browser plugin ашиглаад coin mix үйлчилгээг ашигласнаар өөрийн гүйлгээгээр таныг олж авахгүй болгох нууцлалт хийх боломжтой. 
Мобайль түрийвч
Desktop PC-д зориулсан түрийвчүүд сайн хийгдсэн ч, та гадаа гудманд бараа худалдан авах зэрэгт бол мэдээж тохиромжгүй бөгөөд энэ тохиолдолд mobile утсан дээрээ суурилуулаад ашиглаж болох апп түрийвчүүдийг хэрэглээрэй. Ингэснээр гар утасаараа төлбөрөө хийх боломжтой болно. 
Зарим тохиолдолд NFC технологийг ашиглаад утсаа шүргүүлээд бие биендээ биткойноо дамжуулж болно. 
Харин биткойн апп-уудын нэг онцлог нь тэдгээр нь desktop PC дээрхи шиг бүрэн хэмжээний client биш байдаг. Desktop PC дээрхи бүрэн хэмжээний client нь хэдэн GB хэмжээтэй цаашид хэмжээ нь өсөж байдаг гинжэн блок(blockchain)-ийг бүхэлд нь сүлжээнээс татан авч диск дээр байрлуулна. Тийм учир үүнийг гар утсан дээр байрлуулах ихэнхдээ боломжгүй эсвэл тохиромжгүй байна. 
Харин түүний оронд гар утсан дээрхи client-үүд нь амарчилсан төлбөрийн баталгаажуулалт ашиглана. (simplified payment verification - SPV). Энэ нь гинжэн блок-ийн жижиг хэсгийг татан авснаар бусад мэдээллээ биткойн сүлжээн дээрхи өөр client-үүдэд найдана. 
Mobile түрийвчүүдээс: Bitcoin wallet, Mycelium, Xapo ба Blockchain гэх мэт байна. 
Эдгээрээс blockchain нь таны биткойны нууц түлхүүрэнд дахин шифрлэлт хийж, web server дээр байршуулна. 

Online түрийвчүүд
Вэб дээр тулгуурласан түрийвчүүд нь таны нууц түлхүүрийг онлайнаар хадгална. Тиймд интернэтэд холбогдсон хэн нэгэн этгээд таны түлхүүрийг хариуцна гэсэн үг. Энэний нэг тал нь та интернэтэд холбогдсон л бол түрийвчээ хаанаас ч ашиглаж болно гэсэн үг. Харин үүний маш том сөрөг давуу тал нь тухайн этгээд таны хариуцаж байсан түлхүүрийг ямар нэгэн шалтгаанаар алдсан, шамшигдуулсан тохиолдолд та биткойнуудаа алдан аюултай. 
Онлайн үйлчилгээ явуулдаг компаниуд гэвэл Coinbase, circle хүмүүс үйлчилгээнүүд байна.  

Hardware буюу биет төхөөрөмж дээр суурилсан түрийвчүүд
Эдгээр төхөөрөмжүүд нь түрийвчний нууц үгийг хадгалах бөгөөд одоохондоо ашиглалт хязгаарлагдмал байна. Эдгээрээс trezor төхөөрөмж хамгийн их ашиглагдаж байна. Энэхүү төхөөрөмжийг ашигласнаар та 3 дахь этгээдэд өөрийн нууцлалаа хадгалуулах зэрэг риск байхгүй болж зөвхөн өөрөө хариуцах боломжтой болно. 

Цаасан түрийвч
Хамгийн хямд болон тархсан сонголт бол та биткойны түрийвчийнхээ мэдээллийг цаасан дээр буулган авч онлайн орчноос тусдаа байлгах юм. Цаасан түрийвчний үйлчилгээ үзүүлдэг хэд хэдэн газрууд байна. Эдгээрийг ашиглаад та цаасан 2 янзын QR код хэвлүүлж болно: нэг нь таны хаяг буюу нийтийн түлхүүр, нөгөө нь таны түрийвчний нууцлал буюу хувийн нууц түлхүүр. Эдгээрийг QR код scanner ашиглаад биткойноо ашиглаж болно. Цаасан түрийвчний хамгийн давуу тал нь онлайн орчноос салгагдсан тул хакеруудын халдлагад өртөх, төхөөрөмжийг алдах зэрэг сөрөг үр дагаваруудаас чөлөөлөгдөнө гэсэн үг. 

Түрийвчээ хэрхэн хамгаалах вэ?
Түрийвчээ хамгаалж, аюулгүй байдлыг нь хангах дараах хэд хэдэн арга зам байна:

  • Шифрлэлт хийх

Түрийвчээ хамгаалах хамгийн тархсан арга нь шифрлэлт хийж түүнийгээ сайн password-оор давхар баталгаажуулах хэрэгтэй. Энэ нь таны түрийвч рүү халдах оролдлогыг хэцүү болгоно гэхдээ ямар ч боломжгүй болгоно гэсэн үг биш. Хэрэв таны компьютер вирустсан бол таныг password-ыг оруулах явцад хуулж аваад password-ыг мэдэж авах боломжтой. 


  • Backup (Нэмэлт хувилбар) хийх

Хэрэв эзэмшилд буй түрийвч нэгхэн хувь байгаад түүнийгээ алдсан тохиолдолд дотор нь буй биткойноо алдах болно. Үүнээс сэргийлж түрийвчний хувийн нууц түлхүүрээ хувилж (backup) авснаар энэ асуудлыг шийдэж болно. 


  • Нэгээс илүү гарын үсэг/баталгаажуулалт - Multi-signature transaction
Multi-signature transaction нь хэд хэдэн хүний гарын үсэг буюу шифрлэлт хийснээр л гүйлгээг хийх боломжтой. Оролцогч этгээдүүд анх хаяг үүсгэхдээ энийгээ тохиролцоно. Энэ нөхцлөөр бизнесийн түншүүд, гэр бүлийн хүмүүс хоорондоо тохиролцож хамтдаа биткойныг эзэмшиж болно. Тэр ч атугай та 2 өөр гар утсан дээрхи гарын үсэгүүдээс бүрдсэн хаяг ашиглах ч боломжтой.


  • Онлайнаас орчноос салангид хадгалах

Онлайнаас орчноос тусад нь хадгалахыг cold storage буюу үгчлэн орчуулвал "хүйтэн хадгалалт" гэж орчуулж болно. Ингэснээр онлайн хакеруудаас нууцлалаа хадгалах боломжтой гэж үздэг. Хэрэв та их хэмжээний биткойныг хадгалах хэрэг гарвал дийлэнхийг нь энэ маягаар хадгалаад цөөн хэсгийг гүйлгээ хийх зорилгоор онлайн байлгаж болох юм. Ингэснээр таны капиталын цөөн хэсэг нь л рисктэй орчинд хадгалагдана.


Tuesday, August 11, 2015

Орчуулга


  • bitcoin - биткойн (үгчилж орчуурвал битзоос гэж болно)
  • blockchain / general ledger - гинжэн блок / үндсэн тэмдэглэгээ
  • block - блок
  • miner(s) - уурхайчин(д),
  • hash - хаш
    (дурын мэдээлэл, дата-г алгоритмын тусламжтай нэг урттай утгаар илэрхийлэх, мөн fingerprint, message digest, cryptographic checksum, message integrity check, manipulation detection code(MAC) гэж янз янзаар нэрлэгдэнэ)
  • nonce - nonce
    (олон удаа үүсгэх зорилгоор хэрэглэх дурын тоо, дахин үүсгэх болгонд өөр өөр бөгөөд ямар утга үүсэхийг урьдчилан таах боломжгүй (random) байна)
  • encryption, sign - шифрлэлт
  • ciphertext - шифрлэгдсэн мэдээлэл
  • plaintext - тайлагдсан (шифрлэгдээгүй) мэдээлэл
  • private key -хувийн нууц түлхүүр - биткойн түрийвч 
  • public key - нийтийн түлхүүр - биткойн хаяг
  • node - зангилаа - сүлжээнд уурхай хийх, гүйлгээний баталгаа хийж сүлжээнд хамрагдсан компьютерийн систем, энэ нь ширээний компьютер-аас авхуулаад тусгайлан бэлтгэсэн ASIC (Application Specific Integrated Circuit) байж болно. 
  • target threshold - тоот хязгаар - хаш хийхэд хэр хүнд байхыг тодорхойлох тохируулах зориулалттай тоон утга.
  • consensus rule - зөвшилцөөний дүрэм - хашийг хэр хүчин чармайлтаар гаргах дүрэмийг заасан зөвшилцлийн болон бусад дүрэм.

  • transaction input/output - гүйлгээний оролт/гаралт
  • proof of work - гүйцэтгэлийн баталгаажуулалт
  • coinbase transaction - үндсэн гүйлгээ, үндсэн зоос гүйлгээ (блокт орших хамгийн эхний гүйлгээ)
  • transaction identifier - гүйлгээний таних тэмдэг
  • UTXO - Unspent transaction output - гүйлгээнд зарцуулагдаагүй гаралт
  • fork - салаалт - нэгээс илүү адил өндөртэй блок үүсэх
  • stale/orphan block - салаалсаны дараа хүчингүй болсон блок
  • true orphan block - өмнөх блокоосоо салсан буюу өмнөх блок нь мэдэгдэхгүй болсон блок
  • genesis block - биткойны хамгийн эхэнд үүссэн блок
  • raw transaction format - түүхий гүйлгээний формат
  • SPV - simplified payment verification - хялбаршуулсан гүйлгээний хяналт - гар утсанд түрийвч суулгасан тохиолдолд гинжэн блокийг бүхэлд нь download хийх нь тохиромжгүй учир, гүйлгээг хялбаршуулсан аргаар шалган баталгаажуулах
  • pubkey scripts - нийтийн түлхүүрийн скрипт - гүйлгээний гаралтанд орших скрипт бөгөөд, тухайн сатоши-нуудыг зарцуулах нөхцлүүдийг тусгасан байна. 
  • signature script - гарын үсэгтэй скрипт - pubkey scripts буюу нийтийн түлхүүрийн скрипт дээр нөхцлүүдийг ханган гүйлгээ хийсэн тохиолдолд энэ бичлэг үүснэ. 
  • EDCSA signature - EDCS гарын үсэг - Нийтийн түлхүүртэй холбоотой утга, тухайн нийтийн түлхүүр нь хэн нэгний нууц түлхүүрээс гаргаж авсан байна. Энэ гарын үсэг нь тухайн нийтийн түлхүүр лүү дамжуулсан сатоши-г зарцуулахад хэрэглэнэ:  
  • satoshi - биткойны хамгийн жижиг нэгж буюу 1 биткойны 100 саятай тэнцэнэ (0.00000001 BTC)



Sunday, August 9, 2015

Биткойны гүйлгээ хэрхэн хийгддэг вэ?



Энэ нийтлэлээрээ coindesk-ээс орчуулж, биткойн гүйлгээ хэрхэн гүйгддэг талаар тавилаа. Уг нь bitcoin.org-оос авья гэсэн ч coindesk дээрхи мэдээллүүд илүү уншихад дөхөмтэй тал эндээс орчуулав.


Харин зарим үг хэллэгүүдийн орчуулгыг ингэж орчуулахаар боллоо:

Биткойны гүйлгээ нь электрон түрийвчнээс хийгдэх бөгөөд аюулгүй байдлыг нь хангахын тулд дижиталаар шифрлэгдэнэ. Сүлжээн дэх этгээдүүд бүгд тухайн гүйлгээний талаар мэдээлэгдэх бөгөөд биткойны гүйлгээний түүх нь биткойн ухагдсан тэр цаг мөч хүртэл нь мөшгөж болно. 
Биткойны өөр дээрээ хадгалж үнэ өсөхийг нь хүлээх нь сайхан ч биткойн чинь төлбөрийн хэрэгсэл биз дээ тийм үү? Тийм болхоор биткойныг ашиглахад гүйлгээ хэрхэн хийгдэх вэ?
Биткойн гэж зүйл байхгүй зөвхөн гүйлгээний тэмдэглэгээ л гэж зүйл байна. 
Энэ бол хамгийн хачирхалтай нь юм: биткойн нь биетээр хаа нэгтээ оршихгүй, тэр ч байтугай таны системийн хард диск дээр ч биткойн гэж байхгүй. Бид биткойн эзэмших тухай ярьдаг, мөн биткойны хаяг зэргийг авч үзвэл дотор нь ямарваа нэгэн биткойн гэж байхгүй, өөрөөр хэлбэл түрийвчэн дотор мөнгө хэлбэрээр хадгалагдахгүй юм. Та ямар нэгэн биет зүйл рүү хуруугаараа заагаад, тэр ч байтугай компьютер дээр орших файл руу заагаад энэ биткойн байна гэж хэлэх боломжгүй. 
Тиймд биткойн биетээрээ оршихын оронд нэг хаягаас нөгөө хаяг руу хийгдэх гүйлгээний тэмдэглэгээ л гэж байна. Энэхүү гүйлгээний тэмдэглэгээнээс үүдэн тухайн түрийвчний баланс нь ихэсч багасна. Биткойн үүссэнээс хийгдсэн гүйлгээ болгоны тэмдэглэгээ нь гинжэн блок хэмээх нийтэд дэлгээстэй тэмдэглэгээнд бичигдэн үлдэнэ. Хэрвээ та ямарваа нэгэн биткойны хаягт орших балансыг мэдье гэвэл та гинжэн блок дахь мэдээллийг ашиглан дахин бүрдүүлэх замаар балансыг олох хэрэгтэй. 
Биткойны гүйлгээ нь ямаршуу янзтай харагдах вэ?
Хэрэв иргэн А нь иргэн Б рүү биткойн шилжүүлэх тохиолдолд, гүйлгээ нь 3 янзын мэдээлэл агуулагдана:
- оролт (input) - иргэн А рүү урьд нь анх аль хаягаас тухайн биткойныг шилжүүлсэн болох. (иргэн Я-аас бол түүний хаяг). 
- хэмжээ - Иргэн А нь Б рүү шилжүүлж буй биткойны тооны хэмжээ
- гаралт - Иргэн Б хүлээн авагчийн хаяг. 
Хэрхэн шилжүүлэх вэ?
Биткойныг та шилжүүлэхийн тулд 2 зүйл хэрэгтэй: Биткойны хаяг, хувийн нууц түлхүүр (private key). Биткойны хаяг нь рандом маягаар үүсгэгдэх бөгөөд тоо, үсэг холилдсон үгнээс бүрдэнэ. Хувийн нууц түлхүүр нь мөн тоо, үсэгнүүдээс бүрдсэн үг боловч үүний утгыг далд, чандлан нууцлах хэрэгтэй. 
Өөрөөр хэлбэл биткойны хаягийг шилэн хорготой сэифээр төлөөлүүлж болно. Бүх хүмүүс дотор нь юу байгааг мэдэж болох ч хувийн нууц түлхүүрийг ашигласнаар л дотроос нь гаргаж эсхүл дотор нь хийж болно. 
Иргэн А иргэн Б рүү биткойн шилжүүлэг хийх тохиолдолд хувийн нууц түлхүүрээ ашиглан шифрлэлт хийх болно. Шифрлэлт нь дараах мэдээллүүд дээр хийгдэнэ: 
- input дээрхи хэлснээр биткойны анхны гүйлгээ
- хэмжээ
- output - гаралт буюу хүлээн авагчийн хаяг. 
Ингэснээр иргэн А нь өөрийнхөө түрийвчнээс тухайн мэдээллийг биткойны сүлжээ рүү илгээнэ. Ингэсний дараа биткойны уурхайчид тухайн гүйлгээг баталгаажуулах ажилдаа орж, баталгаажуулалт амшилттай хийгдвэл, гүйлгээний блокт залгаж эцэст задлан тайлна. 
Би заримдаа гүйлгээг хийж дуустал хүлээх хэрэгтэй болох юм, яагаад вэ?
Таны гүйлгээг уурхайчид баталгаажуултал тодорхой хугацаа шаардагдана, тийм тул зарим тохиолдолд уурхайчидыг баталгаажуулж дуустал хүлээх хэрэгтэй болно. Биткойн протокол нь нэг блокийг малтаж дуустал ойролцоогоор 10 минут хүлээгдэхээр хийгдсэн байдаг.
Биткойноор төлбөрийг нь хийсэн бүтээгдэхүүнээ хүлээж авахаас өмнө зарим бизнесүүд блокийг баталгаажуултал хүлээлгэх бөгөөд эдгээр нь 10 минут хүлээлгэнэ гэсэн үг юм.
Зарим бизнесүүд гүйлгээг баталгаажуултал таныг хүлээлгэхгүй байж болно. Ингэснээрээ тухайн бизнес нь та төлбөр хийсэн биткойныг өөр зорилгоор дахин хэрэглэхгүй гэж итгэл хүлээлгэн азаа үзэж буй гэсэн үг юм бөгөөд энэ нь голцуу бага хэмжээний гүйлгээ хийгдсэн тохиолдолд байна.

Хэрвээ оролт гаралтын хэмжээ нь зөрүүтэй байвал яах вэ?

Дээр хэлсэнчлэн биткойн нь зөвхөн гүйлгээний тэмдэглэгээ байдлаар орших тул, таны түрийвч нь олон гүйлгээтэй байж болно. Магадгүй иргэн А таньд 2 биткойн илгээсэн, иргэн Б нь 3-ыг, иргэн В нь 1-ийг илгээсэн байж болох бөгөөд эдгээр нь тус тусдаа өөр өөр үед хийгдсэн гүйлгээнүүд юм.
Эдгээр нь таны түрийвчэнд автоматаар нийлбэр дүнгээрээ орж хадгадагдана гэсэн үг биш бөгөөд тэрний оронд өөр өөр гүйлгээ маягаар хадгалагдана.

Хэрэв та хүлээн авсан биткойныг иргэн Д-рүү шилжүүлсэн тохиолдолд, таны түрийвч урьд нь хүлээж авсан гүйлгээнүүдийг явуулах гэж буй хэмжээнд хүртэл нь хооронд нэмнэ.
Харин энэ тохиолдолд урьд нь хүлээгдэж авсан гүйлгээнүүдийн нийлбэр нь явуулах гэж буй хэмжээтэй яг таг тэнцүү байна гэж бараг байхгүй. Таны түрийвч гүйлгээний утгыг тасалж тоог нь тэнцүүлэхгүй боломжгүй, тийм учир та зөвхөн тухайн гүйлгээнүүдийг бүтнээр нь явуулж илүү явуулсан хэсгийг нь буцаан хариулт болгон явуулна.

Гүйлгээний шимтгэл гэж бий юу?

Зарим тохиолдолд байна, гэхдээ дандаа биш. Гүйлгээний шимтгэлийн хэмжээ олон янзын хүчин зүйлүүдээс хамаарна. Зарим түрийвчүүд нь гүйлгээний шимтгэлийг тогтоож болохоор хийгдсэн байна. Гүйлгээний аливаа нэг хэсэг нь хүлээн авагч ямар нэгэн шалтгаанаар аваагүй тохиолдолд шимтгэл хэмээн үзэгдэж уурхайчийн эзэмшил болно. ( Any portion of a transaction that isn’t picked up by the recipient or returned as change is considered a fee???)

Яг одоогийн байдлаар олон уурхайчид гүйлгээнүүдийг шимтгэлгүйгээр баталгаажуулж буй. Харин блок бүрдсэнээс үүдсэн шагнал нь яваандаа багассанаар уурхайчид шимтгэл шаардах төлөвтэй байна.

Гүйлгээний шимтгэлтэй нэг зовлонтой зүйл бол шимтгэлийн хэмжээг гаргах нь ярвигтай мөн хуучирсан аргаар тооцдог байсан. Энэ нь протоколийг хэд хэдэн удаа update хийсэний дараа засагдсан юм.

Биткойны гүйлгээ гүйцэтгэдэг үндсэн программыг нь update хийсэн тохиолдолд, гүйлгээний шимтгэлийг тооцоох аргыг өөрчилж болох ба ингэснээрээ хамгийн доод шимтгэлийг тооцох боломжтой болгоно.

Би гүйлгээний хийснийхээ төлөө тасалбар авч болох уу?

Биткойн нь гүйлгээний тасалбар гаргахаар анхнаасаа хийгдээгүй. Гэхдээ 0.9 хувилбараас хойш илүү хэрэглэгчдэд дөхөмтэй болгох үүднээс гүйлгээг өөр маягаар хийгддэг болно.
Мөн BitPay гэх мэт төлбөр гүйцэтгэгчэд нь гүйлгээний тасалбар, баталгаажуулалтын вэб хуудас гэх мэт илүү нэмэлт үйлчилгээнүүд үзүүлдэг. Эдгээр үйлчилгээ нь үндсэн биткойн гүйлгээнд байхгүй үйлчилгээ юм.

Би биткойныг бутархайгаар явуулж болох уу?

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





Friday, August 7, 2015

Уурхай: Биткойны хэрхэн нээж олдог вэ?


Энэ нийтлэлээр биткойн уурхай хэрхэн хийгддэг механизмыг орчуулж тайлав.

Харин зарим үг хэллэгүүдийн орчуулгыг ингэж орчуулахаар боллоо:
http://bitcoin-mn.blogspot.com/2015/08/blog-post_11.html

Уламжлалт мөнгөн тэмдэгтийг засгийн газраас хэвлэн шинээр эргэлтэнд оруулдаг. Харин биткойн шинэ тэмдэгтүүд нь хэрхэн шинээр гүйлгээнд ордог вэ?

Биткойныг бол хэвлэж эргэн оруулдаггүй харин нээн илрүүлж эргэлтэнд оруулна. Үүний тулд компьютерүүд хоорондоо өрсөлддөг.

Биткойн-ыг хэрхэн малтан гаргах вэ?

Хүмүүс бие биендээ биткойн шилжүүлэх болгонд гүйлгээний бичилт хийгдэх ба биткойны сүлжээ тодорхой хугацаанд хийгдсэн эдгээр гүйлгээнүүдийг цуглуулан блок болгон хувиргана. Харин уурхайчид (miners) нь энэхүү блокийг баталгаажуулж үндсэн тэмдэглэгээнд (general ledger) нийлүүлнэ.


Энэхүү үндсэн тэмдэглэгээ нь урьд нь хийгдэж байсан блокуудыг нийлүүлсэн урт хэмжээний тэмдэглэгээ бөгөөд үүнийг гинжин блок (blockchain) гэж нэрлэнэ.

Үндсэн тэмдэглэгээ буюу гинжэн блокийг ашиглаад урьд нь аль ч үед хийгдэж байсан ямарваа нэгэн гүйлгээг харах боломжтой. Шинээр блок үүсэх болгонд, энэ нь гинжэн блокт залгагдсанаар гинжэн блок нь цаг үед уртасч байна. Ямагт update хийгдэж буй блок нь оролцож буй хүн болгонд өгөгдсөнөөр, тэдгээр нь юу болж байгааг мэдэх боломжтой.

Үндсэн тэмдэглэгээ буюу гинжэн блокууд нь хуурамч тэмдэглэгээ байгаа эсэхэд хэрхэн итгэх вэ? Уурхайчидын гол роль нь энд л байна.

Биткойны блок бүрдсэн тохиолдолд "уурхайчид" блок доторхи мэдээллийг хаш (hash)-лаж, блок руу нэмэж гинжэн блок руу залгана.

Хаш-лалтаас үндсэн мэдээллийг сэргээж аван ямар ч боломжгүй, мөн үндсэн мэдээллийг хаш болгоход амар байна. Мөн хаш болгон давтагдашгүй байх хэрэгтэй. Хэрэв үндсэн мэдээллээс ганц үсэг өөрчлөхөд хаш-ийн утга тэс өөр болдог.

Уурхайчид мөн одоо хийгдэж буй гүйлгээнд хаш, гинжин блокийн сүүлчийн блокийн хаш-ийг мөн одоо хаш хйих гэж буй мэдээлэлдээ мөн нэмнэ.

Ингэснээр одоо хийгдэж буй блок нь өмнөх блокийн хаш утгаас хамаарах учир баталгаажуулалтын гинжэн хэлхээ үүснэ, мөн энэ маягаар дараа дараагийн блокууд мөн баталгаажна.

Хэрвээ хэн нэгэн нь гинжэн блокт аль хэдийн залгагдсан блокт өөрчлөлт хийсэн тохиолдолд тухайн блокийн хаш утга өөрчлөгдөнө. Ингэснээр хэн нэгэн нь блокийг баталгаажуулсан тохиолдолд блокт байгаа хувилбараас өөр хаш утга гарах учир энэ нь хуурамч гэж үзнэ.

Дээр өгүүлснээр, дараа дараагийн блокууд одоогийн блокоос шалтгаалах тул, хуурамч гэгдсэн блокоос хойших бүх блокууд баталгаагүй болно.

Биткойн-ыг олж авах өрсөлдөөн

Уурхайчид блокийг баталгаажуулах дээр өгүүлсэнээр явагдаж хоорондоо өрсөлддөг. Хэн нэгэн нь аль нэг цагт амжилттай хаш хийсэн тохиолдолд, тэдгээр уурхайчид 25 биткойноор шагнуулж, гинжэн блокт залгагдсанаар, сүлжээнд буй оролцогчдод энэ нь мэдээлэгдэнэ. Ийм маягаар шагнуулах нь биткойны гүйлгээг баталгаажуулах ашиг сонирхлыг оролцогчдод бий болгоно.

Асуудал нь мэдээллээс хаш гарган авахад амаргүй байдаг. Компьютерүүд хашийг амархан хийж гүйцэтгэнэ. Биткойны сүлжээ хашлалтыг хэцүү байхаар хийгдсэн байдаг, эс бөгөөс хүн бүр минут-д хашлалтыг зуу зуугаар нь баталгаажуулж бүх биткойнуудыг хэдхэн минутэнд "малтаж" орхино. Биткойны сүлжээ нь "ажлын баталгаажуулалт" (proof of work) гэсэн ухагдахууныг оролцуулснаар хаш-лалтыг зориуд хэцүү болгоно.

Биткойны протокол нь ямарваа нэгэн хуучин хийгдсэн хаш бүрийг хүлээн аваад байхгүй. Протоколийн шаардлага нь хаш нь тодорхой өөрийн гэсэн форматтай байна, мөн тодорхой хэмжээний нойл цифрүүдийг урд талд нь байрлуулсан байна. Хашийн утга ямар байхыг урьдчилан мэдэх боломжгүй, ямар нэгэн мэдээлэл нэмж оруулахад хашийн утга тэр чигээрээ өөрчлөгдөнө.

Уурхайчид блокт буй мэдээллийг өөрчлөх гэх мэт үйлдэл хийж болохгүй, харин тэд өөр утгатай хаш бүрдүүлэхийн тулд мэдээллийг өөрчлөх хэрэгтэй байдаг. Энэний тулд уурхайчид nonce дурын утгыг ашиглана. Nonce нь гүйлгээний утгатай хамтаар нийлүүлснээр хаш хийхэд бэлэн болно. Хэрвээ гарсан хаш нь шаардагдсан формат-д нийцэхгүй тохиолдолд nonce утгыг дахин өөрчилж дахин хаш хийх хэрэгтэй болно. Ингэснээр тухайн nonce болон мэдээллийн хаш-ийг протоколийн форматтай нийцүүлэх хүртэл дахин дахин nonce утгыг өөрчилж хаш хийгдэнэ. Формат-д таарах хаш-ийг олтол маш олон оролдлого хийгдэх ба уурхайчид энэ тохирох nonce утгыг олохын төлөө өрсөлдөнө. Уурхайчил ингэж биткойныг олдог.


дараах линкүүдээс ишлэн авав: http://www.coindesk.com/information/how-bitcoin-mining-works/
http://www.coindesk.com/information/how-do-bitcoin-transactions-work/




Monday, July 13, 2015

Биткойныг хэрхэн ашиглах

Зарим үг хэллэгүүдийн орчуулгыг ингэж орчуулахаар боллоо:
http://bitcoin-mn.blogspot.com/2015/08/blog-post_11.html

Хувь хүнд үзүүлдэг биткойны үйлчилгээ нь голцуу дижитал түрийвч эсвэл бүхэл бүтэн данс нээлгэж банкны үйлчилгээ мэтээр 2 янз байна. Ингэснээр үйлчилгээ үзүүлж буй компань нь таны нууц түлхүүр, гүйлгээ хийх зэргийг бүгдийг нь зохицуулж хариуцна. Мөн дансан дотроо дижитал түрийвчийн үйлчилгээг мөн багтаан оруулсан байна. Ингэснээрээ таны биткойны аюулгүй байдал нь тухайн үйлчилгээг үзүүлж буй компаниас хараат хамааралтай болно биткойны үндсэн бие даасан шинж чанар нь тодорхой байдлаар алдана гэсэн үг. Харин зөвхөн дижитал түрүүвч үйлчилгээг ашиглая гэвэл бүх зүйлээ өөрөө зохицуулах болно. Дижитал түрийвч нээснээр нууц үгээ мөн өөрөөр хадгалах хэрэгтэй бөгөөд алдсан тохиолдолд тухайн түрийвчэнд буй биткойнуудыг сэргээн авах боломжгүй болно гэдгийг анхаараарай.

Биткойны данс хэлбэрээр үйлчилгээ үзүүлдэг (зарим нь банкнаас гадна биткойныг хувьцаа маягаар арилжих үйлчилгээ үзүүлнэ) хамгийн түгээмэл компаниудаас:


  • Coinbase  - АНУ Сан Франциско хотод байрладаг
  • BitStamp - Slovenia-аас гаралтай
  • Bitfinex -
  • BTC-e - Болгариас гаралтай
  • Kraken - Хадгалсан биткойнууд euro ханшаар харуулна.
Хамгийн түгээмэл хэрэглэддэг биткойны бие даасан түрийвчүүдээс:
  • Bitcoin Core
  • BreadWallet
  • Bither
  • MultiBit HD
  • BitcoinWallet
  • Copay


Эдгээрийн дийлэнхийг нь андройд болон iphone-доо апп болгон татаж авч болно.

Танилцуулга: Биткойн дижитал төлбөрийн хэрэгсэл



BITCOIN --------
----БИТКОЙН ---
--------БИТЗООС

Энэ нийтлэлээрээ BITCOIN гэгдэх CRYPTOCURRENCY төлбөрийн хэрэгслийн тухай олж мэдсэнээ хамж бичиж үзэхээр шийдэв.

Зарим үг хэллэгүүдийн орчуулгыг ингэж орчуулахаар боллоо:
http://bitcoin-mn.blogspot.com/2015/08/blog-post_11.html

Биткойн нь хэдхэн жилийн АНУ-ын Калифорн мужид амьдардаг Япон инженерийн бүтээсэн онлайн төлбөрийн хэрэгсэл бөгөөд тэр үеээс хойш олон нийт өргөнөөр хүлээн авч эхэлжээ.


Биткойн-ы гол онцлог нь ямар нэгэн улс, тухайн улсын төв банк, төвлөрсөн засаг захиргааны эзэмшилд байдаггүй, улс орны хил хязгаараар зааглагдахгүй төлбөрийн хэрэгсэл гэж болно. Ингэснээрээ биткойн нь нэг улсын мөнгөний ханшаас шалтгаалахгүй, хэнд ч захирагдахгүй, глобал төлбөрийн хэрэгсэл юм. Мөн биткойн нь биет цаасан мөнгө бус зөвхөн интернэт-д программын ертөнцөд оршдог.


Сүүлийн жилүүдэд олон бизнэсүүд, төр захиргааны нэгжүүд олон олноороо энэ төлбөрийн хэрэгслээр төлбөр тооцоо хийх болсон нь цаашид газар авч нийтийн хэрэглээ болох болов уу гэсэн таамаглал төрүүлж байна.


Жирийн мөнгөн тэмдэгтээр шилжүүлэг хийхэд шимтгэл нэрээр банкууд нэлээдгүй хэмжээний төлбөр авдагийг мэднэ. Мөн улс хоорондын шилжүүлэг нь SWIFT системийн дагуу шилжүүлэгдэг ч энэ систем нь орчин үеийн шаардлага хангахгүй үнэ ихтэй, олон хоног шаарддаг гэх мэт төвөгтэй байдаг. Мөн улс хоорондын шилжүүлэг хийхэд тодорхой маягт бөглөж, түүнийгээ банк руу биеэрээ очиж эсвэл ердийн шуудан, факсаар дамжуулдаг нь интернэт хөгжсөн одоо үед тохиромжгүй санагддаг.

Одоогоор биткойн нь шинэхэн үүссэн дижитал мөнгөн тэмдэг, мөн уг санаа нь ямар нэгэн төвийн системээс зохицуулалт хийхгүй бүх нийтийн өмч гэсэн тодотголтой тул мөн сөрөг тал ч ажигдагдаж байна. Өнгөрсөн хугацаанд хэд хэдэн биткойн-ы арилжааны төвүүд дампуурч хөрөнгө оруулагчдын их хэмжээний капилатыг авч одсон нь одоогийн байдлаар риск ихтэй төлбөр тооцооны хэрэгсэл гэдгийг харуулж байна. Мөн энэхүү сөрөг үйл явдлын дагуу биткойны ханш нь маш хүчтэй хэлзэлбэж ирсэн бөгөөд ханшийн хувьд их тогтвор муутай болохыг харуулж байна.

Биткойны бусад онцлогийг жирийн мөнгөн тэмдэгтэй дор харьцуулж үзье:
- Биткойноор бие биедээ шилжүүлсэн мөнгө нь банкаар дамжихгүй хоёр этгээд нэг нэгэндээ шууд дамжуулж болдог. Үүнийг P2P, Peer-to-peer буюу үгчлэн "хүнээс-хүнд" гэж нэрлэдэг.

- Биткойн-оор хийгдсэн төлбөр нь ямарваа нэгэн банкны компьютерийн системд бичигдэж
үлддэггүй харин интернэтээс хэн ч атугай төлбөрийн рекордыг харж болдог. Энэхүү рекордыг англиар blockchain буюу үгчлэн орчуулвал "гинжэн блок" гэж нэрлэж болно. Энэ рекорд нь биткойн нь үүссэн хойших бүх төлбөрийн баримтын харж болно. Хамгийн сүүлд хийгдсэн төлбөрийн тооцоонуудыг груп болгон хувааж блоклон гинж рүү нийлүүлдэг болхоор ийм нэртэй болсон байна.
Биткойны төлбөрийн рекорд буюу blockchain-ын хэмжээг графикаар үзүүлсэн нь.
http://www.bitcoin.com/charts/blocks-size

- Биткойн-ыг худалдан авахын тулд арилжааны цэг дээрээс ямар нэгэн валют сольж буйтай адилаар худалдан авч болно.

- Биткойн-ыг хадгалахдаа биткойн түрийвч (bitcoin wallet) нд хадгалж болно. Энэ түрийвч гараараа хүрч болох биет зүйл биш бөгөөд виртуал хэлбэрээр таны онлайн дансанд нууц түлхүүр (private key) хэлбэрээр оршино.

- Биткойны эзэмшигчийн хаяг нь имэйлтэй төстэй бөгөөд нууц бус түлхүүр (public key) маягаар оршино. Хэн нэгэн хүн таньтай холбогдоход таний имэйлийг ашигладагтай адилаар ямар нэгэн хүн таньд биткойн шилжүүлэх бол тэр хүн таны "нууц бус түлхүүр"-ийг ашиглаж шилжүүлнэ.

Биткойны арилжааг шалтган нягтлахад miner буюу "уурхайчид" гол үүрэг гүйцэтгэнэ. Шалгах явцад уурхайчид шалгалт хийсний дараа арилжааг зөвшөөрөн дараагийн блокд нийлүүлэхээр бэлтгэснээр арилжааг төгсгөнө.


"Уурхай"-чид энэ үүргийнхээ төлөө шагнал хүртэж болно. Блок бүрдсэн тохиолдолд (блок нь хамгийн сүүлд хийгдэж гинжэнд залгагдахад бэлэн болсон групп арилжаа гэдэгийг санагтун) уурхайчид автоматаар шагнуулах бөгөөд уурхайчид энэ шагналыг авахын тулд өрсөлддөг.
Мөн та арилжаагаа хурдан гүйцэтгэе гэвэд хувиасаа шагнаж болно. "Уурхайчин" нь нэг ёсондоо төлбөрийг нягтлан шалгадаг компьютерийн системийг эзэмшигч бөгөөд, одоо бол ихэнх тохиолдолд уурхайд зориулсан тусгайлан хийсэн электрон төхөөрөмж (Application Specific Integrated Circuit) ыг голчлон ашигладаг.


BITCOIN-той холбогдолтой онцлох үйл явдлуудаас
заримыг нь сонирхуулах нь:

2008 / 10-р сар: Сатоши Накамото өөрийн зохион бүтээсэн биткойн болон гинжэн блокийн технологийн тухай нийтлэж танилцуулав. 

2009 / 1-р сар: Хамгийн эхний биткойн-ыг "ухан" гаргав.

2010 / 7-р сар: Хамгийн анхны биткойн-ы арилжааны цэг MT.Gox байгуулагдав.

2013 / 3-р сар: Биткойн хэвлэл мэдээллийн анхааралд 
өртөж эхэлснээр нэгжийн ханш нь $50 хүрэв.

2013 / 9-р сар: Хятадын хэвлэл мэдээллээр биткойн-ы тухай нийтэд зарласанаар 
биткойн ханшны $1200 хүртэл өсөх эхлэлийг тавив.

2014 / 1-р сар: Хятадын засгийн газар виртуал валют болох биткойний эрсдэл рискийг нийтэд анхааруулж банк санхүүгийн байгууллагуудад хэрэглэхийг хориглосоноор 
биткойн-ы ханш буцан унав.
Биткойн-ы нэг жилийн ханшыг графикаар үзүүлсэн нь
http://www.bitcoin.com/charts/market-price

2014 / 2-р сар: Биткойн-ы арилжааны 70%-ыг хариуцдаг байсан Mt. Gox цэг дампуурч ингэснээр хувь хүн болон бизнесийн эзэмшлийн 450 сая $ -тэй тэнцэх 850,000 биткойн-ыг хулгайд алдсан гэх таамаг гарав. Тэр үйл явдлаас хойш 200,000 биткойныг буцаан олжээ.


2014 / 12-р сар: олон жижиг дунд бизнесүүд биткойныг төлбөрийн хэрэгсэлээр хүлээн авч эхэлж мөн Expedia, Microsoft зэрэг компаниуд биткойныг хүлээн зөвшөөрснөөр улам өргөжин биткойн хэрэглэгчдийн тоо 7,000,000 хүрэв.

эх сурвалж:
дийлэнх мэдээллийг http://www.bitcoin.com/guide, http://www.bitcoinmining.com/ болон бусад вэбээс авч орчуулан хийв.