Làm thế nào để giao thức Bitcoin hoạt động

Tác giả:Giấc mơ nhỏ, Tạo: 2017-01-19 18:04:02, Cập nhật: 2017-01-19 18:11:24

Làm thế nào để giao thức Bitcoin hoạt động

Năm ý tưởng về Bitcoin đã được viết ở đây trong năm ngoái và dường như là bài viết đầu tiên của tôi về Bitcoin.

Bài viết này được dịch bởi Michael Nielsen về giao thức Bitcoin, bài viết mà người dịch cảm thấy rõ ràng nhất về Bitcoin. Michael Nielsen là một nhà khoa học, nhà văn và lập trình viên tiên phong nghiên cứu về tính toán lượng tử. Các chi tiết xin xem bản giới thiệu của riêng mình. Bài viết này được dịch bởi vì người dịch cho rằng bài viết và thảo luận về Bitcoin có rất nhiều, rất nhiều sự phản đối ủng hộ. Nhưng hầu hết đều dừng lại ở những suy nghĩ về khái niệm, giá cả và chủ quan, tôi muốn vứt bỏ giá Bitcoin hiện tại và xu hướng bán tiền mặt, và thông qua bài viết này, tôi sẽ giới thiệu chi tiết về cách thức hoạt động của giao thức Bitcoin. Tôi tin rằng việc hiểu được nguyên tắc hoạt động đằng sau một số thứ là rất quan trọng để hiểu được một loạt các điều đáng nghi ngờ. Tôi cảm thấy giống như hầu hết mọi người, khi bắt đầu nhìn thấy các tài liệu ở đây, nó tự nó là một sự điên rồ, sau đó là một loạt các vụ lừa đảo.

Chỉ để cho mọi người biết nó là gì, nơi nó phù hợp với không gian tiền điện tử, không cố gắng thuyết phục họ rằng nó tốt. Một câu nói khác của ông là If you don't believe me or don't get it, I don't have time to try to convince you, sorry.

  • Dưới đây là văn bản chính thức:

    Hàng ngàn bài viết đã cố gắng giải thích Bitcoin, một loại tiền tệ trực tuyến, ngang hàng (Peer-to-Peer). Hầu hết các bài viết đã đưa ra một số chi tiết về giao thức cơ bản của nó, bỏ qua nhiều chi tiết. Ngay cả những bài viết sâu sắc cũng bị kẹt ở những nơi quan trọng. Mục đích của bài viết này là giải thích các điểm đằng sau giao thức Bitcoin theo cách rõ ràng và dễ hiểu nhất có thể.

    Hiểu sâu hơn về giao thức này là khó khăn vì rất dễ dàng để đưa Bitcoin như là một điều hiển nhiên, và suy nghĩ về cách sử dụng nó để đầu tư, suy nghĩ rằng nó không phải là một bong bóng, suy nghĩ rằng Bitcoin có nghĩa là sự kết thúc của thuế, v.v. Những ý tưởng này rất thú vị, nhưng những ý tưởng này nghiêm trọng hạn chế sự hiểu biết của bạn.

    Tôi sẽ giải thích các kịch bản Bitcoin và các hợp đồng thông minh trong bài viết tiếp theo. Bài viết này sẽ tập trung vào các chi tiết cụ thể về giao thức Bitcoin. Để hiểu bài viết này, bạn có thể cần phải quen thuộc với mật khẩu khóa công cộng và chữ ký số liên quan, xin vui lòng hiểu hai khái niệm.

    Điều này có thể khiến bạn ngạc nhiên, Bitcoin dựa trên mật mã học, không phải Bitcoin là một loại tiền tệ? Nó có phải là một cách để gửi thông tin bí mật? Trên thực tế, hầu hết các vấn đề mà Bitcoin muốn giải quyết là về bảo vệ giao dịch để đảm bảo rằng mọi người không thể ăn cắp thứ của người khác hoặc giả vờ người khác, v.v. Trong thế giới vật chất gồm các nguyên tử, chúng ta đảm bảo an toàn bằng cách khóa, ký hiệu, hộp bảo hiểm ngân hàng, v.v. Trong thế giới thông tin, chúng ta đảm bảo an toàn bằng mật mã học. Đó là lý do tại sao giao thức mật mã hóa là cốt lõi của Bitcoin.

    Chiến lược của bài viết này là xây dựng Bitcoin từng lớp. Chúng tôi sẽ bắt đầu với một loại tiền kỹ thuật số rất đơn giản, chúng tôi sẽ tạm thời gọi nó là Infocoin, để phân biệt với Bitcoin. Tất nhiên, phiên bản đầu tiên của Infocoin sẽ có nhiều nhược điểm, vì vậy chúng tôi sẽ lặp đi lặp lại một vài lần, mỗi lần sẽ giới thiệu một hoặc hai khái niệm mới. Sau một vài lần, chúng tôi sẽ có một giao thức Bitcoin hoàn chỉnh. Chúng tôi sẽ tái tạo Bitcoin cùng nhau.

    Cách này hơi chậm hơn là giải thích trực tiếp Bitcoin ngay từ đầu. Nhưng ngay cả khi bạn có thể hiểu một chút về nguyên tắc của Bitcoin, bạn sẽ rất khó hiểu tại sao Bitcoin được thiết kế theo cách này.

    Cuối cùng, tôi nên nói rằng tôi là một người mới tương đối trong thế giới Bitcoin. Tôi có một sự chú ý thô sơ vào năm 2011, nhưng thực sự nghiên cứu chi tiết của nó một cách nghiêm túc là vào đầu năm 2013.

  • Bước 1: Chữ ký ý định

    • Làm thế nào để thiết kế một đồng tiền?

      Nhìn bề ngoài, một đồng tiền kỹ thuật số nghe có vẻ không thể. Giả sử một người mà chúng ta gọi là Alice có một số đồng tiền kỹ thuật số mà cô ấy muốn chi tiêu. Nếu Alice có thể sử dụng một chuỗi các ký tự như tiền, làm thế nào chúng ta có thể ngăn chặn cô ấy sử dụng cùng một chuỗi các ký tự đó nhiều lần?

      Đây chỉ là hai trong số nhiều vấn đề cần giải quyết với thông tin làm tiền tệ. Trong phiên bản đầu tiên của Infocoin, chúng tôi đã tìm cách để Alice cung cấp một chuỗi tiền và tìm cách bảo vệ nó khỏi bị giả mạo. Giả sử Alice sẽ đưa một infocoin cho người khác Bob. Alice cần viết một tin nhắn như sau:

      Cách này không nổi tiếng, nhưng nó có một số ưu điểm. Bất cứ ai trên thế giới cũng có thể sử dụng khóa công khai của Alice để xác minh rằng Alice thực sự là người đã ký. Không ai khác có thể tạo ra kết quả của chữ ký đó (đây là chữ ký chỉ có thể được tạo ra từ khóa riêng mà Alice sở hữu, hãy xem nguyên tắc chữ ký kỹ thuật số được đề cập ở trên), vì vậy Alice không thể nói không, tôi đã không cho Bob một infocoin. Vì vậy, giao thức này cung cấp bằng chứng rằng Alice thực sự có ý định cho Bob một infocoin.

      Tôi chưa nói chính xác tiền trong giao thức này là gì. Rõ ràng là: tiền thực sự là thông điệp chính nó. Đó là những ký tự liên tục đại diện cho những ký tự mà mẹ tôi, Alice, sẽ đưa cho Bob một thông tin.

  • Sử dụng số tuần tự để cung cấp cho đồng tiền một nhận dạng duy nhất

    Vấn đề của phiên bản đầu tiên của Infocoin là Alice có thể gửi cùng một tin nhắn được ký tên cho Bob nhiều lần. Giả sử Bob nhận được 10 tin nhắn như sau: "Tôi, Alice, sẽ cho Bob một infocoin".

    Chúng tôi muốn infocoin có một logo duy nhất. Nó cần một thẻ hoặc một số tuần tự. Alice có thể ký vào hộp thông tin với số tuần tự 8740348 trong tin nhắn của tôi. Sau đó, nếu Alice ký vào một tin nhắn khác, Alice sẽ cho Bob một hộp thông tin với số tuần tự 8770431, để Bob và những người khác biết đây là hai loại thông tin khác nhau.

    Để thực hiện, chúng ta phải có một nguồn số tuần tự đáng tin cậy. Một cách để tạo số tuần tự là thành lập một tổ chức như ngân hàng. Ngân hàng này sẽ tạo số tuần tự cho infocoin, ghi lại những người sở hữu những infocoin và xác nhận tính xác thực của giao dịch.

    Cụ thể hơn, giả sử Alice đi đến một ngân hàng và nói rằng: "Tôi sẽ lấy một infocoin từ tài khoản của tôi. " Ngân hàng này sẽ lấy một infocoin từ tài khoản của cô ấy và đưa cho cô ấy một số mới mà cô ấy chưa từng sử dụng, giả sử là 1234567". Sau đó, khi Alice muốn gửi một infocoin cho Bob, cô ấy ký vào tin nhắn mới này.

  • Làm cho mọi người trở thành ngân hàng

    Giải pháp trên có vẻ rất tiềm năng. Tuy nhiên, chúng ta có thể làm những điều đầy tham vọng hơn. Chúng ta có thể loại bỏ ngân hàng khỏi thỏa thuận. Điều này thay đổi đáng kể tính chất của đồng tiền. Điều này có nghĩa là sẽ không có một tổ chức riêng biệt chịu trách nhiệm về đồng tiền.

    Cách này là để mọi người cùng nhau trở thành ngân hàng. Đặc biệt, chúng ta giả sử rằng mỗi người sử dụng infocoin giữ một hồ sơ hoàn chỉnh, bao gồm hồ sơ mà infocoin thuộc về ai. Bạn có thể tưởng tượng nó như một sổ cái công khai được chia sẻ, sổ cái ghi lại tất cả các giao dịch của infocoin.

    Bây giờ, giả sử Alice sẽ đưa một infocoin cho Bob. Cô ấy sẽ đăng tin nhắn cho Alice sẽ đăng tin nhắn cho Bob với mã số 1234567. Và sẽ xuất ra kết quả cho Bob, Bob có thể kiểm tra bằng chuỗi khối của riêng mình, OK, đó là thông tin mà Alice đã gửi cho tôi.

    Chúng ta vẫn còn vấn đề về nguồn gốc của các mã số, nhưng điều này thực sự rất dễ dàng để giải quyết, vì vậy tôi sẽ giải thích sau. Vấn đề khó hơn là giao thức này cho phép Alice lặp đi lặp lại chi tiêu tiền thông tin của cô ấy. Cô ấy có thể phát hành một tin nhắn được ký bởi vì Alice sẽ cho Bob một mã số 1234567, đồng thời cô ấy cũng có thể phát hành một tin nhắn được ký bởi vì Alice sẽ cho Charlie một mã số 1234567. Bob và Charlie đều sử dụng blockchain của riêng họ để kiểm tra rằng thông tin thông tin thực sự được Alice gửi.

    Chúng tôi gọi vấn đề này là vấn đề chi tiêu gấp đôi (sau này được gọi là chi tiêu gấp đôi), và có vẻ như một cái nhìn ban đầu, việc chi tiêu gấp đôi có vẻ khó thành công. Sau tất cả, nếu Alice gửi tin nhắn cho Bob trước và Bob gửi tin nhắn cho tất cả mọi người khác (bao gồm cả Charlie), mọi người khác sẽ cập nhật blockchain của họ. Lúc này, Charlie sẽ không bị lừa bởi Alice. Vì vậy, dường như chi tiêu gấp đôi chỉ có thể trong một khoảng thời gian ngắn. Tuy nhiên, ngay cả khi thời gian này ngắn, vấn đề này cũng không mong muốn.

    Cách đơn giản nhất là Bob không nên kiểm tra giao dịch một mình khi Alice gửi infocoin cho Bob. Thay vào đó, anh ta nên công bố giao dịch chờ đợi này trên toàn bộ mạng infocoin để mọi người khác giúp đánh giá liệu giao dịch có hợp lý hay không. Nếu họ cùng quyết định giao dịch hợp lý, Bob có thể nhận được infocoin, và tất cả mọi người sẽ cập nhật blockchain của họ.

    Cụ thể hơn, giả sử Alice muốn đưa cho Bob một infocoin. Như trước đây, giả sử cô ấy đã ký một tin nhắn, và Alice sẽ đưa cho Bob một infocoin với số tựa là 1234567, và sẽ ký tin nhắn có tên tốt cho Bob. Cũng như trước đây, Bob đã sử dụng blockchain của riêng mình để kiểm tra, đồng tiền này thực sự thuộc về Alice. Tuy nhiên, giao thức không giống nhau, Bob không trực tiếp chấp nhận điều này, mà công bố tin nhắn của Alice cho toàn bộ mạng lưới.

    Có rất nhiều yếu tố không chắc chắn về giao thức này bây giờ. Ví dụ, một khi có đủ người công bố thông tin này, bao nhiêu người là đủ? Không thể là toàn bộ mạng Infocoin vì chúng ta không biết trước ai đang trên mạng Infocoin. Cũng không thể là một phần cố định của người dùng.

  • Chứng minh công việc Proof-of-work

    Giả sử Alice muốn hai hoa trong giao thức trên, anh ta sẽ cần phải kiểm soát toàn bộ mạng infocoin. Giả sử cô ấy sử dụng một hệ thống tự động để tạo ra nhiều tài khoản với nhiều danh tính khác nhau trên mạng infocoin, giả sử có một tỷ. Cũng như trước đây, cô ấy đã cố gắng làm hai hoa, đưa cùng một infocoin cho Bob và Charlie, nhưng khi Bob và Charlie hỏi mạng infocoin để kiểm tra giao dịch, những con ngựa của Alice tràn ngập toàn bộ mạng, nói với Bob và Charlie rằng họ có thể thông qua giao dịch này và có thể lừa một trong hai người hoặc cả hai của họ chấp nhận giao dịch này.

    Có một cách thông minh, bằng cách sử dụng một phương pháp gọi là Proof-of-work của con người. Phương pháp này không trực quan, nó đòi hỏi phải kết hợp hai khái niệm, 1) nhân tạo cho quá trình kiểm tra giao dịch tốn chi phí tính toán lớn hơn; 2) thưởng cho họ giúp kiểm tra giao dịch.

    Đây là điểm của chứng chỉ công việc. Nhưng để thực sự hiểu chứng chỉ công việc, chúng ta cần phải đi sâu vào chi tiết cụ thể hơn.

    Giả sử Alice đưa tin cho toàn bộ mạng rằng Alice sẽ đưa cho Bob một thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin thông tin.

    img

    David kiểm tra blockchain của riêng mình và thấy các giao dịch trên là hợp lý. Ông sẽ giúp công bố thông điệp xác minh này trên toàn mạng. Tuy nhiên, trước đó, giao thức kiểm tra giao dịch đòi hỏi David phải giải quyết một câu hỏi khó tính, đó là bằng chứng làm việc. Nếu ông không có giải pháp cho câu hỏi khó khăn, các thành viên khác trên mạng sẽ không chấp nhận xác minh của ông.

    Để giải thích điều này, chúng ta sử dụng một hàm hash trong giao thức chính nó. Bitcoin sử dụng một hàm hash SHA-256 nổi tiếng, nhưng bất kỳ hàm hash mật mã nào cũng có thể được sử dụng ở đây. Chúng ta cho nhóm giao dịch đang chờ này một ký hiệu, là L, để sau đó có thể tham khảo. Nhóm giao dịch đang chờ này cũng tương đương với khối trong blockchain.

    img

    David sẽ giải quyết một vấn đề là tìm một số x ngẫu nhiên, khi chúng ta thêm x này vào sau L và hash kết hợp, kết quả bắt đầu với một số 0 đầu tiên. Khó khăn của bài toán này có thể được điều chỉnh bằng cách điều chỉnh số 0 đầu tiên. Một chứng minh công việc đơn giản của con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con số con

    Và chúng ta có thể thấy điều này không đúng khi x bằng 1.

    img

    Và sau đó chúng ta thử x = 2, và sau đó x = 3, 4, 5... và cuối cùng, khi x = 4350, chúng ta nhận được

    img

    Số x ngẫu nhiên này cho chúng ta một kết quả là bốn hash bắt đầu bằng 0. Điều này đủ để giải quyết một bài toán chứng minh hash đơn giản.

    Điều làm cho vấn đề này khó giải quyết là kết quả của hàm hash mật mã của nó luôn luôn ngẫu nhiên, bất kỳ thay đổi nhỏ nào đối với giá trị đầu vào sẽ hoàn toàn khác với kết quả đầu ra của hàm hash toàn bộ, rất khó để dự đoán. Vì vậy, nếu chúng ta cần kết quả đầu ra phải bắt đầu từ 10 0, David sẽ cần trung bình 1610 ≈ 1012 x khác nhau để tìm ra giá trị phù hợp. Đây là một nhiệm vụ rất thách thức, đòi hỏi rất nhiều khả năng tính toán.

    Rõ ràng, chúng ta có thể kiểm soát độ khó của các bài chứng minh bằng cách quy định bao nhiêu số 0 cần. Trên thực tế, giao thức Bitcoin có thể kiểm soát độ khó của các bài chứng minh bằng cách sửa đổi một chút các bài chứng minh trên. Nó không còn quy định bao nhiêu số 0 bắt đầu cần, mà chỉ định kết quả hash của khối nhỏ hơn hoặc bằng một giá trị mục tiêu, giá trị mục tiêu này được tự động điều chỉnh để đảm bảo mỗi khối của Bitcoin sẽ mất trung bình 10 phút để giải quyết.

    Được rồi, giả sử David may mắn và tìm ra một x thích hợp, chúc mừng anh ấy! (Anh ấy sẽ được thưởng vì tìm ra câu trả lời này). Anh ấy sẽ công bố rằng anh ấy đã chứng minh các giao dịch trong khối là hợp lý, và đồng thời công bố giá trị của x mà cô ấy tìm thấy, những người tham gia khác trong infocoin có thể chứng minh rằng giải pháp của x là hợp lệ.

    Để chứng minh hoạt động của chương trình, người tham gia mạng cần một cơ chế khuyến khích để giúp xác minh giao dịch. Nếu không có cơ chế khuyến khích, không ai sẵn sàng chi tiêu sức mạnh máy tính của mình để giúp xác minh giao dịch. Nếu người tham gia mạng không sẵn sàng chi tiêu sức mạnh, toàn bộ hệ thống sẽ không hoạt động. Vì vậy, chúng ta có thể thưởng cho bất kỳ ai xác minh giao dịch thành công bằng cách cung cấp cho họ một số infocoin.

    Trong giao thức của Bitcoin, quá trình xác minh này được gọi là minmining; người thành công trong việc xác minh mỗi khối giao dịch sẽ nhận được Bitcoin như một phần thưởng; ban đầu, nó là phần thưởng 50 Bitcoin; nhưng mỗi 210.000 khối xác minh (tức là khoảng mỗi 4 năm), phần thưởng sẽ giảm một nửa. Cho đến nay, nó chỉ xảy ra một lần, tức là hiện tại xác minh một khối nhận được 25 Bitcoin. Quá trình giảm một nửa sẽ tiếp tục xảy ra cho đến khoảng năm 2140; khi đó, phần thưởng khai thác sẽ giảm xuống còn 10-8 Bitcoin; trong khi 10-8 Bitcoin là đơn vị nhỏ nhất của Bitcoin được gọi là một Satos; do đó, trừ giao dịch phổ biến cho đến năm 2140, tổng phần thưởng Bitcoin sẽ ngừng tăng. Tuy nhiên, điều này sẽ không loại bỏ các cơ chế giao dịch xác minh, cho phép người tham gia giao dịch có thể sử dụng 25 đồng xu, đặc biệt là chi phí giao dịch, nhưng đã dần dần tăng lên hơn 25 Bitcoin, một phần thưởng đặc biệt được sử dụng cho các giao dịch ban đầu.

    Bạn có thể xem bằng chứng công việc như là một quá trình kiểm chứng cạnh tranh. Mỗi người tham gia sẽ chi tiêu một phần sức mạnh máy tính. Cơ hội chiến thắng của một thợ mỏ có thể tương đương với tỷ lệ giữa kích thước sức mạnh tính toán mà họ kiểm soát và sức mạnh tính toán của toàn bộ mạng. Ví dụ, nếu một thợ mỏ kiểm soát một phần trăm sức mạnh tính toán của toàn bộ mạng, thì khả năng chiến thắng của anh ta cũng có thể là một phần trăm.

    Dĩ nhiên, chúng ta không đủ tự tin để sử dụng nó như một loại tiền tệ, ngay cả khi có rất ít cơ hội để những thợ mỏ không trung thực phá vỡ toàn bộ blockchain.

    Tôi sẽ giải quyết vấn đề hai bông hoa ngay lập tức, nhưng trước đó, tôi muốn thêm một chi tiết quan trọng vào khái niệm Infocoin. Lý tưởng nhất, chúng ta muốn mạng Infocoin có thể thống nhất thứ tự giao dịch xảy ra. Nếu chúng ta không có thứ tự thống nhất, thì sẽ không rõ ràng ai có thông tin nào vào một thời điểm cụ thể nào. Để giúp giải quyết điều này, chúng ta yêu cầu các khối mới phải chứa chỉ dẫn lên một khối, chỉ dẫn này thực sự là kết quả hash của một khối.

    img

    Trong một trường hợp ngẫu nhiên, một blockchain sẽ tạo ra một nhánh. Điều này là do đôi khi hai thợ mỏ xác minh giao dịch của một khối gần như cùng một lúc. Họ công bố cùng một lúc trên mạng, một số người cập nhật blockchain của họ theo một cách, một số người khác cập nhật blockchain của họ theo một cách khác.

    img

    Điều này tạo ra những tình huống mà chúng ta muốn tránh, trong trường hợp đó, thứ tự giao dịch sẽ không rõ ràng, và cũng không rõ ai có những infocoin nào. May mắn thay, có một cách đơn giản để di chuyển các nhánh. Quy tắc là: nếu một tình huống phân nhánh xảy ra, mọi người trên mạng sẽ tiếp tục duy trì hai nhánh, và trong mọi trường hợp, thợ mỏ chỉ làm việc trên blockchain dài nhất.

    Giả sử chúng ta có một nhánh, một số thợ mỏ đã nhận được khối A trước, và một số thợ mỏ khác đã nhận được khối B trước. Những thợ mỏ nhận được khối A sẽ tiếp tục khai thác dọc theo nhánh của họ, trong khi những người khác tiếp tục khai thác dọc theo nhánh của khối B.

    img

    Khi họ nhận được thông báo này, người ở nhánh A sẽ nhận thấy nhánh B là nhánh dài nhất và chuyển sang nhánh B. Công việc ở nhánh A sẽ dừng lại nhanh chóng, vì vậy mọi người sẽ làm việc trên cùng một chuỗi blockchain. Sau đó, khối A sẽ bị bỏ qua. Tất nhiên, tất cả các giao dịch đang chờ trong khối A sẽ tiếp tục bị giữ trạng thái chờ, sau đó sẽ được đưa vào một khối mới ở nhánh B, vì vậy tất cả các giao dịch cuối cùng vẫn sẽ được xác minh.

    Tương tự như vậy, nếu một thợ mỏ trên nhánh A đào lên khối tiếp theo trước, thì người làm việc trên nhánh B sẽ dừng lại và chuyển sang nhánh A.

    Bất kể kết quả là gì, quá trình này đảm bảo blockchain có một thứ tự thống nhất. Trong Bitcoin, một giao dịch không được tính là xác nhận cho đến khi 1) nó tồn tại trong khối trong nhánh dài nhất và 2) ít nhất 5 khối đã được xác minh được xác nhận sau đó. Trong trường hợp này, chúng ta nói rằng giao dịch có 6 xác nhận.

    Bây giờ chúng ta đã hiểu trật tự thời gian, chúng ta hãy quay lại và suy nghĩ về điều gì sẽ xảy ra nếu một người không trung thực muốn chi tiêu gấp đôi. Giả sử Alice cùng đưa Bob và Charlie cùng một giao dịch. Một khả năng là để cô ấy xác minh một khối có hai giao dịch cùng một lúc. Giả sử cô ấy có một phần trăm khả năng tính toán, cô ấy có thể may mắn hơn xác minh khối này.

    Nhưng một khả năng khác là cô ấy cố gắng công bố hai giao dịch riêng biệt. Cô ấy có thể công bố một giao dịch cho một nhóm thợ mỏ và một giao dịch khác cho một nhóm thợ mỏ khác, cô ấy muốn cả hai giao dịch được xác nhận. May mắn thay, trong trường hợp này, như chúng ta vừa nói, mạng cuối cùng sẽ xác nhận chỉ một trong hai giao dịch. Vì vậy, đó cũng không phải là vấn đề.

    Một khả năng khác là, Alice = Bob, nghĩa là Alice cố gắng đưa một đồng tiền cho Charlie, đồng thời cô ấy cũng đưa đồng tiền cho chính mình, vì cô ấy có thể có nhiều tài khoản của riêng mình. Trong trường hợp này, chiến lược của Alice là đợi cho đến khi Charlie nhận được Infocoin, có lẽ sau khi giao dịch được xác nhận 6 lần trên blockchain dài nhất.

    img

    Thật không may, lúc này, Alice đã trễ hơn blockchain dài nhất 6 bước. Cô đã gặp khó khăn trong việc theo kịp nhánh dài nhất. Các thợ mỏ khác sẽ không giúp đỡ cô, vì họ đều cần phải làm việc trên nhánh dài nhất để được thưởng. Trừ khi Alice có thể kết hợp nhanh hơn những người khác trên mạng khi giải quyết bằng chứng công việc (có nghĩa là cô có khả năng tính toán hơn 50% của toàn bộ mạng).

    Dĩ nhiên, không phải là rất nghiêm ngặt khi nói rằng Alice chắc chắn không thể đúp hoa. Đây chỉ là một suy luận hợp lý. Bản gốc của cuốn sách trắng Bitcoin không thực hiện một phân tích an ninh nghiêm ngặt, chỉ là một suy luận không chính thức tương tự như tôi ở đây. Các nhóm an ninh vô tình phân tích an ninh và các lỗ hổng tiềm ẩn của Bitcoin, bạn có thể xem danh sách này.

    Trong phần đầu, tác giả Michael bỏ qua khái niệm Infocoin để giải thích chi tiết hơn về giao thức Bitcoin qua thị trường giao dịch Bitcoin.

    Ngoài ra, nếu bạn thấy hữu ích, bạn có thể tham khảo ý kiến của tác giả của bài viết này, Michael Nielsen, với địa chỉ 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ, bạn cũng có thể theo dõi ông trên Twitter.

Bài viết này được trích từ cuốn sách Tin Mừng.


Thêm nữa