ბიტკოინი დაფუძნებულია ბლოკჩეინზე, ეს ყველამ იცის. მაგრამ რა არის ეს ბლოკჩეინი? უფრო ზუსტად, როგორ შეიძლება წარმოვიდგინოთ ბლოკჩეინის ცალკეული კომპონენტები, ბლოკები?
ბლოკჩეინი არის მონაცემთა ბლოკების ჯაჭვი. თითოეული ბლოკი შეიძლება ჩაითვალოს, როგორც გვერდი წიგნში. ინდივიდუალური ბლოკები შედგება რამდენიმე კომპონენტისგან. უხეშად ისინი შეიძლება განვასხვავოთ განლაგებით, ისინი რომლებიც არიან ბლოკის თავში (ბლოკის სათაური) და მისი სხეული (ბლოკის სხეული).
ბლოკის თავი დაყოფილია ექვს კომპონენტად:
პროგრამული უზრუნველყოფის ვერსიის ნომერი,
წინა ბლოკის ჰეში,
Merkle tree-ის ჰაში,
დრო წამებში 1970–01–01 T00: 00 UTC,
მიმდინარე სირთულის მიზანი,
Nonce.
პროგრამული უზრუნველყოფის ვერსიის ნომერი
პროგრამული უზრუნველყოფის ვერსიის ნომერს უმეტეს შემთხვევაში არ აქვს მნიშვნელობა. თუმცა, მაინერს, რომელსაც აქვს კონკრეტული ვერსიის ნომერი, შეუძლია მიუთითოს, რომელ პროტოკოლურ გადაწყვეტილებებს უჭერს მხარს.
წინა ბლოკის ჰეში
წინა ბლოკის ჰეში, ასე ვთქვათ, ბლოკჩეინის ჯაჭვია. იმის გამო, რომ წინა ბლოკის ჰეში შეიცავს ახალი ბლოკის ჰეშს, ბლოკჩეინის ბლოკები ყველა ერთმანეთზეა აგებული. ამ კომპონენტის გარეშე, არ იქნებოდა კავშირი და ქრონოლოგია თითოეულ ბლოკს შორის.
მერკლის ხის ფესვის ჰაში
ბლოკში შემავალი ყველა ტრანზაქცია შეიძლება გაერთიანდეს ჰეშში. ეს არის მერკლის ხის ფესვი.
დრო წამებში 1970–01–01 T00: 00 UTC
დროის ანაბეჭდი თავად ბლოკში. დრო მოცემულია წამებში 1.1.1970 -დან.
მიმდიინარე დაბროლების მიზანი
მიზანი მიუთითებს, თუ რამდენად მცირე უნდა იყოს ახალი ჰეში, რომ მოითხოვოს ვალიდობა. სხვა სიტყვებით რომ ვთქვათ, ყველა ჰეშს აქვს ზომა ბიტებში. რაც უფრო დაბალია მიზანი ბიტებში, მით უფრო რთულია შესატყვისი ჰეშის პოვნა. ჰეში, რომელსაც დასაწყისში ბევრი ნული აქვს, უფრო მცირეა, ვიდრე ჰეში ნულების გარეშე.
Nonce
Nonce არის ცვლადი, რომელიც იზრდება სამუშაოს დადასტურებით. ამ გზით მაინერი გამოიცნობს მოქმედ ჰეშს, მას, რომელიც სამიზნეზე მცირეა.
ექვსი კომპონენტი ქმნის ბლოკის სათაურს. ბლოკის სათაური თამაშობს ფუნდამენტურ როლს ბიტკოინში, რადგან ის აკავშირებს ყველა ბლოკს ერთმანეთთან. თქვენ შეგიძლიათ წარმოიდგინოთ ის, როგორც სატვირთო მანქანის კაბინა. აქ არის მნიშვნელოვანი დოკუმენტები, რომლითაც სატვირთო მანქანა მოდის ქსელის კონტროლის საშუალებით.
ბლოკის სხეული
ბლოკის კორპუსი შეიცავს ყველა ტრანზაქციას, რომელიც დადასტურებულია ბლოკით.
როდესაც მაინერი აშენებს ბლოკს, ის ამოწმებს ტრანზაქციებს. ანუ ის ამოწმებს, რომ გამგზავნს რეალურად აქვს საკმარისი ფული დასახარჯად. მას ადვილად შეუძლია წაიკითხოს ეს ინფორმაცია ბლოკჩეინიდან. მაინერი ათვალიერებს წარსულ ბლოკებს, რათა ნახოს, აქვს თუ არა გამგზავნს ათი ბიტკოინი, თუ მას სურს ათი ბიტკოინის გაგზავნა. ტრანზაქციები ბლოკში არ არის მხოლოდ სიაში, არამედ ე.წ. Merkle Tree-ში.
რა არის Merkle Tree?
მერკლის ხემ მიიღო სახელი მათემატიკოს რალფ მერკლისგან. მისი აღმოჩენის მიხედით, ბევრი ინფორმაცია შეიძლება წარმოდგენილი იყოს ერთ ჰეშში. ამისთვის, ჯერ თავად მონაცემებია ჰეშირებულია. საბოლოოდ, Merkle Tree გაერთიანდა ერთ ჰეშში. ამ ბოლო ჰეშს ასევე უწოდებენ ფესვის ჰეშს, ხის ფესვს. იგი წარმოადგენს ყველა ინფორმაციას მისი „ფოთლების“ (ინდივიდუალური ტრანზაქციები) და „ტოტების“ (ფოთლების ჰეშების) შესახებ შედარებით მოკლე სტრიქონში.
ფესვის ჰეშის შექმნა სწრაფი და მარტივია, რადგან ყველა ტოტი და ფოთოლი ცნობილია. ჩვენ გვახსოვს ჰეშის ფუნქცია: ის მუშაობს ნათლად და სწრაფად ერთი მიმართულებით და შეუძლებელია სხვა მიმართულებით დაშლა. თუ root ჰეში ცნობილია, მაგრამ ტრანზაქციები უცნობია, ტრანზაქციების გამოცნობა შეუძლებელია.
ამიტომ მარტო root ჰეში არ არის საკმარისი და დანარჩენი ბლოკი უნდა იყოს შენახული. ამრიგად, მაინერს შეუძლია ნებისმიერ დროს დაადასტუროს root ჰეში, ბლოკში არსებული ინფორმაციის ხელახლა ჰეშირებით. სანამ ჰეშის ფუნქცია იგივეა, მაინერები ყოველთვის იღებენ ერთსა და იმავე ჰეშს მოცემული მონაცემთა შეყვანისთვის. ეს ძალიან მოსახერხებელია, რადგან მათ შეუძლიათ მხოლოდ შეამოწმონ, არიან თუ არა ისინი იმავე დონეზე, როგორც ჰეში.
მაინინგი: სპეციალური ჰეშის ძებნა
მაინინგის დროს, ბლოკის სათაური თანდათან იცვლება სპეციალური ჰეშის მისაღებად. სათაური შედგება ხუთი მუდმივისაგან და ერთი ცვლადისაგან. მუდმივებია პროგრამული უზრუნველყოფის ვერსიის ნომერი, წინა ბლოკის ჰეში, Merkle-ის ხის ძირეული ჰეში, დროის შტამპი და მოძიებული ჰეშის სამიზნე ზომა ბაიტებში.
ცვლადი არის nonce. ნონსი არის რიცხვი, რომელიც ამაღლებულია ერთით. შემდეგ მაინერი ახდენს მონაცემების ჰეშს და ამოწმებს, არის თუ არა მონაცემების ჰეში, რომელიც არის მოძიებული სამიზნე მნიშვნელობის ქვემოთ. თუ ჰეშის მნიშვნელობა სამიზნეზე მეტია, მაინერი იმეორებს პროცესს; ასე რომ, ის ზრდის ნონსს ერთით, ჰეშირებს და კვლავ ამოწმებს. ის იმეორებს ამას მანამ, სანამ არ იპოვის ჰეშს სამიზნის ქვემოთ, ან არ მიიღებს სხვა ბლოკს სხვა ქსელურისგან, რომლის ჰეშიც არის სამიზნის ქვემოთ. შემდეგ იღებს ამ ახალ ბლოკს და იყენებს მას, როგორც საფუძველს შემდეგი ბლოკისთვის (ახალი ჰეშის გამოყენება, როგორც “წინა ბლოკის ჰეში”).
მაინინგი არის ჰიპერ-განმეორებადი პროცესი, რომლის მიზანია სპეციალური ჰეშის პოვნა. ჰეშის აღმოჩენის შემდეგ თამაში ისევ იწყება. სპეციალური ჰეშის პოვნის ალბათობა დამოკიდებულია სირთულეზე. საშუალოდ, ბიტკოინი ყოველ ათ წუთში პოულობს ახალ ბლოკს. სირთულე აგრძელებს ადაპტაციას, ამიტომ ეს საშუალო, უცვლელი რჩება.
ამ პროცესის განსაკუთრებული თვისება ის არის, რომ სპეციალური ჰეშის პოვნა მხოლოდ გამოცნობით არის შესაძლებელი. ეს მაჩვენებელი ხარჯავს გამოთვლით ძალას და შესაბამისად ენერგიას. სპეციალური ჰეშის დათვალიერება საკმარისია იმის დასანახად, რომ ის განსაკუთრებულია, რადგან ის იწყება ნულებით.
დაბალანსებული სამუშაო პროცესის საიდუმლო თანამედროვე სამყაროში