Ngartos Protokol Konsensus Stellar

Ngartos Protokol Konsensus Stellar

Protokol konsensus Stellar munggaran dijelaskeun dina artikel ilmiah David Mazier dina 2015. Ieu "sistem perjangjian Bizantium féderal" anu ngamungkinkeun desentralisasi, jaringan komputasi leaderless pikeun éfisién ngahontal konsensus dina kaputusan. Jaringan pembayaran Stellar ngagunakeun Stellar Consensus Protocol (SCP) pikeun ngajaga sajarah transaksi anu konsisten anu katingali ku sadaya pamilon.

protokol konsensus dianggap hésé ngarti. SCP leuwih basajan ti kalobaannana, tapi masih babagi reputasi ieu - sabagean alatan pamanggih salah yén "voting federated", nu subyek satengah mimiti artikel ilmiah, nyaeta SCP. Tapi éta henteu leres! Ieu ngan hiji blok wangunan penting nu satengah kadua artikel ngagunakeun pikeun nyieun sabenerna Protokol konsensus stellar.

Dina artikel ieu kami bakal ngajelaskeun sakeudeung naon a "sistem pasatujuan", naon bisa nyieun "Bizantium" jeung naha nyieun sistem Bizantium "féderal". Urang lajeng bakal ngajelaskeun prosedur voting federated digambarkeun dina artikel SCP, sarta tungtungna urang ngajelaskeun protokol SCP sorangan.

Sistem pasatujuan

Sistem perjangjian ngamungkinkeun sakelompok pamilon pikeun ngahontal konsensus ngeunaan hiji topik, sapertos naon anu kedah dipesen pikeun tuang siang.

Di Interstellar, kami parantos ngalaksanakeun sistem perjanjian makan sorangan: kami mesen naon saur manajer operasi kami, John. Ieu sistem perjangjian basajan tur éféktif. Urang sadayana percanten ka John sareng yakin yén anjeunna bakal mendakan anu pikaresepeun sareng bergizi unggal dintenna.

Tapi kumaha upami John nyalahgunakeun kapercayaan urang? Anjeunna tiasa nyalira mutuskeun yén urang sadayana kedah janten vegan. Dina saminggu atanapi dua minggu, urang sigana bakal ngagulingkeun anjeunna sareng nyerahkeun kakawasaan ka Elizabeth. Tapi ujug-ujug manehna mikanyaah alpukat jeung teri sarta nyangka dulur kudu kawas éta. Kakuasaan ngaruksak. Janten langkung saé milarian metode anu langkung demokratis: sababaraha cara pikeun mastikeun yén karesep anu béda dipertimbangkeun, bari mastikeun hasil anu pas sareng teu ambigu, ku kituna teu aya anu ngeureunkeun mesen tuang siang, atanapi lima urang nempatkeun pesenan anu béda, atanapi diskusi. nyeredet kana sonten.

Éta sigana yén solusina saderhana: tahan sora! Tapi ieu téh gambaran nyasabkeun. Saha anu bakal ngumpulkeun surat suara sareng ngalaporkeun hasil? Jeung naha batur kudu percaya naon manéhna nyebutkeun? Sugan we tiasa mimitina milih pamimpin anu kami percaya pikeun mingpin voting - tapi anu bakal mingpin éta kahiji ku voting? Kumaha lamun urang teu bisa satuju kana pamingpin? Atanapi kumaha upami urang ngahontal kasapukan, tapi pamimpin ieu macét dina rapat atanapi cuti sakit?

Masalah anu sami lumangsung dina jaringan komputer anu disebarkeun. Sadaya pamilon atanapi titik kedah satuju kana sababaraha kaputusan, sapertos giliran pikeun ngapdet file anu dibagikeun atanapi ngahapus tugas tina antrian ngolah. Dina jaringan cryptocurrency, titik sababaraha kali kudu milih kumaha carita pinuh Sigana ti sababaraha versi mungkin, nu kadang konflik. pasatujuan jaringan ieu nyadiakeun jaminan ka panarima yén koin téh (a) valid (teu palsu) jeung (b) teu acan spent nguap. Ieu ogé ensures yén anjeunna bakal tiasa méakkeun koin dina mangsa nu bakal datang sabab panarima anyar bakal boga jaminan sarua pikeun alesan anu sarua.

Sakur sistem konsensus dina jaringan komputasi anu disebarkeun kedah toleran kasalahan: éta kedah ngahasilkeun hasil anu konsisten sanajan aya kasalahan sapertos tautan anu laun, titik anu teu responsif, sareng pesenan pesen anu salah. Bizantium Sistem perjangjian ogé tahan kana kasalahan "Bizantium": titik anu masihan inpormasi palsu, naha kusabab kasalahan atanapi dina usaha ngahaja pikeun ngarusak sistem atanapi nampi sababaraha kauntungan. Kasabaran kasalahan "Bizantium" - kamampuan pikeun ngandelkeun kaputusan grup sanajan sababaraha anggota grup tiasa ngabohong atanapi henteu nuturkeun aturan pembuatan kaputusan - disebut pasemon ngeunaan jenderal Kakaisaran Bizantiumanu nyoba koordinat serangan. katerangan alus di Anthony Stevens.

Pertimbangkeun pamilik koin crypto Alice, anu kedah milih antara mésér és krim anu enak ti Bob sareng mayar hutang Carol. Panginten Alice hoyong mayar duanana sakaligus ku cara ngabébaskeun koin anu sami. Jang ngalampahkeun ieu, manehna kudu ngayakinkeun komputer Bob yén koin ieu pernah dibayar ka Carol, sarta ngayakinkeun komputer Carol yén koin ieu pernah dibayar ka Bob. Sistem perjangjian Bizantium ngajadikeun ieu ampir teu mungkin, ngagunakeun wangun aturan mayoritas disebut kuorum. Titik dina jaringan sapertos kitu nolak ngalih ka versi tinangtu tina sajarah dugi ka ningali yén jumlah peers anu cekap - kuorum - satuju kana transisi sapertos kitu. Sakali ieu kajantenan, aranjeunna bakal ngabentuk blok sora anu cukup ageung pikeun maksa titik-titik jaringan sésana pikeun satuju sareng kaputusanana. Alice tiasa maksa sababaraha titik pikeun ngabohong atas nama dirina, tapi lamun jaringan cukup badag, usaha nya bakal overwhelmed ku sora tina titik jujur.

Sabaraha titik anu diperyogikeun pikeun kuorum? Sahenteuna, mayoritas, atawa rada, mayoritas mumpuni pikeun merangan kasalahan jeung panipuan. Tapi pikeun ngitung mayoritas, anjeun kedah terang jumlah total pamilon. Di kantor Interstellar atanapi dina pamilihan distrik, angka-angka ieu gampang dipendakan. Tapi upami grup anjeun mangrupikeun jaringan anu didefinisikeun sacara bébas dimana titik-titik tiasa lebet sareng angkat sesuka hati tanpa persetujuan ti pusat, maka anjeun kedah féderal sistem perjangjian Bizantium anu sanggup nangtukeun kuorum sanés tina daptar simpul anu tos ditangtukeun, tapi sacara dinamis, tina snapshot titik anu kantos-robah sareng teu tiasa dihindari dina waktos anu ditangtukeun.

Ieu mungkin sigana teu mungkin mun nyieun quorum tina sudut pandang titik tunggal dina jaringan vast, tapi mungkin. Kuorum kitu malah bisa ngajamin hasil voting desentralisasi. Kertas bodas SCP nunjukkeun kumaha ngalakukeun ieu nganggo prosedur anu disebut ku sora féderal.

Pikeun nu teu sabar

Sesa tulisan ngajelaskeun voting federasi sareng protokol konsensus Stellar sacara langkung rinci. Upami anjeun henteu resep kana detilna, ieu mangrupikeun tinjauan umum ngeunaan prosésna.

  1. Titik-titik ngalaksanakeun babak voting féderal ngeunaan "nominasi". Babak voting féderal hartosna:
    • Undian titik pikeun sababaraha pernyataan, contona, "Kuring ngajukeun nilai V";
    • Node ngadéngékeun sora sasama nepi ka manggihan nu bisa "nampi";
    • Node milarian "quorum" pikeun pernyataan ieu. A quorum "confirms" nominee.
  2. Sakali hiji node bisa mastikeun hiji atawa leuwih nominees, éta usaha pikeun "nyiapkeun" "surat keur mere sora" ngaliwatan sababaraha rounds voting federasi.
  3. Sakali hiji titik tiasa pariksa kartu keur mere sora, éta usaha pikeun ngalakukeun eta ngaliwatan malah leuwih rounds voting federasi.
  4. Sakali titik hiji bisa mastikeun komitmen hiji kartu keur mere sora, éta bisa "externalize" nilai kartu keur mere sora eta ku ngagunakeun eta salaku hasil konsensus.

Léngkah-léngkah ieu ngalibatkeun sababaraha babak voting federasi, anu sacara koléktif ngabentuk hiji babak SCP. Hayu urang nempo leuwih deukeut naon kajadian dina unggal hambalan.

Voting Féderasi

Voting Féderasi nyaéta prosedur pikeun nangtukeun naha jaringan tiasa satuju kana proposal. Dina babak voting, unggal titik kudu milih salah sahiji potensi loba nilai mungkin. Teu bisa ngalakukeun ieu iwal mun yakin yén titik lianna dina jaringan moal milih hasil béda. Pikeun mastikeun ieu, titik-titik silih tukeur pesen-pesen bulak-balik supados sadayana negeskeunyen kuorum knots nyokot hal anu sami solusi. Sesa bagian ieu ngécéskeun istilah dina kalimah ieu sareng kumaha sakabéh prosedur lumangsung.

Kuorum jeung keureutan kuorum

Hayu urang mimitian ku nangtukeun kuorum. Sakumaha anu urang bahas di luhur, dina jaringan desentralisasi sareng kaanggotaan dinamis, mustahil terang sateuacanna jumlah titik sareng ku kituna sabaraha anu diperyogikeun pikeun mayoritas. Voting Féderasi ngajawab masalah ieu ku ngawanohkeun ide anyar motong kuorum (nyiksikan kuorum): A set leutik peers nu hiji titik dipercaya pikeun komunikasi informasi status voting ka sesa jaringan. Unggal titik nangtukeun irisan kuorum sorangan (nu jadi anggota de facto).

Formasi kuorum dimimitian ku motong kuorum. Pikeun unggal titik, titik potong na ditambahkeun. Lajeng istilah keureut ditambahkeun titik ieu teras salajengna. Nalika anjeun neraskeun, beuki seueur titik anu anjeun teu tiasa nambihan sabab parantos kalebet kana potongan. Lamun teu aya deui titik anyar pikeun nambahkeun, prosés eureun: kami geus ngawangun hiji quorum ku "panutupanana transitif" nyiksikan quorum tina titik awal.

Ngartos Protokol Konsensus Stellar
Pikeun milarian kuorum tina titik anu dipasihkeun...

Ngartos Protokol Konsensus Stellar
... tambahkeun anggota irisan na ...

Ngartos Protokol Konsensus Stellar
... lajeng urang tambahkeun anggota irisan titik ieu.

Ngartos Protokol Konsensus Stellar
Urang teruskeun nepi ka euweuh titik ditinggalkeun pikeun nambahkeun.

Ngartos Protokol Konsensus Stellar

Ngartos Protokol Konsensus Stellar
Henteu aya titik anu tinggaleun pikeun nambihan. Ieu kuorum.

Kanyataanna, unggal titik bisa muncul dina leuwih ti hiji keureutan. Pikeun ngabentuk quorum a, pilih ngan salah sahiji keureut tur nambahkeun anggota; teras pilih irisan mana waé pikeun tiap anggota sareng tambahkeun anggota eta motong jeung saterusna. Ieu ngandung harti yén unggal titik mangrupa anggota loba mungkin quorums.

Ngartos Protokol Konsensus Stellar
Pilih ngan hiji keureutan kuorum dina unggal hambalan.

Ngartos Protokol Konsensus Stellar

Ngartos Protokol Konsensus Stellar

Ngartos Protokol Konsensus Stellar
Hiji kuorum mungkin. Atawa alternatif...

Ngartos Protokol Konsensus Stellar
...pilih keureutan sejenna...

Ngartos Protokol Konsensus Stellar

Ngartos Protokol Konsensus Stellar
…(lamun mungkin)…

Ngartos Protokol Konsensus Stellar
... nyieun quorum sejen.

Kumaha titik hiji terang dimana keureut titik-titik anu sanés? Dina cara nu sarua salaku informasi sejenna ngeunaan titik lianna: ti transmisi nu unggal titik disiarkeun ka jaringan nalika kaayaan voting na robah. Unggal siaran ngawengku informasi ngeunaan keureut titik nu ngirim urang. Kertas bodas SCP henteu netepkeun mékanisme komunikasi. Implementations ilaharna ngagunakeun protokol gosip pikeun dijamin siaran pesen sapanjang jaringan.

Émut yén dina sistem perjanjian Bizantium non-féderal, kuorum diartikeun salaku mayoritas sadaya titik. Sistem perjangjian Bizantium dirarancang tina sudut pandang patarosan: sabaraha titik anu teu jujur ​​anu tiasa ditolerir ku sistem? Dina sistem titik N dirancang pikeun salamet f gagal, hiji titik kudu bisa nyieun kamajuan ku narima eupan balik ti N−f sasama sabab f di antarana bisa jadi handap. Tapi sanggeus narima respon ti N−f peers, urang bisa nganggap yén sakabéh f peers (ti mana titik teu narima respon) sabenerna jujur. Ku kituna, f kaluar tina N−f peers (ti mana respon ieu narima) jahat. Pikeun titik pikeun ngahontal konsensus anu sarua, mayoritas titik sésana kudu jujur, nyaeta, urang kudu N−f leuwih gede ti 2f atawa N > 3f. Jadi ilaharna sistem dirancang pikeun salamet f gagal bakal boga total N = 3f + 1 titik sarta ukuran quorum 2f + 1. Sakali proposal ngaliwatan bangbarung kuorum, sesa jaringan yakin yén sagala proposal competing bakal gagal. Ieu kumaha jaringan konvergen kana hasilna.

Tapi dina sistem perjangjian Bizantium féderal, teu ngan teu bisa jadi mayoritas (sabab taya sahijieun weruh jumlah total ukuran jaringan), tapi konsép mayoritas sagemblengna gunana! Lamun kaanggotaan dina sistem kabuka, mangka batur bisa meunang mayoritas saukur ku ngajalankeun disebut serangan Sybil: sababaraha kali ngagabung jaringan sakuliah sababaraha titik. Ku kituna naha panutupanana keureut transitif bisa disebut kuorum, sareng kumaha éta tiasa nahan usulan anu bersaing?

Téhnisna, moal jalan! Bayangkeun jaringan genep titik, dimana dua triplets diisolasi dina keureut kuorum masing-masing. Subgrup kahiji tiasa nyandak kaputusan anu kadua moal kantos ngadangu, sareng sabalikna. Teu aya jalan pikeun jaringan ieu ngahontal konsensus (iwal ku kasempetan).

Ku alatan éta, SCP merlukeun yén pikeun voting federasi (jeung pikeun téoréma penting kertas pikeun nerapkeun), jaringan kudu boga sipat disebutna. parapatan kuorum. Dina jaringan nu mibanda sipat ieu, sagala dua quorums nu bisa diwangun salawasna tumpang tindih dina sahanteuna hiji titik. Pikeun nangtukeun sentimen prevailing sahiji jaringan, ieu téh salaku alus sakumaha ngabogaan mayoritas. Sacara intuitif, ieu ngandung harti yén lamun aya kuorum anu satuju kana pernyataan X, moal aya kuorum anu sanés anu tiasa satuju kana naon waé anu sanés, sabab éta kedah kalebet sababaraha titik tina kuorum kahiji anu parantos milih X.

Ngartos Protokol Konsensus Stellar
Upami aya perpotongan kuorum dina jaringan ...

Ngartos Protokol Konsensus Stellar
... teras dua kuorum anjeun tiasa ngawangun ...

Ngartos Protokol Konsensus Stellar
... bakal salawasna motong.

Ngartos Protokol Konsensus Stellar

Ngartos Protokol Konsensus Stellar

(Tangtosna, titik anu tumpang tindih tiasa janten bohong Bizantium atanapi anu sanés goréng. Dina hal ieu, simpang kuorum henteu ngabantosan jaringan satuju pisan. Ku sabab kitu, seueur hasil dina kertas bodas SCP dumasar kana asumsi eksplisit, kayaning naon anu ditinggalkeun di pameuntasan quorum jaringan malah sanggeus nyoplokkeun titik goréng. Pikeun kesederhanaan, hayu urang tinggalkeun asumsi ieu implisit dina sesa artikel).

Éta sigana teu munasabah pikeun nyangka yén pameuntasan kuorum anu tiasa dipercaya dina jaringan titik bebas. Tapi aya dua alesan kunaon ieu kitu.

Alesan kahiji nyaéta ayana Internet sorangan. Internét mangrupakeun conto sampurna tina jaringan titik bebas kalawan intersecting quorums. Kaseueuran titik dina Internét ngan ukur nyambung ka sababaraha titik lokal sanés, tapi set leutik ieu cukup tumpang tindih sahingga unggal titik tiasa dihontal tina unggal titik sanés sapanjang sababaraha rute.

Alesan kadua husus pikeun jaringan pembayaran Stellar (pamakéan paling umum tina SCP). Unggal aset dina jaringan Stellar gaduh penerbit, sareng pedoman Stellar meryogikeun unggal penerbit pikeun nunjuk hiji atanapi langkung titik dina jaringan pikeun ngolah pamundut panebusan. Éta pikeun kapentingan anjeun pikeun langsung atanapi henteu langsung ngalebetkeun titik-titik ieu dina potongan kuorum pikeun unggal aset anu anjeun pikahoyong. Kuorum pikeun sadaya titik anu resep kana aset anu dipasihkeun teras bakal tumpang tindih sahenteuna dina titik panebusan éta. Titik anu kabetot dina sababaraha aset bakal ngalebetkeun sadaya titik panebusan ti penerbit masing-masing dina potongan kuorumna, sareng aranjeunna bakal narékahan pikeun ngumpulkeun sadaya aset babarengan. Sajaba ti éta, sagala aset nu teu numbu ku cara kieu ka batur dina jaringan, jeung teu kudu disambungkeun - ieu dirancang supados teu aya tumpang tindihna quorum pikeun jaringan ieu (contona, bank ti zona dollar kadang hoyong dagang jeung bank ti zona euro jeung bank ti zone peso, ngarah aya dina jaringan anu sarua, tapi euweuh. di antarana paduli jaringan misah barudak ngajual kartu baseball).

Tangtu, ngantosan pameuntasan kuorum henteu jaminan. Sistem perjangjian Bizantium séjén ngahutang seueur pajeulitna kana jaminan kuorum. Inovasi penting SCP nyaéta yén éta ngaleungitkeun tanggung jawab pikeun nyiptakeun kuorum tina algoritma konsensus sorangan sareng dibawa ka tingkat aplikasi. Ku kituna, sanajan voting Féderasi cukup umum pikeun ngajawab masalah naon, reliabiliti na sabenerna gumantung kritis kana harti lega tina harti ieu. Sababaraha kagunaan hypothetical bisa jadi teu jadi kondusif pikeun nyieun jaringan well-disambungkeun salaku batur.

Voting, ditampa jeung konfirmasi

Dina babak voting Féderasi, titik hiji optionally dimimitian voting pikeun sababaraha nilai V. Ieu ngandung harti nyiarkeun pesen ka jaringan: "Kuring titik N, keureut kuorum abdi Q, sarta Kuring keur voting pikeun V." Nalika titik undian cara kieu, eta janji yén éta geus pernah milih ngalawan V sarta pernah bakal.

Dina siaran peer-to-peer, unggal titik ningali kumaha sora batur. Sakali hiji titik geus dikumpulkeun cukup seratan ieu, éta bisa ngalacak keureut kuorum jeung cobaan pikeun manggihan quorums. Upami anjeunna ningali kuorum peers anu ogé milih V, anjeunna tiasa neraskeun nyoko V sareng nyebarkeun pesen anyar ieu ka jaringan: "Kuring node N, potongan kuorum kuring nyaéta Q, sareng kuring nampi V." Ditampa nyadiakeun jaminan kuat ti voting basajan. Nalika titik voting pikeun V, eta pernah bisa milih pilihan séjén. Tapi lamun titik hiji narima V, euweuh titik dina Network bakal kantos nampi pilihan séjén (Teorema 8 dina whitepaper SCP ngabuktikeun ieu).

Tangtosna, aya kamungkinan luhur yén moal aya langsung kuorum titik anu satuju sareng V. Titik sanésna tiasa milih nilai anu sanés. Tapi aya cara séjén pikeun titik pikeun mindahkeun tina voting basajan pikeun ditampa. N tiasa nampi nilai anu béda pikeun W, sanaos anjeunna henteu milih éta, bahkan upami anjeunna henteu ningali kuorum pikeun éta. Pikeun mutuskeun ngarobih sora anjeun, tingali set blocking titik nu geus narima W. Hiji set blocking hiji titik ti unggal keureut kuorum N. Sakumaha ngaranna nunjukkeun, éta bisa Blok harti séjén. Upami sadaya titik dina set sapertos kitu nampi W, maka (ku Teorema 8) moal mungkin pikeun ngabentuk kuorum anu nyandak nilai anu béda, sareng ku kituna éta ogé aman pikeun N nampi W.

Ngartos Protokol Konsensus Stellar
Node N kalayan tilu keureut kuorum.

Ngartos Protokol Konsensus Stellar
BDF mangrupikeun set pameungpeuk pikeun N: kalebet hiji titik tina unggal irisan N.

Ngartos Protokol Konsensus Stellar
BE oge set blocking pikeun N sabab E muncul dina dua keureut N.

Tapi susunan blocking teu quorum a. Eta bakal teuing gampang trik titik N kana narima nilai dipikahoyong lamun éta cukup hack ngan hiji titik dina unggal keureut N. Ku alatan éta, narima nilai teu tungtung voting. Gantina, N kudu mastikeun nilai, nyaeta, tingali hiji quorum titik narima eta. Lamun meunang jauh, lajeng, sakumaha SCP whitepaper ngabuktikeun (dina Teorema 11), sesa jaringan ogé ahirna mastikeun nilai sarua, jadi N bakal mungkas sora federated kalawan nilai nu tangtu salaku hasilna.

Ngartos Protokol Konsensus Stellar
Voting Féderasi.

Prosés voting, ditampa, jeung konfirmasi constitutes hiji babak pinuh voting federasi. Protokol konsensus Stellar ngagabungkeun seueur babak ieu pikeun nyiptakeun sistem konsensus anu lengkep.

Protokol Konsensus Stellar

Dua sipat anu paling penting tina sistem konsensus nyaéta − kaamanan и kasalametan. Algoritma konsensus nyaéta "aman" upami éta henteu tiasa masihan hasil anu béda pikeun pamilon anu béda (salinan sajarah Bob moal pernah bertentangan sareng Carol). "Livability" hartosna yén algoritma bakal salawasna ngahasilkeun hasil, nyaéta, éta moal macét.

Dijelaskeun prosedur voting féderal aman dina harti yén lamun titik hiji confirms nilai V, euweuh titik séjén bakal mastikeun nilai séjén. Tapi "moal mastikeun harti sejen" teu hartosna yén éta merta bakal mastikeun hiji hal. Pamilon tiasa milih seueur nilai anu béda-béda anu teu aya anu bakal ngahontal ambang ditampa. Ieu ngandung harti yén dina voting féderal euweuh kasalametan.

Protokol konsensus Stellar ngagunakeun voting federasi dina cara anu mastikeun kaamanan sareng kasalametan. (Kaamanan jeung survivability jaminan SCP urang boga wates teoritis. Desain milih jaminan kaamanan pisan kuat, sacrificing a mitigasi survivability leutik, tapi dibere cukup waktu, konsensus kamungkinan pisan pikeun ngahontal.) Sacara ringkes, ideu nyaéta gaduh sababaraha sora federasi dina sababaraha nilai dugi ka salah sahijina ngalangkungan sadaya fase pamilihan SCP anu dijelaskeun di handap ieu.

Nilai-nilai anu SCP milarian konsensus tiasa janten sajarah transaksi atanapi pesenan tuang siang atanapi anu sanés, tapi penting pikeun dicatet yén ieu sanés nilai anu ditampi atanapi dikonfirmasi. Gantina, voting féderal lumangsung nurutkeun pernyataan ngeunaan nilai ieu.

Babak mimiti voting féderal lumangsung dina tahap nominasi (fase nominasi), dina susunan pernyataan kawas "Kuring nyalonkeun V," meureun keur loba nilai béda V. Tujuan nominasi pikeun manggihan hiji atawa leuwih pernyataan nu ngaliwatan ditampa jeung konfirmasi.

Saatos mendakan calon anu tiasa diverifikasi, SCP ngaléngkah ka fase voting, dimana tujuanna pikeun milarian buletin (nyaéta, wadah pikeun nilai diajukeun) sarta quorum nu bisa dibewarakeun komitmen pikeun eta (komitmen). Lamun hiji quorum commits hiji kartu keur mere sora, nilaina ditarima salaku konsensus. Tapi saencan hiji node bisa milih dina hiji commit, éta kudu mastikeun heula pembatalan kabéh ballots kalawan nilai counter handap. Léngkah-léngkah ieu-ngabatalkeun surat suara pikeun milarian hiji anu tiasa dilakukeun-ngalibetkeun sababaraha babak voting federasi dina sababaraha klaim kartu suara.

Bagian di handap ngajelaskeun nominasi sareng voting sacara langkung rinci.

nominasi

Dina awal fase nominasi, unggal titik sacara spontan tiasa milih nilai pikeun V sareng milih pernyataan "Kuring nyalonkeun V." Tujuan dina tahap ieu nyaéta pikeun ngonfirmasi nominasi sababaraha nilai ngaliwatan sora federasi.

Panginten cukup titik milih dina proposisi anu béda-béda anu henteu aya nominasi anu tiasa ngahontal ambang ditampa. Ku alatan éta, salian nyiarkeun sora nominasi sorangan, titik "ngeunteung" nominasi sasama maranéhanana. Echo ngandung harti yén lamun titik hiji sora nominasi V, tapi ningali pesen ti tatangga voting pikeun nominasi W, ayeuna bakal ngajawab duanana V jeung W. (Teu sakabéh sora peer anu echoed salila nominasi sabab ieu bisa ngakibatkeun hiji ledakan nominees béda. SCP ngawengku mékanisme pikeun ngatur sora ieu. Pondokna, aya rumus pikeun nangtukeun "prioritas" peer tina sudut pandang hiji titik, sarta ngan sora tina titik prioritas luhur anu reflected. Beuki lila nominasi. nyokot, handap bangbarung, jadi titik expands susunan peers anu undian bakal ngagambarkeun Rumus prioritas ngawengku nomer slot salaku salah sahiji inputs na, jadi peer-prioritas tinggi pikeun hiji slot bisa jadi peer-prioritas low pikeun sejen, jeung sabalikna).

Sacara konseptual, nominasi paralel, boh V sareng W mangrupikeun sora féderal anu misah, masing-masing masing-masing tiasa nampi katampi atanapi konfirmasi. Dina prakték, seratan protokol SCP ngarangkep sora individu ieu babarengan.

Sanajan voting pikeun nominasi V nyaéta janji mun pernah ngajawab ngalawan nominasi V, éta dina tingkat aplikasi - dina hal ieu SCP - eta ditangtukeun naon "ngalawan" hartina. SCP henteu ningali pernyataan anu bertentangan sareng sora "Kuring nyalonkeun X", nyaéta, henteu aya pesen "Kuring ngalawan nyalonkeun X", janten titik tiasa milih pikeun nyalonkeun nilai naon waé. Seueur tina nominasi ieu moal kamana-mana, tapi ahirna titik bakal tiasa nampi atanapi mastikeun hiji atanapi langkung nilai. Sakali nominee dikonfirmasi, anjeunna janten calon.

Ngartos Protokol Konsensus Stellar
nominasi SCP ngagunakeun voting federated. Aya tiasa seueur nilai "B" anu diteruskeun ku peers sareng "digambarkeun" ku titik.

Nominasi tiasa nyababkeun sababaraha calon anu dikonfirmasi. Ku alatan éta, SCP merlukeun lapisan aplikasi nyadiakeun sababaraha métode ngagabungkeun calon kana hiji komposit (komposit). Metodeu gabung tiasa nanaon. Hal utama anu lamun metoda ieu deterministik, unggal titik bakal ngagabungkeun calon sarua. Dina sistem voting dahar beurang, "ngahijikeun" bisa saukur hartosna nampik salah sahiji dua calon. (Tapi dina cara deterministik: unggal titik kudu milih nilai sarua pikeun ngareset. Contona, pilihan saméméhna dina urutan abjad). Dina jaringan pamayaran Stellar, dimana sajarah transaksi dipilih, ngahijikeun dua nominasi anu diusulkeun ngalibatkeun ngahijikeun transaksi anu dikandungna sareng anu terakhir tina dua cap waktuna.

Whitepaper SCP ngabuktikeun (Teorema 12) yén dina ahir fase extension, jaringan ahirna konvergen kana komposit tunggal. Tapi aya masalah: voting federasi mangrupikeun protokol asynchronous (sapertos SCP). Dina basa sejen, titik teu ngagabung ku waktu, tapi ngan ku pesen aranjeunna dikirim. Tina sudut pandang titik, teu jelas iraha réngsé fase extension. Sarta sanajan sakabéh titik antukna bakal anjog di komposit sarua, aranjeunna bisa nyandak ruteu béda sapanjang jalan, nyieun calon komposit béda sapanjang jalan, sarta pernah bisa ngabejaan nu salah sahiji final.

Tapi éta normal. Nominasi ngan persiapan. Hal utama nyaéta pikeun ngawatesan jumlah calon pikeun ngahontal konsensus, anu lumangsung dina prosés ngajalankeun pikeun kantor (pamilihan).

Lumpat

Bulletin nyaéta pasangan , dimana counter mangrupa integer nu dimimitian dina jam 1 jeung nilai mangrupa calon ti tahap nominasi. Ieu tiasa janten calon node sorangan atanapi calon node tatangga anu ditarima ku node éta. Diomongkeun kasarna, hiji kartu keur mere sora ngalibatkeun usaha terus-terusan maksa jaringan pikeun ngahontal konsensus dina sababaraha calon dina sababaraha kartu keur mere sora na nahan berpotensi loba undian federasi dina pernyataan kartu keur mere sora. Counter dina surat suara ngalacak usaha anu dilakukeun, sareng surat suara anu jumlahna langkung ageung diutamakeun tibatan surat suara anu jumlahna langkung handap. Lamun buletin macet, sora anyar dimimitian, ayeuna dina kartu keur mere sora .

Kadé ngabédakeun harti (contona, naon anu kedah dipesen tuang siang: pizza atanapi salad), buletin (pasangan counter-nilai) jeung pernyataan ngeunaan surat suara. Babak SCP ngawengku sababaraha babak voting féderal, khususna dina pernyataan ieu:

  • "Kuring siap ngalakukeun kartu keur mere sora B" jeung
  • "Kuring ngumumkeun komitmen kartu suara B"

Tina sudut pandang titik anu dipasihkeun, konsensus dihontal nalika mendakan kartu suara B anu tiasa mastikeun (nyaéta, mendakan kuorum anu nampi) pernyataan "Kuring ngalakukeun surat suara B." Ti titik ieu, éta aman meta dina nilai dieusian dina B - contona, nempatkeun pesenan ieu dahar beurang. Disebutna eksternalisasi hartina. Sakali ditampa ti kartu keur mere sora dikonfirmasi, hiji titik bisa mastikeun yén sagala titik lianna geus externalized nilai sarua atawa bakal ngalakukeun kitu dina mangsa nu bakal datang.

Sanaos seueur undian federasi sacara konsép dilaksanakeun dina klaim pikeun seueur kartu suara anu béda, aranjeunna henteu tukeur pesen saloba-lobana sabab unggal pesen ngarangkum sababaraha surat suara. Hiji seratan sahingga ngamajukeun kaayaan seueur undian federasi sakaligus, contona: "Kuring nampi commit ballots mimitian ti sateuacan "

Naon hartosna istilah "disiapkeun" sareng "komitmen"?

Hiji titik undian pikeun ngalakukeun kartu keur mere sora lamun éta yakin yén titik lianna moal ngalakukeun ballots kalawan nilai béda. Ngayakinkeun ieu mangrupikeun tujuan nyiapkeun aplikasi. Undian nu nyebutkeun "Kuring siap ngalakukeun kartu keur mere sora B" mangrupakeun jangji moal pernah ngalakukeun hiji kartu keur mere sora nu leuwih leutik batan B, nyaéta kalayan jumlah leutik (SCP merlukeun nilai dina kartu keur mere sora dina urutan nu tangtu. Ku kituna, newsletter). Langkung sakedik , lamun N1

Naha "Kuring siap ngalakukeun kartu keur mere sora B" hartina "Kuring janji moal pernah ngalakukeun kartu keur mere sora leutik ti B"? Kusabab SCP ngahartikeun abort salaku sabalikna commit. Hiji sora pikeun nyiapkeun kartu keur mere sora ogé ngalibatkeun hiji sora pikeun disqualify sababaraha ballots séjén, sarta, sakumaha urang bahas saméméhna, voting pikeun hiji hal mangrupakeun jangji pernah ngajawab ngalawan eta.

Sateuacan nyiarkeun commit, hiji node kedah milarian heula buletin anu tiasa dikonfirmasi sakumaha anu disiapkeun. Dina basa sejen, eta ngalakukeun hiji sora federasi dina topik "Kuring siap bunuh kartu keur mere sora B," jigana dina loba ballots béda, nepi ka manggihan hiji nu narima quorum a.

Ti mana asalna surat suara pikeun nyiapkeun sora? Kahiji, node nyiarkeun persiapan pikeun milih <1,C>, dimana C nyaéta calon komposit anu dihasilkeun dina tahap nominasi. Sanajan kitu, sanajan sanggeus persiapan keur voting dimimitian, nominasi bisa ngakibatkeun calon tambahan muncul jadi ballots anyar. Samentara éta, peers tiasa gaduh calon béda, sarta aranjeunna tiasa ngabentuk set blocking nu narima "Kuring siap bunuh kartu keur mere sora B2," nu bakal ngayakinkeun titik pikeun nampa eta teuing. Tungtungna, aya mékanisme timeout nu dibangkitkeun rounds anyar voting federasi on ballots anyar kalawan cacah luhur lamun ballots ayeuna nyangkut.

Pas node manggihan hiji kartu keur mere sora B nu bisa mastikeun geus disiapkeun, eta nyiarkeun pesen anyar "Komit kartu keur mere sora B". sora ieu ngabejaan peers yén titik moal nyerah B. Kanyataanna, lamun B mangrupa kartu keur mere sora , lajeng "Komit kartu sora " hartina idin saratna pikeun milih pikeun kesiapan unggal kartu keur mere sora ti ka <∞, s>. Nilai tambahan ieu mantuan peers séjén nyekel up kalawan commit peer lamun maranéhna masih dina tahap saméméhna tina protokol.

Dina tahap ieu, perlu negeskeun sakali deui yén ieu mangrupikeun protokol asinkron. Ngan kusabab hiji titik ngirim upvotes pikeun commit henteu hartosna peers na ngalakukeun ogé. Sababaraha di antarana bisa jadi masih voting on pernyataan dina préparasi voting, batur bisa geus externalized hartina. SCP ngécéskeun kumaha hiji titik kedah ngolah unggal jenis pesen peer paduli fase na.

Upami pesen "Kuring parantos ngumumkeun komitmen » teu bisa ditarima atawa dikonfirmasi, nyaeta, kamungkinan pesen ditarima atawa dikonfirmasi atawa - atanapi, dina hal naon waé, kartu suara naon waé anu gaduh nilai C, sareng sanés anu sanés, sabab simpulna parantos janji moal pernah ngabatalkeun . Dina waktos node nyiarkeun sora pikeun komitmen, éta bakal C atanapi henteu, gumantung kana sabaraha jauh konsensus. Sanajan kitu, ieu teu acan cukup pikeun node pikeun externalize C. Sababaraha peers Bizantium (anu mangrupakeun kirang ti quorum a, dumasar kana asumsi kaamanan urang) bisa ngabohong ka titik. Narima lajeng mastikeun sababaraha kartu keur mere sora (atawa rentang ballots) anu méré titik kapercayaan pikeun tungtungna externalize C.

Ngartos Protokol Konsensus Stellar
SCP voting ngaliwatan voting federated. Teu ditingalikeun: Timer tiasa pareum iraha waé, ningkatkeun cacah dina kartu sora (sareng kamungkinan ngahasilkeun komposit anyar tina calon nominasi tambahan).

Sareng éta sadayana! Sakali jaringan geus ngahontal konsensus a, éta siap ngalakukeun deui jeung deui. Dina jaringan pamayaran Stellar, ieu lumangsung kira-kira sakali unggal 5 detik: prestasi anu meryogikeun kaamanan sareng kasalametan anu dijamin ku SCP.

SCP tiasa ngahontal ieu ku ngandelkeun sababaraha babak voting federasi. Voting Féderasi dimungkinkeun ku konsép keureut kuorum: susunan peers anu unggal titik geus mutuskeun pikeun dipercaya salaku bagian tina na (subyektif) quorum. Konfigurasi ieu ngandung harti yén konsensus bisa ngahontal malah dina jaringan kalawan kaanggotaan kabuka sarta deceptions Bizantium.

Bacaan salajengna

  • Kertas bodas SCP asli tiasa dipendakan di dieujeung di dieu draf spésifikasi pikeun palaksanaan na.
  • Panulis asli protokol SCP, David Mazier, ngajelaskeun éta ku cara anu saderhana (tapi tetep téknis). di dieu.
  • Anjeun meureun geus reuwas mun teu manggihan istilah "pertambangan" atawa "bukti karya" dina artikel ieu. SCP henteu nganggo metodeu ieu, tapi sababaraha algoritma konsensus anu sanés. Zane Witherspoon wrote diaksés Tinjauan algoritma konsensus.
  • Léngkah demi déskripsi katerangan jaringan basajan nu ngahontal konsensus dina hiji babak pinuh ku SCP.
  • Pikeun pamiarsa museurkeun palaksanaan SCP: tingali Kodeu C++, dipaké ku jaringan pembayaran Stellar, atawa Go kode, nu kuring nulis pikeun pamahaman hadé ngeunaan SCP.

sumber: www.habr.com

Tambahkeun komentar