Блокчэйн гэж юу вэ? /Орчуулга/

2017-10-05

1. Блокчэйн гэж юу вэ? /Орчуулга/

Бидэнд ойр блокчэйн

Хийсвэр мөнгө буюу биткойн/bitcoin/ гэдэг үгийг сонссон боловч, биткойны суурь технологи болох блокчэйний талаар сайн мэдэхгүй хүмүүс олон болов уу.

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

Энд блокчэйний үүсэл болон технологийн ойлголтыг тайлбарлах болно.

Блокчэйний үүсэл

Блокчэйний түүх 2008 онд Сатоши Накамото гэдэг этгээдийн /хүн эсвэл байгууллага гэдэг нь тодорхойгүй/ бичсэн “Хийсвэр мөнгө биткойн”-ий тухай эрдэм шинжилгээний өгүүллээс эхэлнэ. Энэ өгүүлэлд Сатоши Накамото банк санхүүгийн байгууллага шиг итгэж болох зууч байхгүй байсан ч, мөнгийг өөрийн дураар чөлөөтэй шилжүүлэхэд шаардлагатай технологи болон тэдгээрийг нэгтгэсэн мөнгө илгээх системийг санал болгосон байдаг.

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

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

Энэхүү банкны данс хоорондын мөнгө шилжүүлгийг хийх үед, Бат үнэндээ 5000 төгрөгтэй байгаа эсэх, мөн үнэхээр Батын данснаас 5000 төгрөг хасагдсан эсэхийг Дорж баталгаажуулж чадахгүй. Үүнтэй адилаар Доржийн дансанд 5000 төгрөг орсон эсэхийг мөнгө шилжүүлж буй Бат баталгаажуулж чадахгүй.

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

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


2. Блокчэйний онцлог

Тархсан P2P /Distributed Peer to Peer/

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

Тархсан P2P сүлжээ гэдэгт, сүлжээнд оролцогч(цаашид node гэе) нь газарзүйн хувьд тархсан байдаг ба node хооронд мэдээлэл солилцоо нь агшин зуур хийгддэггүй, тархах байдлаар явагддаг учраас “тархсан” гэдэг утгыг, мөн node нь сервер зэргээр дамжилгүйгээр өөр node-тэй шууд холбогддог “P2P(peer to peer)” гэдэг утгыг агуулж байдаг.

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

Тодорхойгүй тооны олон оролцогчтой сүлжээнд, мэдээллийг солилцохдоо, тэдгээр мэдээллийг засах эрсдэлтэй биш үү, ялгаатай node дээр ялгаатай үр дүнд хүрвэл яаж нэгдсэн нэг үр дүнд саналаа нэгтгэх вэ гэдгийг бодох шаардлагатай гарч байна.

Блокын гинж /chain/

Хийсвэр мөнгө гэдэг хэрэглээнээс, ямар дата бүтэц хэрэгтэй вэ гэдгийг бодож үзэцгээе. Юун түрүүнд хэнээс хэнд хэдийг шилжүүлсэн бэ гэдэг түүхийг хадгалж байх шаардлагатай. Блокчэйнд энэ шилжүүлгийг гүйлгээ(transaction) гэж хэлдэг бөгөөд, олон гүйлгээг багцалсныг блок гэж нэрлэдэг. Гүйлгээ нэг бүрийг зүгээр бүртгээд явбал, нэг мөнгө давхар ашиглагдах “Double spending” хэмээх асуудал үүснэ. Жишээ нь Батын дансанд 1000 төгрөгийн үлдэгдэл байсан гэе. Нэг node дээр Батын 1000 төгрөгийг Доржид төлөхөөр боллоо гэж үзье. Гэтэл үүнтэй зэрэгцээд өөр node дээр Батаас Болдод 1000 төгрөг төлөхөөр боллоо гэж үзье. Node тус бүр Батын дансны үлдэгдлийг 1000 гэж үзэх учраас, Дорж болон Болд уруу төлөх төлөлтийг зөв гэж үзээд гүйцэтгэчихнэ. Батад 1000 төгрөг л байсан боловч, 1000 төгрөгийг 2 удаа ашиглаад 2000 төгрөг ашигласан болж таарна. Энэ асуудлаас зайлсхийхийн тулд гүйлгээ тус бүрд дараалал өгөх шаардлага гарч байна. Жишээ нь Доржид төлөх төлөлт Болдод төлөх төлөлтөөс “өмнө” хийгдсэн гэж үзвэл, Болдод төлөх үлдэгдэл хүрэлцэхгүй учраас төлөлт хийгдэхгүй. Блокчэйнд блокыг цаг хугацааны дагуу жагсааж, блок тус бүр 1 өмнөх блокыг зааж байдаг(Блокын гинж). Ийм байдлаар блокыг нэг эгнээнд оруулсан бүтцээс блокчэйн гэдэг нэр үүсэлтэй юм.


Figure 1. Блокын гинж

Блокчэйний ажиллагаа

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

  • Нууцлалын технологи
    Гүйлгээ болон блок гэх мэт бусдад түгээх мэдээллийг зөв, засагдаагүй мэдээлэл гэдэгт баталгаа гаргахад ашиглана.
  • Нийцтэй байдал
    Блокчэйнд оролцогчид ямар дүрмээр, солилцож байгаа мэдээллээ үнэн зөв бэ гэдгийг таньж мэдэхэд ашиглана.
  • Тархсан дэвтэр
    Бүх оролцогчид дундаа ижил өгөгдөл хуваалцаж, бүх оролцогч эрх тэгш node болж өөр хоорондоо мэдээлэл солилцсоноор, эвдрэл багатай, бат бөх системийг бий болгоно.
  • Смарт контракт
    Блокчэйн дээрх ажиллагаанд /протоколд тааруулсан аппликэйшн кодыг ажиллуулснаар буруу ашиглалт болон төвлөрсөн эрхийн шаардлага үгүй болно.

3. Блокчэйнд зайлшгүй байх шаардлагатай 2 нууцлалын технологи

Криптографи hash функц

Та ердийн үед програм бичихдээ MD5(Messsage Digest Algorithm 5) болон SHA-1, SHA-256(Secure Hash Algorithm) зэргийг ашиглах нь элбэг байх. Эдгээр нь криптографи hash функцүүд (цаашид hash функц) юм. Hash функц нь оруулсан өгөгдлийн уртаас хамааралгүй, өөр өөрийн тогтсон урттай hash утгуудыг буцаадаг. Жишээ нь, та Mac-ын командлайн-аар дараах командыг оруулбал, SHA-256 hash функцийн утгыг хялбархан олон болно.


Figure 2. “Улаанбаатар”, “Утаанбаатар” гэсэн үгнүүдийн sha256 кодыг бодсон байдал

“Улаанбаатар”, “Утаанбаатар” гэсэн үгнүүдийн sha256 кодыг бодсон байдал жишээн дээр, “Улаанбаатар” гэсэн үгний SHA-256 hash утга болон, “л”-г “т”-гээр сольсон үгийн SHA-256 hash утгыг харуулсан байна. Зөвхөн нэг үсгээр ялгаатай боловч, тэдгээрийн hash утгууд нь эрс ялгаатай байна. Энэ мэтчилэн hash функц нь оролт нь 1 байтаар л ялгаатай байхад, эрс өөр үр дүн гаргадаг шинж чанарыг агуулж байдаг. Энэ шинж чанарыг ашиглан, гүйлгээний өгөгдөл болон тэдгээрийг хадгалах блокын бүх өгөгдлийн хувьд гарах hash утгыг тухайн өгөгдлийн бүтцэд оруулснаар, засвар ороогүй болохыг баталгаажуулах боломжтой болно.

Цахим гарын үсэг

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

Жишээ нь Бат Доржид чухал материал илгээх тохиолдолд, муу санаатай хэн нэгэн Батын оронд өөр материал илгээж магадгүй, эсвэл Батын явуулсан материалыг замаас нь хулгайлж, засварлаад Доржид явуулж магадгүй. Энэ үед Доржийн хүлээж авсан файл “Батаас илгээсэн зөв файл мөн” гэдгийг хэрхэн шалгах вэ. Энэ асуудлыг шийдэж өгөх арга нь цахим гарын үсэг юм.

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

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

  • Нууц түлхүүрээр нууцалсан өгөгдлийг зөвхөн ил түлхүүрээр задлах боломжтой
  • Ил түлхүүрээр нууцалсан өгөгдлийг зөвхөн нууц түлхүүрээр задлах боломжтой

Ил түлхүүрээр нууцлах нь “Интернэт дэлгүүрт кредит картын мэдээлэл илгээх”, “Нэвтрэх нууц үг илгээх” зэрэгт ашиглагддаг. Харин, нууц түлхүүрээр нууцалсан өгөгдөл нь зөвхөн, нууц түлхүүртэй хүн л нээнэ гэдэг чанарыг ашиглаж “хэн задалсан бэ” гэдгийг нь баталгаажуулах арга(цахим гарын үсэг) болгон ашигладаг. Батаас Доржид бичиг баримт илгээх тохиолдлыг жишээ болгон цахим гарын үсгээр явуулахыг Цахим гарын үсэгтэй файл явуулах урсгал-д үзүүллээ.


Figure 3. Цахим гарын үсэгтэй файл явуулах урсгал

  1. Бат (Гарын үсэг зурах = нууц түлхүүртэй хүн) үндсэн файлын хаш утгыг тооцоолно.
  2. Батын нууц түлхүүрээр олсон хаш утгыг кодлоод, түүнийг гарын үсэг гэж үзнэ.
  3. Батаас үндсэн файл болон гарын үсгийг Доржид илгээнэ.
  4. Дорж хүлээж авсан файлаас хаш утгыг нь бодож олно.
  5. Дорж хүлээж авсан гарын үсгийг Батын нууц түлхүүрт харгалзах ил түлхүүрээр задалж, үндсэн файлд харгалзах хаш утгыг олж авна.
  6. Дорж 4-т бодож олсон “үндсэн файлын хаш утга” болон 5-д задалж олсон “үндсэн файлын хаш утга”-г харьцуулна.
  7. Уг харьцуулалтаар 4 болон 5-ууд ижилхэн байвал уг файл Батаас явуулсан файл мөн бөгөөд ямар нэг засваргүйгээр хүлээж авсан гэдгийн баталгаа болно.

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


4. Нийцтэй байдал

Өмнө хэлсэнчлэн, блокчэйн бол блок тус бүрийг нэг эгнээнд жагсаасан бүтэцтэй байдаг. Оролцох бүх node дээр ижил мэдээлэл бүхий блок ижил дарааллаар жагссан байх шаардлагатай. Уг блокын дарааллыг шийдэх арга болгож блокчэйнд янз бүрийн нийцтэй байдлын алгоритмыг ашигладаг. Жишээлбэл, PoW(Proof of Work), PoS(Proof of Stake), PoI(Proof of Importance), PBFT(Practical Byzantine Fault Tolerance)

PoW/Proof of Work/-ын ажиллагаа

PoW бол биткойнд ашиглагддаг алгоритм бөгөөд ерөнхийдөө майнинг/mining/ гэж хэлэгддэг үйлдэлд хийгддэг зүйл юм. PoW-оор блок дотор агуулагддаг гүйлгээний мэдээлэл болон өмнөх блокын хаш утган дээр санамсаргүй тоо(nonce) нэмж, хаш утга тооцоолоод явна. Бодож олсон хаш утга урьдчилан тохируулсан шалгуур утгаас бага болтол нь санамсаргүй тоог өөрчилж, дахин тооцоолол хийнэ. Нөхцөлд таарах хаш утгыг олбол, уг блокыг идэвхтэй блок болгож, оролцогчдод түгээж, хүлээн зөвшөөрүүлнэ.

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

Биткойнд урьдчилан тохируулсан нөхцөлд таарсан блокыг үүсгэж чадсан нөхцөлд, блок үүсгэгчид урамшуулал болгон BTC/bitcoin/-г өгдөг.

Одоогийн байдлаар 1 блок үүсгэлтээр олж авах урамшуулал 12.5 BTC учраас хувь хүнд ногдох урамшуулал гэдэг утгаараа маш өндөр мөнгөн дүн юм. Биткойнд энэ мэтийн урамшууллаар мотивацилагдаж, хаш тооцооллын өрсөлдөөн явагдаж байдаг.

Нэмж хэлэхэд, биткойны майнингид Sha256d гэдэг алгоритм ашиглагддаг бөгөөд энэ алгоритмд зориулан оптимизаци хийгдсэн ASIC(Application Specific Integrated Circuit) гэдэг зориулалтын цахилгаан хэлхээ ашигласнаар өндөр хурдны майнинг хийх боломжтой болдог. Хаш утгын бодолтыг илэрхийлэх үзүүлэлт болгож хашрэйт(хаш үүсгэсэн тоо/секунд) ашиглагддаг бөгөөд 2017 оны 3 сарын байдлаар биткойн систем бүхэлд нь авч үзвэл хашрэйт 3,252PH/s(Petahash/second) байдаг бөгөөд маш өндөр тооцон бодох чадвартай болохыг харж болно.

Харьцуулалт болгож, Intel Core i7 5820K бүхий CPU-гээр майнинг хийсэн тохиолдолд хашрэйт нь ойролцоогоор 10MH/s учир, хувь хүн CPU-гээр майнинг хийсэн нөхцөлд блок үүсгэх магадлал 325 тэрбумд 1 болох юм.Солир таарах магадлал 10 тэрбумын нэг гэж хэлэгддэг учраас бодит байдал дээр CPU-гээр хожихгүй гэдэг нь тодорхой.

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

Жишээ нь, хорон санаалсан хэрэглэгч, нэг блокон дахь гүйлгээний агуулгыг өөрчилье гэж үзсэн тохиолдлыг бодож үзье(Гүйлгээний мэдээллийг зассан үед).


Figure 4. Гүйлгээний мэдээллийг зассан үед

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

Энэ блок нь гинжний толгой хэсгээс /гинжний хамгийн шинэ, сүүлд нэмэгдсэн хэсэг/ бусад тохиолдолд, дараагийн блокод энэ блокын хаш утга ашиглагдаж байгаа учраас, дараагийн блокын хаш утгыг мөн өөрчилж бичих шаардлага үүснэ. Ингэмэгц, ээлж дараалан хаш утгыг дахин тооцоолж, хаш утгуудыг өөрчилж бичих шаардлага үүсч, энэ нь гинжний толгой/гинжний хамгийн шинэ, сүүлд нэмэгдсэн хэсэг/ хүртэл үргэлжлэх хэрэгтэй болно. Засъя гэж бодсон блокоос блокын эхэн/гинжний хамгийн шинэ, сүүлд нэмэгдсэн хэсэг/ хүртэлх өөрчлөх хурд(өөрчлөгчийн тооцон бодох resource) нь жинхэнэ гинжний өсөх хурд (биткойн системийн бүх тооцон бодох resource)-г давж гараагүй тохиолдолд уг дайралт амжилтгүй болох учраас гинжний өөрчлөлтийн эсрэг бат бөх гэж хэлэгддэг.


5. Нийцэлтийн алгоритмын ялгаанууд

Гүйцэтгэлийн онцлог

Биткойнд хамгийн урт гинжийг хамгийн их зардал гаргасан гэж үздэг PoW(Proof of Work)-ийн тусламжтайгаар node хоорондын мэдээллийг нэгэн ижил саналд нийцүүлж байгааг танилцуулсан боловч, хувийн блокчэйнд оролцогч node-ын тоог хязгаарлах боломжтой учраас, Paxos гэх мэт уламжлалт, түгээмэл нийцэлтийн алгоритмыг ашиглах нь элбэг байдаг.

Нийтийн(public) болон хувийн (private) блокчэйний нийцэлтийн алгоритмуудыг харьцуулбал, public блокчэйний сонгож авсан нийцэлтийн алгоритм нь оролцогч node-уудын тоо олшрох тусам, гүйлгээний баталгаажуулалтын хурданд нөлөө гарах нь багасах шинж чанартай боловч, гүйлгээний процессийн throughput/хурд/ өндөр биш юм.

Харин хувийн блокчэйнд node-ын тоо нэмэгдэхэд гүйлгээний баталгаажуулалтын хурд буурах боловч, тогтсон тооны node-ын хүрээнд өндөр throughput-тэй байж чаддаг.

Эцэслэн шийдэх чанар/finalty/

Нийтийн болон хувийн блокчэйний нийцэлтийн алгоритмд finalty гэж хэлэгддэг шинж чанарын ялгаа бас бий. Finalty гэдэг нь нэг удаа хийгдсэн гүйлгээний үр дүнг цуцлахгүй(эцэслэн шийдэх) гэдгийг илэрхийлнэ. Энэ чанар нь бодит байдал дээр гүйлгээ хийх үед чухал элемент гэж хэлж болно. Оролцох node-д хязгаарлалт байхгүй нийтийн блокчэйний хувьд finalty-г авч явах нь хэцүү юм.

Жишээ нь блокчэйн дээр Батын үлдэгдэл 1000 төгрөг гэж бичигдсэн байсан гэж үзье. “Батаас Дорж уруу илгээх 600 төгрөг(шилжүүлэг БД гэе)” болон “Батаас Болд руу илгээх 700 төгрөг(шилжүүлэг ББ гэе)” нь нэгэн зэрэг өөр өөр node уруу хүсэлт(request) явсан гэж үзье(БД: Бат → Дорж, ББ: Бат → Болд гэсэн тэмдэглэгээ).

Хараахан аль ч гүйлгээ нь блокчэйн дээр тэмдэглэгдээгүй учраас хүсэлт хүлээж авсан node-ууд аль ч гүйлгээнд Батад хангалттай үлдэгдэл байгаад, гүйлгээг хийхэд асуудалгүй гэж үзнэ. 2 гүйлгээ нь 2-уулаа хүлээн зөвшөөрөгдчихвөл Батын үлдэгдэл хасах 300 төгрөг болж, систем бүхэлдээ хасах үлдэгдэл гэсэн буруу байдалд шилжчихнэ.

Энэ асуудлыг шийдэхийн тулд, [Гүйлгээ БД] юм уу[Гүйлгээ ББ]-гийн аль нь “түрүүлж үүссэн” бэ гэдгийг шийдэх шаардлага гарч байна. [Гүйлгээ БД] нь [Гүйлгээ ББ]-гээс түрүүлж үүссэн гэж үзвэл, [Гүйлгээ БД]-гийн дуусах мөчид Батын үлдэгдэл 400 төгрөг болж, [Гүйлгээ ББ] нь үлдэгдэл мөнгө хүрэлцэхгүй учраас буруу шилжүүлэг болж, блокчэйнд бүртгэгдэхгүй. Эсрэгээрээ [Гүйлгээ ББ] нь [Гүйлгээ БД]-ээс түрүүлж үүссэн бол, [Гүйлгээ БД] нь буруу шилжүүлэг болно.

Нийтийн блокчэйнд node бүр өөрийн хадгалж буй статус дээр үндэслэж, гүйлгээний шалгалтыг явуулдаг. Гүйлгээний шалгалт дууссан үед шалгалт дууссаныг сүлжээн доторх node-уудад цацдаг(broadcast). Шалгалт дууссан тухай мэдэгдэл хүлээж авсан node шалгалт зөв эсэхийг баталгаажуулаад өөрийн статусыг шинэчилдэг. Энэ node нь шинэ гүйлгээ шалгахаар бол, энэхүү шинэчлэгдсэн статус дээр үндэслэж гүйлгээг шалгана.

Дээр бичсэнчлэн, өөр өөр node дээр ялгаатай гүйлгээнүүд шалгагдаж, дууссан тухай мэдэгдэл сүлжээнд цацагдсан тохиолдолд, дууссан тухай мэдэгдлийг хүлээж авсан node өөрийн статусыг аль нэг гүйлгээний үр дүнгээр шинэчлэх шаардлага гарна. Энэ үед дууссан тухай мэдэгдэл хүлээж авсан node шалгалтын үр дүн тус бүрийн гинжний аль уртыг нь сонгож, статусаа шинэчилнэ.

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

Дахин шалгалтын үр дүнд, гүйлгээ нь үнэн зөв байвал сүлжээн дотор дахин цацаж(broadcast) бусад node дээр хүлээж авах хүртэл хүлээнэ. Харин буруу байвал, уг гүйлгээний хүсэлт нь алдаа болно.

Өмнөх жишээн дээр, [Гүйлгээ БД]-ийн гинж [Гүйлгээ ББ]-ийн гинжнээс урт бөгөөд, [Гүйлгээ БД] нь блокчэйнд бичигдсэн гэж үзье. Үүний үр дүнд, Батын хамгийн сүүлийн үлдэгдэл 1000 төгрөгөөс 600 төгрөгөөр хасагдаж, 400 төгрөг болно. Энэ байдалд, [Гүйлгээ ББ]-г шалгаад, үлдэгдэл хүрэлцэхгүй учраас [Гүйлгээ ББ] нь буруу гүйлгээ болж алдаа болно. [Гүйлгээ БД]-г шалгасан нөхцөлийг бодож үзвэл, үлдэгдэл 1000 төгрөг байх үед шалгаад зөв гэсэн дүгнэлт хийгээд, гүйлгээг гүйцэтгэсэн(сүлжээн доторх цацсан) боловч, түүний дараагаар өөр гүйлгээ гүйцэтгэгдэж, тэр нь давуу эрхтэй байсан учраас, үлдэгдэл нь 400 төгрөг болж, [Гүйлгээ БД] нь буруу болсон байна.

Нэгэн зэрэг хийгдэх гүйлгээ нь 2-оос олонгүй байна гэж мэдэж байгаа тохиолдолд, нэг талынх нь гүйлгээг дууссаны дараа нөгөө нэгийг нь гүйцэтгэвэл, дээрх шиг цуцлах тохиолдлыг гаргахгүй байж чадна. Гэвч, тодорхойгүй олон тооны node оролцож байгаа нийтийн блокчэйнд, нэгэн зэрэг хийгдэх гүйлгээ хэд байхыг хэлж мэдэхгүй. [Гүйлгээ БД] болон [Гүйлгээ ББ]-гээс өөр гүйлгээ бас нэгэн зэрэг хийгдэж байгаад, хоёр гүйлгээ хоёулаа цуцлагдах магадлал ч бий.

Энэ мэтчилэн нийтийн блокчэйнд гүйлгээг гүйцэтгэсэн үр дүн цуцлагдахгүй гэсэн finalty гэдэг шинж чанарыг хадгалж чаддаггүй.

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

Жишээ нь, бүх node-оор олонхийн саналаар [Гүйлгээ БД]-г сонгох уу эсвэл [Гүйлгээ ББ]-г сонгох уу гэдгийг шийдэж чаддаг. Сонгогдсон гүйлгээ нь гинжин дээр бүртгэгдэж, түүнээс хойш цуцлагдахгүй болно. Олонхийн саналаар шийдэж байгаа болон үр дүнг нь бүх node дээр хүргэж чадаж байгаа нь оролцогч талуудын тоог хязгаарласан учраас юм.

Тархмал дэвтэр

Энэ хүртэл үзсэн хаш функц болон цахим гарын үсэг, нийцэлтийн алгоритмийн тусламжтайгаар нэгэн тархмал хэлбэрийн P2P сүлжээнд холбогдсон node хоорондын гүйлгээ болон тэдгээрийн цуглуулга болох блокын зөв байдал, блокын жагсаалтанд нийцэж, дундын том хэмжээний өгөгдлийн сангаас хамааралгүйгээр, нэгэн ижил өгөгдлийг бүх node дээрээ аюулгүй бөгөөд найдвартайгаар солилцож байна. Энэ “Гол(дундын) хянагч шаардлагагүйгээр өөр хоорондоо итгэлцээгүй node хооронд өгөгдлийн санг шууд аюулгүйгээр хуваалцаж(share-лэж) чадна” гэдэг шинж чанар нь тархмал дэвтэр буюу блокчэйн юм гэж хэлж болно.

Ухаалаг гэрээ(Smart contract)

Биткойнд зоос(койн)-ны шилжилтийн мэдээллийг бүх оролцогчдод дамжуулна гэсэн тогтолцоотой байсан. Үүний дээр, өөр мөнгөний мэдээлэл болон машин, үл хөдлөх хөрөнгийн эзэмших эрх гэх мэт зүйлсийг token/кодолсон тэмдэгтийн цуваа/ болгоод биткойны гүйлгээнд нэмэлт байдлаар оруулж, эдгээрийг өгч авалцдаг болгох өнгөт койн(colored coin) гэсэн санаа бас гарч ирсэн юм. Гэсэн хэдий ч, биткойны оршин байгаа тогтолцоог тэр хэвээр нь ашиглах учраас, агуулах мэдээллийн хэмжээнд хязгаар байгаа, мөн гүйлгээнд биткойн хэрэгтэй болох зэрэг хязгаарлалтууд байсан. Иймд, Ethereum нь ухаалаг гэрээ гэдэг ойлголтыг оруулсан блокчэйн гэдгийг гаргаж, түүний дараагаар олон тооны блокчэйнд ухаалаг гэрээг оруулж ирсэн.

Ухаалаг гэрээг ашиглавал ямар зүйлийг хийж чаддаг болох вэ. Өргөн ашиглагддаг жишээ гэвэл “Автомат зарагч машинд зоос оруулахад, бараа гарч ирдэг” гэсэн дараалал бүхий урсгал бас ухаалаг гэрээ юм. Энэ мэтчилэн ямар нэг нөхцөлийн дор тогтсон үйлдэл хийдэг зүйлийг ухаалаг гэрээ гэж хэлдэг.

Ухаалаг гэрээ нь нэг үгээр хэлбэл “блокчэйн дээр ажиллана” гэсэн онцлогтой ердийн програм гэж хэлж болно. Ухаалаг гэрээ нь блокчэйн болгоноор нэршил нь өөр өөр байдаг боловч, цаанаа бодит бие нь Javascript(мэтийн хэл), Golang, Java, C# гэх мэтийн ердийн програмчлалын хэлээр бичиж болох програм бөгөөд блокчэйний статус болон хадгалагдаж байгаа дата зэргийг уншиж бичих зориулалттай зүйл юм.

Гэхдээ, “Блокчэйн дээр ажиллана” гэдэг дээр анхаарах зүйл бий. Энэ үгнээс ямар ажиллагаа төсөөлөгдөж байна вэ? Блокчэйн бүхэлдээ 1 нийтлэг процессийн байгууллага, эсвэл оролцогчдын аль нэг нь төлөөлөөд програмыг ажиллуулдаг гэж төсөөлөгдөж байна уу. Үнэндээ аль алинаас нь өөр бөгөөд, бүх node дээр ижил програм ажиллаж, хариултыг нь тааруулдаг гэсэн ажиллагаа болж байгаа юм.

Блокчэйн дээр бүх node нь ижил дата хуваалцдаг, гэдгийг аль хэдийнээ тайлбарласан боловч, энэ нь ухаалаг гэрээний хувьд ч мөн нэгэн адил юм.

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

Ажиллуулах бүрд санамсаргүй тоо ашиглах эсвэл гадны сервертэй холбогдох шаардлагатай үед тэдгээр үйлдлүүдийг oracle(итгэж даагч) гэж нэрлэгддэг 3-дагч этгээдээр гүйцэтгүүлж, олсон утгыг нь ухаалаг гэрээнд дамжуулах гэсэн арга бий. Энэ тохиолдолд, блокчэйн нь зорин байж хийсэн тархмал систем учраас oracle нь цорын ганц эвдрэлийн цэг болохооргүй байх хэрэгтэйг анхаарах хэрэгтэй.


6. Блокчэйний одоо болон ирээдүй

Блокчэйнийг хүрээлэн буй орчин

Аппликэйшн хөгжүүлэлтийн гол талбар байгууллага доторх компьютероос (on-premise software) үүлэн технологи (cloud) уруу шилжсэнтэй адилаар, блокчэйнийг бас хэд хэдэн үүлэн орчинд ашиглах боломжтой.

Голлох үйлчилгээ гэвэл, IBM-н хөгжүүлж буй Hyperledger-ийн үүлэн үйлчилгээ “IBM Bluemix Blockchain” болон Microsoft-ийн үзүүлдэг Ethereum үүлэн үйлчилгээ “Microsoft Azure Blockchain as a Service (BaaS)”, Sakura Интернетийн Tech Bureau-тай хамтран үзүүлдэг NEM-д суурилсан mijin үүлэн үйлчилгээ “mijin cloud service beta” зэрэг бий.

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

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

Технологи болон хууль, эрх зүй

Энэ мэтээр блокчэйний хөгжүүлэлт хийх орчин улам төгөлдөржихийн хамт, хийсвэр мөнгө талаасаа, харамсалтай нь мөнгө угаалтанд ашиглагдах, гэмт хэрэгт ашиглагдах зэрэг нь мөн ихэссээр байна. 2016 оны 5 сард Японд хийсвэр мөнгөний тухай хууль батлагдсан.

Уг хууль хэрэгжиж эхлэхээр, хийсвэр мөнгө “Төлбөрийн хэрэгсэл болгон ашиглаж болох хөрөнгө” гэж тодорхойлогдсон бөгөөд (ердийн марк болон кредит карттай адилаар) хийсвэр мөнгийг хууль ёсны мөнгөн тэмдэгттэй солих үед татвар ногдуулахгүй болох юм.

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

Блокчэйний боломжууд

Блокчэйнийг цаашид ямар салбарт хэрэглэгдэхээр харагдаж байгаа талаар танилцуулъя. Эхний хэрэглээний салбар бол, биткойн гол төлөөлөл нь болж буй хийсвэр мөнгө юм.

Уламжлалт банк санхүүгийн байгууллагаар дамжуулж гүйлгээ хийх нь төвөгтэй шат дамжлагатай мөн шимтгэл өндөртэй, хугацаа их шаарддаг. Блокчэйн ашигласан хийсвэр мөнгөний хувьд ийм дундын зуучлагч шаардахгүйгээр гүйлгээ хийх боломжтой бас гүйлгээний шимтгэл бага, цаг хугацаа хэмнэдэг. Ялангуяа улс хооронд мөнгө илгээхэд дээрх давуу талуудыг мэдрэх болно. 2015 оны байдлаар, дэлхий даяар илгээж буй мөнгөн дүн ойролцоогоор 60 их наяд иентэй дүйцэхүйц том зах зээл байна.

Дараагийн салбар нь баримт бичгийн баталгаажуулалт (нотариат) юм. Засах боломжгүй гэдэг шинж чанарыг ашиглан, блокчэйн дээр баримт бичиг, эсвэл баримт бичгийн хаш утгыг хадгалснаар, тэрхүү баримт бичиг нэг цаг үед байсан, мөн тухайн үеийн агуулга нь өөрчлөгдөөгүй гэдгийг баталж чадна.

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

Технологиос гадна, хууль эрх зүйн хүрээнд ч бас өөрчлөлт орж байна. Ялангуяа Fintech-ийн хувьд олон компани хүчээ үзэж байна.

Сэтгэгдэл

gerelmaa.n