Ngerteni Protokol Konsensus Stellar

Ngerteni Protokol Konsensus Stellar

Protokol konsensus Stellar pisanan diterangake ing artikel ilmiah David Mazier ing 2015. Iki minangka "sistem persetujuan Bizantium federal" sing ngidini jaringan komputasi sing didesentralisasi lan tanpa pimpinan kanggo entuk konsensus kanthi efisien babagan keputusan. Jaringan pembayaran Stellar nggunakake Protokol Konsensus Stellar (SCP) kanggo njaga riwayat transaksi sing konsisten sing katon kanggo kabeh peserta.

Protokol konsensus dianggep angel dimangerteni. SCP luwih prasaja tinimbang sing paling akeh, nanging isih duwe reputasi iki - sebagian amarga salah paham yen "voting federasi", sing dadi subyek saka separo pisanan artikel ilmiah, yaiku SCP. Nanging kuwi ora bener! Iki mung minangka blok bangunan penting sing digunakake ing separo kapindho artikel kanggo nggawe nyatane Protokol konsensus lintang.

Ing artikel iki, kita bakal nerangake kanthi ringkes apa "sistem perjanjian", apa sing bisa nggawe "Byzantine" lan kenapa nggawe sistem Bizantium "federal". Kita banjur bakal nerangake prosedur voting federasi diterangake ing artikel SCP, lan pungkasanipun kita bakal nerangake protokol SCP dhewe.

Sistem persetujuan

Sistem persetujuan ngidini klompok peserta entuk konsensus babagan topik, kayata apa sing kudu dipesen kanggo nedha awan.

Ing Interstellar, kita wis ngleksanakake sistem persetujuan panedhaan kita dhewe: kita supaya apa manager operasi kita, John, ngandika. Iki minangka sistem persetujuan sing prasaja lan efektif. Kita kabeh percaya marang John lan percaya yen dheweke bakal nemokake sing menarik lan nutritious saben dina.

Nanging piyé nèk Yohanes nglanggar kapercayan kita? Dheweke bisa mutusake yen kita kabeh kudu dadi vegan. Ing seminggu utawa rong minggu, kita bakal bisa nggulingake dheweke lan nyerahake kekuwatan marang Elizabeth. Nanging dumadakan dheweke seneng avocado karo iwak teri lan mikir yen kabeh wong kudu kaya ngono. Kekuwatan ngrusak. Dadi luwih becik golek cara sing luwih demokratis: sawetara cara kanggo mesthekake yen pilihan sing beda-beda dianggep, nalika mesthekake asil sing pas wektune lan ora ambigu, supaya ora ana sing pungkasane pesen nedha awan, utawa limang wong nggawe pesenan sing beda, utawa diskusi. nyeret ing wayah sore.

Iku bakal katon yen solusi iku prasaja: terus voting! Nanging iki kesengsem mblusukake. Sapa sing bakal ngumpulake surat suara lan nglaporake asil? Lan apa sebabé wong liya kudu percaya karo omongané? Mbok menawa kita bisa ing wiwitan milih pimpinan sing dipercaya kanggo mimpin pemilihan - nanging sing bakal mimpin sing pisanan kanthi voting? Apa yen kita ora setuju karo pimpinan? Utawa apa yen kita entuk persetujuan, nanging pimpinan iki macet ing rapat utawa cuti sakit?

Masalah sing padha dumadi ing jaringan komputer sing disebarake. Kabeh peserta utawa simpul kudu setuju ing sawetara kaputusan, kayata sing giliran kanggo nganyari file sing dienggo bareng utawa mbusak tugas saka antrian pangolahan. Ing jaringan cryptocurrency, simpul bola-bali kudu milih kaya apa crita lengkap saka sawetara versi sing bisa, sing kadhangkala konflik. Persetujuan jaringan iki menehi jaminan marang panampa yen koin kasebut (a) bener (ora palsu) lan (b) durung ngginakaken ing papan liya. Iki uga mesthekake yen dheweke bakal bisa nglampahi dhuwit recehan ing mangsa ngarep amarga panampa anyar bakal duwe jaminan sing padha kanggo alasan sing padha.

Sembarang sistem konsensus ing jaringan komputasi sing disebarake kudu fault-tolerant: kudu ngasilake asil sing konsisten sanajan ana kesalahan kayata link alon, node ora responsif, lan pesen pesen sing salah. Bizantium Sistem persetujuan uga tahan kanggo kasalahan "Byzantine": simpul sing menehi informasi palsu, apa amarga kesalahan utawa ing upaya sengaja kanggo ngrusak sistem utawa entuk sawetara keuntungan. Toleransi kesalahan "Byzantine" - kemampuan kanggo ngandelake keputusan klompok sanajan sawetara anggota klompok bisa ngapusi utawa ora ngetutake aturan nggawe keputusan - diarani pasemon bab jenderal saka Kakaisaran Bizantiumsing nyoba kanggo koordinasi serangan. Katrangan sing apik ing Anthony Stevens.

Coba pemilik koin crypto Alice, sing kudu milih antarane tuku es krim sing enak saka Bob lan mbayar utang Carol. Mbok Alice pengin mbayar loro-lorone bebarengan dening fraudulently mbuwang duwit receh padha. Kanggo nindakake iki, dheweke kudu gawe uwong yakin komputer Bob sing duwit receh ora tau mbayar kanggo Carol, lan gawe uwong yakin komputer Carol sing duwit receh ora tau mbayar kanggo Bob. Sistem perjanjian Bizantium ndadekake iki meh ora mungkin, nggunakake wangun aturan mayoritas sing disebut kuorum. A simpul ing jaringan kuwi nolak kanggo pindhah menyang versi tartamtu saka sajarah nganti weruh sing nomer cekap saka ora pati cetho - a quorum - setuju kanggo transisi kuwi. Sawise kedadeyan kasebut, dheweke bakal nggawe blok voting sing cukup gedhe kanggo meksa simpul jaringan sing isih ana kanggo setuju karo keputusane. Alice bisa meksa sawetara kelenjar ngapusi kanggo dheweke, nanging yen jaringan cukup gedhe, nyoba dheweke bakal kepunjulen dening votes saka kelenjar jujur.

Pira node sing dibutuhake kanggo kuorum? Paling ora, mayoritas, utawa luwih, mayoritas sing nduweni kualifikasi kanggo nglawan kesalahan lan penipuan. Nanging kanggo ngetung mayoritas, sampeyan kudu ngerti jumlah total peserta. Ing kantor Interstellar utawa ing pemilihan kabupaten, angka kasebut gampang ditemokake. Nanging yen grup sampeyan minangka jaringan sing ora ditemtokake ing ngendi simpul bisa mlebu lan metu kanthi sewenang-wenang tanpa persetujuan saka pusat, mula sampeyan kudu federal sistem persetujuan Bizantium sing bisa nemtokake kuorum ora saka dhaptar simpul sing wis ditemtokake, nanging kanthi dinamis, saka gambar node sing tansah owah-owahan lan mesthi ora lengkap ing wektu tartamtu.

Iku bisa uga koyone mokal kanggo nggawe quorum saka perspektif simpul siji ing jaringan jembar, nanging bisa. Kuorum kuwi malah bisa njamin asil voting desentralisasi. Kertas putih SCP nuduhake carane nindakake iki nggunakake prosedur disebut kanthi voting federal.

Kanggo sing ora sabar

Liyane artikel kasebut nggambarake voting federasi lan protokol konsensus Stellar kanthi luwih rinci. Yen sampeyan ora kasengsem ing rincian, kene ringkesan umum saka proses.

  1. Node nindakake babak voting federal babagan "nominasi". Babak pemilihan federal tegese:
    • Node votes kanggo sawetara statement, contone, "Aku propose Nilai V";
    • Simpul ngrungokake swarane kanca-kanca nganti nemokake sing bisa "nampa";
    • Node nggoleki "quorum" kanggo pernyataan iki. A quorum "konfirmasi" nominasi.
  2. Sawise simpul bisa konfirmasi siji utawa luwih nominasi, iku nyoba kanggo "nyiapake" "surat suara" liwat sawetara babak voting federasi.
  3. Sawise simpul bisa kanggo verifikasi kertu suoro wis siyap, iku nyoba kanggo tundhuk liwat babak luwih saka voting federasi.
  4. Sawise simpul bisa konfirmasi commit saka kertu suoro, bisa "externalize" Nilai saka kertu suoro kanthi nggunakake minangka asil konsensus.

Langkah-langkah kasebut kalebu pirang-pirang putaran voting federasi, sing sacara kolektif mbentuk siji babak SCP. Ayo dideleng kanthi cetha apa sing kedadeyan ing saben langkah.

Voting Federasi

Voting Federasi minangka prosedur kanggo nemtokake manawa jaringan bisa setuju karo proposal. Ing babak voting, saben simpul kudu milih salah siji saka potensi akeh nilai bisa. Iku ora bisa nindakake iki kajaba iku manteb ing ati sing kelenjar liyane ing jaringan ora bakal milih asil beda. Kanggo mesthekake iki, simpul ngganti barrage pesen bolak-balik supaya kabeh wong dikonfirmasi, sing kuorum knots njupuk sing padha keputusan. Liyane saka bagean iki nerangake istilah ing ukara iki lan carane kabeh prosedur dumadi.

Kuorum lan irisan kuorum

Ayo diwiwiti kanthi nemtokake kuorum. Nalika kita rembugan ndhuwur, ing jaringan desentralisasi karo anggota dinamis, iku mokal kanggo ngerti ing advance nomer simpul lan mulane carane akeh sing dibutuhake kanggo mayoritas. Voting Federasi ngrampungake masalah iki kanthi ngenalake ide anyar potong kuorum (irisan kuorum): A pesawat cilik saka kanca-kanca sing simpul dipercaya kanggo komunikasi informasi status voting kanggo liyane saka jaringan. Saben simpul nemtokake irisan kuorum dhewe (sing dadi anggota de facto).

Pembentukan kuorum diwiwiti kanthi potongan kuorum. Kanggo saben simpul, simpul sing dipotong ditambahake. Banjur istilah irisan ditambahake simpul iki lan liya-liyane. Nalika sampeyan nerusake, ana liyane lan liyane kelenjar sing ora bisa ditambahake amarga padha wis klebu ing irisan. Nalika ora ana simpul anyar sing kudu ditambahake, proses kasebut mandheg: kita wis mbentuk kuorum kanthi "penutupan transitif" irisan kuorum simpul awal.

Ngerteni Protokol Konsensus Stellar
Kanggo nemokake kuorum saka simpul tartamtu ...

Ngerteni Protokol Konsensus Stellar
... nambah anggota irisan ...

Ngerteni Protokol Konsensus Stellar
...banjur nambahake anggota irisan saka simpul kasebut.

Ngerteni Protokol Konsensus Stellar
Kita terus nganti ora ana simpul sing bisa ditambahake.

Ngerteni Protokol Konsensus Stellar

Ngerteni Protokol Konsensus Stellar
Ora ana simpul sing bisa ditambahake. Iki quorum.

Nyatane, saben simpul bisa katon ing luwih saka siji irisan. Kanggo mbentuk kuorum, pilih mung siji saka irisan lan nambah anggota; banjur pilih irisan kanggo saben anggota lan nambah anggota iku dipotong lan liya-liyane. Iki tegese saben simpul minangka anggota saka akeh kuorum sing bisa ditindakake.

Ngerteni Protokol Konsensus Stellar
Pilih mung siji irisan kuorum ing saben langkah.

Ngerteni Protokol Konsensus Stellar

Ngerteni Protokol Konsensus Stellar

Ngerteni Protokol Konsensus Stellar
Siji kuorum bisa. Utawa alternatif ...

Ngerteni Protokol Konsensus Stellar
...pilih irisan liyane...

Ngerteni Protokol Konsensus Stellar

Ngerteni Protokol Konsensus Stellar
…(nalika bisa)…

Ngerteni Protokol Konsensus Stellar
... nggawe quorum liyane.

Kepiye simpul ngerti irisan simpul liyane? Kanthi cara sing padha karo informasi liyane babagan kelenjar liyane: saka transmisi sing saben simpul nyebar menyang jaringan nalika negara voting diganti. Saben siaran kalebu informasi babagan irisan simpul sing ngirim. Kertas putih SCP ora nemtokake mekanisme komunikasi. Implementasi biasane digunakake protokol gosip kanggo njamin siaran pesen ing saindhenging jaringan.

Elinga yen ing sistem perjanjian Byzantine non-federal, kuorum ditetepake minangka mayoritas kabeh simpul. Sistem persetujuan Bizantium dirancang saka sudut pandang pitakonan: pira simpul sing ora jujur ​​​​bisa ditoleransi dening sistem? Ing sistem simpul N sing dirancang kanggo slamet saka kegagalan, sawijining simpul kudu bisa maju kanthi nampa umpan balik saka N−f kanca amarga f bisa uga mudhun. Nanging sawise nampa respon saka N−f kanca, kita bisa nganggep yen kabeh f kanca (saka simpul ora nampa respon) bener jujur. Mangkono, f saka N−f kanca-kanca (saka ngendi respon ditampa) angkoro. Supaya simpul teka ing konsensus sing padha, mayoritas simpul sing isih ana kudu jujur, yaiku, kita butuh N−f luwih gedhe tinimbang 2f utawa N > 3f. Dadi biasane sistem sing dirancang kanggo urip kegagalan f bakal duwe total N = 3f + 1 simpul lan ukuran kuorum 2f + 1. Sawise proposal ngliwati ambang kuorum, jaringan liyane yakin manawa proposal sing saingan bakal gagal. Iki carane jaringan converges kanggo asil.

Nanging ing sistem persetujuan Byzantine federal, ora mung ora bisa mayoritas (amarga ora ana sing ngerti ukuran total jaringan), nanging konsep mayoritas ora ana gunane! Yen keanggotaan ing sistem kasebut mbukak, mula wong bisa entuk mayoritas mung kanthi nindakake serangan Sybil sing diarani: bola-bali gabung karo jaringan ing pirang-pirang simpul. Dadi kenapa bisa diarani penutupan irisan transitif kuorum, lan carane iku bisa kanggo nyuda usulan-usulan saingan?

Secara teknis, ora ana cara! Mbayangno jaringan enem kelenjar, ngendi loro triplets diisolasi ing irisan kuorum saben liyane. Subgrup pisanan bisa nggawe keputusan sing ora bakal dirungokake sing nomer loro, lan kosok balene. Ora ana cara kanggo jaringan iki kanggo nggayuh konsensus (kajaba kanthi kasempatan).

Mulane, SCP mbutuhake yen kanggo voting federasi (lan kanggo téorema penting saka kertas kanggo aplikasi), jaringan kudu duwe properti disebut prapatan kuorum. Ing jaringan karo properti iki, loro quorums sing bisa dibangun tansah tumpang tindih ing paling siji simpul. Kanggo nemtokake sentimen sing ana ing jaringan kasebut, iki pancen apike minangka mayoritas. Kanthi intuisi, iki tegese yen ana kuorum sing setuju karo pernyataan X, ora ana kuorum liyane sing bisa setuju karo apa wae, amarga kudu kalebu sawetara simpul saka kuorum pisanan sing wis milih X.

Ngerteni Protokol Konsensus Stellar
Yen ana persimpangan kuorum ing jaringan ...

Ngerteni Protokol Konsensus Stellar
...banjur loro kuorum sampeyan bisa mbangun ...

Ngerteni Protokol Konsensus Stellar
... bakal tansah intersect.

Ngerteni Protokol Konsensus Stellar

Ngerteni Protokol Konsensus Stellar

(Mesthi, simpul tumpang tindih bisa uga dadi Byzantine-lying utawa liya ala. Ing kasus iki, persimpangan kuorum ora mbantu jaringan setuju kabeh. Mulane, akeh asil ing kertas putih SCP adhedhasar asumsi eksplisit, kayata apa sing isih ana ing persimpangan kuorum jaringan malah sawise njabut simpul ala. Kanggo gamblang, ayo ninggalake asumsi kasebut implisit ing artikel liyane).

Koyone ora masuk akal yen nyebrang kuorum bisa dipercaya ing jaringan simpul independen. Nanging ana rong sebab kenapa kaya ngono.

Alesan pisanan yaiku anané Internet dhewe. Internet minangka conto sampurna saka jaringan simpul independen kanthi kuorum sing intersecting. Umume simpul ing Internet mung disambungake menyang sawetara simpul lokal liyane, nanging set cilik iki cukup tumpang tindih supaya saben simpul bisa digayuh saka saben simpul liyane ing sawetara rute.

Alesan liya yaiku khusus kanggo jaringan pembayaran Stellar (panggunaan SCP sing paling umum). Saben aset ing jaringan Stellar duwe sing ngetokake sekuritas, lan pedoman Stellar mbutuhake saben sing ngetokake sekuritas kanggo nemtokake siji utawa luwih simpul ing jaringan kanggo ngolah panjalukan penebusan. Iku kanggo kapentingan sing paling apik kanggo langsung utawa ora langsung nyakup simpul kasebut ing irisan kuorum kanggo saben aset sing sampeyan minati. Kuorum kanggo kabeh simpul sing kasengsem ing aset tartamtu bakal tumpang tindih paling ora ing simpul penebusan kasebut. Node sing kasengsem ing macem-macem aset bakal kalebu kabeh simpul penebusan saka sing ngetokake sekuritas ing irisan kuorum, lan bakal ngupayakake kabeh aset bebarengan. Kajaba iku, sembarang aset sing ora disambung ing cara iki kanggo liyane ing jaringan, lan ora kudu disambungake - iki dirancang supaya ora ana tumpang tindih kuorum kanggo jaringan iki (contone, bank-bank saka zona dollar kadhangkala pengin perdagangan karo bank-bank saka zona euro lan bank-bank saka zona peso, supaya padha ing jaringan sing padha, nanging ora ana. saka wong-wong mau Care babagan jaringan kapisah saka anak sade kertu baseball).

Mesthi, pangajab nyebrang kuorum ora njamin. Sistem perjanjian Bizantium liyane duwe tanggung jawab akeh kerumitan kanggo njamin kuorum. Inovasi penting SCP yaiku mbusak tanggung jawab kanggo nggawe kuorum saka algoritma konsensus dhewe lan nggawa menyang tingkat aplikasi. Mangkono, sanajan voting federasi cukup umum kanggo milih masalah apa wae, linuwih kasebut pancen gumantung banget marang makna sing luwih jembar saka makna kasebut. Sawetara panggunaan hipotetis bisa uga ora kondusif kanggo nggawe jaringan sing nyambung kanthi apik kaya liyane.

Voting, acceptance lan konfirmasi

Ing babak voting federasi, simpul opsional miwiti voting kanggo sawetara nilai V. Iki tegese nyiarake pesen menyang jaringan: "Aku simpul N, irisan kuorumku Q, lan aku milih V." Nalika simpul votes cara iki, janji sing wis tau milih marang V lan ora bakal.

Ing siaran peer-to-peer, saben simpul ndeleng carane wong liya milih. Sawise simpul wis nglumpukake cukup pesen kasebut, bisa nglacak irisan kuorum lan nyoba golek kuorum. Yen dheweke ndeleng kuorum kanca sing uga milih V, dheweke bisa nerusake adopsi V lan siaran pesen anyar iki menyang jaringan: "Aku simpul N, irisan kuorumku Q, lan aku nampa V." Penerimaan menehi jaminan sing luwih kuat tinimbang voting sing prasaja. Nalika simpul votes kanggo V, iku tau bisa milih opsi liyane. Nanging yen simpul nampa V, ora simpul ing Jaringan bakal nampa pilihan liyane (Teorema 8 ing kertas putih SCP mbuktekaken iki).

Mesthi, ana kemungkinan dhuwur sing ora bakal langsung dadi kuorum kelenjar sing setuju karo V. Kelenjar liyane bisa milih kanggo nilai liyane. Nanging ana cara liya kanggo simpul kanggo pindhah saka voting prasaja kanggo acceptance. N bisa nampa nilai beda kanggo W, malah yen dheweke ora milih kanggo, lan malah yen dheweke ora weruh quorum kanggo. Kanggo mutusake ngganti swara sampeyan, delengen set pamblokiran simpul sing wis nampa W. A set pamblokiran iku siji simpul saka saben irisan kuorum N. Minangka jeneng tabet, iku bisa pamblokiran teges liyane. Yen kabeh simpul ing set kasebut nampa W, mula (dening Teorema 8) ora bakal bisa mbentuk kuorum sing njupuk nilai sing beda, lan mulane uga aman kanggo N nampa W.

Ngerteni Protokol Konsensus Stellar
Node N kanthi telung irisan kuorum.

Ngerteni Protokol Konsensus Stellar
BDF minangka set pamblokiran kanggo N: kalebu siji simpul saka saben irisan N.

Ngerteni Protokol Konsensus Stellar
BE uga minangka set pamblokiran kanggo N amarga E katon ing rong irisan N.

Nanging set pamblokiran ora kuorum. Iku bakal gampang banget kanggo trick simpul N kanggo nampa nilai sing dikarepake yen cukup hack mung siji simpul ing saben irisan-irisan N. Mulane, nampa Nilai ora pungkasan voting. Nanging, N kudu konfirmasi nilai, yaiku, ndeleng kuorum kelenjar sing nampa. Yen dadi adoh, banjur, minangka SCP whitepaper mbuktekaken (ing Teorema 11), liyane saka jaringan uga pungkasanipun konfirmasi Nilai padha, supaya N bakal mungkasi voting federasi karo nilai tartamtu minangka asil.

Ngerteni Protokol Konsensus Stellar
Voting Federasi.

Proses voting, acceptance, lan konfirmasi minangka siji babak lengkap voting federasi. Protokol konsensus Stellar nggabungake akeh babak kasebut kanggo nggawe sistem konsensus lengkap.

Protokol Konsensus Lintang

Loro sifat sing paling penting saka sistem konsensus yaiku - safety и kaslametan. Algoritma konsensus "aman" yen ora bisa menehi asil sing beda kanggo peserta sing beda (salinan riwayat Bob ora bakal mbantah Carol). "Livability" tegese algoritma bakal tansah ngasilake asil, yaiku, ora bakal macet.

Diterangake prosedur voting federal aman ing pangertèn sing yen simpul nandheske ing Nilai saka V, ora simpul liyane bakal konfirmasi Nilai liyane. Nanging "ora bakal ngonfirmasi makna liyane" ora ateges bakal ngonfirmasi apa wae. Peserta bisa milih kanthi macem-macem nilai sing ora bakal tekan ambang ditampa. Iki tegese ing voting federal ora ana kaslametan.

Protokol konsensus Stellar nggunakake voting federasi kanthi cara sing njamin keamanan lan kaslametan. (Jaminan keamanan lan kelangsungan hidup SCP duwe watesan teoritis. Desain kasebut milih jaminan keamanan sing kuwat banget, ngorbanake mitigasi kelangsungan urip sing cilik, nanging diwenehi wektu sing cukup, konsensus bisa digayuh.) Ing ringkesan, ide kasebut yaiku nduwe pirang-pirang swara federasi ing pirang-pirang nilai nganti salah sijine bisa ngliwati kabeh fase voting SCP sing diterangake ing ngisor iki.

Nilai sing SCP golek konsensus bisa dadi riwayat transaksi utawa pesenan nedha awan utawa liya-liyane, nanging penting kanggo dicathet yen iki dudu nilai sing ditampa utawa dikonfirmasi. Nanging, voting federal dumadi miturut statements babagan nilai-nilai kasebut.

Babak pisanan saka voting federal njupuk Panggonan ing tataran nominasi (fase nominasi), ing sakumpulan statement kaya "Aku nyalonake V," mbok menawa kanggo macem-macem nilai V. Tujuan nominasi kanggo nemokake siji utawa luwih statements sing liwat acceptance lan konfirmasi.

Sawise nemokake calon sing bisa diverifikasi, SCP pindhah menyang tahap voting, ing ngendi tujuane kanggo nemokake buletin (yaiku, wadhah kanggo nilai ngajokaken) lan kuorum sing bisa wara-wara prasetya kanggo iku (komit). Yen kuorum nindakake pemungutan suara, nilai kasebut ditampa minangka konsensus. Nanging sadurunge simpul bisa milih ing voting commit, iku kudu konfirmasi dhisik pembatalan kabeh ballots karo Nilai counter ngisor. Langkah-langkah iki - mbatalake kertu suoro kanggo nemokake sing bisa ditindakake - nyakup pirang-pirang putaran voting federasi ing pirang-pirang tuntutan surat suara.

Bagean ing ngisor iki njlèntrèhaké nominasi lan voting kanthi luwih rinci.

nominasi

Ing wiwitan fase nominasi, saben simpul bisa kanthi spontan milih nilai kanggo V lan milih statement "Aku nyalonake V." Tujuan ing tahap iki yaiku kanggo konfirmasi nominasi sawetara nilai liwat voting federasi.

Mbok cukup simpul milih ing propositions cukup beda sing ora nominasi bisa tekan ambang acceptance. Mulane, saliyane nyiarake swara nominasi dhewe, simpul "nggambarake" nominasi saka kanca-kancane. Echo tegese yen simpul milih kanggo nominasi V, nanging ndeleng pesen saka pepadhamu sing milih nominasi W, saiki bakal milih V lan W. nominasi beda. SCP kalebu mekanisme kanggo ngatur votes iki. Cekakipun, ana rumus kanggo nemtokake "prioritas" peer saka titik simpul, lan mung votes saka simpul prioritas dhuwur dibayangke. Sing maneh nominasi njupuk, ing ngisor batesan, supaya simpul ngembangaken pesawat saka ora pati cetho kang votes bakal nggambarake Rumus prioritas kalebu nomer slot minangka salah siji input, supaya peer prioritas dhuwur kanggo siji slot bisa dadi peer prioritas kurang kanggo. liyane, lan kosok balene).

Secara konseptual, nominasi kasebut sejajar, V lan W minangka swara federal sing kapisah, saben individu bisa nampa panriman utawa konfirmasi. Ing laku, pesen protokol SCP paket votes individu iki bebarengan.

Senajan voting kanggo nominasi V iku janji kanggo tau milih marang nominasi V, iku ing tingkat aplikasi - ing kasus iki SCP - ditemtokake apa "marang" tegese. SCP ora ndeleng pratelan sing mbantah swara "Aku nyalonake X", yaiku, ora ana pesen "Aku nglawan nominasi X", saengga simpul bisa milih kanggo nyalonake nilai apa wae. Akeh nominasi kasebut ora bakal ana, nanging pungkasane simpul kasebut bakal bisa nampa utawa ngonfirmasi siji utawa luwih nilai. Sawise nominasi dikonfirmasi, dheweke dadi calon.

Ngerteni Protokol Konsensus Stellar
Nominasi SCP nggunakake voting federasi. Bisa uga ana akeh nilai "B" sing diterusake dening kanca-kanca lan "dibayangke" dening simpul.

Nominasi bisa nyebabake sawetara calon sing dikonfirmasi. Mulane, SCP mbutuhake lapisan aplikasi kanggo nyedhiyakake sawetara cara kanggo nggabungake calon dadi siji gabungan (komposit). Cara gabung bisa apa wae. Ingkang utama yaiku yen metode iki deterministik, mula saben simpul bakal nggabungake calon sing padha. Ing sistem voting nedha awan, "penyatuan" bisa uga tegese nolak siji saka rong calon. (Nanging kanthi cara deterministik: saben simpul kudu milih nilai sing padha kanggo ngreset. Contone, pilihan sadurungé ing urutan abjad). Ing jaringan pembayaran Stellar, ing ngendi riwayat transaksi dipilih, nggabungake rong nominasi sing diusulake kalebu nggabungake transaksi sing ana lan paling anyar saka rong cap wektu.

SCP whitepaper mbuktekaken (Teorema 12) sing ing pungkasan phase extension, jaringan pungkasanipun converges menyang komposit siji. Nanging ana masalah: voting federasi minangka protokol asinkron (kaya SCP). Ing tembung liyane, simpul ora dikoordinasi dening wektu, nanging mung dening pesen sing dikirim. Saka sudut pandang simpul, ora jelas kapan rampung fase extension. Lan sanajan kabeh simpul pungkasane bakal teka ing komposit sing padha, bisa uga njupuk rute sing beda-beda ing sadawane dalan, nggawe kandidat komposit sing beda-beda ing sadawane dalan, lan ora bisa ngomong sing endi sing pungkasan.

Nanging normal. Nominasi mung persiapan. Sing utama yaiku mbatesi jumlah calon kanggo entuk konsensus, sing kedadeyan ing proses kasebut mlaku kanggo kantor (pemungutan suara).

mlaku

Bulletin iku pasangan , ngendi counter minangka integer sing diwiwiti ing 1 lan nilai minangka calon saka tataran nominasi. Iki bisa dadi calon simpul dhewe utawa calon simpul tetanggan sing ditampa dening simpul kasebut. Kira-kira, kertu suoro kalebu nyoba bola-bali kanggo meksa jaringan kanggo nggayuh konsensus ing sawetara calon ing sawetara kertu suoro kanthi nyekel akeh suara federasi ing pernyataan suara. Counter ing surat suara nglacak upaya sing ditindakake, lan surat suara kanthi jumlah sing luwih dhuwur luwih dhisik tinimbang surat suara kanthi jumlah sing luwih murah. Yen buletin macet, voting anyar diwiwiti, saiki ing voting .

Iku penting kanggo mbedakake angka (contone, apa pesenan nedha awan: pizza utawa salad), buletin (pasangan counter-value) lan pratelan babagan surat suara. Babak SCP kalebu sawetara babak voting federal, utamane babagan pernyataan ing ngisor iki:

  • "Aku siap kanggo nindakake kertu suoro B" lan
  • "Aku ngumumake komit saka pemungutan suara B"

Saka sudut pandang simpul tartamtu, konsensus bisa digayuh nalika nemokake surat suara B sing bisa ngonfirmasi (yaiku, nemokake kuorum sing nrima) pernyataan "Aku nggawe surat suara B." Saka titik iki, iku aman kanggo tumindak ing Nilai kasebut ing B - contone, manggonke pesenan iki kanggo nedha awan. Iku diarani eksternalisasi tegesipun. Sawise nampa kertu suoro dikonfirmasi, simpul bisa yakin manawa simpul liyane wis ngeksternalisasi nilai sing padha utawa bakal ditindakake ing mangsa ngarep.

Senadyan akeh voting federasi sing sacara konseptual ditindakake ing tuntutan kanggo macem-macem ballots, padha ora ijol-ijolan minangka akeh pesen amarga saben pesen encapsulates sawetara ballots. Siji pesen kanthi mangkono ningkatake negara akeh swara federasi bebarengan, contone: "Aku nampa surat suara sing mulai saka sadurunge "

Apa tegese istilah "siap" lan "komit"?

A voting simpul kanggo nindakake kertu suoro nalika iku manteb ing ati sing kelenjar liyane ora bakal nindakake ballots karo nilai beda. Meyakinake iki minangka tujuan nyiapake aplikasi kasebut. Swara sing ujar "Aku siyap milih B" minangka janji ora bakal nggawe surat suara sing luwih cilik tinimbang B, yaiku kanthi jumlah sing luwih cilik (SCP mbutuhake nilai-nilai ing surat suara ing urutan tartamtu. Mangkono, newsletter kurang , yen N1

Apa sebabe "Aku siyap nggawe surat suara B" tegese "Aku janji ora bakal nggawe surat suara sing luwih cilik tinimbang B"? Amarga SCP nemtokake abort minangka kebalikan saka komitmen. A voting kanggo nyiapake kertu suoro uga melu voting kanggo mbatalake sawetara ballots liyane, lan, minangka kita rembugan sadurungé, voting kanggo siji bab iku janji ora bakal milih marang.

Sadurunge nyebarake komitmen, simpul kudu nemokake buletin sing bisa dikonfirmasi minangka disiapake. Ing tembung liyane, iku nindakake voting federasi ing topik "Aku siyap kanggo tundhuk kertu suoro B," bisa uga ing macem-macem ballots, nganti ketemu siji sing nampa kuorum.

Saka ngendi asale surat suara kanggo nyiapake pemungutan suara? Kaping pisanan, simpul kasebut nyiarake persiapan kanggo milih <1,C>, ing ngendi C minangka calon gabungan sing diprodhuksi ing tahap nominasi. Nanging, sanajan sawise persiapan kanggo voting diwiwiti, nominasi bisa nyebabake calon tambahan katon dadi surat suara anyar. Sauntara kuwi, kanca-kanca bisa duwe calon sing beda-beda lan bisa nggawe set pamblokiran sing nampa "Aku siyap nggawe kertu suoro B2" sing bakal ngyakinake simpul kasebut uga nampa. Akhire, ana mekanisme wektu entek sing ngasilake babak anyar voting federasi ing ballots anyar karo counts luwih yen ballots saiki macet.

Sanalika simpul nemokake kertu suoro B sing bisa dikonfirmasi kaya sing wis disiapake, simpul kasebut bakal ngirim pesen anyar "Komit kertu B." Voting iki ngandhani kanca-kanca sing simpul ora bakal nyerah B. Ing kasunyatan, yen B iku kertu suoro , banjur "Komit swara " tegese idin tanpa syarat kanggo milih kanggo kesiapan saben surat suara saka kanggo <∞, s>. Nilai ekstra iki mbantu kanca-kanca liyane nyekel kanca sing komit yen isih ana ing tahap awal protokol kasebut.

Ing tahap iki, kudu ditekanake maneh manawa iki minangka protokol asinkron. Mung amarga siji simpul ngirim upvotes kanggo commit ora ateges kanca-kancane uga. Sawetara wong-wong mau isih bisa milih pratelan kanggo nyiapake pemungutan suara, liyane bisa uga wis ngeksternalisasi makna kasebut. SCP nerangake carane simpul kudu ngolah saben jinis pesen peer preduli saka phase sawijining.

Yen pesen "Aku wis ngumumake komitmen » ora bisa ditampa utawa dikonfirmasi, yaiku, kemungkinan pesen ditampa utawa dikonfirmasi utawa - utawa, ing kasus apa wae, kertu suara kanthi nilai C, lan ora liya, amarga simpul kasebut wis janji ora bakal mbatalake . Nalika simpul nyebarake voting kanggo komitmen, bakal dadi C utawa ora ana apa-apa, gumantung saka jarak konsensus. Nanging, iki durung cukup kanggo simpul kanggo eksternalisasi C. Sawetara kanca-kanca Bizantium (sing kurang saka kuorum, adhedhasar asumsi keamanan kita) bisa uga ngapusi simpul kasebut. Nampa lan banjur ngonfirmasi sawetara kertu suoro (utawa sawetara ballots) iku sing menehi simpul kapercayan kanggo pungkasane njaba C.

Ngerteni Protokol Konsensus Stellar
SCP voting liwat voting federasi. Ora ditampilake: Timer bisa mati sawayah-wayah, nambahi cacah ing surat suara (lan bisa uga ngasilake gabungan anyar saka calon nominasi tambahan).

Lan iku kabeh! Sawise jaringan wis tekan konsensus, iku siap kanggo nindakake maneh lan maneh. Ing jaringan pembayaran Stellar, iki kedadeyan kira-kira sapisan saben 5 detik: prestasi sing mbutuhake keamanan lan kaslametan sing dijamin dening SCP.

SCP bisa nggayuh iki kanthi ngandelake pirang-pirang babak voting federasi. Voting Federasi bisa ditindakake kanthi konsep irisan kuorum: sekumpulan kanca sing saben simpul wis mutusake dipercaya minangka bagean saka kuorum (subyektif). Konfigurasi iki tegese konsensus bisa digayuh sanajan ing jaringan kanthi keanggotaan terbuka lan penipuan Bizantium.

Wacan luwih lanjut

  • Kertas putih SCP asli bisa ditemokake kenelan kene draf spesifikasi kanggo implementasine.
  • Penulis asli protokol SCP, David Mazier, nerangake kanthi cara sing disederhanakake (nanging isih teknis). kene.
  • Sampeyan bisa uga kaget amarga ora nemokake istilah "pertambangan" utawa "bukti kerja" ing artikel iki. SCP ora nggunakake cara kasebut, nanging sawetara algoritma konsensus liyane. Zane Witherspoon nulis bisa diakses ringkesan algoritma konsensus.
  • Katrangan langkah demi langkah jaringan prasaja sing tekan konsensus ing siji babak lengkap SCP.
  • Kanggo nonton kasengsem ing implementasine SCP: ndeleng Kode C++, digunakake dening jaringan pembayaran Stellar, utawa Go kode, sing aku nulis kanggo luwih ngerti SCP.

Source: www.habr.com

Add a comment