ბიტკოინის თეთრი წიგნი ნათლად აცხადებს ბიტკოინის ძირითად მახასიათებელს: ის ნებართვის გარეშეა (permissionless). მსოფლიოში ნებისმიერს შეუძლია გადაუხადოს ნებისმიერს peer-to-peer ქსელში გაწევრიანებით და ტრანზაქციის გადაცემით. მტკიცებულება-მუშაობის (Proof of Work) კონსენსუსი ნებისმიერს აძლევს უფლებას გახდეს ბლოკის მწარმოებელი და ნიშნავს, რომ გადახდის გაუქმების ერთადერთი გზა არის ყველას გადაჭარბება ჰეშფაუერის მეშვეობით. მაგრამ მტკიცებულება-მუშაობა მხოლოდ განსაზღვრავს, თუ როგორ უნდა აირჩიოს გამარჯვებული კონკურენტ ჯაჭვებს შორის; ის არ ეხმარება კვანძს მის აღმოჩენაში. 51%-იანი შეტევა – ან 100%-იანი შეტევა – ბევრად უფრო ადვილია, თუ თავდამსხმელს შეუძლია ხელი შეუშალოს კვანძებს კონკურენტი ჯაჭვების შესახებ ინფორმაციის მიღებაში. აღმოჩენის ამოცანა ეკუთვნის peer-to-peer მოდულს, რომელიც მრავალ წინააღმდეგობრივ ამოცანას აგვარებს: იპოვოს პატიოსანი peer-ები ქსელში, სადაც კვანძები მუდმივად უერთდებიან და ტოვებენ, მაგრამ ავთენტიფიკაციისა და რეპუტაციის გარეშე. ყოველთვის იყავით ბლოკებისა და ტრანზაქციების ძიებაში, მაგრამ არ გაგიკვირდეთ, თუ მონაცემების უმეტესობა ნაგავია. იყავით საკმარისად მტკიცე, რომ გადაურჩეთ ექსტრემალურ მტრულ პირობებს, მაგრამ საკმარისად მსუბუქი, რომ იმუშაოთ Raspberry Pi-ზე. ნებართვის გარეშე peer-to-peer ქსელის განხორციელების დეტალები თეთრ წიგნში არ იყო მოცემული, მაგრამ დღეს ბიტკოინის კვანძის პროგრამული უზრუნველყოფის სირთულის უმეტეს ნაწილს შეადგენს. თეთრი წიგნი აღიარებს საჯარო ტრანზაქციის გადაცემას, როგორც ბიტკოინის ცენზურის წინააღმდეგობის ქვაკუთხედს, მაგრამ მხოლოდ რამდენიმე სიტყვას ამბობს იმის შესახებ, თუ როგორ უნდა იმუშაოს: „ახალი ტრანზაქციები გადაიცემა ყველა კვანძზე. თითოეული კვანძი აგროვებს ახალ ტრანზაქციებს ბლოკში. თითოეული კვანძი მუშაობს თავისი ბლოკისთვის რთული მტკიცებულება-მუშაობის პოვნაზე.“1 ბევრს სასაცილოდ მიაჩნია, რომ სატოშიმ შესთავაზა, რომ ყველა კვანძი მოიპოვებდა (მაინინგს გააკეთებდა). მაინინგის ცვალებადობის ცენტრალიზებული ზეწოლის გამო, დღევანდელი ქსელის კვანძების აბსოლუტური უმრავლესობა არ მუშაობს მტკიცებულება-მუშაობის პოვნაზე. შესაძლოა, ეს ეკონომიკური სტიმულების მისაღები ან თუნდაც წარმატებული შედეგია; ჩვენ დეცენტრალიზაციის ნაწილი გავცვალეთ გაზრდილ ჰეშფაუერზე და, შესაბამისად, უსაფრთხოებაზე. თუმცა, ბიტკოინის ცენზურის წინააღმდეგობა დაინგრევა, თუ ჩვენ ასევე უარს ვიტყვით დეცენტრალიზებულ ტრანზაქციის გადაცემაზე. ჩვენი სურვილი, გვქონდეს ტრანზაქციის გადამცემი კვანძების ფართო აუზი, უნდა შეეჯახოს ყოველდღიური კომპიუტერების პრაქტიკულობას, რომლებიც თავს აჩენენ ნებართვის გარეშე ქსელში და ამუშავებენ მონაცემებს ანონიმური peer-ებისგან. ეს საფრთხის მოდელი უნიკალურია და მოითხოვს მაღალ დეფენსიურ პროგრამირებას. ბლოკის ჩამოტვირთვისას, ბლოკის მტკიცებულება-მუშაობა ელეგანტურად ემსახურება როგორც სერვისზე უარის თქმის (DoS) პრევენციას, ასევე მონაცემთა სარგებლიანობის შეფასების ცალსახა გზას. ამის საპირისპიროდ, დაუდასტურებელი ტრანზაქციის მონაცემების შექმნა პრაქტიკულად უფასოა და შესაძლოა უბრალოდ სპამი იყოს. მაგალითად, ჩვენ არ შეგვიძლია ვიცოდეთ, აკმაყოფილებს თუ არა ტრანზაქცია თავის ხარჯვის პირობებს, სანამ არ ჩავტვირთავთ UTXO-ს, რამაც შესაძლოა დისკიდან მოძიება მოითხოვოს. თავდამსხმელებს აბსოლუტურად არაფერი უჯდებათ ამ შედარებით მაღალი შეყოვნების აქტივობის გამოწვევა: მათ შეუძლიათ შექმნან დიდი ტრანზაქციები ისეთი შეყვანების გამოყენებით, რომლებიც მათ არ ეკუთვნით ან საერთოდ არ არსებობს. ვალიდაციის ნაბიჯები, როგორიცაა ხელმოწერის ვერიფიკაცია და mempool-ის დამოკიდებულების მართვა, შეიძლება იყოს გამოთვლითად ძვირი. ცნობილია, რომ დიდი რაოდენობის ძველი (pre-segwit) ხელმოწერების მქონე ტრანზაქციების ვალიდაციას ზოგიერთ აპარატურაზე წუთები სჭირდება2, ამიტომ კვანძების უმეტესობა ფილტრავს დიდ ტრანზაქციებს. რესურსების გამოყენება არ არის მხოლოდ კვანძის ლოკალური: მიღებული ტრანზაქციები, როგორც წესი, გადაეცემა სხვა peer-ებს, იყენებს გამტარუნარიანობას ქსელში კვანძების რაოდენობის პროპორციულად. კვანძები იცავენ თავს დაუდასტურებელი ტრანზაქციებისა და ვალიდაციის რიგებისთვის გამოყენებული მეხსიერების შეზღუდვით, ტრანზაქციის დამუშავების შეზღუდვით თითოეულ peer-ზე და კონსენსუსის გარდა პოლიტიკის წესების აღსრულებით. თუმცა, ეს ლიმიტები ასევე შეიძლება ქმნიდეს ცენზურის ვექტორებს, თუ ისინი ფრთხილად არ არის შემუშავებული. მარტივმა ლოგიკამ, რომ არ ჩამოტვირთოთ ტრანზაქცია, რომელიც უკვე უარყოფილია, შეზღუდოს ტრანზაქციის რიგის ზომა ერთი peer-ისთვის, ან ჩამოაგდოს მოთხოვნები წარუმატებელი ჩამოტვირთვის მცდელობების შემდეგ, შეიძლება გამოიწვიოს კვანძების მიერ ტრანზაქციის მიმართ დაბრმავება. ეს შეცდომები ხდება შემთხვევითი ცენზურის ვექტორები, როდესაც მათ სწორი თავდამსხმელი იყენებს. ამ კუთხით, მიუხედავად იმისა, რომ სრულიად ლოგიკურია არ შეინახოთ დაუდასტურებელი ტრანზაქციები, რომლებიც ერთმანეთის ორმაგი დახარჯვაა (მხოლოდ ერთი ვერსია შეიძლება იყოს ვალიდური), ორმაგი დახარჯვის უარყოფა ნიშნავს, რომ ადრეული გადაცემა ხელს უშლის მოგვიანო ტრანზაქციის მოპოვებას. ორმაგი დახარჯვა შეიძლება იყოს გადახდის გაყალბების განზრახ მცდელობა, ან, როდესაც UTXO ეკუთვნის მრავალ მხარეს, pinning შეტევა, რომელიც იყენებს mempool-ის პოლიტიკას მეორე ფენის ანგარიშსწორების ტრანზაქციების მოპოვების დასაყოვნებლად ან თავიდან ასაცილებლად. როგორ უნდა აირჩიონ კვანძებმა? ეს კითხვა მიგვიყვანს ტრანზაქციის გადაცემის მეორე ელემენტთან: სტიმულის თავსებადობა3. მიუხედავად იმისა, რომ საკომისიოები არ არის რელევანტური კონსენსუსისთვის, გარდა იმისა, რომ ზღუდავს იმას, რისი მოთხოვნაც მაინერმა შეიძლება ბლოკის ჯილდოდ, ისინი დიდ როლს თამაშობენ კვანძის პოლიტიკაში, როგორც სარგებლიანობის მეტრიკა. თუ ვივარაუდებთ, რომ მაინერები ეკონომიკური სტიმულებით არიან განპირობებული, კვანძებს შეუძლიათ მიახლოებით განსაზღვრონ, რომელი ტრანზაქციებია ყველაზე მიმზიდველი მოსაპოვებლად და გადააგდონ ყველაზე ნაკლებად მიმზიდველი. როდესაც ტრანზაქციები ხარჯავს ერთსა და იმავე UTXO-ს, კვანძს შეუძლია შეინარჩუნოს უფრო მომგებიანი. მიუხედავად იმისა, რომ კვანძები არ აგროვებენ საკომისიოებს, მათ შეუძლიათ ნულოვანი საკომისიოს ტრანზაქციები სპამად მიიჩნიონ: ისინი სავარაუდოდ გამოიყენებენ ქსელის რესურსებს, მაგრამ არასოდეს მოიპოვება, თუმცა მათი შექმნა პრაქტიკულად არაფერი ღირს. ეს ორი დიზაინის მიზანი — DoS წინააღმდეგობა და სტიმულის თავსებადობა — მუდმივ დაძაბულობაშია. მიუხედავად იმისა, რომ მიმზიდველია ტრანზაქციის შეცვლა უფრო მაღალი საკომისიოს ვერსიით, განმეორებითი ჩანაცვლების დაშვებამ მცირე საკომისიოს ზრდით შეიძლება დახარჯოს ქსელის გამტარუნარიანობა. დაუდასტურებელ ტრანზაქციებს შორის დამოკიდებულებების გათვალისწინებამ შეიძლება შექმნას უფრო მომგებიანი ბლოკები (და ჩართოს CPFP), მაგრამ შეიძლება ძვირი იყოს რთული ტოპოლოგიებისთვის. ისტორიულად, კვანძები ეყრდნობოდნენ ევრისტიკასა და დამოკიდებულების ლიმიტებს, რამაც გამოიწვია მომხმარებლის ხახუნი და გახსნა ახალი pinning ვექტორები. Mempool-ები, რომლებიც აკონტროლებენ კლასტერებს, შეუძლიათ უფრო ზუსტად შეაფასონ სტიმულის თავსებადობა, მაგრამ მაინც უნდა შეზღუდონ mempool-ის დამოკიდებულებები. ამ ტიპის შეზღუდვები ქმნის pinning ვექტორებს ტრანზაქციებისთვის, რომლებიც მოიცავს მრავალ მხარეს, რომლებიც ერთმანეთს არ ენდობიან: თავდამსხმელს შეუძლია ხელი შეუშალოს თავის თანა-ტრანზაქტორს CPFP-ის გამოყენებაში ლიმიტის მონოპოლიზებით. ადვილია ამ საკითხების ტრივიალიზაცია: pinning შეტევები არის ცენზურის ნიშური ტიპი, რომელიც ვრცელდება მხოლოდ გაზიარებულ ტრანზაქციებზე და, როგორც წესი, მხოლოდ დროებით ტრანზაქციის შეფერხებებს იწვევს. ღირს თუ არა ძალისხმევა, რომ დავეხმაროთ არამაინინგ კვანძებს რამდენიმე დამატებითი სატოშის საკომისიოს გამოდევნაში? გაზიარებული ტრანზაქციები არის UTXO-შერევის კონფიდენციალურობის გადაწყვეტილებებისა და მეორე ფენის პროტოკოლების ხერხემალი. ბიტკოინის განვითარების დიდი ნაწილი ფოკუსირებულია მასშტაბირებადი, კონფიდენციალური, ფუნქციებით მდიდარი აპლიკაციების შექმნაზე მეორე ფენაში, რომელიც საბოლოოდ ჯაჭვზე წყდება. გავრცელებული ნიმუშია გატანის ან ანგარიშსწორების დროებით გადადება, რაც მხარეებს საშუალებას აძლევს რეაგირება მოახდინონ არასწორ ქცევაზე დროის ფანჯარაში. მაგრამ ბევრი დიზაინი – მათ შორის ისეთებიც, რომლებიც გამოიყენება კონსენსუსის ცვლილებების მოტივაციისთვის – ამ სცენარებში უგულებელყოფს საკომისიოს გაზრდას. დროის ფანჯარა არასწორი ქცევის თავიდან ასაცილებლად ასევე არის შესაძლებლობის ფანჯარა თავდამსხმელებისთვის. ეს ორი პირობა – გაზიარებული ტრანზაქციები და დადასტურების ვადები არასწორი ქცევის თავიდან ასაცილებლად – ქმნის სრულყოფილ სტო