Trước đây, tôi đã đọc Bitcoin Whitepaper bản gốc bằng tiếng Anh, nhưng gần đây tôi cần giải thích nó một cách thuần Việt cho người khác và vì thế cần phải đọc nó bằng tiếng Việt. Tôi nhận ra các bản dịch tiếng Việt lưu hành trên mạng hiện nay khá tối nghĩa. Một phần có thể do đa số người dịch là dân công nghệ, không có chuyên môn về dịch thuật. Tôi quyết định tự biên dịch Bitcoin Whitepaper trên tinh thần ưu tiên sự thuần Việt trong cách dùng từ ngữ, ngữ pháp và cách sử dụng các cấu trúc câu. Vì lẽ đó, có thể bạn sẽ nhận ra cách hành văn của bản dịch không giữ được nguyên bản như tiếng Anh nhưng về mặt ý nghĩa vẫn được đảm bảo. Lưu ý, tất cả các phần chữ in nghiêng là của người dịch ghi chú. Nếu bạn có trích đăng, vui lòng ghi: “Người dịch: tuabi.eth”.
Bitcoin: Một hệ thống tiền điện tử ngang hàng
Satoshi Nakamoto
satoshin@gmx.com
www.bitcoin.org
Tóm lược. Một phiên bản tiền điện tử hoạt động hoàn toàn trên mạng ngang hàng sẽ cho phép các giao dịch thanh toán trực tuyến được thực hiện trực tiếp từ bên A sang bên B mà không thông qua một bên trung gian nào. Kỹ thuật mật mã bằng chữ ký điện tử hiện nay đã có thể cung cấp một phần giải pháp cho vấn đề trên, nhưng đến giờ vẫn cần phải có một bên thứ ba làm trung gian để ngăn chận việc lặp chi cùng một số tiền cho nhiều người khác nhau (double-spending). Chúng tôi đề xuất giải pháp cho vấn đề gian lận lặp chi bằng cách sử dụng một hệ thống mạng ngang hàng có cấu tạo đặc biệt. Mạng này sẽ gán nhãn thời gian cho các giao dịch bằng cách thực hiện kỹ thuật mật mã hàm băm để mã hoá các giao dịch đó và ghi chép lên một chuỗi các khối mã băm liên tiếp kết nối với nhau, được xác thực và đạt đồng thuận theo nguyên tắc bằng chứng xử lý (proof-of-work). Bằng cách này, một bản ghi chép tuần tự các giao dịch theo thứ tự thời gian sẽ được lưu trữ và không thể bị sửa đổi, trừ khi thực hiện lại toàn bộ quá trình mã hoá kể từ điểm muốn sửa đến điểm mới nhất của bản ghi. Chuỗi khối dài nhất tìm thấy trên toàn bộ mạng ngang hàng này không chỉ được dùng làm bản ghi đối chiếu cho toàn bộ mạng mà còn là minh chứng cho thấy rằng nó được tạo ra từ nhóm nút mạng có năng lực xử lý điện toán mạnh nhất. Chỉ cần những người tham gia trung thực trong mạng ngang hàng này kiểm soát được phần lớn tổng năng lực xử lý điện toán của toàn bộ mạng, họ sẽ tạo ra được chuỗi khối dài nhất và áp đảo những kẻ phá hoại. Mạng này chỉ đòi hỏi cấu trúc cơ sở hạ tầng ở mức tối thiểu. Thông tin chỉ cần được phát đi trong khả năng tốt nhất có thể. Các nút mạng có thể tuỳ ý ngắt hoặc kết nối lại bất cứ lúc nào, miễn sao chúng chấp nhận rằng chuỗi khối dài nhất đã đạt đồng thuận theo nguyên tắc bằng chứng xử lý là bản ghi chép đúng nhất của tất cả các giao dịch đã diễn ra khi chúng không kết nối vào mạng.
1. Giới thiệu
Hoạt động thương mại điện tử ngày nay phụ thuộc gần như hoàn toàn vào các định chế tài chính đóng vai trò như một bên thứ ba được uỷ thác để xử lý các giao dịch thanh toán trực tuyến. Mặc dù hệ thống này có vẻ tạm ổn đối với hầu hết các giao dịch, nó vẫn tiềm ẩn những nguy cơ phát sinh từ một điểm yếu cố hữu là hoạt động dựa hoàn toàn trên niềm tin. Không hề có giao dịch thanh toán trực tuyến nào là hoàn toàn không thể sửa đổi, vì các định chế tài chính nói trên luôn cần phải chuẩn bị để có thể giải quyết các tranh chấp thương mại phát sinh sau đó. Chi phí dự trù để đảm bảo các công tác này làm gia tăng phí giao dịch, đặt ra giới hạn giá trị tối thiểu cho mỗi giao dịch và khiến các khoản thanh toán nhỏ lẻ hằng ngày khó lòng thực hiện được bằng phương pháp này. Chưa kể, trong thực tế vẫn có các loại hình thương mại đòi hỏi phải có cách thức thanh toán không thể đảo ngược mà việc chưa có giải pháp hoàn thiện đã tiêu tốn rất nhiều chi phí cho các bên tham gia. Vì các giao dịch vẫn có thể bị sửa đổi, hoạt động thương mại đòi hỏi phải có sự tin cậy lẫn nhau. Người bán cần phải thận trọng đối với người mua, yêu cầu nhiều thông tin hơn mức cần thiết và lắm khi gây phiền hà cho nhau. Họ bắt buộc phải chấp nhận thực tế rằng có một tỉ lệ nhất định các giao dịch sẽ bị gian lận. Sử dụng tiền mặt sẽ giúp tránh được các phí tổn và lo ngại nói trên nhưng chưa có cơ chế nào giúp thực hiện các giao dịch thanh toán bằng phương tiện truyền thông mà không phải thông qua một bên trung gian.
Thứ chúng ta cần ở đây là một hệ thống thanh toán điện tử dựa trên chứng cứ bằng mật mã thay vì niềm tin, cho phép hai bên tham gia tiến hành giao dịch trực tiếp với nhau mà không cần phải có một bên thứ ba. Các giao dịch thanh toán hoàn toàn không thể đảo ngược bằng năng lực xử lý điện toán thực tế hiện nay sẽ bảo vệ người bán hàng trước những hành vi gian lận, trong khi các cơ chế ký quỹ bảo lãnh có thể được triển khai một cách dễ dàng sẽ bảo vệ người mua. Trong thông cáo này, chúng tôi đề xuất một giải pháp cho vấn đề lặp chi bằng cách sử dụng một ứng dụng máy chủ gán nhãn thời gian phân tán trên mạng ngang hàng để tạo ra bằng chứng về mặt xử lý điện toán đối với trật tự thời gian của các giao dịch. Hệ thống này sẽ không thể bị phá hoại miễn là các nút mạng trung thực kiểm soát nhiều năng lực xử lý điện toán hơn các nút mạng gian lận.
2. Các giao dịch
Chúng ta biết rằng một đồng xu điện tử được cấu tạo từ một chuỗi các chữ ký số. Một người sở hữu đồng xu chuyển nó cho người nhận bằng cách ký xác nhận một mã băm được tạo ra từ sự kết hợp của giao dịch liền trước và mã khoá công khai của người nhận, rồi ghi nó vào đoạn cuối của đồng xu (lúc này được hiểu là một chuỗi như đã nói ở trên). Người nhận có thể xác thực các chữ ký để xác nhận quyền sở hữu của chuỗi đó.
Vấn đề ở đây là người nhận không thể xác minh được liệu người gửi có thực hiện hai giao dịch chuyển khác nhau cho cùng một đồng xu hay không. Giải pháp thông thường là uỷ thác cho một người quản trị trung tâm, hay còn gọi là xưởng đúc tiền, để kiểm tra từng giao dịch để tránh bị lặp chi. Mỗi khi có một giao dịch được thực hiện, người gửi gửi đồng xu điện tử đến xưởng đúc tiền để kiểm tra, sau đó xưởng sẽ gửi cho người nhận một đồng xu mới. Chỉ có những đồng xu được phát hành trực tiếp từ xưởng đúc tiền mới được tin cậy là không bị lặp chi. Vấn đề của giải pháp này là sự thành bại của toàn bộ hệ thống tiền tệ này lệ thuộc hoàn toàn vào công ty vận hành xưởng đúc tiền, nơi thông qua toàn bộ các giao dịch không khác gì một ngân hàng.
Chúng ta cần một phương pháp để người nhận xác minh được rằng người gửi đã không ký xác nhận giao dịch nào khác cho cùng một đồng xu mà họ đang gửi cho mình. Trên tinh thần đó, chỉ có giao dịch diễn ra trước nhất mới được tính, mọi cố gắng để lặp chi sau đó đều vô nghĩa. Cách duy nhất để biết được một giao dịch có diễn ra chưa là phải nắm hết toàn bộ thông tin của các giao dịch trước đó. Trong mô hình dựa vào xưởng đúc tiền, xưởng đúc này thu nhận toàn bộ thông tin của các giao dịch và quyết định ra cái nào được thực hiện trước. Để thực hiện được điều này mà không cần thông qua một bên trung gian, tất cả các giao dịch phải được công khai [1] và phải có một hệ thống cho phép các bên tham gia đồng thuận về một bản ghi duy nhất của thứ tự các giao dịch trong số nhiều bản ghi mà họ nhận được. Người nhận tiền cần bằng chứng xác thực rằng vào lúc giao dịch đang diễn ra, phần lớn các nút mạng đồng thuận rằng giao dịch đó là sớm nhất.
3. Máy chủ gán nhãn thời gian
Giải pháp chúng tôi đề xuất bắt đầu từ một ứng dụng máy chủ gán nhãn thời gian. Một máy chủ gán nhãn thời gian hoạt động bằng cách tạo ra mã băm của một khối dữ liệu cần gán nhãn thời gian và công bố mã băm này cho tất cả được biết, ví dụ như đăng báo hay đăng bài trên mạng Usenet [2-5]. Nhãn thời gian kiểu này chứng tỏ rằng dữ liệu thực sự tồn tại vào thời điểm sinh ra mã băm, hẳn nhiên, nếu không dữ liệu đó đã không thể được tính trong hàm băm. Mỗi nhãn thời gian tiếp theo lại tính cả nhãn thời gian trước đó trong mã băm của nó, từ đó tạo ra một chuỗi mà các nhãn thời gian được thêm vào sau sẽ củng cố thêm tính xác thực cho các nhãn thời gian trước nó.
4. Bằng chứng xử lý
Để triển khai một ứng dụng máy chủ gán nhãn thời gian phân tán trên cơ sở ngang hàng, chúng ta cần sử dụng một hệ thống kiểu bằng chứng xử lý tương tự như Hashcash của Adam Back [6], chứ không thể đăng báo hay đăng trên Usenet. Cơ chế bằng chứng xử lý đòi hỏi việc dò tìm một giá trị mà một khi được băm, chẳng hạn theo hàm SHA-256, thì mã băm tạo ra được bắt đầu bằng một số các bit 0. Lượng công việc tính toán bình quân cần thiết sẽ có tương quan theo cấp số nhân với số lượng các bit 0 phải có và sẽ dễ dàng được xác thực bằng cách thực hiện lại chỉ một hàm băm duy nhất.
Trong hệ thống mạng của các nhãn thời gian đã nói ở trên, ta thực hành cơ chế bằng chứng xử lý bằng cách lần lượt thử các con số ngẫu nhiên để kết hợp vào dữ liệu trong một khối, rồi băm đến khi tìm ra một mã băm có số bit 0 cần thiết. Một khi năng lực xử lý điện toán đã được sử dụng để tính toán ra được bằng chứng xử lý cho một khối dữ liệu, thì khối đó sẽ không thể nào bị sửa đổi được trừ khi thực hiện toàn bộ công việc tính toán cho khối đó lại từ đầu. Chưa hết, các khối tiếp theo sẽ được móc vào liên tục ở phía sau khiến cho việc sửa đổi một khối đòi hỏi phải tính toán lại bằng chứng xử lý cho tất cả các khối ở sau nó.
Cơ chế bằng chứng xử lý cũng giúp giải quyết vấn đề làm sao tìm được tiếng nói chung trong quá trình đưa ra quyết định theo số đông. Nếu số phiếu được tính theo hình thức một địa chỉ IP là một phiếu thì người ta có thể gian lận bằng cách dùng thật nhiều địa chỉ IP. Về cơ bản, cơ chế bằng chứng xử lý chính là hình thức bỏ phiếu trên cơ sở một CPU là một phiếu. Quyết định của đa số được thể hiện bằng chuỗi khối dài nhất, tức là chuỗi khối có công sức tính toán bằng chứng xử lý nhiều nhất. Nếu phần lớn sức mạnh CPU được kiểm soát bởi các nút mạng tuân thủ đúng luật thì chuỗi khối tạo bởi các nút này sẽ phát triển nhanh hơn và áp đảo các chuỗi cạnh tranh. Để sửa đổi dữ liệu trong một khối cũ, kẻ tấn công sẽ phải tính toán lại bằng chứng xử lý của khối đó cộng với tất cả các khối xuất hiện sau nó, đồng thời phải tăng tốc để bắt kịp và vượt qua số lượng khối đã được tạo ra của các nút tuân thủ đúng luật. Trong phần sau, chúng tôi sẽ chứng minh rằng khi càng có nhiều các khối tiếp theo được thêm vào, khả năng để một kẻ tấn công có năng lực xử lý điện toán yếu hơn bắt kịp được các nút trong mạng giảm nhanh chóng theo cấp số nhân.
Để bù trừ cho việc tốc độ phần cứng ngày càng tăng hoặc sự thay đổi số lượng nút tham gia mạng do nhu cầu người dùng thay đổi, độ khó của bằng chứng xử lý được xác định dựa trên trung bình động của số lượng các khối được tạo ra mỗi giờ. Nếu các khối được tạo ra quá nhanh, mức độ khó sẽ tăng lên.
5. Hệ thống mạng
Sau đây là các bước để vận hành hệ thống mạng này:
- Các giao dịch mới được phát tán đến các nút mạng
- Mỗi nút gom các giao dịch vào một khối
- Mỗi nút tính toán để tìm bằng chứng xử lý phức tạp cho khối của chính nó
- Một khi có một nút tìm ra được bằng chứng xử lý, nó phát tán thông tin của khối đó đến tất cả các nút khác
- Các nút đồng ý ghi nhận khối đó chỉ khi nào tất cả các giao dịch trong khối đều hợp lệ và không bị lặp chi
- Các nút thể hiện sự đồng thuận đối với khối vừa được tạo ra bằng cách tiếp tục tính toán để tạo ra khối mới móc vào chuỗi, dựa trên mã băm của khối vừa được tạo ra.
Các nút mạng luôn luôn chấp nhận chuỗi dài nhất là chuỗi đúng nhất và sẽ tiếp tục xử lý để nối dài thêm chuỗi đó. Nếu có hai nút mạng cùng lúc phát tán đi hai phiên bản khác nhau của một khối tiếp theo thì sẽ có một số nút nhận được một phiên bản nào đó trước phiên bản còn lại. Trong trường hợp đó, mỗi nút sẽ xử lý phiên bản đầu tiên mà nó nhận được và đồng thời vẫn lưu lại nhánh kia để dự phòng trường hợp nhánh đó sẽ dài nhanh hơn. Một khi bằng chứng xử lý của khối kế tiếp được tạo ra và một trong hai nhánh thực sự dài hơn nhánh còn lại, nút nào đang xử lý nhánh ngắn sẽ chuyển qua làm việc trên nhánh dài hơn. Việc phát tán những giao dịch mới không nhất thiết phải đến được toàn bộ các nút mạng. Miễn là giao dịch đó được gửi đến càng nhiều nút thì nó sẽ càng sớm được ghi vào một khối. Việc phát tán các khối mới cũng đã được dự trù trường hợp bị gián đoạn thông tin. Nếu một nút không nhận được thông tin của một khối nào đó nhưng lại nhận được thông tin của một khối liền sau, nó sẽ hiểu rằng nó nhận thiếu một khối và gửi yêu cầu để lấy được khối bị thiếu.
6. Động lực tham gia vận hành hệ thống
Theo quy ước của mạng này, giao dịch đầu tiên trong một khối mới là một giao dịch đặc biệt, đánh dấu sự xuất hiện của một đồng xu mới thuộc sở hữu của người tạo ra khối mới đó. Đây chính là động cơ để thúc đẩy các nút tham gia hỗ trợ mạng lưới và cũng là cách để đưa các đồng xu mới vào lưu thông trong mạng, bởi vì không có một cơ quan quản lý trung tâm nào để đảm trách việc phát hành cả. Việc bổ sung đều đặn một lượng cố định các đồng xu mới cũng tương tự như việc những kẻ đào vàng tiêu tốn các chi phí và nguồn lực để khai thác và cung ứng thêm vàng cho lưu thông. Ở trường hợp của chúng ta là đầu tư thời gian xử lý điện toán và lượng điện năng tiêu thụ.
Động lực để tham gia mạng còn được trích ra từ phí giao dịch. Khoản chênh lệch giữa giá trị đầu ra so với giá trị đầu vào của một giao dịch chính là khoản phí giao dịch, được dùng để bổ sung thêm cho số tiền công tạo ra khối chứa giao dịch đó. Một khi tổng số lượng đồng xu được đưa vào lưu hành trong mạng lưới đạt đến một con số đã ấn định trước, tiền công sẽ chỉ còn được lấy từ phí giao dịch và toàn bộ hệ thống tiền tệ này sẽ hoàn toàn không có lạm phát.
Động lực này đủ để khiến cho các nút mạng tham gia một cách trung thực. Nếu một kẻ tấn công tham lam nào đó có khả năng huy động được lượng CPU có sức mạnh to lớn hơn tất cả các nút mạng còn lại, hắn ta sẽ phải lựa chọn giữa việc dùng sức mạnh đó để lừa đảo mọi người bằng cách đánh cắp lại số tiền hắn đã chi trả, hay là dùng sức mạnh đó đổi lấy được nhiều đồng xu mới cho mình. Hắn sẽ nhận ra rằng tuân thủ luật chơi sẽ có ích hơn, vì luật chơi này sẽ giúp hắn có được nhiều đồng xu mới hơn tất cả những kẻ khác cộng lại, thay vì huỷ hoại cả hệ thống để rồi làm cho tài sản của chính mình mất giá.
7. Lấy lại không gian lưu trữ
Một khi giao dịch gần nhất của một đồng xu được ghi nhận trong một khối đủ xa trong quá khứ, những giao dịch liền trước của đồng xu đó có thể được xoá bớt để tiết kiệm không gian lưu trữ. Để thực hiện được việc này mà không làm sai lệch mã băm của khối, các giao dịch sẽ được băm trong một cây Merkle [7][2][5] và chỉ có phần gốc được bao hàm trong mã băm của khối. Từ đó, dữ liệu của các khối cũ có thể được giải phóng bằng cách tỉa bớt nhánh cây Merkle. Những mã băm nằm trong không nhất thiết phải được ghi lại.
Phần đầu khối nơi không chứa dữ liệu giao dịch chỉ chiếm dung lượng khoảng 80 byte. Giả sử rằng cứ mười phút sẽ có một khối mới được tạo ra, ta có 80 byte * 6 * 24 * 365 = 4.2 MB mỗi năm. Với những hệ thống máy vi tính thường được trang bị 2 GB RAM vào năm 2008 và luật Moore dự đoán mức tăng trưởng 1.2 GB mỗi năm, ta sẽ không gặp vấn đề với chuyện lưu trữ ngay cả khi toàn bộ phần đầu khối phải được lưu trong bộ nhớ.
8. Cơ chế xác thực giao dịch giản lược
Hoàn toàn có thể xác thực giao dịch mới mà không cần phải vận hành một nút mạng đầy đủ. Một người dùng chỉ cần lần lượt truy vấn các nút mạng cho tới khi chắc chắn về một chuỗi bằng chứng xử lý dài nhất, lưu trữ bản sao những phần đầu khối của chuỗi đó, tải về thông tin nhánh cây Merkle liên kết giao dịch cần xác thực với khối nó được gắn nhãn. Anh ta không thể tự mình kiểm tra giao dịch nhưng bằng cách liên kết nó với một vị trí trong chuỗi, anh ta có thể thấy rằng một nút mạng đã chấp nhận nó và nhiều khối khác đã được nối vào phía sau khối này càng khẳng định rằng toàn bộ mạng đã chấp nhận nó.
Như vậy, miễn là các nút trung thực còn kiểm soát mạng lưới thì cơ chế xác thực trên vẫn còn đáng tin cậy, nhưng sẽ có lỗ hổng nếu như xuất hiện một kẻ tấn công có sức mạnh điện toán cao hơn. Trong khi các nút mạng đầy đủ có thể tự xác thực giao dịch bằng dữ liệu đã có, cơ chế xác thực giản lược đang nói ở trên có thể bị qua mặt khi kẻ tấn công gửi đến các giao dịch giả mạo đúng lúc chúng đang áp đảo toàn bộ mạng lưới bằng năng lực điện toán của mình. Một chiến thuật để phòng vệ trước nguy cơ này là nhận các cảnh báo từ các nút mạng đầy đủ một khi họ phát hiện một khối không hợp lệ, yêu cầu phần mềm của người dùng tải về toàn bộ dữ liệu của khối và toàn bộ nguồn của giao dịch bị cảnh báo để thực hiện việc xác minh sự không hợp lệ. Như vậy, những tổ chức thường xuyên nhận thanh toán sẽ có thể vẫn cần phải chạy các nút mạng đầy đủ của riêng mình để được tự chủ hơn trong công tác bảo mật và xác thực giao dịch nhanh chóng hơn.
9. Kết hợp và phân chia giá trị
Mặc dù về nguyên tắc có thể kiểm soát hệ thống theo từng đồng xu riêng biệt nhưng việc tách riêng từng giao dịch của mỗi đồng xu trong một lệnh chuyển tiền như vậy sẽ rất cồng kềnh. Để có thể tách hay gộp giá trị, các giao dịch sẽ bao gồm nhiều đầu vào và đầu ra. Thông thường sẽ có một trong hai trường hợp đầu vào xảy ra: thứ nhất là có một đầu vào duy nhất từ một giao dịch liền trước có giá trị cao hơn và thứ hai là có nhiều đầu vào gộp các giá trị nhỏ hơn lại với nhau. Và sẽ có nhiều nhất hai trường hợp đầu ra: một là toàn bộ khoản thanh toán và một là trả lại tiền thừa, nếu có, ngược về cho người gửi.
Cũng cần lưu ý rằng việc truy xuất toàn bộ các nhánh, chỗ mà một giao dịch bắt nguồn từ nhiều giao dịch khác, rồi đến lượt các giao dịch khác đó bắt nguồn từ các giao dịch khác nữa, không phải là vấn đề đáng quan tâm. Chưa bao giờ có ai cần trích xuất một bản sao hoàn chỉnh chứa đầy đủ lịch sử ngọn nguồn của một giao dịch cả.
10. Tính riêng tư
Mô hình ngân hàng truyền thống đảm bảo được sự riêng tư ở một mức độ nào đó bằng cách chỉ cho các bên liên quan và bên thứ ba được uỷ thác có quyền tiếp cận thông tin. Sự cần thiết phải công bố tất cả các giao dịch hoàn toàn công khai của hệ thống mạng này có vẻ đi ngược lại với cách làm trên, nhưng sự riêng tư vẫn có thể được đảm bảo bằng cách ngắt đứt luồng truy cập thông tin ở một góc độ khác: bằng cách che giấu thông tin về các mã khoá công khai. Mọi người có thể thấy rằng có người nào đó đang gửi một số tiền đến cho một người khác, nhưng họ không có thông tin để xác định giao dịch này liên quan đến ai. Điều này tương tự như mức độ công bố thông tin ở các sàn giao dịch chứng khoán, nơi thời điểm và giá trị của từng giao dịch mua bán riêng lẻ được công khai nhưng không cho biết bên nào thực hiện. 
Để tăng cường thêm một lớp bảo mật, một địa chỉ ví mới hoàn toàn nên được sử dụng cho mỗi giao dịch để tránh chúng có thể bị liên kết đến một người chủ sở hữu chung. Nhưng vẫn có những cách để lần ra manh mối nếu những giao dịch đó có nhiều đầu vào, mà những đầu vào đó lại tiết lộ ra một chủ sở hữu chung. Rủi ro nằm ở chỗ nếu chủ sở hữu của một mã khoá bị lộ danh tính thì bằng cách lần theo các liên kết, những giao dịch khác cùng thuộc về một chủ sở hữu đó cũng sẽ bị tiết lộ.
11. Các tính toán
Chúng ta hãy xem xét khả năng một kẻ tấn công cố gắng tạo ra một chuỗi khối khác, nhanh hơn chuỗi khối thực đang có. Nhưng ta cũng nên biết là dù chuyện đó có xảy ra, hệ thống cũng không thể bị thay đổi hoàn toàn theo kiểu in tiền như lá mít hay biến tiền của người khác thành tiền của mình. Các nút mạng sẽ không chấp nhận những giao dịch không hợp lệ và chúng sẽ không bao giờ ghi nhận khối chứa các giao dịch đó vào chuỗi. Kẻ tấn công chỉ có thể cố gắng xoá đi một trong những giao dịch gần đây của chính hắn để trộm lại số tiền hắn mới trả cho người khác.
Cuộc chạy đua giữa chuỗi khối chính thống và chuỗi khối của kẻ tấn công có thể được xem như một Bước Ngẫu Nhiên Nhị Thức. Sự kiện thành công là khi chuỗi khối chính thống được nối thêm một khối, tăng bước ngẫu nhiên thêm +1, còn sự kiện thất bại là khi chuỗi khối của kẻ tấn công được nối thêm một khối, giảm bước ngẫu nhiên đi -1.
Xác suất để một kẻ tấn công bắt kịp từ một vị trí xuất phát ở đằng sau cũng tương tự như bài toán xác suất Con bạc sạt nghiệp. Bài toán này như sau, giả sử có một người đánh bạc có lượng tiền vô hạn và lượt chơi vô hạn, bắt đầu chơi ở thế đang thua cho tới khi huề vốn. Chúng ta có công thức để tính xác suất con bạc được huề vốn, hay xác suất kẻ tấn công bắt kịp chuỗi khối chính thống như sau [8]:
p = xác suất một nút mạng trung thực tìm được khối kế tiếp
q = xác suất kẻ tấn công tìm được khối kế tiếp
qz = xác suất kẻ tấn công có thể bắt kịp từ vị trí z khối ở đằng sau
Ta giả sử p > q, xác suất qz giảm theo cấp số nhân khi số lượng khối mà kẻ tấn công phải đuổi theo càng gia tăng. Với sự bất lợi về mặt toán học hiển nhiên như vậy, nếu hắn không gặp may mắn ngay từ đầu, cơ hội thành công của hắn trở nên càng lúc càng nhỏ đến mức vô vọng khi hắn bị tụt lại phía sau.
Giờ ta xem thử một người nhận phải đợi bao lâu trước khi có thể chắc chắn người gửi không thể nào sửa đổi được giao dịch trả tiền. Ta giả sử người gửi là một kẻ tấn công muốn lừa người nhận tin rằng hắn đã thanh toán cho họ thành công và lật lọng đảo ngược giao dịch để lấy lại tiền sau một khoảng thời gian nhất định. Tất nhiên, sớm muộn người nhận sẽ phát hiện ra chuyện đó trên chuỗi khối, nhưng kẻ tấn công mong rằng tới lúc đó thì mọi chuyện đã rồi.
Người nhận nên tạo một địa chỉ ví mới hoàn toàn và đưa ngay cho người gửi lúc vừa tạo để đòi tiền. Cách này ngăn chận việc người gửi dùng địa chỉ ví cũ của người nhận mà hắn biết trước để chuẩn bị sẵn một chuỗi khối giả, bằng cách cứ tạo khối liên tục cho tới khi hắn đủ may mắn để tiến được độ xa cần thiết, rồi thực thi giao dịch ngay lúc đó. Khi giao dịch vừa được phát đi, người gửi lừa đảo bắt đầu tạo ra một chuỗi khối song song chứa một giao dịch đảo ngược thanh toán vừa rồi.
Người nhận nên đợi cho giao dịch thanh toán được ghi nhận vào khối và có z khối được móc vào phía sau. Anh ta không thể biết chính xác kẻ lừa đảo đã tiến được bao xa, nhưng giả sử rằng các khối chính thống mới sẽ được tạo ra trong khoảng thời gian trung bình như trước giờ các khối cũ được tạo, bước tiến của kẻ lừa đảo sẽ là một phân phối Poisson với giá trị kỳ vọng sau đây:
Để tính xác suất kẻ tấn công bắt kịp được chuỗi khối chính thống, ta nhân mật độ Poisson của mỗi bước tiến hắn đạt được với xác suất hắn bắt kịp được từ khoảng cách đó:
Sắp xếp lại để tránh cộng các giá trị vô hạn ở phần đuôi đường phân phối…
Chuyển thành ngôn ngữ lập trình C…
Chạy phần mềm để lấy kết quả, ta thấy xác suất giảm theo cấp số nhân theo z.
Để xác suất P nhỏ hơn 0.1% thì…
Kết luận
Chúng tôi vừa đề xuất một hệ thống xử lý các giao dịch thanh toán điện tử không cần phụ thuộc vào niềm tin. Chúng tôi bắt đầu từ một thiết kế tiền điện tử phổ biến, được tạo thành từ các chữ ký điện tử cho phép xác nhận quyền sở hữu một cách an toàn nhưng lại chưa hoàn thiện vì thiếu biện pháp ngăn chận vấn nạn lặp chi. Để giải quyết bài toán này, chúng tôi đề xuất một mạng ngang hàng sử dụng cơ chế bằng chứng xử lý để ghi chép một lịch sử giao dịch công khai, có thể nhanh chóng khiến cho kẻ tấn công không thể nào sửa đổi bằng năng lực xử lý điện toán hiện tại, với điều kiện các nút mạng trung thực kiểm soát sức mạnh CPU cao hơn. Mạng này sẽ hoạt động rất bền bỉ nhờ sự đơn giản và phi cấu trúc của nó. Các nút mạng hoạt động đồng thời nhưng không cần phải hợp tác quá nhiều. Chúng cũng không cần phải có định danh vì thông tin không cần thiết phải được dẫn theo một lộ trình cụ thể mà chỉ cần được truyền đi trong khả năng tốt nhất có thể mà thôi. Các nút mạng có thể ngắt hoặc kết nối lại tuỳ ý, miễn sao chúng chấp nhận chuỗi bằng chứng xử lý chính là chứng cứ về những gì đã diễn ra khi chúng không kết nối vào mạng. Các nút bỏ phiếu bằng năng lực CPU của chúng, thể hiện sự đồng thuận đối với các khối hợp lệ bằng cách tiếp tục tính toán để nối dài thêm chuỗi tiếp sau khối đó hoặc từ chối những khối không hợp lệ bằng cách không dùng nó cho phép tính tiếp theo. Cơ chế đồng thuận này cũng sẽ giúp xác định những nghĩa vụ và quyền lợi của mạng lưới khi cần thiết.
Tài liệu tham khảo
26/06/2022