Энэ нийтлэлд би DAG (Directed Acyclic Graph) болон түүний тархсан дэвтэрт хэрхэн хэрэглэгдэх талаар ярьж, блокчэйнтэй харьцуулах болно.
DAG бол криптовалютуудын ертөнцөд шинэ зүйл биш юм. Та үүнийг блокчейн өргөтгөлийн асуудлыг шийдэх шийдэл гэж сонссон байх. Гэхдээ өнөөдөр бид өргөтгөх чадварын тухай ярихгүй, харин криптовалютыг бусад бүх зүйлээс юугаараа ялгаатай болгодог талаар ярих болно: төвлөрлийг сааруулах, зуучлагчдын дутагдал, цензурын эсэргүүцэл.
DAG нь үнэндээ цензурд илүү тэсвэртэй бөгөөд дэвтэрт нэвтрэх зуучлагч байхгүй гэдгийг би танд харуулах болно.
Бидний сайн мэддэг блокчейн дээр хэрэглэгчид дэвтэрт шууд хандах эрхгүй байдаг. Бүртгэлийн дэвтэрт гүйлгээ нэмэхийг хүсвэл блок үйлдвэрлэгчээс ("уурхайчин" гэх) "хүсэх" хэрэгтэй. Дараагийн блок дээр аль гүйлгээг нэмэх, алийг нь нэмэхгүй байхыг уурхайчид шийддэг. Уурхайчид блокуудад онцгой эрхтэй бөгөөд хэний гүйлгээг дэвтэрт оруулахыг шийдэх эрхтэй.
Уурхайчид бол та болон тараасан дэвтэр хоёрын хооронд зуучлагч юм.
Практикт ихэвчлэн цөөн тооны уурхайчдын цөөрөм нь сүлжээний тооцоолох хүчин чадлын талаас илүү хувийг хамтад нь хянадаг. Bitcoin-ийн хувьд эдгээр нь дөрвөн усан сан, Ethereum-ийн хувьд хоёр. Хэрэв тэд тохиролцсон бол хүссэн гүйлгээг хааж болно.
Сүүлийн хэдэн жилийн хугацаанд блок үйлдвэрлэгчдийг сонгох зарчмаараа ялгаатай блокчейн олон хувилбаруудыг санал болгосон. Гэхдээ блок үйлдвэрлэгчид өөрсдөө хаашаа ч явахгүй, тэд "саад дээр зогсож байна": гүйлгээ бүр блок үйлдвэрлэгчээр дамжих ёстой бөгөөд хэрэв тэр үүнийг хүлээн зөвшөөрөхгүй бол гүйлгээ нь үнэндээ байхгүй болно.
Энэ бол блокчейнтэй холбоотой зайлшгүй асуудал юм. Тэгээд шийдье гэвэл хийцийг үндсээр нь өөрчилж, блок, блок үйлдвэрлэгчдээс бүрмөсөн ангижрах ёстой. Мөн блокуудын гинжин хэлхээ үүсгэхийн оронд бид гүйлгээ бүрт өмнөх хэд хэдэн хэшийг багтаасан гүйлгээг өөрсдөө холбох болно. Үүний үр дүнд бид математикт чиглэсэн ациклик график гэж нэрлэгддэг бүтцийг олж авдаг - DAG.
Одоо хүн бүр зуучлагчгүйгээр бүртгэлд шууд хандах боломжтой. Бүртгэлийн дэвтэрт гүйлгээ нэмэхийг хүсвэл зүгээр л нэмнэ. Та хэд хэдэн эцэг эхийн гүйлгээг сонгож, мэдээллээ нэмж, гарын үсэг зурж, сүлжээн дэх нөхдөдөө гүйлгээгээ илгээнэ үү. Бэлэн. Үүнийг хийхэд тань хэн ч саад болохгүй тул таны гүйлгээ аль хэдийн дэвтэрт байна.
Энэ бол зуучлагчгүйгээр гүйлгээг дэвтэрт нэмэх хамгийн төвлөрсөн бус, хамгийн цензургүй арга юм. Учир нь хүн бүр хэнээс ч зөвшөөрөл авалгүйгээр гүйлгээгээ бүртгэлд нэмдэг.
DAG-ийг бүртгэлийн хувьслын гурав дахь шат гэж үзэж болно. Эхлээд төвлөрсөн бүртгэлүүд байсан бөгөөд нэг тал нь тэдгээрт хандах хандалтыг хянадаг байв. Дараа нь блокчэйн гарч ирсэн бөгөөд тэдгээр нь бүртгэлд гүйлгээг бүртгэдэг хэд хэдэн хянагчтай байсан. Эцэст нь, DAG-д хянагч байхгүй, хэрэглэгчид гүйлгээгээ шууд нэмдэг.
Одоо нэгэнт ийм эрх чөлөө байгаа болохоор эмх замбараагүй байдал үүсгэх ёсгүй. Бид бүртгэлийн төлөв байдлын талаар тохиролцсон байх ёстой. Энэхүү тохиролцоо буюу зөвшилцөл нь ихэвчлэн хоёр зүйл дээр тохиролцсон гэсэн үг юм.
- Юу болсон бэ?
- Энэ нь ямар дарааллаар болсон бэ?
Бид эхний асуултанд амархан хариулж чадна: зөв үүсгэсэн гүйлгээг дэвтэрт нэмсний дараа энэ нь болсон. Мөн хугацаа. Энэ тухай мэдээлэл бүх оролцогчдод өөр өөр цаг үед хүрч болох боловч эцэст нь бүх зангилаа энэ гүйлгээг хүлээн авч, энэ нь болсон гэдгийг мэдэх болно.
Хэрэв блокчэйн байсан бол уурхайчид юу болохыг шийдэх байсан. Уурхайчин блокт оруулахаар шийдсэн бүх зүйл нь тохиолддог. Түүний блокт оруулаагүй бүх зүйл тохиолддоггүй.
Блокчейн дээр уурхайчид зөвшилцлийн хоёр дахь асуудлыг шийддэг: захиалга. Тэд блок доторх гүйлгээг хүссэнээрээ захиалах боломжтой.
DAG дахь гүйлгээний дарааллыг хэрхэн тодорхойлох вэ?
Бидний график чиглүүлсэн учраас бид аль хэдийн тодорхой дараалалтай болсон. Гүйлгээ бүр нь нэг буюу хэд хэдэн өмнөх, эцэг эхтэй холбоотой. Эцэг эх нь эргээд эцэг эхдээ ханддаг гэх мэт. Эцэг эхчүүд хүүхдийн гүйлгээний өмнө гарч ирдэг нь ойлгомжтой. Хэрэв гүйлгээний аль нэгийг эцэг эх, хүүхдийн холбоосын шилжилтээр хийх боломжтой бол бид тухайн гүйлгээний хэлхээн дэх гүйлгээний хоорондын дарааллыг яг таг мэддэг.
Гэхдээ гүйлгээ хоорондын дарааллыг зөвхөн графикийн хэлбэрээс л тодорхойлж болохгүй. Жишээлбэл, хоёр гүйлгээ нь графикийн зэрэгцээ салбарууд дээр байх үед.
Ийм тохиолдолд хоёрдмол утгатай байдлыг арилгахын тулд бид захиалгын үйлчилгээ үзүүлэгч гэж нэрлэгддэг хүмүүст найдаж байна. Бид тэднийг бас "гэрч" гэж нэрлэдэг. Эдгээр нь сүлжээнд тогтмол гүйлгээг эмх цэгцтэй илгээх үүрэгтэй энгийн хэрэглэгчид юм. Ингэснээр тэдний өмнөх гүйлгээ бүрд эцэг эх-хүүхдийн холбоосын дагуу шилжих замаар хүрч болно. Захиалгын үйлчилгээ үзүүлэгчид нь найдвартай хэрэглэгчид бөгөөд энэ дүрмийг зөрчихгүйн тулд сүлжээ бүхэлдээ тэдэн дээр тулгуурладаг. Төлөө оновчтой Тэдэнд итгэвэл бид захиалга хангагч бүр нь танигдсан (нэрээ нууцалсан) хүн эсвэл байгууллага байх ёстой бөгөөд итгэлцэлд суурилсан нэр хүнд, бизнес гэх мэт дүрмийг зөрчсөн тохиолдолд алдах зүйлтэй байхыг бид шаарддаг.
Захиалгын үйлчилгээ үзүүлэгчдийг хэрэглэгчид сонгодог бөгөөд хэрэглэгч бүр сүлжээнд илгээсэн гүйлгээ бүрт итгэмжлэгдсэн үйлчилгээ үзүүлэгчийнхээ жагсаалтыг багтаадаг. Энэ жагсаалт нь 12 үйлчилгээ үзүүлэгчээс бүрдэнэ. Энэ нь тухайн хүн тус бүрийн хэн болох, нэр хүндийг нь шалгахад хангалттай бага тоо бөгөөд цөөн тооны захиалгын үйлчилгээ үзүүлэгчид зайлшгүй асуудал гарсан тохиолдолд сүлжээг үргэлжлүүлэн ажиллуулахад хангалттай юм.
Энэ үйлчилгээ үзүүлэгчдийн жагсаалт нь хэрэглэгч бүрт харилцан адилгүй байдаг ч хөрш зэргэлдээх гүйлгээний жагсаалт нь нэг хүртэл үйлчилгээ үзүүлэгчийн хувьд өөр байж болно.
Одоо бид захиалгын үйлчилгээ үзүүлэгчтэй болсон тул бид тэдний гүйлгээг DAG болгон тусгаарлаж, тэдний үүсгэсэн захиалгын дагуу бусад бүх гүйлгээг захиалж болно. Ийм алгоритм үүсгэх боломжтой (харна уу.
Гэхдээ бүхэл сүлжээний дарааллыг шууд тодорхойлох боломжгүй, бид өмнөх гүйлгээний эцсийн дарааллыг шалгахын тулд захиалга хангагчид хангалттай тооны гүйлгээ илгээх цаг хэрэгтэй.
Захиалга нь зөвхөн DAG дахь үйлчилгээ үзүүлэгчдийн гүйлгээний байрлалаар тодорхойлогддог тул сүлжээн дэх бүх зангилаа эрт орой хэзээ нэгэн цагт бүх гүйлгээг хүлээн авч, гүйлгээний дарааллын талаар ижил дүгнэлтэд хүрнэ.
Тиймээс, бид юу болсон гэж үзэж байгаа талаар тохиролцож байна: DAG-д дууссан аливаа гүйлгээ нь болсон. Үйл явдлын дарааллын талаар бид мөн тохиролцож байна: энэ нь гүйлгээний харилцаанаас тодорхой харагдаж байна, эсвэл захиалга нийлүүлэгчийн илгээсэн гүйлгээний дарааллаас харагдаж байна. Тиймээс бид нэгдсэн байр суурьтай байна.
Бид Obyte дээр зөвшилцлийн энэ хувилбартай. Хэдийгээр Obyte дэвтэрт нэвтрэх бүрэн төвлөрсөн бус боловч гүйлгээний дарааллын талаархи зөвшилцөл төвлөрсөн хэвээр байна. 10 үйлчилгээ үзүүлэгчийн 12-ыг бүтээгч (Антон Чурюмов) хянадаг бөгөөд зөвхөн хоёр нь бие даасан байдаг. Бид дэвтрийн захиалгын төвлөрлийг сааруулахад туслах бие даасан захиалга нийлүүлэгчдийн нэг болох хүсэлтэй нэр дэвшигчдийг хайж байна.
Саяхан гурав дахь бие даан нэр дэвшигч Никосиягийн Их Сургууль болох захиалга нийлүүлэгчийн зангилаа суурилуулах, засвар үйлчилгээ хийх хүсэлтэй гарч ирэв.
Одоо бид давхар зардлыг хэрхэн хянах вэ?
Дүрэм журмын дагуу хэрэв нэг зоосыг зарцуулсан хоёр гүйлгээ илэрсэн бол бүх гүйлгээний эцсийн дарааллаар нэгдүгээрт орсон гүйлгээ нь хожно. Хоёр дахь нь зөвшилцлийн алгоритмаар хүчингүй болсон.
Хэрэв ижил зоосыг зарцуулсан хоёр гүйлгээний хооронд (эцэг эх, хүүхдийн холболтоор) дэг журам тогтоох боломжтой бол бүх зангилаа хоёр дахин зарцуулах оролдлогыг нэн даруй үгүйсгэдэг.
Хэрэв ийм хоёр гүйлгээний хоорондох эцэг эхийн харилцаанаас захиалга харагдахгүй байгаа бол тэдгээрийг хоёуланг нь дэвтэрт хүлээн зөвшөөрсөн бөгөөд захиалга нийлүүлэгчдийг ашиглан тэдгээрийн хоорондын зөвшилцөл, дарааллыг тогтоохыг хүлээх шаардлагатай болно. Дараа нь өмнөх гүйлгээ нь ялж, хоёр дахь нь хүчингүй болно.
Хоёрдахь гүйлгээ хүчингүй болсон ч энэ нь бүртгэлд хэвээр үлддэг, учир нь түүнд холбогдох дараагийн гүйлгээнүүд байгаа бөгөөд энэ нь юу ч зөрчөөгүй бөгөөд ирээдүйд энэ гүйлгээ хүчингүй болно гэдгийг мэдээгүй болно. Үгүй бол бид дараагийн сайн гүйлгээний эцэг эхийг хасах хэрэгтэй бөгөөд энэ нь сүлжээний үндсэн зарчмыг зөрчих болно - аливаа зөв гүйлгээг дэвтэрт хүлээн зөвшөөрнө.
Энэ бол бүхэл бүтэн систем нь цензурын оролдлогод тэсвэртэй байх боломжийг олгодог маш чухал дүрэм юм.
Бүх захиалгын үйлчилгээ үзүүлэгчид нэг тодорхой гүйлгээг "цензурлах" оролдлого хийдэг гэж төсөөлөөд үз дээ. Тэд үүнийг үл тоомсорлож, гүйлгээнийхээ "эцэг эх"-ээр хэзээ ч сонгохгүй байж болох ч энэ нь хангалттай биш, сүлжээний аливаа хэрэглэгчийн хийсэн бусад гүйлгээний эцэг эхийн хувьд гүйлгээг шууд бусаар оруулж болно. Цаг хугацаа өнгөрөхөд ийм гүйлгээ нь энгийн хэрэглэгчдээс улам олон хүүхэд, ач зээ, гучийг хүлээн авч, цасан бөмбөг шиг өсөх бөгөөд тохиролцсон бүх захиалга хангагчид эдгээр гүйлгээг үл тоомсорлох болно. Эцсийн эцэст тэд сүлжээг бүхэлд нь цензурдах ёстой бөгөөд энэ нь хорлон сүйтгэх ажиллагаатай адил юм.
Ийм байдлаар DAG нь захиалга нийлүүлэгчдийн хооронд тохиролцоо байсан ч цензурд тэсвэртэй хэвээр байгаа бөгөөд ингэснээр уурхайчид ямар ч гүйлгээг оруулахгүй гэж шийдсэн тохиолдолд бид юу ч хийж чадахгүй цензурд тэсвэртэй блокчейныг давж байна. Энэ нь DAG-ийн үндсэн өмчөөс үүдэлтэй: бүртгэлд оролцох нь бүрэн бие даасан, зуучлагчгүй бөгөөд гүйлгээ нь эргэлт буцалтгүй байдаг.
Эх сурвалж: www.habr.com