Oracle acak adhedhasar tandha digital ing blockchain
Saka gagasan kanggo implementasine: kita ngowahi skema teken digital kurva elliptic sing wis ana supaya bisa ditemtokake, lan adhedhasar iku, kita nyedhiyakake fungsi kanggo entuk nomer pseudo-acak sing bisa diverifikasi ing blockchain.
Bingung babagan pitakonan iki, pungkasane aku nggawe kesimpulan: blok apa wae minangka sel; ora mungkin entuk sumber entropi sing dipercaya ing sistem tertutup.
Nanging aku isih disenengi siji idea: yen oracle acak bakal mlebu data pangguna kanthi algoritma deterministik, mula pangguna bakal tansah bisa verifikasi teken kasebut nggunakake kunci umum, lan bakal yakin yen nilai sing diasilake unik. Oracle, ora preduli sepira angel, ora bisa ngganti apa-apa; algoritma kasebut ngasilake asil sing ora jelas. Ateges, pangguna nyathet asil kasebut, nanging ora ngerti nganti oracle nerbitake. Pranyata sampeyan ora bisa dipercaya oracle, nanging priksa asil karyane. Banjur, yen verifikasi sukses, tandha kasebut bisa dianggep minangka sumber entropi kanggo nomer pseudorandom.
Platform blockchain Waves nggunakake skema teken EdDSA pilihan Ed25519. Ing skema iki, teken kasusun saka nilai R lan S, ing ngendi R gumantung marang nilai acak, lan S diitung adhedhasar pesen sing ditandatangani, kunci pribadi lan nomer acak sing padha karo R. Ternyata ora ana katergantungan unik kanggo padha Ana akeh teken bener kanggo pesen pangguna.
Temenan, ing wangun murni, tandha kasebut ora bisa digunakake minangka sumber nomer pseudo-acak, amarga iku non-deterministik lan, mulane, bisa gampang dimanipulasi dening oracle.
Nanging, minangka ternyata, iku bener bisa kanggo nggawe deterministik.
Ing skema kasebut, ora preduli carane R tetep; iki tetep dadi tanggung jawab oracle. Penting yen S ditemtokake kanthi unik dening pangguna, nanging regane ora dingerteni nganti oracle nerbitake. Kabeh sing dikarepake!
Ngomong babagan R tetep, elinga dienggo maneh R nalika mlebu macem-macem pesen, unik mbukak kunci pribadi ing rencana EdDSA. Dadi penting banget kanggo pemilik oracle kanggo ngilangi kemungkinan nggunakake maneh R kanggo mlebu pesen pangguna sing beda. Yaiku, kanthi manipulasi utawa kolusi, oracle mesthi bakal kelangan kunci pribadi.
Secara total, oracle kudu nyedhiyakake rong fungsi kanggo pangguna: initialization, sing ndandani nilai R, lan teken, sing ngasilake nilai S. Ing kasus iki, pasangan R, S minangka teken biasa sing bisa diverifikasi saka pesen pangguna sing ngemot tetep. nilai R lan data panganggo kasepakatan.
Bisa diarani yen skema iki kanggo pamblokiran ora luwih saka biasa skema commit-expand. Intine, ya, iku dheweke. Nanging ana sawetara nuansa. Sepisanan, oracle tansah dianggo karo tombol padha ing kabeh operasi, contone, iki trep kanggo nggunakake ing kontrak. Kapindho, ana risiko oracle bakal kelangan kunci pribadi yen tumindak ora bener, contone, oracle ngidini sampeyan nggawe conto asil, mula cukup kanggo nggawe rong tes kanggo ngerteni kunci pribadi lan entuk lengkap. akses menyang dompet. Katelu, teken sing bisa diverifikasi kanthi asli ing pamblokiran lan minangka sumber acak sing apik.
Nem sasi gagasan implementasine simmered ing sirah, nganti pungkasanipun motivasi muncul ing wangun hibah saka Waves Labs. Kanthi hibah gedhe teka tanggung jawab gedhe, mula proyek kasebut bakal ana!
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
Dadi, ing proyek iki VECRO dileksanakake ing pamblokiran Waves ing mode request-respon nggunakake transaksi transfer antarane pangguna lan oracle. Ing wektu sing padha, skrip dipasang ing akun oracle sing ngontrol karya kanthi ketat miturut logika sing kasebut ing ndhuwur. Transaksi Oracle diverifikasi lan kabeh rantai interaksi pangguna dibalekake. Kabeh papat transaksi melu verifikasi nilai pungkasan; kontrak cerdas nggabungake benang verifikasi sing ketat, mriksa kabeh nilai kanthi langkah lan ora menehi ruang kanggo manipulasi.
Sepisan maneh, kanggo nyelehake lan nggawe luwih cetha. Oracle ora mung bisa digunakake miturut skema sing diusulake. Karya kasebut dikontrol kanthi lengkap ing tingkat blockchain dening sing diadegake tightly karo kontrak pinter. Langkah ngiwa lan transaksi mung ora bakal ditindakake. Dadi, yen transaksi kalebu ing pamblokiran, pangguna ora perlu mriksa apa-apa; atusan simpul jaringan wis mriksa kabeh kanggo dheweke.
Kirimi paling ora 0.005 Gelombang menyang oracle alias init@vecr;
Nampa R-kode ing lapangan lampiran ing transfer 1 token R-vecr saka oracle kanggo pangguna;
Njaluk teken;
Kirimi paling ora 0.005 Gelombang kanggo oracle alias random@vecr, lan uga kudu nuduhake R-kode lan data pangguna tambahan sing ditampa sadurunge ing kolom lampiran;
Nampa kode S ing kolom lampiran ing transfer 1 token S-vecr saka oracle menyang pangguna;
Gunakake S-kode minangka sumber nomer pseudo-acak.
Nuansa saka implementasine saiki:
Gelombang sing dikirim menyang oracle digunakake minangka komisi kanggo transaksi bali menyang pangguna, nganti maksimal 1 Gelombang;
R-kode punika concatenation saka bait saka karakter 'R' lan 32-bait nilai R base58-encoded;
R-kode ing lampiran kudu pisanan, data pangguna teka sawise R-kode;
S-kode punika concatenation saka bait saka karakter 'S' lan 32-bait Nilai base58-encoded saka S;
S minangka asil saka divisi modulo, supaya sampeyan ora bisa nggunakake S minangka nomer pseudorandom 256-bit lengkap (nomer iki bisa dianggep minangka nomer pseudorandom maksimal 252-bit);
Pilihan sing paling gampang yaiku nggunakake hash S-code minangka nomer pseudo-random.
Saka sudut pandang teknis, oracle wis siap digunakake, sampeyan bisa nggunakake kanthi aman. Saka sudut pandang panggunaan pangguna rata-rata, ana kekurangan antarmuka grafis sing trep; iki kudu ngenteni.
Aku bakal seneng njawab pitakonan lan nampa komentar, matur nuwun.