კონსენსუსი
ტრანზაქციები შედის რიგში, სანამ Sumeragi სთავაზობს მათ ბლოკში. ვალიდატორები დამოუკიდებლად ადასტურებენ და ასრულებენ წინადადებას, შემდეგ კი ხელს აწერენ მხოლოდ იმ სახელმწიფო გარდამავალს, რომელსაც შეუძლიათ გაიმეორონ. ბლოკი ვალდებულებას იღებს მას შემდეგ, რაც საჭირო ვალიდატორი კვორუმი ამ შედეგზე თანხმდება და შესაბამისი სასარგებლო ტვირთი არის ხელმისაწვდომი.
ყველა Iroha 3 ქსელი იყენებს მონაცემთა ხელმისაწვდომობასა და საიმედო მაუწყებლობის გზებს. ეს არის კონსენსუსის მოთხოვნები და არა ვარიანტული განთავსების მახასიათებლები.
Sumeragi
Sumeragi არის Iroha ბიზანტიური შეცდომის ტოლერანტობის კონსენსუსის ძრავი. ის იღებს ტრანზაქციებს რიგიდან, აქვს ვალიდატორების თანატოლები შეთანხმდნენ იმავე დალაგებულ ბლოკზე და ამ ბლოკს მხოლოდ მას შემდეგ ახდენს დასრულებას, რაც საკმარისი ვალიდატორიამ გაიმეორა იგივე შედეგი და ხელი მოაწერა ვალდებულების სერტიფიკატს.
წინადადება და ვალდებულების მიღება
Sumeragi აწარმოებს ლიდერის წინ ერთი ბლოკის სიმაღლეზე ერთჯერად. თითოეულ სიმაღლესთან ერთად, ერთი ვალიდატორი მოქმედებს როგორც მიმდინარე ხედვის შემოთავაზებელი. შემოთავატებელი ამოწმებს საკვალიფიკაციო ტრანზაქციებს რიგიდან, აშენებს კანდიდატურ ბლოკს და აცხადებს წინადადებას აქტიურ ვალიდატორთა ნაკრებში.
ერთი და იგივე Sumeragi მილსადენი გამოიყენება როგორც ნებართვანი, ასევე ნომინირებული მტკიცებულების განთავსებაში (NPoS):
- ვალიდატორს სთავაზობს ბლოკირებულ ტრანზაქციებს.
- ვალიდატორები ამავე მსოფლიო სახელმწიფოს წინააღმდეგ განხორციელებული ტრანზაქციების გზით შეაფასებენ წინადადებას.
- ვალიდატორები ხმებს და კვორუმის სერტიფიკატებს ახლანდელი სიმაღლისა და ხედვისთვის გაცვლიან.
- როგორც კი კომიტეტის კვორუმს მიაღწევენ, თანატოლები ბლოკს აპირებენ და ახდენენ თავიანთ მსოფლიო მდგომარეობას.
ვალიდატორები ხელს აწერენ მხოლოდ იმ მონაცემებს, რომლებსაც შეუძლიათ ადგილობრივად რეპროდუქციას. კენჭისყრის წინ, ვალიდატორი ამოწმებს, რომ წინადადება ეკუთვნის მოსალოდნელ ჯაჭვს, სიმაღლეს და ხედვას; რომ ტრანზაქციის ხელმოწერები და ლიმიტები მოქმედებენ; რომ ბილიკის მარშრუტირება და აღსრულების დამტკიცება არის დეტერმინისტული; და რომ სასარგებლო ტვირთის განხორციელება იწვევს მოსალოდნელი სახელმწიფო გადასვლას. თუ ადგილობრივი შედეგი განსხვავდება, დამტკიცებელი უარყოფს წინადადებას მის მხარდაჭერის ნაცვლად.
ხმები პატარა ხელმოწერილი კონსენსუსური შეტყობინებებია. ისინი ეხება შემოთავაზებულ ბლოკს, სიმაღლეს, ხედვას და დამტკიცებლის იდენტობას. კოლექტორები აგრეგირებენ მათ. ხმები კვორუმის სერტიფიკატში ან კომიტეტის სერტიფიკატში. სერტიფიკი არის მდგრადი მტკიცებულება იმისა, რომ საკმარისი რაოდენობის ვალიდატორებმა ერთი და იმავე ბლოკისათვის იგივე შედეგი დააკვირდნენ.
კვორუმი, კოლექტორები და დამკვირვებლები
კენჭისყრის ვალიდატორთა რიცხვი n განსაზღვრავს ბიზანტიური ხარვეზის ბიუჯეტს. მინიმუმ ოთხი ვალიდატორიანი ქსელებისთვის, ბიუჯეტი არის f = floor((n - 1) / 3) და კომიტეტის ოდენობა კვორუმი არის 2f + 1. ერთი-სამ ვალიდატორისთვის ყველა ვალიდატორი აუცილებელია კომიტეტისათვის, რაც სასარგებლოა განვითარებისთვის, მაგრამ არ აქვს პრაქტიკული ოფლაინის თავისუფლება.
კოლექტორები ფანოუთის ოპტიმიზაციაა. იმის მაგივრად, რომ თითოეული ვალდიტორმა ყველა სხვა ვალდიტორს გაუგზავნოს ხმა, Sumeragi შეიძლება აირჩიოს ერთი ან რამდენიმე კოლექტორი სიმაღლისთვის. კოლექტორები შეაერთიანებენ ხმებს, აქვეყნებენ კვორუმის პროგრესს და ამცირებენ ორმაგი ხმის მოძრაობის რაოდენობას. ეფექტური კოლექტორის პარამეტრები გამოფენილია GET /v1/sumeragi/collectors; CLI- ის ops sumeragi telemetry სიახლეში აღინიშნება მიმდინარე კოლექტორთა რიცხვი.
დამკვირვებლის თანატოლებს შეუძლიათ სინქრონიზონ ჩაბარებული ბლოკები, მაგრამ ისინი არ სთავაზობენ, ხმას აძლევენ, არ აგროვებენ ხმებს ან არ ითვლიან კომიტეტის კვორუმისკენ. გამოიყენეთ დამკვირვებლები მაშინ, როდესაც განთავსებას საჭიროა ადგილობრივი შეკითხვის სიმძლავრე, ინდექსირება, მონიტორინგი ან რეგიონული ბლოკის რეპლიკა ხმის მიცემის ვალიდატორიების რაოდენობის გაზრდის გარეშე.
ცვლილებების ნახვა და აღდგენა
ხედვა არის Sumeragi -ის მცდელობა დაასრულოს ერთი სიმაღლე კონკრეტული შემოთავაზებითა და დროის გეგმით. თუ წინადადება, სასარგებლო ტვირთი, კენჭისყრა ან პროგრესის განხორციელება შეფერხებულია, პეიზმეკერს შეუძლია გადაიტანოს სიმაღლი მოგვიანებით. ხედვის ცვლილება არ ახდენს ჩაბარებულ ბლოკს. ეს იცვლის იმას, თუ როგორ ცდილობენ დამტკიცებლები დაასრულონ უპირისპირო სიმაღლე, ატარებენ უმაღლეს ცნობილ კვორუმს ან აძლევენ მტკიცებულებებს ისე, რომ თანატოლებმა არ დაამთავრონ კონფლიქტური ბლოკები.
სასარგებლო ტვირთის აღდგენა განცალკევებულია საბოლოო გადაწყვეტილებისგან. თანამოაზრე შეიძლება მიიღოს კვორუმი ან ვალდებულების სერტიფიკატი, სანამ მას აქვს სრული ბლოკის სასარგებლო დატვირთვა. ამ შემთხვევაში, პარტნიორი იყენებს საიმედო გადაცემას (RBC) ან ბლოკის სინქრონიზაციას სასარგებლო ტვირთის აღდგენის მიზნით, ადასტურებს მას რეკლამირებული ჰეშების წინააღმდეგ და მხოლოდ შემდეგ ახორციელებს ბლოკს მსოფლიო სახელმწიფოსა და Kura მიმართ.
კონსენსუსის რეჟიმები
შერჩეული რეჟიმი აკონტროლებს, თუ როგორ იქმნება და მუშაობს ვალიდატორის ნაკრები. იგი დეკლარირებულია გენეზიში consensus_mode და პარტნიორული კონფიგურაციის საშუალებით sumeragi.consensus_mode. განიხილეთ ეს როგორც ქსელის მასშტაბური მდგომარეობა: დამტკიცებლებს სჭირდებათ იგივე ხელმოწერილი გენეზი, ტოპოლოგია, სანდო თანატოლების მონაცემები და ეფექტური Sumeragi პარამეტრები.
| რეჟიმი | საუკეთესო შესაფერისი | ვალიდატორის კომპლექტი | ოპერაციული კონცენტრაცია |
|---|---|---|---|
| ნებადართული. | კერძო, კონსორციუმის და ოპერატორების მიერ მართული ქსელები | ვალიდატორები მოდის საიმედო თანატოლური ტოპოლოგია შეთანხმებული განთავსების | ყველა ვალიდატორს შეინახეთ იგივე ხელმოწერილი გენეზი, სანდო თანატოლები, თანატოლების გასაღებები და Sumeragi პარამეტრები |
| NPOS | საჯარო ან Nexus ორიენტირებული ქსელები, სადაც დამტკიცება ნომინირებისა და წილის პოლიტიკის შემდეგ მიმდინარეობს | ვალიდატორები შერჩეულია NPoS პროფილის მიხედვით, ჩვეულებრივ სხვადასხვა ეპოქაში და საჭიროებს BLS გასაღების დამატებით მფლობელობის მტკიცებულებებს. | შეინარჩუნეთ სათამაშო სურათები, ეპოქის პარამეტრები, ვალიდატორი PoPs, და NPoS ფაზის დროების გათანაბრება ქსელში |
დასაშვები რეჟიმი
გამოიყენეთ ნებართვის მქონე რეჟიმი, როდესაც ვალიდატორების სია არის აშკარა ოპერატიული არჩევანი. ეს არის ჩვეულებრივი საწყისი წერტილი თვითმმართველი Iroha ქსელებისთვის, რადგან წევრობის ცვლილებები განზრახ მმართველობის ან ადმინისტრატორის ქმედებებია. მნიშვნელოვანი საოპერაციო წესი არის ის, რომ თითოეული ვალიდატორი უნდა იმუშაოს გენეზის, სანდო თანატოლების, BLS მტკიცებულებების და Sumeragi პარამეტრების ერთნაირი ხედვით. ცალკეულმა თანატოლმა განსხვავებული ტოპოლოგიის ან ხელმოწერილი გენეზიით შეიძლება თავიდან აიცილოს ქსელის ჩადენა.
NPOS რეჟიმი
გამოიყენეთ NPoS რეჟიმი, როდესაც განთავსების პროფილი ელოდება, რომ ვალიდატორის მონაწილეობა განპირობებული იქნება ნომინაციისა და სათამაშო მდგომარეობით. საჯარო SORA Nexus განთავსებები იყენებენ NPoS- ს და მათ მიერ შექმნილ პროფილებს მოიცავს BLS ვალიდატორის ვინაობას, საკუთრების მტკიცებულებებს, ეპოქის პარამეტრებს, და Sumeragi NPoS პარამეტრები საჭირო სტარტაპზე. ეპოქის ცვლილებებს შეუძლიათ შეცვალონ აქტიური ვალიდატორი განსაზღვრული სიმაღლეებზე, ამიტომ ოპერატორებმა უნდა აკონტროლონ კონსენსუსის ჯანმრთელობა და სათამაშო ან ნომინაციის მდგომარეობა, რომელიც კვება შემდეგი სიაში.
მრავალმხრივი კონსენსუსი
Iroha მრავალმხრივი კონსენსუსის გზა განხორციელებულია Nexus ზოლის და მონაცემთა სივრცის კონფიგურაციის საშუალებით. იგი არ იწყებს ცალკე კონსენსუსი ინსტანციას თითოეული ზოლისთვის. Sumeragi ჯერ კიდევ ახდენს ერთი შეკვეთილი ბლოკის ნაკადის დასრულებას; ზოლები აღწერენ, თუ როგორ ხდება ტრანზაქციების მარშრუტირება, დაგეგმვა, ანგარიშგება და შენახვა ამ ნაკადში.
Runtime კონფიგურაცია ქმნის სამი ნაწილის სარკე მდგომარეობის:
lane_catalog: კონფიგურირებული ზოლები, თითოეული მათგანში არის ციფრულიLaneId, საყვედური სახელი, მონაცემთა სივრცე, ხილვადობა, შენახვის პროფილი, მტკიცებულების სქემა და მეტამონაცემები.dataspace_catalog: კონფიგურირებული მონაცემთა სივრცეები, თითოეული მათგანი ციფრულიDataSpaceIdდა ხარვეზების ტოლერანტობის ღირებულებით გამოიყენება რელიე კომიტეტის ზომის განსაზღვრისთვის.routing_policy: მონაცემთა სივრცეში არსებული ბილიკი და მითითებული საგზაო წესები, რომლებიც შეიძლება შეესაბამებოდეს ანგარიშებს ან ინსტრუქციის გზებს.
როდესაც ტრანზაქცია შედის რიგში, მარშრუტის როუტერმა გადაწყვიტა იგი RoutingDecision { lane_id, dataspace_id }. ერთ მარშრუტიან რეჟიმში ეს ყოველთვის არის მარშრუტი 0 და უნივერსალური მონაცემთა სივრცე. Nexus რეჟიმში, კონფიგურირებულმა როუტერმა გამოიყენა მონაცემთა სივრცის მასშტაბით განსაზღვრული წესები, ანგარიშსწორების მარშრუტირება, ანგარიშის წესები, მკაფიო მარშრუტის წესები და საბოლოოდ შერჩეული მარშრუტია. გადაჭრილი ზოლი და მონაცემთა სივრცე უნდა არსებობდეს მათი კატალოგებში, ხოლო ზოლი უნდა იყოს დაკავშირებული გადაჭრილ მონაცემთა სიბაზესთან. წინააღმდეგ შემთხვევაში ტრანზაქცია უარყოფითად იქცევა სანამ ის რიგში იქნება.
რიგში ინახება ეს მარშრუტის გადაწყვეტილება ტრანზაქციის ჰეშით, რათა მოგვიანებით არ მოუწიოს მისი განმეორებითი დასკვნა. წინადადებითი კონსტრუქცია შემდეგ იყენებს ზოლის მეტადატას ორმაგად:
- მისი ტრანზაქციები ბლოკზე მხოლოდ იმიტომ არ დომინირებს, რომ მისი ოპერაციები პირველ რიგში შედგეს.
- ეს შეზღუდვა განხორციელდება ტრანზაქციის შესრულების ერთეულზე (TEU) . ტრანზაკციები, რომლებიც გადააჭარბებენ ტრანზის კონფიგურირებულ სიმძლავრეს, გადავადებულია და რეკვიუირდება, გარდა იმისა, რომ პირველი ზედმეტი ტენდენცია შეიძლება იყოს მიღებული, რათა თავიდან იქნას აცილებული სიცოცხლის ჩაკეტილი.
საიმედო მაუწყებლის დროს, Sumeragi აგრეგირებს შემოთავაზებულ სასარგებლო ტვირთს ზოლისა და მონაცემთა სივრცის მიხედვით. რეგისტრირებული ჯამები მოიცავს ტრანზაქციების რაოდენობას, მაუწყებლობის ნაწილებს, სასარგებლოტვირთის ბაიტებს და TEU. კომიტეტის შემდეგ ეს ჯამები ხდება ზოლის და მონაცემთა სფეროს ვალდებულებების კადრები, რომლებიც გამოფენილია სტატუსით Sumeragi. თუ ბლოკი შეიცავს ბლოკის ანგარიშსწორების ქვითრებს, ბლოკის დამუშავება ასევე ქმნის ბლოკის დაფარვის ვალდებულებებს და რელიე კონვერტებს, რომლებიც აკავშირებენ ბლოკის სათაურს, ჩართულობის სერტიფიკატს, მონაცემთა ხელმისაწვდომობის ვალდებულებების ჰეშს, ანგარიშგების მტკიცებულებას და ბლოკის სასარგებლო ტვირთის ზომას.
საიმედო მაუწყებელი (RBC)
საიმედო გადაცემა (RBC) არის სასარგებლო ტვირთის გავრცელებისა და აღდგენის გზა Sumeragi. იგი ეხმარება დამტკიცებლებსა და დამკვირვებლებს მიიღონ ბლოკის სხეული, რომელიც შეეხება წინადადებას ან აიღოს სერტიფიკატი, განსაკუთრებით მაშინ, როდესაც BlockCreated შეტყობინება, ბლოკ-სინქრონიზაციის განახლება ან პირდაპირი სასარგებლოტვირთის გადაცემა დაგვიანებულია ან დაკარგულია.
RBC მუშაობს სასარგებლო დატვირთვის დონეზე. შემოთავაზებელი აცხადებს RBC სესიას ბლოკის სიმაღლის, ხედვისა და სასარგებლო ტვირთის ჰეშისთვის, შემდეგ კი გამოგზავნის სასარგებლო სატვირთო ნაჭრებს კომპიუტერულ ტოპოლოგიაში. თანატოლები აკვირდებიან ნაწილის მიღებას, ადასტურებენ აღდგენილ სასარგებლო ტვირთს რეკლამირებული ჰეშის წინააღმდეგ და გაცვლიან READY და DELIVER სიგნალებს, როდესაც საკმარისი რაოდენობის ვალიდატორები დაკვირვებული იგივე სასარგებლო ტვირთის. სესიები შეზღუდულია TTL, ნაჭერი, fanout, pending-stash, და persisted-store ლიმიტები ასე რომ აღდგენის მოძრაობა არ შეიძლება გაიზარდოს შეუზღუდავად.
RBC არ არის ცალკე კონსენსუსული გადაწყვეტილება და იგი არ შეცვლის კომიტეტის სერტიფიკატს. ბლოკი მაინც სრულდება მხოლოდ მაშინ, როდესაც პარტნიორს აქვს მოქმედი კომიტეტის სერთიფიკატი და შესაბამისი სასარგებლო ტვირთის ადგილობრივად. RBC ხელს უწყობს სავალდებულო ხელმისაწვდომობის მტკიცებულებებს და სასარგებლო ტვირთის აღდგენას, ხოლო commit პროგრესს განაპირობებს commit სერტიფიკატი პლუს ადგილობრივი სასარგებლო სატვირთო. თუ სერტიფიკატები შედის სასარგებლო დატვირთვამდე, peer შეუძლია მიიღოს payload through RBC ან ბლოკის სინქრონიზაცია და შემდეგ commit.
ოპერაციულად RBC გამოსადეგია დაკარგული სასარგებლო ტვირთისა და მონაცემთა ხელმისაწვდომობის ჩიხის ღრუების დიაგნოსტიკაში:
iroha --output-format text ops sumeragi telemetryაჩვენებს საერთო ხელმისაწვდომობის ხმებს, მიმდინარე კოლექტორთა რაოდენობას და მოქმედი RBC სესიების ჩატარებას.GET /v1/sumeragi/rbcდაGET /v1/sumeragi/rbc/sessionsდეტალური შეკრებილი და აქტიური სესიების მონაცემები Torii, ჩათვლით ნაწილობრივ პროგრესს, მზადყოფნას, მიწოდების მდგომარეობასა და მარშრუტის ან მონაცემთა სივრცის ჩამორჩენას; იხილეთ Torii საბოლოო წერტილები.- Prometheus-ის სიგნალები, როგორიცაა
sumeragi_rbc_store_pressure,sumeragi_rbc_backpressure_deferrals_totalდა კუთხით ან მონაცემთა სივრცეზე RBC ჩამორჩენის მაჩვენებლები ხელს უწყობენ ქსელის დაკარგვის, ნაწილობრივი აღდგენისა და შენახვის წნევის განცალკევებას; იხილეთ შესრულება და მეტრიკა.
Kura იყენებს გამომდინარე ბილიკების კონფიგურაციას შენახვის განლაგებისთვის. თითოეული ბილიკი იღებს დეტერმინისტულ შენახვის სახელებს, როგორიცაა blocks/lane_000_core და merge_ledger/lane_000_core_merge.log; ბილიკის სიცოცხლის ციკლის ცვლილებები შეიძლება უზრუნველყოს, ამოიღოს ან შეიცვალოს ეს სეგმენტები გლობალური ბლოკის რიგით შეცვლის გარეშე.