Санаанаас хэрэгжүүлэх хүртэл: бид одоо байгаа зууван муруй дижитал гарын үсгийн схемийг тодорхойлогч байхаар өөрчилдөг бөгөөд үүн дээр үндэслэн бид блокчейн дотор шалгах боломжтой псевдо санамсаргүй тоо авах функцуудыг хангадаг.
Санаа
2018 оны намар Waves блокчейн багтсан
Энэ асуултын талаар толгойгоо гашилгаж, би эцэст нь ийм дүгнэлтэд хүрсэн: аливаа блокчейн бол эс бөгөөд хаалттай системд энтропийн найдвартай эх үүсвэрийг олж авах боломжгүй юм.
Гэхдээ надад нэг санаа таалагдсан: хэрэв
Waves блокчэйн платформ нь гарын үсэг зурах схемийг ашигладаг
Мэдээжийн хэрэг, цэвэр хэлбэрээр ийм гарын үсгийг псевдо санамсаргүй тоонуудын эх үүсвэр болгон ашиглах боломжгүй, учир нь энэ нь тодорхойгүй тул oracle амархан удирдаж болно.
Гэхдээ үүнийг тодорхой болгох нь үнэндээ боломжтой юм.
Би маш их итгэл найдвар тавьж байсан
Бага зэрэг бодож, орон нутгийн шинжээчдийн дэмжлэгийг авсны дараа VECRO-ийн ажлын схем гарч ирэв.
VECRO гэдэг нь Verfiable Elliptic Curve Random Oracle гэсэн үгийн товчлол бөгөөд оросоор зууван муруй дээр шалгах боломжтой санамсаргүй oracle гэсэн утгатай.
Бүх зүйл маш энгийн болсон; детерминизмд хүрэхийн тулд гарын үсэг зурах мессеж гарч ирэхээс өмнө R-ийн утгыг засах хэрэгтэй. Хэрэв R нь гарын үсэг зурж буй мессежийн нэг хэсэг бөгөөд энэ нь гарын үсэг зурж буй мессежэнд R-ийг оруулсан эсэхийг баталгаажуулдаг бол S-ийн утга нь хэрэглэгчийн мессежээр тодорхойлогддог тул псевдор санамсаргүй тоонуудын эх сурвалж болгон ашиглаж болно.
Ийм схемд R-ийг хэрхэн засах нь хамаагүй, энэ нь oracle-ийн үүрэг хэвээр байна. S нь хэрэглэгч өөрөө тодорхойлогддог байх нь чухал боловч oracle үүнийг нийтлэх хүртэл түүний үнэ цэнэ тодорхойгүй байна. Бидний хүссэн бүх зүйл!
Тогтмол R-ийн тухай ярихдаа үүнийг анхаарна уу
Нийтдээ oracle нь хэрэглэгчдэд R утгыг засдаг эхлүүлэх, S утгыг буцаадаг гарын үсэг гэсэн хоёр функцээр хангах ёстой. Энэ тохиолдолд R, S хос нь тогтмол мэдээллийг агуулсан хэрэглэгчийн мессежийн ердийн баталгаажуулах гарын үсэг юм. R утга ба дурын хэрэглэгчийн өгөгдөл.
Блокчэйний энэхүү схем нь энгийн зүйлээс өөр зүйл биш гэж маргаж болно
Зургаан сарын турш хэрэгжүүлэх санаа миний толгойд эргэлдэж, эцэст нь хүсэл эрмэлзэл хэлбэрээр гарч ирэх хүртэл
Реализация
Тиймээс, энэ төсөлд
Дахиад нэг хойш тавьж, илүү ойлгомжтой болгохын тулд. Оркул нь зөвхөн санал болгож буй схемийн дагуу ажилладаггүй. Түүний ажлыг блокчейн түвшинд бүрэн хянадаг
Одоогийн байдлаар Waves үндсэн сүлжээнд нэг VECRO ажиллаж байна (та өөрөө ажиллуулж болно, энэ нь хэцүү биш, зүгээр л
Oracle үйлчилгээг ашиглахын тулд та:
- R засах;
- Oracle alias init@vecr руу дор хаяж 0.005 долгион илгээх;
- Oracle-аас хэрэглэгч рүү 1 R-vecr жетон шилжүүлэхдээ хавсралтын талбарт R-код хүлээн авах;
- гарын үсэг авах;
- Random@vecr-д дор хаяж 0.005 долгион илгээх, мөн хавсралт талбарт өмнө нь хүлээн авсан R-код болон хэрэглэгчийн нэмэлт мэдээллийг ЗААВАЛ зааж өгөх ёстой;
- Oracle-аас хэрэглэгч рүү 1 S-vecr жетон шилжүүлэхдээ хавсралтын талбарт S-код хүлээн авах;
- Pseudo-санамсаргүй тооны эх үүсвэр болгон S-код ашиглана уу.
Одоогийн хэрэгжилтийн нюансууд:
- Oracle руу илгээсэн долгионыг хэрэглэгч рүү буцаах гүйлгээний шимтгэл болгон ашигладаг, дээд тал нь 1 долгион;
- R-код нь 'R' тэмдэгтийн байт ба 32 байт суурь58 кодлогдсон R утгын холболт юм;
- Хавсралт дахь R-код эхлээд байх ёстой, хэрэглэгчийн мэдээлэл R-кодын дараа ирдэг;
- S-код нь 'S' тэмдэгтийн байт ба S-ийн 32 байт суурь58 кодлогдсон утгыг холбох явдал юм;
- S нь модулийн хуваагдлын үр дүн тул та S-г бүрэн 256 бит псевдор санамсаргүй тоо болгон ашиглах боломжгүй (энэ тоог дээд тал нь 252 битийн псевдор санамсаргүй тоо гэж үзэж болно);
- Хамгийн энгийн сонголт бол S-кодын хэшийг псевдо санамсаргүй тоо болгон ашиглах явдал юм.
S-код хүлээн авах жишээ:
- Эхлүүлэх:
https://wavesexplorer.com/tx/8gc8jwM7JrPNehoDs7NVyos7BsufYktvkwVW1B6FAY6 - R-код авах:
https://wavesexplorer.com/tx/9eB25SbzEwvHEbm8pcKj7MGDrYv1u3Fxpj696FkJ96hd - R-код гарын үсэг зурах үр дүн болон хэрэглэгчийн өгөгдлийг "санамсаргүй байдлаар" асууж байна:
https://wavesexplorer.com/tx/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz - S-код хүлээн авах:
https://wavesexplorer.com/tx/C5VrFLQcprbA1KXAToaNvMP4Kg2rq43NkwWuADAA7wXX
Техникийн үүднээс авч үзвэл oracle ажиллахад бүрэн бэлэн байгаа тул та үүнийг аюулгүй ашиглаж болно. Энгийн хэрэглэгчийн хэрэглээний үүднээс харахад тохиромжтой график интерфэйс байхгүй тул хүлээх хэрэгтэй болно.
Би асуултанд хариулж, санал хүсэлтийг хүлээж авахдаа баяртай байх болно, баярлалаа.
Эх сурвалж: www.habr.com