ბიტკოინის ''Whitepaper''
ეს არის სატოში ნაკომოტოს ნაშრომი „Bitcoin- A peer-to-peer electronic cash system”, რომელმაც საფუძველი ჩაუყარა ბლოკჩეინ ტექნოლოგიასა და კრიპტოვალუტებს იმ სახით, რომლითაც დღეს ჩვენ მას ვიცნობთ. პირველი წაკითხვით, უამრავი ტერმინი და კონცეფცია გაუგებარი იქნება. ჩვენ სწორედ ამ ნაშრომით დავიწყეთ ამ თემის შესწავლა და არაერთხელ მივუბრნდით მას. თუ სიღრმისეულად გსურთ ბლოკჩეინ ტექნოლოგიის შესწავლა, გირჩევთ, ყოველი ახალი მნიშვნელოვანი კონცეფციის გააზრების შემდეგ მოუბრუნდეთ ამ ნაშრომს და ყოველ ჯერზე აღმოაჩენთ ახალ საიდუმლოს რომელსაც იგი ინახავს. ცხადია, შინაარსის გარკვეული ნაწილი შეიძლება თარგმანში დაიკარგოს, ამიტომ თუ საკმარისად კარგად იცით ინგლისური, სჯობს ნაშრომს გაეცნოთ ორიგინალშიც. (https://bitcoin.org/bitcoin.pdf)
CryptoZ გუნდი გისურვებთ წარმატებას!
ნაშრომის მიმოხილვა
ელექტრონული ფულის ეს ვერსია (peer-to-peer) შესაძლებელს გახდის, ონლაინ გადახდები შესრულდეს პირდაპირ ორ მხარეს შორის, ყველა ფინანსური ინსტიტუტის გვერდის ავლით. ციფრული ხელმოწერები უზრუნველყოფს ამ პრობლემის ნაწილობრივ გადაჭრას, მაგრამ თუ ისევ საჭირო გახდება, რომ ორივე მხარე ენდოს ცალკე მდგომ მესამე მხარეს, რათა მათ შორის არ მოხდეს ორჯერადი-ხარჯვა, მაშინ ელექტრონული ფულის ამ ვერსიის ყველა უპირატესობა იკარგება.
ჩვენ გთავაზობთ ორმაგი ხარჯვის პრობლემის გადაჭრას თანასწორუფებიანი (peer-to-peer) ქსელის მეშვეობით.
ქსელში ყველა ტრანზაქცია დროითაა დაშტამპული, შემდგომ ეს ტრანზაქციები დაჰაშულია უწყვეტ ჰაშზე დაფუძნებულ სამუშაოს შესრულების მტკიცებულების (hash-based-proof of work) ჯაჭვში. ჩაწერილი/დაჰაშული ინფორმაციის შეცვლა შესაძლებელია მხოლოდ იმ შემთხვევაში, თუ თავიდან დავჰაშავთ სამუშაოს შესრულების მტკიცებულების ჯაჭვს. დაჰაშული ტრანზაქციების ყველაზე გრძელი უწყვეტი ჯაჭვი არის მტკიცებულება იმისა, რომ იგი დაიჰაშა ყველაზე მძლავრი პროცესორების ერთობლიობით. სანამ ამ პროცესორების ძალა არის მართული დეცენტრალიზებული ნოდების მიერ, რომლებსაც არ აქვთ განზრახული, რომ თავს დაესხან ქსელს, მაშინ ისინი შექმნიან დაცულ, უწყვეტ დაჰაშული ტრანზაქციების ჯაჭვს (ნოდი შეგვიძლია განვიხილოთ როგორც ქსელში ჩართული კომპიუერ). ის იქნება თავდამსხმელების პროცესორებზე მეტი, ანუ მინიმუმ ქსელში ჩართული ყველა ნოდის 51%. ყველა ნოდს შეუძლია ჩაერთოს და გამოერთოს ქსელიდან ნებისმიერ დროს თავისი ნებით, გამოთიშვიდან უკან ჩართვის შემთხვევაში კი, მათ მოუწევთ დაადასტურონ ყველაზე გრძელი დადასტურებული ჯაჭვი, რომელიც დაიჰაშა მათ არყოფნაში, ანუ ეს ყველაზე გრძელი ჯაჭვი არის დასტური იმისა, თუ რა მოხდა მანამდე.
1. შესავალი
ბოლო ხანებში ინტერნეტ ფულადი გადარიცხვები მთლიანად დამოკიდებულია უკვე არსებულ ფინანსურ ინსტიტუტებზე. გამოდის, რომ ნდობა მთლიანად ეკისრება მესამე მხარეს, რათა ეს ელექტრონული გადარიცხვები შესრულდეს. ეს მოდელი უმეტესი ტრანზაქციებისთვის დღემდე კარგად მუშაობს, მაგრამ არსებობს პრობლემები, რომლებიც ჩნდება ნდობაზე დამყარებულ სისტემებში. ასეთ სისტემაში არ არსებობს შეუქცევადი ტრანზაქციები, რადგან ადამიანებს ყოველთვის შეუძლიათ ჩაერიონ, როგორც მესამე პირი და ტრანზაქციები შექცევადი გახადონ ( მაგალითად გააუქმონ ტრანზაქცია) ნებისმიერ დროს. მესამე მხარის (მაგალითად ბანკის) შუამავლობა ზრდის ტრანზაქციის ხარჯებს, ზღუდავს მიკრო ტრანზაქციების შესაძლებლობას და ამცირებს ჩვეულებრივი ტრანზაქციების მოცულობას. ტრანზაქციების შექცევადობა კიდევ უფრო ავრცელებს ნდობის საჭიროებას. ამის გამო, გამყიდველები ფრთხილად უნდა იყვნენ თავიანთ კლიენტებთან, რადგან მოუწევთ მათი შეწუხება ისეთი ინფორმაციისთვის, რაც მათ არ დასჭირდებოდათ სხვაგვარად. ასეთ სისტემაში, გაყალბების გარკვეული დონე ყოველთვის არსებობს. ზემოთ მოცემული ხარჯები და გაურკვევლობები გვარდება მხოლოდ პირისპირ ნაღდი ფულის (ქეშის) გაცვლისას, მაგრამ დღემდე არ არსებობს მექანიზმი ონლაინ ტრანზაქციებისთვის, რომელიც მოსპობს ნდობით აღჭურვილი მხარის საჭიროებას. საჭირო არის ელექტრონული გადახდის სისტემა, რომელიც დაფუძნებულია კრიპტოგრაფიულ მტკიცებულებაზე ნდობის ნაცვლად. ის საშუალებას მისცემს ნებისმიერ ორ მხარეს, დაუყოვნებლივ გადაცვალონ, რაც უნდათ, მესამე პირის ნდობის საჭიროების გარეშე. ტრანზაქციები, რომელთა შექცევადობაც იქნება წამგებიანი და არაპრაქტიკული, დაიცავს გამყიდველებს თაღლითობისგან. ამასთანავე, ადვილად მოხერხდება უწყვეტი ესქროუ მექანიზმების განხორციელება მყიდველების დასაცავად. ამ დოკუმენტში, ჩვენ ვთავაზობთ გამოსავალს ორმაგი ხარჯვის პრობლემის გადასაჭრელად, რომელიც გულისხმობს ტრანზაქციების ჩაწერას უწყვეტ და დროით ქრონოლოგიურ ჯაჭვში. მისი სიზუსტის მტკიცებულება მოხერხდება მოცემული კომპიუტერული გამოთვლებით. ეს სისტემა უსაფრთხოა მანამ, სანამ ნოდები აკონტროლებენ უფრო მეტ პროცესულ რესურსს, ვიდრე თავდამსხმელი ნოდები.
2. ტრანზაქციები
მოდით ელექტრონული მონეტა (მონეტები) მივიჩნიოთ, როგორცციფრული ხელმოწერების/კოდების ერთობლიობა. თითოეული მომხმარებელი მონეტის გადარიცხვისას ციფრულადაღწერს წინა ტრანზაქციის ჰაშს და მიმღების საჯარო გასაღებს, რომელიც შემდგომ იწერება ამ მონეტის (კოდების ერთობლიობის) ბოლოს. მიმღებს საშუალება ეძლევა, დაადასტუროს, თუ ვის ეკუთვნის მონეტაციფრული ხელმოწერების ჯაჭვის შემოწმებით.
პრობლემა რა თქმა უნდა, ის არის, რომ მიმღებს არ შეუძლია გადაამოწმოს, გამომგზავნმა მონეტაორჯერ დახარჯა თუ არა. ამ პრობლემის აპრობირებული გადაჭრის გზა არის ცენტრალური სერვერის, ან ერთეულის, დანერგვა, რომელიც შეამოწმებს ყველა ტრანზაქციას, რათა არავინ დახარჯოს ორჯერ თავისი მონეტები. ყოველი ტრანზაქციის შემდეგ მონეტა უნდა დაუბრუნდეს სერვერს, რათა ახალი მონეტა გამოიცეს. ამ შემთხვევაში მხოლოდ ის გამოცემული მონეტები არის სანდო, რომელიც ცენტრალურმა სერვერმა გამოუშვა და ისინი არ არის დახარჯული ორჯერ ან მეტჯერ. პრობლემაა ისაა, რომ ამ შემთხვევაშიც მთელი ფულის სისტემის ბედი დამოკიდებულია ცენტრალურ, გარე კომპანიაზე, და ყველა ტრანზაქცია მათი მეშვეობით უნდა იქნას შესრულებული ისევე, როგორიც, მაგალითად, ბანკის მიერ.
ჩვენ გვჭირდება, ვიპოვოთ რაიმე მეთოდი, რათა მიმღებს შეეძლოს, იცოდეს, დახარჯა თუ არა წინა მესაკუთრემ თავისი მონეტები, ან გამოიყენა თუ არა ორჯერ თავისი ციფრული ხელმოწერა. ჩვენი მიზნების მისაღწევად უბრალოდ ვთვლით სულ ყველაზე პირველ ტრანზაქციას, როგორც ნამდვილს, ხოლო ამის შემდგომ არ ვაქცევთ ყურადღებას იმას, დაეხარჯა თუ არა ტრანზაქციებს მონეტები ორმაგად. ერთადერთი გზა ტრანზაქციების ნამდვილობის დასადასტურებლად ისაა, ვიცოდეთ ქსელის ყველა ტრანზაქცია. ცენტრალურ სერვერზე დაფუძნებულ მოდელში სერვერმა იცის ყველა ტრანზაქცია და ამის მიხედვით წყვეტს, თუ რომელი გატარდა პირველად. ამ მიზნის მისაღწევად ოპერაციები საჯაროდ უნდა გამოცხადდეს, რათა გამოირიცხოს სანდო მხარის საჭიროება. ჩვენ გვჭირდება, რომ სისტემის მონაწილეები დაეთანხმონ იმ ტრანზაქციების თანმიმდევრობის ერთიან ისტორიას, რომელიც მათ შეასრულეს. მიმღებს სჭირდება მტკიცებულება, რომ თითოეული ტრანზაქციის დროს, ნოდების უმრავლესობა თანხმდებოდეს, თუ რომელი ოპერაცია გატარდა პირველი.
3. დროით დანიშნული სერვერი
დროით დანიშნული სერვერი ნიშნავს ყველა ბლოკის ჰაშს დროის ქრონოლოგიის მიხედვით და შემდეგ გადასცემს მიღებულ ჰაშს ყველა ნოდს. დროის ნიშნული ადასტურებს, რომ მონაცემები არსებობდა იმ დროის მონაკვეთში, ცხადია, იმისათვის, რომ შეტანილ იქნან ჰაშში. თითოეული დროის ნიშნული თავისთავად შეიცავს წინა დროის ნიშნულს თავის ჰაშში, საიდანაც ფორმირდება უწყვეტი ჯაჭვი. აქედან გამომდინარე, ყოველი მომდევნო დროის ნიშნული აკონტროლებს თავის წინამორბედს.
4. სამუშაოს შესრულების მტკიცებულება
გადანაწილებული და დროით დაშტამპული სერვერის იმპლემენტაციისთვის პირდაპირ მხარეთაშორის ქსელში, საჭიროა გამოყენებულ იქნას სამუშაოს მტკიცებულების სისტემა (Proof of Work), რომელიც განმარტებული აქვს ადამ ბექსს Hashcash-ში. [6] სამუშაოს შესრულების მტკიცებულების სისტემა ითვლის/ასკანერებს იმ ჰაშს, რომელიც იმ მომენტში იყო მიღებული SHA-256 ალგორითმის მიერ (ამ შემთხვევაში). პირველი ჰაში იწყება 0 სიმბოლოებით. საშუალო სამუშაოს ექპონენციური რიცხვის შესამოწმებლად 0 ბიტებში, საჭიროა შესრულებულ იქნას ერთი ჰაში. იმისათვის, რომ დროით დანიშნულ ქსელში დაინერგოს სამუშაოს მტკიცებულების სისტემა, უნდა გაიზარდოს ნონსის მნიშვნელობა მანამ, სანამ ბლოკის სწორ ჰაშს არ ვიპოვით თავისი შესაფერისი 0-ების რაოდენობით. როდესაც ნონსის გაზრდით ამ სწორი ჰაშის საპოვნელად დაიხარჯება გამოთვლითი სამუშაო პროცესორების მიერ, ეს ბლოკი შეიცვლება შეუძლებელი სამუშაოს თავიდან ჩატარების გარეშე. შემდგომ, როდესაც ბლოკები უკვე გადაჯაჭვულია ერთმანეთზე, ნებისმიერ ბლოკში ცვლილებისთვის საჭიროა მთელი იმ სამუშაოს თავიდან შესრულება, რაც დაიხარჯა ამ ბლოკის შემდეგ ჯაჭვში არსებულ ყველა მომდევნო ბლოკზე.
სამუშაოს მტკიცებულება ასევე წყვეტს უმრავლესობაში გადაწყვეტილების მიღების საკითხს. თუ უმრავლესობა ერთი IP- მისამართით ერთ ხმაზეა დაფუძნებული, ის შეიძლება გაყალბდეს მრავალი IP- ების გაკონტროლებით. ამიტომ სამუშაოს შესრულების მტკიცებულება იყენებს ერთ პროცესორს/ნოდს, როგორც ერთ ხმას. უმრავლესობის გადაწყვეტილებაში წარმოდგენილია ყველაზე გრძელი ჯაჭვი, რომელსაც აქვს ყველაზე დიდი სამუშაოს მტკიცებულება დაფიქსირებული. თუ CPU ძალის უმრავლესობას მართავენ პატიოსანი ნოდები, პატიოსანი ჯაჭვი ნებისმიერ კონკურენტ ჯაჭვებზე სწრაფად გაიზრდება. წარსული ბლოკების შესაცვლელად, თავდამსხმელმა უნდა გადალახოს ბლოკის მტკიცებულება და ყველა ბლოკი მას შემდეგ, რაც პატიოსანმა ნოდებმა დაჰაშეს. ჩვენ მოგვიანებით გაჩვენებთ, რომ რაც უფრო მეტი ბლოკი ემატება ქსელს, მით უფრო რთულდება ქსელზე თავდასხმა.
დროთა განმავლობაში ნოდების სიჩქარე და ნაწილების უზრუნველყოფა გაიზრდება, ამიტომ დაინერგა სამუშაოს შესრულების მტკიცებულების სირთულის კოეფიციენტი. თუ ბლოკები ძალიან სწრაფად დადასტურდა, სამუშაოს შესრულების მტკიცებულების სირთულე იზრდება ქსელის დაბალანსების მიზნით.
5. ქსელი
წესები, რომლებიც აუცილებელია მისი გამართული მუშაობისთვის:
- ახალი ტრანზაქციები გადაეცემა ყველა ნოდს.
- ყველა ნოდი თავს უყრის ყველა ტრანზაქციას ბლოკებში.
- თითეული ნოდი ცდილობს, იპოვოს/დაჰაშოს სამუშაოს შესრულების მტკიცებულება თავისი ბლოკისთვის.
- როდესაც ნოდი იპოვის თავისი სამუშაოს მტკიცებულებას, იგი გადასცემს ბლოკს ყველა სხვა ნოდს.
- ნოდები მიიღებენ ბლოკს, როგორც ნამდვილს, თუ ყველა ტრანზაქცია ბლოკში ვალიდურია და არაა ორმაგად დახარჯული.
- ნოდები ადასტურებენ ბლოკის სინამდვილეს და ქმნიან ახალს.
- ჯაჭვში ახალი ბლოკის ჰაშად იყენებენ უკვე დადასტურებული წინა ბლოკის ჰაშს.
ნოდები ყოველთვის თვლიან ყველაზე გრძელ ჯაწვს ნამდვილად/ვალიდურად და მუშაობენ მის უფრო და უფრო დაგრძელებაზე ახალ-ახალი ბლოკებით. თუ ნოდები ერთდროულად გადასცემენ შემდგომი ბლოკის სხვადასხვა ვერსიას, შეიძლება ზოგმა ნომდა ერთი მიიღოს, ზოგმა კი - მეორე. ამ შემთხვევაში, ისინი აგრძელებენ მუშაობას იმ ბლოკზე, რომელიც პირველად მიიღეს, ხოლო მეორეს ინახავენ იმ შემთხვევისთვის, თუ აღმოჩნდება, რომ მეორე ჯაჭვი უფრო გრძელია. იმას, თუ რომელ ბლოკზე გააგრძელებს ქსელი მუშაობას, გავიგებთ მაშინ, როდესაც შემდეგ ბლოკს ვიპოვით, რადგან შემდეგ გამოჩნდება,, რომელი ჯაჭვი უფრო გრძელია და ყველა ნოდი ამ ვერსიაზე გააგრძელებს მუშაობას.
6. წახალისება
თითოეული ბლოკის პირველი ტრანზაქცია არის გამორჩეული, რადგან ეს განსაზღვრავს ახალი გამოსული მონეტის მფლობელს, რომელმაც ეს ბლოკი შექმნა (Coinbase Transaction). ეს ხელს უწყობს ნოდების სტიმულირებას, რომ უზრუნველყონ ქსელი და საშუალებას იძლევა, რომ გადანაწილდეს მონეტები მიმოქცევაში, რადგან მათ არ გასცემენ ცენტრალური ორგანოები. ეს უწყვეტი და თანაბარი მონეტების გამოშვება ძალიან ჰგავს ოქროს მოპოვებას, ოქროს მომპოვებლები ხარჯავენ რესურსებს და ენერგიას ახალი ოქროს მოსაპოვებლად, ამ შემთხვევაში ნოდები ხარჯავენ ელექტროენერგიას და პროცესურულ დროს კალკულაციებისთვის.
სტიმული შეიძლება დაფინანსდეს ასევე ტრანზაქციების საკომისიოთი. თუ ტრანზაქციის გამომავალი ღირებულება ნაკლებია მისი შეყვანის ღირებულებაზე, განსხვავება არის ტრანზაქციის საკომისიო, რომელიც დაემატა ბლოკის სტიმულს. მას შემდეგ, რაც წინასწარ განსაზღვრული რაოდენობის მონეტები შევიდნენ მიმოქცევაში, სტიმული მთლიანად გადადის ტრანზაქციის საფასურში, რაც ინფლაციას არ წარმოქმნის და დამატებითი მონეტები არ ჩნდება ცირკულაციაში. ეს ინცენტივები უზრუნველყოფს და ახალისებს ნოდებს, რომ ითამაშონ პატიოსნად ქსელის წესებით. თუ ხარბი თავდამსხმელი მოახერხებს და შეაგროვებს უფრო მეტ სიმძლავრეს, ვიდრე პატიოსან ნოდებს აქვთ, მას მხოლოდ ორი არჩევანი აქვს, დაიბრუნოს ყველა თავისი გაკეთებული ტრანზაქცია უკან, ან გამოიყენოს სიმძლავრე ახალი მონეტების გამოსაშვებად. აქედან გამომდინარე, მისთვის წესების დაცვა უფრო მომგებიანი იქნება, რადგან ამხელა სიმძლავრით ახალი ნამდვილი მონეტების უმრავლესობა ისედაც მისი იქნება. ამიტომ მას არ უნდა აწყობდეს თავისი ქონების ეჭვქვეშ დაყენება, როდესაც შეუძლია, პატიოსნადაც გამოიმუშაოს უფრო მეტი.
7. ადგილი მყარ დისკზე
როგორც კი მონეტებში დაიმარხება/დაიჰაშება უახლესი ტრანზაქცია საკმარისი ბლოკების ქვეშ, მის წინ არსებული ყველა დახარჯული ტრანზაქცია წაიშლება, რათა დაიზოგოს ადგილი მყარ დისკზე და დაიკავოს პატარა მოცულობა. ამ ოპერაციის ჩასატარებლად ყველა ტრანზაქცია იჰაშება მერკელის ხეშიც (Merkle Tree), რათა არ მოხდეს ბლოკის ჰაშის ცდომილება. ბლოკის ინფოში კი მხოლოდ მერკელის ფესვი შედის, რომელიც დაიჰაშა ყველა ტრანზაქციისგან. ანუ, მხოლოდ საბოლოო ჰაშის ფესვი შედის ბლოკში, ხოლო დანარჩენი მერკელის განშტოებები საჭირო აღარ არის.
მხოლოდ ბლოკის სათაური/ინფო ტრანზაქციების გარეშე შეადგენს 80 ბაიტს. თუ დავუშვებთ, რომ ყოველ 10 წუთში ხდება ბლოკების გენერირება, 80*6*24*365= 4.2 მბ წელიწადში. 2008 წლის მონაცემებით, კომპიუტერული სისტემები იყიდება მინიმუმ 2გეგა ბაიტიანი მახსოვრობის ოპერატიული მეხსიერებით, მორზეს თეორიით პროგნოზირებულია, რომ წელიწადში ზრდა იქნება 1.2 გეგა ბაიტი, აქედან გამომდინარე, მყარ დისკზე მოცულობა არ შექმნის არანაირ პრობლემას, თუნდაც ბლოკების სათაურები შენახულ იქნას მყარ დისკზე.
8. გამარტივებული გადახდების ვერიფიკაცია
ტრანზაქციების ვერიფიკაცია სრული ნოდის გამოყენების გარეშეც შესაძლებელია. ამისათვის მომხმარებელმა უბრალოდ უნდა შეინახოს ბლოკების სათაურების ასლი, რომელიც არის ყველაზე გრძელი სამუშაოს მტკიცებულების ჯაჭვში. მას ეს ოპერაცია შეუძლია მოითხოვოს ქსელიდან მანამ, სანამ არ დარწმუნდება, რომ აქვს ყველაზე გრძელი ჯაჭვი, ასევე მერკელის ტოტებიც, რომელიც დაკავშირებულია თავის ბლოკთან თავისი დროის ნიშნულით. მას არ შეუძლია ტრანზაქციის ნახვა თვითონ, მაგრამ მისი დაკავშირებით ქსელთან, შეუძლია ნახოს თუ რა ადგილას იყო მისი ტრანზაქციები ჯაჭვში და შეუძლია დაადასტუროს, რომ ნოდმა გაატარა მისი ტრანზაქცია. შემდეგ კი, მიმატებული ბლოკი დაასტურებს, რომ ტრანზაქცია შეტანილია ბლოკში.
აქედან გამომდინარე, ამ სახის ვერიფიკაცია სანდოა, მანამ სანამ პატიოსანი ნოდები აკონტროლებენ ქსელს. იმ შემთხვევაში, თუ თავდამსხმელი აკონტროლებს მეტი კომპიუტერულ სიმძლავრეს, მაშინ პირიქით, არასანდოა. სანამ ქსელის ნოდები ადასტურებენ თავიათ ტრანზაქციებს, გამარტივებული ვერიფიკაციის მოტყუება თავდამსხმელს არ გაუჭირდება, თუ იგი აკონტროლებს ქსელის უმეტეს ძალას. ამ პრობლემის გადაჭრის ერთი სტრატეგია არსებობს: როდესაც ნოდი შეამჩნევს მცდარ ბლოკებს, მან უნდა გააფრთხილოს ქსელი და მოსთხოვოს თავდამსხმელის სოფტს, რომ გადმოწეროს მთლიანი ბლოკი და დაადასტურონ მცდარი ტრანზაქციები. ბიზნესებისთვის,რომლებიც ხშირად იღებენ მონეტებს, რეკომენდირებულია, რომ ჰქონდეთ თავიანთი სრული ნოდი იმისათვის, რომ იყვნენ მეტად დამოუკიდებლები და სწრაფად დაადასტურონ თავიანთი ტრანზაქციები.
9. მონეტის გაერთიანება და გახლეჩა
რა თქმა უნდა, სრულიად შესაძლებელია მონეტების გადარიცხვა ინდივიდუალურად, მაგრამ ძალიან არამოსახერხებელი იქნება ყველა მიკრო ცენტზე ცალკე ტრანზაქციის გატარება. ამიტომ, იმისათვის, რომ მონეტების რაოდენობა დაიყოს ან გაერთიანდეს, ტრანზაქციები შეიცავს მრავალ შემავალ და გამომავალ ინფორმაციას. სულ იქნება ან ერთი input შედარებით დიდი წინა ტრანზაქციიდან, ან რამოდენიმე input, რომლებიც აერთიანებს რამოდენიმე პატარა ტრანზაქციას. შედეგი (output) კი, უმეტესწილად იქნება შემდეგი: ერთი გადახდა და ერთიც ხურდის დაბრუნება, თუ დასბრუნებელი იქნება ხურდა, იგი გამომგზავნს უკანვე დაუბრუნდება.
უნდა აღინიშნოს, რომ თუ ბევრი ტრანზაქცია დამოკიდებულია კიდევ ბევრ სხვა ტრანზაქციაზე, აღარ არსებობს მთლიანი ტრანზაქციის ისტორიის ასლის საჭიროება.
10. კონფიდენციალურობა
ტრადიციული ბანკის სისტემა კონფიდენციალურობის გარკვეულ დონეს აღწევს ინფორმაციის ხელმისაწვდომობის ლიმიტირებით მხარეებს შორის, ანუ ისევ ჩნდება მესამე მხარის სანდოობის აუცილებლობა. აქედან გამოსავალი არის ყველა ტრანზაქციის გასაჯაროება, კონფიდენციალურობას კი მივაღწევთსაჯარო მისამართების ანონიმურობით / ფსევდონიმუროით. ყველა ტრანზაქცია გამოჩნდება საჯაროდ, მაგრამ ვინ ვის გადაურიცხა თანხა, ამაზე ინფორმაცია დაფარული იქნება. ეს ძალიან ჰგავს საფონდო ბირჟას, სადაც ყველა ხედავს ვაჭრობის დროს და მოცულობას, მაგრამ ვინ იყვნენ მხარეები, არ ჩანს.
დამატებითი თავდაცვისთვის, ყოველი ახალი ტრანზაქციის დროს შეიძლება გამოყენებულ იქნას ორი ახალი გამგზავნის და მიმღების მისამართი, რათა ვერ გაირკვეს მათი რეალური მფლობელი. არის შემთხვევები, როდესაც ბევრი ცვლადიანი ტრანზაქციის შემთხვევაში შეიძლება გაირკვეს, რომ ინფუთები ეკუთვნოდა ერთ მფლობელს. აქ რისკი ის არის, რომ თუ ამ მისამართების მფლობელი გამოაშკარავდა, მაშინ არსებობს მისი სხვა ტრანზაქციების გამოაშკარავების შანსი.
11. გამოთვლები
განვიხილოთ სცენარი, სადაც თავდამსხმელი ნოდი ცდილობს დაჰაშოს ალტერნატიული ჯაჭვი უფრო სწრაფად, ვიდრე პატიოსანი ნოდები. თუ მან ეს შეასრულა, იმას არ ნიშნავს, რომ რასაც უნდა იმას შეცვლის ქსელში. მაგალითად, ის ვერასდროს აიღებს მონეტებს, რომელიც მას არ ეკუთნოდა, სხვა ნოდები არასოდეს დაადასტურებენ მცდარ ტრანზაქციებს და ასევე არასდროს დაადასტურებენ ბლოკებს, რომელშიც ეს ტრანზაქციები შედის. თავდამსხმელს მხოლოდ შეუძლია, დაიბრუნოს თავის მიერ დახარჯული მონეტები.
შეჯიბრს, პატიოსან და არაპატიოსან ჯაჭვებს შორის, შეგვიძლია ვუწოდოთ Binomial.
Random Walk. აქ წარმატებული სვლა იქნება პატიოსანი ჯაჭვის მიერ ერთი ბლოკის მიმატება +1, წარუმატებელი სვლა კი - თუ თავდამსხმელი მიამატებს ერთს თავის ჯაჭვს, ანუ შეამცირებს განსხვავებას -1.
თავდამსხმელის პატიოსან ჯაჭვზე დაწევა ნებისმიერი მოცემული განსხვავების შემთხვევაში, ჰგავს „რუინის მოთამაშის პრობლემას“. დავუშვათ, რომ მოთამაშე იწყებს თამაშს უსასრულო კრედიტით, მაგრამ დეფიციტში, ანუ მინუსში, მას შეუძლია სცადოს უსასრულო რაოდენობით, რათა გავიდეს ნულოვან მოგებაზე. ჩვენ აქ შეგვიძლია დავითვალოთ ალბათობა იმისა, თუ როდის გავა იგი ნულოვან მოგებაზე, ანდა როდის დაეწევა თავდამსხმელის ჯაჭვი პატიოსანი ნოდების ჯაჭვს.
P= ალბათობა იმისა, რომ პატიოსანი ნოდი იპოვის შემდეგ ბლოკს.
q= ალბათობა იმისა, რომ არაპატიოსანი ნოდი იპოვის შემდეგ ბლოკს.
qz= ალბათობა იმისა, რომ თუ თავდამსხმელი უკანაა, ის დაეწევა პატიოსან ჯაჭვს z რაოდენობის ბლოკშიბით.
ჩვენი ვარაუდის გათვალისწინებით, p > q, რაც უფრო იმატებს დასაწევი ბლოკების რაოდენობა, მით უფრო და უფრო მცირდება ალბათობა იმისა, რომ თავდამსხმელი დაეწევა პატიოსან ჯაჭვს. თუ თავდამსხმელმა დიდი ფორა არ მოიპოვა თავიდანვე, ამ შემთხვევაში მისი დაწევის შანსი 0-ის ტოლი ხდება. ასევე გავითვალისწინოთ თუ რამდენ ხანს უნდა ელოდოს მიმღები ტრანზაქციას, რათა დარწმუნებული იყოს, გააყალბა თუ არა გამომგზავნსმა ტრანზაქცია. დავუშვათ, გამგზავნი არის თავდამსხმელი და უნდა, მიმღებმა დაიჯეროს, რომ მან გაუგზავნა მონეტა გარკვეული დროის განმავლობაში, რათა ამ დროის მონაკვეთში შეცვალოს ჯაჭვი და თავის თავს გაუგზავნოს მონეტებ უკან. მიმღები ამ შემთხვევაში იქნება გაფრთხილებული იმწამსვე, მაგრამ ეს არ აწყობს თავდამსხმელს.
მიმღები წარმოქმნის ახალი მისამართების წყვილს და საჯარო მისამართს მისცემს გამომგზავნს ტრანზაქციის ციფრული ხელმოწერისთანავე. ეს ხელს უშლის გამგზავნს, რომ წინასწარ არ მოამზადოს ბლოკები, რათა პატიოსან ჯაჭვს არ გაასწროს საგრძნობლად. თუ გაასწრო, მაშინ იგი გაატარებს ტრანზაქციებს იმ მომენტში. გაგზავნის შემდეგ, თავდამსხმელმა უნდა იმუშაოს ჩუმად ცალკე ჯაჭვზე, სადაც თავისი ალტერნატიული ტრანზაქციებია.
მონეტის მიმღები ელოდება ტარნზაქციის დადასტურებას ბლოკში და ბლოკის შემდეგ შემდგომი ბლოკების მიბმას. მან არ იცის თავდამსხმელის პროგრესი, მაგრამ იცის ბლოკების შექმნის საშუალო დრო, აქედან გამომდინარე, თავდამსხმელის პოტენციური პროგრესი იქნება პოსონ გადანაწილება, მოსალოდნელი მნიშვნელობა კი:
იმისათვის,რომ ამის შემდეგ გავარკვიოთ თავდამსხმელის პატიოსან ჯაჭვზე დაწევის ალბათობა, ჩვენ უნდა გავამრავლოთ პუასონის განაწილების სიმჭიდროვე თითოეულ მის შესრულებულ პროგრესსზე, რაც მას იმ მომენტიდან შეეძლო, გაეკეთებინა.
გადავანაცვლოთ განტოლება:
ეს ყველაფერი C კოდში შემდეგნაირად გამოიყურება:
ქვემოთ მოცემული გამოთვლებიდან ჩანს, რომ ალბათობა იკლებს ექსპონენციურად z ცვლადისთვის.
12. დასკვნა
ჩვენ შემოგთავაზეთ ელექტრონული ტრანზაქციების სისტემა, რომელიც არ არის დამოკიდებული ნდობაზე მხარეთა შორის. ამისთვის, ჩვენ გამოვიყენეთ მონეტების სტრუქტურა ციფრული ხელმოწერებით. ეს უკანასკნელი არის მფლობელობის კონტროლის ძლიერი მექანიზმი . ეს სისტემა არის არასრული ორმაგი დახარჯვის პრობლემის მოგვარების გარეშე. ჩვენ ამისათვის შემოგთავაზეთ პირისპირა ქსელი სამოშაოს შესრულების მტკიცებულების გამოყენებით, რომელშიც არის საჯაროდ ჩაწერილი ყველა ტრანზაქცია. ამ სისტემაში თავდამსხმელისთვის არაპრაქტიკულია, განახორციელოს თავისი განზრახვები, თუ ქსელს აკონტროლებს პატიოსანი ნოდების CPU უმრავლესობა. ასეთი ქსელი არის ძლიერი და ამავდროულად მარტივი. ყველა ნოდი მუშაობს ერთდროულად მინიმუმი კოორდინაციით. მათი ინდენტიფიკაცია საჭიროებას არ წარმოადგენს, ისინი არ არიან მიბმული რაიმე კონკრეტულ ადგილს ან პირს. მათ შეუძლიათ ჩაერთონ ან გამოერთონ ქსელიდან, ჩართვისას კი მიიღებენ სამუშაოს შესრულების მტკიცებულების ჯაჭვს იმის შესახებ, თუ რა მოხდა მათ არყოფნაში, როგორც ვალიდურს. ისინი ხმას აძლევენ მათი პროცესურული სიმძლავრით და გამოხატავენ თავიანთ ბლოკების დასტურს ამავე ბლოკებზე მუშაობით, ხოლო პირიქით კი, არ მუშაობენ მცდარ ბლოკებზე. ნებისმიერი წესი და ინცენტივი შეიძლება გატარებულ იქნას ქსელში მხოლოდ კონსესუსის მექანიზმით.
წყარო: https://bitcoin.org/bitcoin.pdf
თარგმანი: დათა სვიმონიშვილი
რედაქცია: ანა მიქატაძე, ბექა დალაქიშვილი
Comments