SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.

Cách SHA256 và khai thác bảo vệ mạng Bitcoin

Bitcoin được bảo vệ bằng năng lượng như thế nào? Và nonce là gì? Những câu hỏi này và nhiều hơn nữa được trả lời bên trong!

Cách khai thác hoạt động thật hấp dẫn. Khi tôi giải thích điều đó cho mọi người, tôi thích thú khi nhìn thấy khuôn mặt của họ ngay lúc tâm trí họ được thổi bay. Tôi sẽ giải thích nó ở đây, nhưng chỉ biết rằng, tôi đang tưởng tượng tất cả các khuôn mặt của bạn khi tâm trí bạn thổi!

Tôi phải bắt đầu với các hàm băm. Nếu không có các hàm băm, Bitcoin sẽ không thể thực hiện được. Trước tiên, hãy để tôi giải thích chúng là gì, không chỉ để bạn có thể nghe thật thú vị tại các bữa tiệc mà còn bởi vì nó là cơ bản để hiểu cách Bitcoin hoạt động - đặc biệt là khai thác mà còn cả các giao dịch - dưới mui xe.

Bạn không cần phải hiểu cách Bitcoin hoạt động để hưởng lợi từ nó, cũng giống như cách bạn không cần hiểu cách thức hoạt động của TCP / IP để sử dụng internet. Nhưng hãy tiếp tục, bởi vì nó khá thú vị và tôi sẽ làm cho nó dễ hiểu, tôi hứa.

Hàm băm

Hãy bắt đầu với một giản đồ mà tôi sẽ giải thích bên dưới…

SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.
(Đồ họa/@jirols_btc)

Bên trái là đầu vào, trung tâm là chức năng và bên phải là đầu ra. Đầu vào có thể là bất kỳ dữ liệu nào, miễn là dữ liệu kỹ thuật số. Nó có thể có kích thước bất kỳ, miễn là máy tính của bạn có thể xử lý nó. Dữ liệu được chuyển đến hàm SHA256. Hàm lấy dữ liệu và tính toán một số trông ngẫu nhiên, nhưng có các thuộc tính đặc biệt (sẽ nói ở phần sau).

Thuật toán băm an toàn đầu tiên (SHA) ban đầu là được phát triển bởi NSA và hiện có nhiều phiên bản khác nhau (Bitcoin sử dụng SHA256). Đó là một tập hợp các hướng dẫn về cách xáo trộn dữ liệu theo một cách rất phức tạp nhưng được chỉ định. Các hướng dẫn không phải là một bí mật và thậm chí có thể làm bằng tay, nhưng nó rất tẻ nhạt.

Đối với SHA256, đầu ra là một số 256-bit (không phải là sự trùng hợp).

Số 256 bit có nghĩa là một số nhị phân dài 256 chữ số. Số nhị phân có nghĩa là giá trị được biểu thị bằng hai ký hiệu, hoặc 0 hoặc 1. Số nhị phân có thể được chuyển đổi sang bất kỳ định dạng nào khác, ví dụ như số thập phân, là những gì chúng ta đã quen thuộc.

Mặc dù hàm trả về một số nhị phân 256 chữ số, nhưng giá trị thường được biểu thị ở định dạng thập lục phân, dài 64 chữ số.

Hệ thập lục phân có nghĩa là thay vì 10 ký hiệu có thể có như chúng ta quen dùng với hệ thập phân (0 đến 9), chúng ta có 16 ký hiệu (Mười chúng ta quen dùng, 0-9, cộng với các chữ cái a, b, c, d, e, và f; có các giá trị từ 11 đến 15). Ví dụ: để biểu diễn giá trị của số thập phân 15 trong hệ thập lục phân, chúng ta chỉ cần viết "f" và nó có cùng giá trị. Có rất nhiều thông tin có sẵn trực tuyến bằng cách tìm kiếm nhanh trên Google nếu bạn cần thêm chi tiết.

Để chứng minh SHA256 đang hoạt động, tôi có thể lấy số 1 và chạy nó qua máy tính băm trực tuyếnvà nhận được kết quả này (trong hệ thập lục phân):

SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.

Hộp trên cùng là đầu vào, hộp dưới cùng là kết quả đầu ra.

Lưu ý rằng tất cả các máy tính trên thế giới sẽ tạo ra cùng một đầu ra, miễn là đầu vào giống nhau và sử dụng chức năng SHA256.

Đầu ra số thập lục phân, nếu được chuyển đổi thành thập phân, là (lưu ý rằng cần nhiều chữ số hơn để viết):

48,635,463,943,209,834,798,109,814,161,294,753,926,839,975,257,569,795,305,637,098,542,720,658,922,315

Và được chuyển đổi thành nhị phân nó là:

11010111000011010110010011100111111111100110100111111001110000110011101011010111000000001001110111111110101101000111111010101110100011110101101101001001110101010100010001011110001110101001001110000000001111001010010110111011011011110000111010110110100101111010111001101011100110101110011010111001101011100110101110011010111001101011100111

Chỉ vì quan tâm, đây là giá trị tương tự trong cơ sở 64.

1w1k5/5p+cM61wCd/rR+ro9bSdVEXjqTgDylu28OtpY=

Lưu ý rằng giá trị nhỏ nhất có thể SHA256 có thể trả về là 256, nhưng CHIỀU DÀI vẫn là XNUMX bit. Đây là cách số XNUMX được biểu diễn:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Và giá trị lớn nhất có thể là:

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

Trong số thập phân, đó là:

115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,935

Trong hệ thập lục phân, nó là:

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Lưu ý rằng có chính xác 64 F.

Số 64 trong hệ thập lục phân có thể đơn giản được viết dưới dạng một số XNUMX duy nhất, nhưng đối với đầu ra băm, XNUMX trong số đó phải tuân theo yêu cầu của đầu ra có kích thước cố định:

0000000000000000000000000000000000000000000000000000000000000000

Dưới đây là tóm tắt một số sự kiện về hàm băm rất quan trọng để đánh giá cao:

  • Không thể xác định đầu vào từ đầu ra
  • Đầu vào có thể dài bất kỳ
  • Đầu ra luôn có cùng độ dài
  • Đầu ra sẽ luôn được sao chép giống hệt nhau nếu bạn cung cấp cùng một đầu vào.
  • Bất kỳ thay đổi nào đối với đầu vào, dù nhỏ đến đâu, sẽ gây ra đầu ra không thể đoán trước và hoàn toàn khác
  • Kết quả đầu ra có vẻ ngẫu nhiên, nhưng thực sự là xác định (có nghĩa là nó được tính toán và tái lập)
  • Sản lượng không thể dự đoán được. Nó chỉ có thể được tính toán và điều này cần một lượng công việc có thể đo lường được bằng máy tính (và hàng giờ với bút chì và giấy! Đừng làm điều đó.)

Bây giờ bạn đã hiểu khái niệm cơ bản về băm là gì, bạn có thể hiểu giải thích về cách hoạt động của hoạt động khai thác Bitcoin.

Nhưng trước khi bạn tiếp tục, tôi khuyên bạn nên đi đến một máy tính băm trực tuyến và chơi với nó một chút và tự kiểm tra những gì tôi đã nói về các hàm băm. Tôi thích cái này.

Khai thác mỏ

Tôi sẽ bắt đầu bằng cách trình bày một khái niệm về công việc, đó là nguồn gốc của “bằng chứng công việc” trong Bitcoin.

Đi tới máy tính băm trực tuyến và nhập "Tôi đang tạo 50 bitcoin và tự thanh toán số tiền này."

Nhập chính xác, phân biệt chữ hoa chữ thường, bao gồm cả dấu chấm. Bạn sẽ nhận được đầu ra này:

SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.

Bây giờ, hãy tạo một quy tắc cho biết để tin nhắn thanh toán này hợp lệ, chúng ta cần băm bắt đầu bằng một số không. Để làm được điều đó, chúng ta phải thay đổi đầu vào bằng cách nào đó. Tuy nhiên, như bạn đã học, không thể đoán trước được kết quả đầu ra cho một đầu vào nhất định. Chúng ta có thể thực hiện sửa đổi nào để đảm bảo mã băm bắt đầu bằng XNUMX?

Chúng tôi phải thêm dữ liệu bằng cách sử dụng thử-và-sai. Nhưng chúng tôi cũng không muốn thay đổi ý nghĩa của thông điệp đầu vào. Vì vậy, hãy tạo một trường (một phần được phân bổ) được gọi là “nonce” sẽ chứa một giá trị vô nghĩa.

Từ "Nonce" được cho là bắt nguồn từ "số chỉ được sử dụng một lần", nhưng tôi không thấy nó.

Lưu ý bên dưới cách chỉ thêm “Nonce:” làm tiêu đề trường bổ sung sẽ thay đổi kết quả băm.

SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.

Đầu ra vẫn không bắt đầu bằng “0”, vì vậy hãy thêm một số điều vô nghĩa (tôi đã thêm một “x” vô nghĩa):

SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.

Nó vẫn không bắt đầu bằng số XNUMX. Tôi đã thử thêm một số ký tự cho đến khi mã băm bắt đầu bằng số XNUMX:

SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.

Chúng ta bắt đầu. Bây giờ, theo các quy tắc tùy ý mà tôi đặt ra cho phiên bản giả mạo này của Bitcoin, văn bản trong cửa sổ nhập liệu là một khối hợp lệ với một giao dịch duy nhất trả cho tôi 50 bitcoin.

Lưu ý rằng các khối Bitcoin về cơ bản là các trang của sổ cái. Mỗi khối được đánh số và tạo ra bitcoin mới, cùng với việc liệt kê các giao dịch giữa người dùng. Kỷ lục này là nơi bitcoin tồn tại.

Bây giờ là một quy tắc mới. Đối với khối tiếp theo, mã băm của khối trước đó phải được bao gồm. Tôi sẽ thêm một chút phức tạp và thêm một vài trường khác để tiếp cận những gì một khối Bitcoin thực có.

SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.

Hàm băm bắt đầu bằng “f” chứ không phải “0”, vì vậy tôi sẽ phải thử một số giá trị trong trường nonce:

SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.

Lần này tôi may mắn hơn và tìm được nonce phù hợp chỉ sau bốn lần thử. Nhớ lại rằng đối với khối đầu tiên, nó đã mất 22 lần thử. Có một số ngẫu nhiên ở đây, nhưng nhìn chung không quá khó để tìm một hàm băm hợp lệ nếu tất cả những gì chúng ta đang cố gắng lấy là một con số không. Có 16 giá trị có thể có cho chữ số băm đầu tiên, vì vậy tôi có 1 trong 16 cơ hội mà bất kỳ sửa đổi nào tôi thực hiện đối với trường đầu vào sẽ dẫn đến chữ số băm đầu tiên là “0.”

Lưu ý rằng các trường của Bitcoin giống như thế này, nhưng có nhiều chi tiết hơn mà tôi chưa thêm. Đây chỉ là để minh họa một điểm, không nhất thiết phải trình bày chi tiết chính xác khối Bitcoin trông như thế nào.

Tôi sẽ thêm trường thời gian vào khối tiếp theo vì tôi cần trường đó để giải thích "điều chỉnh độ khó" tiếp theo:

SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.

Trên đây là khối số ba. Nó bao gồm băm của khối trước đó và bây giờ tôi cũng bắt đầu bao gồm thời gian. Do đó, tôi đã tìm thấy thành công việc băm bắt đầu bằng số 1 (tôi chỉ tiếp tục nhập “XNUMX” cho đến khi đạt được mục tiêu băm).

Đến đây là đủ để tôi có thể bắt đầu giải thích một vài khái niệm thú vị về blockchain và khai thác Bitcoin.

Giành được khối A

Quá trình khai thác có tính cạnh tranh. Bất kỳ ai tạo ra một khối hợp lệ trước tiên sẽ tự trả cho mình phần thưởng khối đã định. Một người khai thác tạo ra cùng một số khối sau đó không nhận được gì - khối đó bị từ chối. Giải thích lý do tại sao điều đó sẽ gây ra quá nhiều sự chuyển hướng bây giờ, vì vậy tôi sẽ giải thích nó trong phần phụ lục.

Sau khi khối ba được tìm thấy và phát cho mọi người (tất cả các nút Bitcoin), tất cả các thợ đào sẽ ngừng làm việc trên phiên bản khối ba của họ. Họ bắt đầu xây dựng trên đầu khối ba thành công đó (bằng cách kéo băm khối của nó về phía trước thành một khối mới) và bắt đầu làm việc để tìm một nonce phù hợp cho khối bốn. Người chiến thắng công bố kết quả và sau đó mọi người bắt đầu làm việc trên khối năm, v.v.

Với mỗi khối, bitcoin mới đang được tạo ra và tổng thể tạo nên tổng nguồn cung cho đến nay. Nếu có nhiều thợ đào, thì theo thống kê, chúng ta nên mong đợi rằng các khối sẽ được tạo ra nhanh hơn và do đó bitcoin sẽ được tạo ra nhanh hơn. Vấn đề, phải không?

Tìm kiếm nguồn cung bitcoin hạn chế với việc phát hành có thể dự đoán được theo thời gian, Satoshi Nakamoto đã nghĩ đến vấn đề này và đưa ra một vòng phản hồi tiêu cực để duy trì sản xuất khối ở khoảng thời gian trung bình 10 phút. Làm sao? Xem nếu bạn có thể nghĩ ra một cách. Hãy dừng lại một chút và suy ngẫm - xem liệu bạn có thể đưa ra giải pháp thiên tài tương tự không và đọc tiếp khi bạn bỏ cuộc.

KHÔNG CÓ: Tôi đề cập đến các khối "hợp lệ". Vậy thì sao? Ai đang kiểm tra? Các nút Bitcoin là. Một nút Bitcoin giữ một bản sao của chuỗi khối cho đến nay và tuân theo một bộ quy tắc để kiểm tra xem các khối mới có nằm trong quy tắc hay không và từ chối những khối không tuân theo quy tắc. Các quy tắc ở đâu? Trong mã. Máy tính tải mã Bitcoin là một nút.

Điều chỉnh độ khó

Thời gian trung bình để tạo các khối Bitcoin mới được tính theo mỗi nút sau mỗi 2016 khối (đây là lý do tại sao trường thời gian là cần thiết). Đây là một phần của giao thức và quy tắc mà các nút tuân theo. Một công thức được áp dụng để điều chỉnh số lượng số không mà mỗi băm khối phải bắt đầu với để hợp lệ.

Nói đúng ra, không phải số lượng số không được điều chỉnh mà là giá trị mục tiêu mà hàm băm phải ở bên dưới, nhưng việc nghĩ đến các số XNUMX ở đầu thì dễ giải thích hơn.

Nếu các khối được tạo ra quá nhanh, thì mục tiêu băm sẽ được điều chỉnh theo các quy tắc được xác định trước mà tất cả các nút tuân theo giống hệt nhau (nó nằm trong mã của chúng).

Hãy đơn giản hóa ví dụ của tôi, giả sử những người khác đang cạnh tranh với tôi, các khối diễn ra quá nhanh và bây giờ khối thứ tư cần hai số không thay vì một, theo một phép tính tưởng tượng.

Tôi sẽ mất nhiều thời gian hơn để có được hai số không, nhưng chúng tôi đang tưởng tượng rằng có nhiều người khác đang cạnh tranh với tôi nên tổng thời gian dành cho bất kỳ ai để tìm một khối được giữ nguyên cho một mục tiêu.

Đây là khối tiếp theo:

SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.

Chú ý thời gian. Hơn 10 phút đã trôi qua kể từ khối trước (tôi chỉ cần hết thời gian để trình diễn). Mục tiêu 10 phút là xác suất; không bao giờ biết chính xác khi nào khối tiếp theo sẽ được tìm thấy.

Tôi lộn xộn trên bàn phím trong một phút cho đến khi hai số không xuất hiện. Điều này khó hơn theo cấp số nhân so với việc tìm một con số 1 duy nhất. Cơ hội tìm thấy hai số không liên tiếp là 16 trong XNUMX2, hoặc cơ hội 1 trong 256.

Nếu có nhiều người tham gia khai thác và cạnh tranh cho bitcoin mới, thì cuối cùng ba số không sẽ được yêu cầu.

Tôi vừa tìm kiếm khối Bitcoin thực cuối cùng, chứa hàm băm của khối trước đó. Hàm băm là:

000000000000000000084d31772619ee08e21b232f755a506bc5d09f3f1a43a1

Đó là 19 số không! Có 1 trong 1619 cơ hội tìm thấy một khối như vậy với mỗi lần thử. Các công cụ khai thác bitcoin thực hiện rất nhiều nỗ lực mỗi giây, nói chung trên toàn thế giới.

Số lần thử mỗi giây được gọi là “tỷ lệ băm”. Hiện tại, tốc độ băm ước tính trên thế giới chỉ dưới 200 triệu terahash mỗi giây (một terahash là một nghìn tỷ băm). Với nhiều lần thử mỗi giây như vậy, một khối có băm bắt đầu bằng 19 số không được tìm thấy khoảng 10 phút một lần.

Trong tương lai, khi có nhiều thợ đào tham gia, tỷ lệ băm sẽ tăng lên, các khối sẽ được tìm thấy nhanh hơn và độ khó của Bitcoin sẽ điều chỉnh để yêu cầu 20 số 10, điều này sẽ đẩy quá trình sản xuất khối giảm xuống còn khoảng XNUMX phút.

Một nửa

Khi Bitcoin lần đầu tiên bắt đầu, 50 bitcoin được sản xuất với mỗi khối. Các quy tắc của chuỗi khối Bitcoin chỉ định rằng sau mỗi 210,000 khối, phần thưởng sẽ bị giảm đi một nửa. Thời điểm này được gọi là "giảm một nửa", và xảy ra khoảng bốn năm một lần. Việc giảm một nửa, kết hợp với việc điều chỉnh độ khó giữ các khối trong khoảng thời gian 10 phút, có nghĩa là vào khoảng năm 2140, phần thưởng khối sẽ là 0.00000001, hoặc 1 satoshi, đơn vị nhỏ nhất của bitcoin và không thể giảm một nửa nữa. Việc khai thác sẽ không dừng lại, nhưng phần thưởng khối sẽ bằng không. Kể từ thời điểm đó, sẽ không có bitcoin mới nào được tạo ra trong tương lai và số lượng bitcoin có thể tính toán được bằng toán học và đủ gần 21 triệu đồng. Đây là cách tổng cung được biết - nó được thiết lập theo chương trình.

Ngay cả khi phần thưởng khối bằng XNUMX, các thợ đào vẫn sẽ được khuyến khích tiếp tục làm việc để kiếm phí giao dịch.

Làm thế nào chính xác là phần thưởng khối được cắt giảm một nửa? Nó nằm trong mã do các nút nắm giữ. Họ biết từ chối bất kỳ khối mới nào sau 210,000 khi một người khai thác trả cho mình hơn 25 bitcoin. Và sau đó để từ chối bất kỳ khối nào sau 420,000 trong đó người khai thác trả cho mình hơn 12.5 bitcoin, v.v.

Phí giao dịch

Cho đến nay, tôi chỉ hiển thị các khối tưởng tượng với một giao dịch duy nhất - giao dịch mà người khai thác được trả phần thưởng. Đây được gọi là “giao dịch coinbase”.

Nó không được đặt theo tên của công ty, Conbase, ý tôi là Coinbase. Công ty tự đặt tên theo giao dịch coinbase chứ không phải ngược lại. Đừng nhầm lẫn.

Ngoài giao dịch coinbase, còn có giao dịch của mọi người thanh toán cho nhau. Đây là một ví dụ tưởng tượng:

SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.

Lần này tôi không bận tâm đến việc tìm kiếm một băm thực (Đó thực sự là băm thực được báo cáo trong khối 200,001). Tôi chỉ nói cho vui thôi, nhưng nhận thấy một thông báo có thể được nhúng vào đó.

Satoshi nổi tiếng bao gồm các từ, “Chancellor on Brink of Second Bailout cho các ngân hàng” trong khối Bitcoin đầu tiên (The Genesis Block), sau tiêu đề của tờ báo trong ngày.

SHA256 và hoạt động khai thác bảo vệ thông tin dữ liệu PlatoBlockchain của mạng Bitcoin như thế nào. Tìm kiếm dọc. Ái.

Vấn đề ở đây là có 132 giao dịch được bao gồm (không phải tất cả được hiển thị). Nhìn vào giao dịch số 132 - 2.3 bitcoin từ một địa chỉ đang trả 2.1 bitcoin cho một địa chỉ khác và cũng cho địa chỉ thứ hai số tiền 0.1 bitcoin (tôi đã sử dụng dấu chấm để rút ngắn độ dài của địa chỉ).

Vì vậy, một nguồn 2.3 bitcoin trả tổng cộng 2.2 bitcoin (2.2 + 0.1 = 2.2). Có thiếu 0.1 bitcoin không? Không, sự khác biệt được xác nhận bởi người khai thác, như tôi sẽ giải thích.

Người khai thác được phép trả cho mình 25 bitcoin làm phần thưởng khối (vì 210,000 khối đã trôi qua nên phần thưởng đã giảm một nửa từ 50 xuống 25). Nhưng nếu bạn nhìn, giao dịch coinbase là 27.33880022. 2.33880022 bitcoin bổ sung đến từ 132 giao dịch khác trong khối - tất cả các đầu vào sẽ lớn hơn một chút so với tổng đầu ra. Vì vậy, người khai thác có thể yêu cầu số bitcoin "bị bỏ rơi" này như một khoản thanh toán cho chính mình. Đây được coi là phí giao dịch trả cho người khai thác.

Không gian khối bị hạn chế. Khi Bitcoin mới ra đời, người dùng có thể gửi giao dịch miễn phí và các thợ đào sẽ bao gồm giao dịch đó trong khối. Nhưng bây giờ có nhiều người dùng hơn và vì việc tham gia vào khối tiếp theo là cạnh tranh, người dùng bao gồm một khoản phí trong giao dịch để lôi kéo người khai thác chọn giao dịch của họ thay vì người khác.

Vì vậy, khi phần thưởng khối giảm dần, cứ bốn năm lại giảm một nửa và cuối cùng là XNUMX, những người khai thác vẫn được trả tiền theo cách này.

Một số người đã gợi ý rằng một ngày nào đó phần thưởng cho các thợ đào sẽ không đủ và sẽ khiến Bitcoin thất bại. Mối quan tâm này đã được giải quyết triệt để và tôi sẽ không nhắc lại ở đây.

Một khối có thể được viết lại?

Điều này cực kỳ khó xảy ra và thật đáng để hiểu tại sao. Sau đó, bạn sẽ đánh giá cao lý do tại sao các giao dịch Bitcoin là bất biến (không thể thay đổi).

Tôi đã giải thích trước đó rằng băm của khối trước đó được bao gồm trong khối hiện tại. Điều đó có nghĩa là bất kỳ chỉnh sửa nào của các giao dịch trong một khối cũ sẽ thay đổi hàm băm của khối đã chỉnh sửa đó. Nhưng hàm băm đó được ghi lại trong khối tiếp theo, do đó, điều đó có nghĩa là khối tiếp theo cũng cần được cập nhật. Nhưng nếu bạn thay đổi hàm băm được ghi trong khối tiếp theo đó, thì hàm băm của nó cần phải thay đổi, v.v.

Lưu ý rằng bất kỳ khi nào một hàm băm được thay đổi, bạn sẽ mất tất cả các số không đáng yêu này và sẽ chỉ còn lại một hàm băm trông ngẫu nhiên - và phải thực hiện lại tất cả các công việc để lấy lại các số không. Nếu bạn làm điều đó đối với khối mà bạn đã cố gắng chỉnh sửa, thì bạn phải làm lại công việc cho khối tiếp theo và tiếp theo là tất cả các cách đối với khối gần đây nhất. Bạn không thể chỉ dừng lại ở khối cũ, bởi vì các quy tắc của Bitcoin là chuỗi khối dài nhất là bản ghi Bitcoin thực. Nếu bạn quay lại và chỉnh sửa một khối cách đây 10 khối, bạn không còn có chuỗi dài nhất nữa. Bạn phải thêm 10 khối nữa và sau đó nhiều hơn một chút vì khi bạn tạo 10 khối đó, chuỗi thực có thể dài hơn một chút. Bạn phải chạy đua để vượt qua chuỗi thực. Nếu thành công, thì phiên bản mới sẽ trở thành phiên bản thực.

Việc lặp lại toàn bộ nỗ lực băm chung của toàn thế giới từ khối đã chỉnh sửa đến khối mới nhất là rào cản đối với việc chỉnh sửa Bitcoin. Năng lượng đã được tiêu tốn để tạo ra các băm đó với tất cả các số XNUMX không thể xác định được và chi phí năng lượng đó phải được lặp lại để chỉnh sửa Bitcoin. Đây là lý do tại sao năng lượng được sử dụng để khai thác Bitcoin không bị “lãng phí”; nó ở đó để bảo vệ Bitcoin khỏi các chỉnh sửa, để làm cho sổ cái trở nên bất biến mà không cần tin tưởng vào cơ quan trung ương.

Điều gì xảy ra nếu hai người khai thác tìm thấy một khối cùng một lúc?

Điều này thực sự xảy ra thỉnh thoảng và nó luôn tự sắp xếp như sau:

Mọi nút sẽ nhận một trong các khối gần như đồng thời mới trước tiên và sẽ chấp nhận khối đó và từ chối khối đến chỉ trong giây lát. Điều này dẫn đến việc chia tách mạng, nhưng đó là tạm thời.

Để minh họa, chúng ta hãy gọi một trong các khối là màu xanh và khối còn lại là màu đỏ (chúng không có màu gì cả, chỉ với tôi).

Những người khai thác sau đó làm việc trên khối tiếp theo, nhưng sẽ có sự phân chia về khối mà họ mở rộng chuỗi từ đó.

Giả sử người khai thác chiến thắng đã tìm thấy một khối bằng chuỗi màu xanh lam. Họ sẽ gửi khối mới đến tất cả các nút và chuỗi dài nhất sẽ rõ ràng. Các nút đã chấp nhận chuỗi màu đỏ sau đó sẽ loại bỏ nó và chấp nhận chuỗi màu xanh lam.

Tất cả các thợ đào đang làm việc trên chuỗi màu đỏ sẽ dừng lại và bây giờ sẽ làm việc trên chuỗi dài hơn, đó là chuỗi màu xanh. Chuỗi màu đỏ đã chết.

Phụ lục

Tại sao khối của một thợ mỏ chạy lên không hợp lệ

Giả sử khối 700,000 vừa được khai thác bởi MINER-A. Ba mươi giây sau, MINER-B cũng tạo ra một phiên bản khác của khối 700,000. Khi MINER-B phát đi phương án thay thế này, mọi nút sẽ từ chối nó vì họ đã thấy và chấp nhận khối của MINER-A. Hơn nữa, trong 30 giây đó, giả sử MINER-C đã tìm thấy khối 700,001. Cho rằng khối thứ 700,000 cạnh tranh của MINER-B không mở rộng chuỗi hiện tại (lên đến 700,001), nó cũng bị từ chối vì lý do đó.

Thú vị hơn nữa là nếu MINER-B đang làm việc trên khối 700,001 thay vì phiên bản cạnh tranh của 700,000, họ sẽ có nhiều cơ hội khai thác khối hợp lệ 700,001 vì cuối cùng họ sẽ phải tìm một khối thay thế 700,000. Vì vậy, ngay khi bất kỳ người khai thác nào nhìn thấy một khối mới, họ nên nỗ lực cho khối tiếp theo.

Tuy nhiên, nếu Miner-B tìm thấy khối 700,000 một giây sau khi MINER-A tìm thấy, thì có thể một số nút nhìn thấy khối của MINER-A đầu tiên trong khi những nút khác nhìn thấy khối của MINER-B trước, tùy thuộc vào vị trí địa lý và tốc độ internet. Trong trường hợp đó, có một đợt fork tạm thời và một số thợ đào sẽ làm việc để mở rộng một phiên bản trong khi những thợ đào khác sẽ làm việc để mở rộng phiên bản kia. Như đã giải thích trước đó bằng cách sử dụng bộ mô tả “chuỗi xanh” và “chuỗi đỏ”, cuối cùng một trong các phiên bản sẽ mở rộng hơn nữa trước phiên bản kia và trở thành phiên bản hợp lệ nhất trí.

Đây là một bài đăng của Arman The Parman. Các ý kiến ​​được bày tỏ hoàn toàn là của riêng họ và không nhất thiết phải phản ánh ý kiến ​​của BTC Inc hoặc Tạp chí Bitcoin.

Dấu thời gian:

Thêm từ Tạp chí Bitcoin