#CryptoBasics $BTC

BTC
BTCUSDT
67,425.6
-1.73%

Bitcoin: Hệ thống tiền điện tử ngang hàng

Một phiên bản hoàn toàn ngang hàng của tiền điện tử sẽ cho phép các khoản thanh toán trực tuyến được gửi trực tiếp từ một bên này sang bên kia mà không cần thông qua một tổ chức tài chính. Các chữ ký số cung cấp một phần của giải pháp, nhưng các lợi ích chính bị mất nếu một bên thứ ba đáng tin cậy vẫn cần thiết để ngăn chặn việc chi tiêu gấp đôi. Chúng tôi đề xuất một giải pháp cho vấn đề chi tiêu gấp đôi bằng cách sử dụng một mạng ngang hàng. Mạng này đánh dấu thời gian các giao dịch bằng cách băm chúng vào một chuỗi liên tục của bằng chứng công việc dựa trên hàm băm, tạo thành một bản ghi không thể thay đổi mà không làm lại bằng chứng công việc. Chuỗi dài nhất không chỉ phục vụ như bằng chứng cho thứ tự các sự kiện đã chứng kiến, mà còn chứng minh rằng nó đến từ nguồn sức mạnh CPU lớn nhất. Miễn là phần lớn sức mạnh CPU được kiểm soát bởi các nút không hợp tác để tấn công mạng, họ sẽ tạo ra chuỗi dài nhất và vượt qua các kẻ tấn công. Mạng bản thân yêu cầu cấu trúc tối thiểu. Các tin nhắn được phát sóng trên cơ sở nỗ lực tốt nhất, và các nút có thể rời khỏi và tham gia lại mạng theo ý muốn, chấp nhận chuỗi bằng chứng công việc dài nhất làm bằng chứng cho những gì đã xảy ra trong khi họ vắng mặt.

1. Giới thiệu Thương mại trên Internet đã trở nên phụ thuộc gần như hoàn toàn vào các tổ chức tài chính đóng vai trò như các bên thứ ba đáng tin cậy để xử lý các khoản thanh toán điện tử. Trong khi hệ thống hoạt động đủ tốt cho hầu hết các giao dịch, nó vẫn gặp phải những điểm yếu vốn có của mô hình dựa vào lòng tin. Các giao dịch hoàn toàn không thể đảo ngược thực sự là không thể, vì các tổ chức tài chính không thể tránh khỏi việc hòa giải các tranh chấp. Chi phí hòa giải làm tăng chi phí giao dịch, giới hạn kích thước tối thiểu thực tiễn của giao dịch và cắt đứt khả năng cho các giao dịch nhỏ lẻ, và có một chi phí rộng hơn trong việc mất khả năng thực hiện các khoản thanh toán không thể đảo ngược cho các dịch vụ không thể đảo ngược. Với khả năng đảo ngược, nhu cầu về lòng tin lan rộng. Các thương nhân phải cẩn trọng với khách hàng của họ, làm phiền họ để có thêm thông tin hơn những gì họ cần. Một tỷ lệ nhất định của gian lận được chấp nhận là không thể tránh khỏi. Những chi phí này và những bất ổn trong thanh toán có thể được tránh trong giao dịch trực tiếp bằng cách sử dụng tiền tệ vật lý, nhưng không có cơ chế nào tồn tại để thực hiện thanh toán qua một kênh truyền thông mà không có một bên đáng tin cậy. Điều cần thiết là một hệ thống thanh toán điện tử dựa trên bằng chứng mật mã thay vì lòng tin, cho phép bất kỳ hai bên sẵn sàng nào giao dịch trực tiếp với nhau mà không cần một bên thứ ba đáng tin cậy. Các giao dịch mà không thể đảo ngược về mặt tính toán sẽ bảo vệ người bán khỏi gian lận, và các cơ chế ký quỹ thông thường có thể dễ dàng được thực hiện để bảo vệ người mua. Trong bài viết này, chúng tôi đề xuất một giải pháp cho vấn đề chi tiêu gấp đôi bằng cách sử dụng một máy chủ thời gian phân phối ngang hàng để tạo ra bằng chứng tính toán về thứ tự thời gian của các giao dịch. Hệ thống là an toàn miễn là các nút trung thực tập hợp kiểm soát nhiều sức mạnh CPU hơn bất kỳ nhóm nút tấn công nào hợp tác.

2. Xác minh giao dịch Chúng tôi định nghĩa một đồng tiền điện tử là một chuỗi các chữ ký số. Mỗi chủ sở hữu chuyển giao đồng tiền cho người tiếp theo bằng cách ký số một hàm băm của giao dịch trước đó và khóa công khai của chủ sở hữu tiếp theo và thêm chúng vào cuối đồng tiền. Người nhận có thể xác minh các chữ ký để xác minh chuỗi quyền sở hữu. Giao dịch Xác minh Khóa công khai của Chủ sở hữu 1 Hàm băm Chữ ký của Chủ sở hữu 0 Khóa riêng của Chủ sở hữu 1 Giao dịch Khóa công khai của Chủ sở hữu 2 Hàm băm Chữ ký của Chủ sở hữu 1 Khóa riêng của Chủ sở hữu 2 Giao dịch Khóa công khai của Chủ sở hữu 3 Hàm băm Chữ ký của Chủ sở hữu 2 Khóa riêng của Chủ sở hữu 3 Vấn đề là người nhận không thể xác minh rằng một trong các chủ sở hữu không đã chi tiêu gấp đôi đồng tiền. Một giải pháp phổ biến là giới thiệu một cơ quan trung ương đáng tin cậy, hoặc đúc, kiểm tra từng giao dịch để phát hiện việc chi tiêu gấp đôi. Sau mỗi giao dịch, đồng tiền phải được trả lại cho cơ quan đúc để phát hành một đồng tiền mới, và chỉ có các đồng tiền được phát hành trực tiếp từ cơ quan đúc mới được tin tưởng không bị chi tiêu gấp đôi. Vấn đề với giải pháp này là số phận của toàn bộ hệ thống tiền tệ phụ thuộc vào công ty điều hành cơ quan đúc, với mọi giao dịch phải đi qua họ, giống như một ngân hàng. Chúng tôi cần một cách để người nhận biết rằng các chủ sở hữu trước đó không ký bất kỳ giao dịch trước đó nào. Đối với mục đích của chúng tôi, giao dịch sớm nhất là giao dịch được tính, vì vậy chúng tôi không quan tâm đến các nỗ lực sau này để chi tiêu gấp đôi. Cách duy nhất để xác nhận sự vắng mặt của một giao dịch là biết tất cả các giao dịch. Trong mô hình dựa trên cơ quan đúc, cơ quan đúc biết tất cả các giao dịch và quyết định giao dịch nào đến trước. Để thực hiện điều này mà không có một bên đáng tin cậy, các giao dịch phải được công bố công khai [1], và chúng tôi cần một hệ thống để các tham gia đồng ý về một lịch sử duy nhất về thứ tự mà chúng được nhận. Người nhận cần chứng minh rằng vào thời điểm mỗi giao dịch, phần lớn các nút đã đồng ý rằng đó là giao dịch đầu tiên được nhận.

3. Máy chủ thời gian Giải pháp mà chúng tôi đề xuất bắt đầu với một máy chủ thời gian. Máy chủ thời gian hoạt động bằng cách lấy một hàm băm của một khối các mục sẽ được đánh dấu thời gian và công khai rộng rãi hàm băm, chẳng hạn như trong một bài báo hoặc một bài đăng Usenet [2-5]. Thời gian đã chứng minh rằng dữ liệu phải tồn tại vào thời điểm đó, rõ ràng, để được đưa vào hàm băm. Mỗi thời gian bao gồm thời gian trước đó trong hàm băm của nó, tạo thành một chuỗi, với mỗi thời gian bổ sung củng cố những cái trước đó. Hàm băm Hàm băm Khối Mục Mục Khối ... Mục Mục ...

4. Bằng chứng công việc Để triển khai một máy chủ thời gian phân phối trên cơ sở ngang hàng, chúng tôi sẽ cần sử dụng một hệ thống bằng chứng công việc tương tự như Hashcash của Adam Back [6], thay vì các bài báo hoặc bài đăng Usenet. Bằng chứng công việc liên quan đến việc quét một giá trị mà khi băm, chẳng hạn như với SHA-256, hàm băm bắt đầu bằng một số bit bằng không. Công việc trung bình cần thiết là theo cấp số nhân trong số lượng bit bằng không yêu cầu và có thể được xác minh bằng cách thực hiện một hàm băm duy nhất. Đối với mạng thời gian của chúng tôi, chúng tôi thực hiện bằng chứng công việc bằng cách tăng một nonce trong khối cho đến khi tìm thấy một giá trị cho phép hàm băm của khối có các bit bằng không cần thiết. Khi công sức CPU đã được tiêu tốn để làm cho nó thỏa mãn bằng chứng công việc, khối không thể bị thay đổi mà không làm lại công việc. Khi các khối sau đó được xâu chuỗi sau đó, công việc để thay đổi khối sẽ bao gồm làm lại tất cả các khối sau đó. Khối Hàm băm trước Tx Khối Nonce Tx ... Hàm băm trước Nonce Tx Tx ... Bằng chứng công việc cũng giải quyết vấn đề xác định đại diện trong việc ra quyết định đa số. Nếu đa số được dựa trên một địa chỉ IP một phiếu, nó có thể bị thao túng bởi bất kỳ ai có thể phân bổ nhiều địa chỉ IP. Bằng chứng công việc về cơ bản là một CPU một phiếu. Quyết định đa số được đại diện bởi chuỗi dài nhất, có công sức bằng chứng công việc lớn nhất được đầu tư vào nó. Nếu phần lớn sức mạnh CPU được kiểm soát bởi các nút trung thực, chuỗi trung thực sẽ phát triển nhanh nhất và vượt qua bất kỳ chuỗi cạnh tranh nào. Để sửa đổi một khối trong quá khứ, một kẻ tấn công sẽ phải làm lại bằng chứng công việc của khối và tất cả các khối sau đó và sau đó bắt kịp và vượt qua công việc của các nút trung thực. Chúng tôi sẽ chỉ ra sau rằng xác suất một kẻ tấn công chậm hơn bắt kịp giảm theo cấp số nhân khi các khối tiếp theo được thêm vào. Để bù đắp cho tốc độ phần cứng ngày càng tăng và sự quan tâm thay đổi trong việc chạy các nút theo thời gian, độ khó của bằng chứng công việc được xác định bởi một trung bình động nhắm đến một số khối trung bình mỗi giờ. Nếu chúng được tạo ra quá nhanh, độ khó sẽ tăng lên.

5. Mạng Các bước để vận hành mạng như sau: 1) Các giao dịch mới được phát sóng đến tất cả các nút. 2) Mỗi nút thu thập các giao dịch mới vào một khối. 3) Mỗi nút làm việc để tìm một bằng chứng công việc khó khăn cho khối của nó. 4) Khi một nút tìm thấy một bằng chứng công việc, nó phát sóng khối đến tất cả các nút. 5) Các nút chấp nhận khối chỉ khi tất cả các giao dịch trong đó hợp lệ và chưa được chi tiêu. 6) Các nút thể hiện sự chấp nhận của họ đối với khối bằng cách làm việc để tạo ra khối tiếp theo trong chuỗi, sử dụng hàm băm của khối đã chấp nhận làm hàm băm trước. Các nút luôn coi chuỗi dài nhất là chuỗi đúng và sẽ tiếp tục làm việc để mở rộng nó. Nếu hai nút phát sóng các phiên bản khác nhau của khối tiếp theo đồng thời, một số nút có thể nhận được một trong hai trước. Trong trường hợp đó, họ làm việc trên cái đầu tiên mà họ nhận được, nhưng lưu lại nhánh kia trong trường hợp nó trở nên dài hơn. Sự hòa sẽ được phá vỡ khi bằng chứng công việc tiếp theo được tìm thấy và một nhánh trở nên dài hơn; các nút đã làm việc trên nhánh kia sẽ chuyển sang nhánh dài hơn.

Các phát sóng giao dịch mới không nhất thiết phải đến tất cả các nút. Miễn là chúng đến nhiều nút, chúng sẽ vào một khối trước lâu. Các phát sóng khối cũng chịu được việc mất tin nhắn. Nếu một nút không nhận được một khối, nó sẽ yêu cầu nó khi nhận được khối tiếp theo và nhận ra nó đã bỏ lỡ một cái.

6. Khuyến khích Theo quy ước, giao dịch đầu tiên trong một khối là một giao dịch đặc biệt bắt đầu một đồng tiền mới được sở hữu bởi người tạo ra khối. Điều này tạo ra một động lực cho các nút hỗ trợ mạng, và cung cấp một cách để phân phối ban đầu các đồng tiền vào lưu thông, vì không có cơ quan trung ương nào để phát hành chúng. Việc bổ sung một cách liên tục một lượng đồng tiền mới là tương tự như việc các thợ mỏ vàng tiêu tốn tài nguyên để thêm vàng vào lưu thông. Trong trường hợp của chúng tôi, đó là thời gian CPU và điện năng được tiêu tốn. Động lực cũng có thể được tài trợ bằng các khoản phí giao dịch. Nếu giá trị đầu ra của một giao dịch nhỏ hơn giá trị đầu vào của nó, sự khác biệt là một khoản phí giao dịch được thêm vào giá trị khuyến khích của khối chứa giao dịch. Khi một số lượng đồng tiền xác định đã vào lưu thông, động lực có thể chuyển hoàn toàn sang các khoản phí giao dịch và hoàn toàn không bị lạm phát. Động lực có thể giúp khuyến khích các nút giữ trung thực. Nếu một kẻ tấn công tham lam có thể tập hợp nhiều sức mạnh CPU hơn tất cả các nút trung thực, hắn sẽ phải lựa chọn giữa việc sử dụng nó để lừa đảo mọi người bằng cách lấy lại các khoản thanh toán của mình, hoặc sử dụng nó để tạo ra các đồng tiền mới. Hắn nên thấy rằng việc tuân thủ các quy tắc, những quy tắc mà có lợi cho hắn với nhiều đồng tiền mới hơn tất cả mọi người cộng lại, thì có lợi hơn là phá hoại hệ thống và tính hợp lệ của sự giàu có của chính mình.

7. Khôi phục không gian đĩa Khi giao dịch mới nhất trong một đồng tiền được chôn dưới đủ nhiều khối, các giao dịch đã chi tiêu trước đó có thể được loại bỏ để tiết kiệm không gian đĩa. Để tạo điều kiện điều này mà không làm hỏng hàm băm của khối, các giao dịch được băm trong một Cây Merkle [7][2][5], với chỉ gốc được bao gồm trong hàm băm của khối. Các khối cũ sau đó có thể được nén bằng cách cắt bỏ các nhánh của cây. Các hàm băm bên trong không cần phải được lưu trữ. Khối Tiêu đề khối (Hàm băm khối) Hàm băm trước Nonce Gốc Hàm băm Hàm băm01 Hàm băm0 Hàm băm1 Hàm băm23 Hàm băm2 Tx0 Tx1 Tx2 Hàm băm3 Tx3 Các giao dịch được băm trong một Cây Merkle Khối Tiêu đề khối (Hàm băm khối) Hàm băm trước Nonce Gốc Hàm băm Hàm băm01 Hàm băm23 Hàm băm2 Hàm băm3 Tx3 Sau khi Cắt bỏ Tx0-2 từ Khối Một tiêu đề khối không có giao dịch sẽ khoảng 80 byte. Nếu chúng tôi giả định các khối được tạo ra mỗi 10 phút, 80 byte * 6 * 24 * 365 = 4.2MB mỗi năm. Với các hệ thống máy tính thường bán với 2GB RAM vào năm 2008, và Luật Moore dự đoán sự phát triển hiện tại là 1.2GB mỗi năm, việc lưu trữ không nên là vấn đề ngay cả khi các tiêu đề khối phải được giữ trong bộ nhớ.

8. Xác minh thanh toán đơn giản Có thể xác minh thanh toán mà không cần chạy một nút mạng đầy đủ. Một người dùng chỉ cần giữ một bản sao của tiêu đề khối của chuỗi bằng chứng công việc dài nhất, mà anh ta có thể nhận được bằng cách truy vấn các nút mạng cho đến khi anh ta chắc chắn rằng anh ta có chuỗi dài nhất, và lấy nhánh Merkle liên kết giao dịch với khối mà nó được đánh dấu thời gian. Anh ta không thể kiểm tra giao dịch cho chính mình, 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à các khối được thêm vào sau đó càng xác nhận rằng mạng đã chấp nhận nó. Chuỗi bằng chứng công việc dài nhất Tiêu đề khối Hàm băm trước Hàm băm Nonce Gốc Merkle Tiêu đề khối Hàm băm trước Gốc Merkle Hàm băm01 Hàm băm2 Tiêu đề khối Nonce Hàm băm trước Nonce Gốc Merkle Hàm băm23 Nhánh Merkle cho Tx3 Hàm băm3 Tx3 Như vậy, việc xác minh là đáng tin cậy miễn là các nút trung thực kiểm soát mạng, nhưng dễ bị tổn thương hơn nếu mạng bị một kẻ tấn công chiếm ưu thế. Trong khi các nút mạng có thể xác minh các giao dịch cho chính họ, phương pháp đơn giản có thể bị đánh lừa bởi các giao dịch giả mạo của kẻ tấn công miễn là kẻ tấn công có thể tiếp tục chiếm ưu thế mạng. Một chiến lược để bảo vệ chống lại điều này là chấp nhận thông báo từ các nút mạng khi họ phát hiện một khối không hợp lệ, prompting phần mềm của người dùng tải xuống khối đầy đủ và các giao dịch thông báo để xác nhận sự không nhất quán. Các doanh nghiệp nhận được thanh toán thường xuyên có lẽ vẫn muốn chạy các nút của riêng họ để có sự bảo mật độc lập hơn và xác minh nhanh hơn.

9. Kết hợp và Chia giá trị Mặc dù có thể xử lý các đồng tiền một cách riêng lẻ, nhưng sẽ rất cồng kềnh để thực hiện một giao dịch riêng cho mỗi xu trong một chuyển nhượng. Để cho phép giá trị được chia và kết hợp, các giao dịch chứa nhiều đầu vào và đầu ra. Thông thường sẽ có một đầu vào duy nhất từ một giao dịch trước đó lớn hơn hoặc nhiều đầu vào kết hợp các số tiền nhỏ hơn, và tối đa hai đầu ra: một cho khoản thanh toán, và một trả lại tiền thừa, nếu có, cho người gửi. Giao dịch Vào Vào Ra ... ... Cần lưu ý rằng việc phân nhánh, nơi một giao dịch phụ thuộc vào nhiều giao dịch, và các giao dịch đó phụ thuộc vào nhiều giao dịch hơn nữa, không phải là vấn đề ở đây. Không bao giờ cần phải trích xuất một bản sao độc lập hoàn chỉnh của lịch sử giao dịch.

10. Quyền riêng tư Mô hình ngân hàng truyền thống đạt được một mức độ quyền riêng tư bằng cách hạn chế quyền truy cập vào thông tin cho các bên liên quan và bên thứ ba đáng tin cậy. Sự cần thiết phải công bố tất cả các giao dịch công khai ngăn cản phương pháp này, nhưng quyền riêng tư vẫn có thể được duy trì bằng cách phá vỡ dòng thông tin ở nơi khác: bằng cách giữ các khóa công khai ẩn danh. Công chúng có thể thấy rằng ai đó đang gửi một số tiền cho người khác, nhưng không có thông tin nào liên kết giao dịch với bất kỳ ai. Điều này tương tự như mức độ thông tin được phát hành bởi các sàn giao dịch chứng khoán, nơi thời gian và kích thước của các giao dịch cá nhân, "băng" được công khai, nhưng không cho biết ai là các bên. Mô hình Quyền riêng tư Truyền thống Danh tính Mô hình Quyền riêng tư Mới Danh tính Giao dịch Bên thứ ba đáng tin cậy Giao dịch Đối tác công khai Công khai Như một tường lửa bổ sung, một cặp khóa mới nên được sử dụng cho mỗi giao dịch để giữ chúng không bị liên kết với một chủ sở hữu chung. Một số liên kết vẫn không thể tránh khỏi với các giao dịch đa đầu vào, điều này nhất thiết tiết lộ rằng các đầu vào của chúng thuộc về cùng một chủ sở hữu. Rủi ro là nếu chủ sở hữu của một khóa được tiết lộ, việc liên kết có thể tiết lộ các giao dịch khác thuộc về cùng một chủ sở hữu.

11. Tính toán Chúng tôi xem xét kịch bản của một kẻ tấn công cố gắng tạo ra một chuỗi thay thế nhanh hơn chuỗi trung thực. Ngay cả khi điều này được thực hiện, nó không mở hệ thống cho những thay đổi tuỳ ý, chẳng hạn như tạo ra giá trị từ không khí hoặc lấy tiền mà chưa bao giờ thuộc về kẻ tấn công. Các nút sẽ không chấp nhận một giao dịch không hợp lệ như một khoản thanh toán, và các nút trung thực sẽ không bao giờ chấp nhận một khối chứa chúng. Một kẻ tấn công chỉ có thể cố gắng thay đổi một trong các giao dịch của chính hắn để lấy lại tiền hắn đã chi tiêu gần đây. Cuộc đua giữa chuỗi trung thực và chuỗi kẻ tấn công có thể được đặc trưng như một Đi bộ Ngẫu nhiên Nhị Phân. Sự kiện thành công là chuỗi trung thực được mở rộng thêm một khối, tăng cường vị trí của nó lên +1, và sự kiện thất bại là chuỗi của kẻ tấn công được mở rộng thêm một khối, giảm khoảng cách xuống -1. Xác suất một kẻ tấn công bắt kịp từ một thiếu hụt nhất định tương tự như vấn đề Ruin của Người chơi. Giả sử một người chơi có tín dụng không giới hạn bắt đầu ở một thiếu hụt và chơi một số lần thử vô hạn để cố gắng đạt được điểm hòa. Chúng tôi có thể tính toán xác suất hắn đạt được điểm hòa, hoặc rằng một kẻ tấn công bắt kịp với chuỗi trung thực, như sau [8]: p = xác suất một nút trung thực tìm thấy khối tiếp theo q = xác suất kẻ tấn công tìm thấy khối tiếp theo qz = xác suất kẻ tấn công sẽ bắt kịp từ z khối phía sau qz = { 1 nếu p≤q (q/ p)z nếu p>q }

Giả sử rằng p > q, xác suất giảm theo cấp số nhân khi số lượng khối mà kẻ tấn công phải bắt kịp tăng lên. Với xác suất chống lại mình, nếu hắn không có một cú lạch may mắn sớm, cơ hội của hắn trở nên rất nhỏ khi hắn càng tụt lại. Bây giờ, chúng ta xem xét thời gian mà người nhận một giao dịch mới cần phải chờ trước khi đủ chắc chắn rằng người gửi không thể thay đổi giao dịch. Chúng tôi giả định rằng người gửi là một kẻ tấn công muốn khiến người nhận tin rằng hắn đã trả tiền cho hắn một thời gian, sau đó chuyển lại để trả lại cho chính mình sau khi một thời gian đã trôi qua. Người nhận sẽ được cảnh báo khi điều đó xảy ra, nhưng người gửi hy vọng rằng sẽ quá muộn. Người nhận tạo ra một cặp khóa mới và đưa khóa công khai cho người gửi ngay trước khi ký. Điều này ngăn cản người gửi chuẩn bị một chuỗi các khối trước thời gian bằng cách làm việc liên tục cho đến khi hắn đủ may mắn để đi trước đủ xa, sau đó thực hiện giao dịch vào thời điểm đó. Khi giao dịch đã được gửi, người gửi không trung thực bắt đầu làm việc trong bí mật trên một chuỗi song song chứa một phiên bản thay thế của giao dịch của hắn. Người nhận chờ cho đến khi giao dịch đã được thêm vào một khối và z khối đã được liên kết sau nó. Hắn không biết chính xác số lượng tiến bộ mà kẻ tấn công đã đạt được, nhưng giả sử rằng các khối trung thực đã mất trung bình thời gian dự kiến cho mỗi khối, tiến bộ tiềm năng của kẻ tấn công sẽ là một phân phối Poisson với giá trị kỳ vọng: λ=z q p Để có được xác suất kẻ tấn công vẫn có thể bắt kịp bây giờ, chúng tôi nhân mật độ Poisson cho mỗi lượng tiến bộ mà hắn có thể đã đạt được với xác suất mà hắn có thể bắt kịp từ điểm đó: ∞ λke−λ ∑ k=0 k! ⋅ { (q/ p)(z−k) nếu k≤z 1 nếu k>z } Sắp xếp lại để tránh tổng hợp phần đuôi vô hạn của phân phối... 1−∑ k=0 z λke−λ k! (1−(q/ p)(z−k)) Chuyển đổi sang mã C... #include <math.h> double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k >= z; k++) { double poisson = exp(-lambda); for (i = 1; i >= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; }

Chạy một số kết quả, chúng tôi có thể thấy xác suất giảm theo cấp số nhân với z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Giải quyết cho P nhỏ hơn 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340

12. Kết luận Chúng tôi đã đề xuất một hệ thống cho các giao dịch điện tử mà không phụ thuộc vào sự tin cậy. Chúng tôi bắt đầu với khuôn khổ thông thường của các đồng tiền được làm từ các chữ ký số, điều này cung cấp kiểm soát mạnh mẽ đối với quyền sở hữu, nhưng không đầy đủ nếu không có cách để ngăn chặn việc chi tiêu gấp đôi. Để giải quyết điều này, chúng tôi đã đề xuất một mạng ngang hàng sử dụng bằng chứng công việc để ghi lại một lịch sử công khai về các giao dịch mà nhanh chóng trở nên không khả thi về mặt tính toán cho một kẻ tấn công để thay đổi nếu các nút trung thực kiểm soát phần lớn sức mạnh CPU. Mạng là mạnh mẽ trong sự đơn giản không có cấu trúc của nó. Các nút làm việc cùng lúc với ít sự phối hợp. Họ không cần phải được xác định, vì các tin nhắn không được định tuyến đến bất kỳ nơi nào cụ thể và chỉ cần được chuyển giao trên cơ sở nỗ lực tốt nhất. Các nút có thể rời khỏi và tham gia lại mạng theo ý muốn, chấp nhận chuỗi bằng chứng công việc dài nhất làm bằng chứng về những gì đã xảy ra trong khi họ vắng mặt. Họ bỏ phiếu bằng sức mạnh CPU của mình, thể hiện sự chấp nhận của họ đối với các khối hợp lệ bằng cách làm việc để mở rộng chúng và từ chối các khối không hợp lệ bằng cách từ chối làm việc trên chúng. Bất kỳ quy tắc và động lực cần thiết nào có thể được thực thi bằng cơ chế đồng thuận này.