CryptoNote v2.0
Bài báo được trình bày ở đây là whitepaper CryptoNote v2.0 của Nicolas van Saberhagen (2013), mô tả các nền tảng mật mã mà Monero được xây dựng trên đó. Đây không phải là whitepaper riêng của Monero — Monero ra mắt vào năm 2014 như một nhánh của triển khai tham chiếu CryptoNote (Bytecoin) và kể từ đó đã phát triển đáng kể vượt ra ngoài giao thức ban đầu.
Giới thiệu
“Bitcoin” [1] đã triển khai thành công khái niệm tiền điện tử p2p. Cả hai các chuyên gia và công chúng nói chung đã đánh giá cao sự kết hợp thuận tiện của giao dịch công khai và proof-of-work làm mô hình tin cậy. Ngày nay, cơ sở người dùng tiền điện tử đang phát triển với tốc độ ổn định; khách hàng bị thu hút bởi mức phí thấp và tính ẩn danh được cung cấp bằng tiền điện tử và người bán đánh giá mức phát thải được dự đoán và phi tập trung của nó. Bitcoin có đã chứng minh một cách hiệu quả rằng tiền điện tử có thể đơn giản như tiền giấy và thuận tiện như thẻ tín dụng. Thật không may, Bitcoin mắc phải một số thiếu sót. Ví dụ: hệ thống được phân phối Bản chất là không linh hoạt, ngăn cản việc triển khai các tính năng mới cho đến khi gần như tất cả người dùng mạng cập nhật ứng dụng khách của họ. Một số lỗi nghiêm trọng không thể khắc phục nhanh chóng sẽ ngăn cản Bitcoin tuyên truyền rộng rãi. Trong những mô hình không linh hoạt như vậy, việc triển khai một dự án mới sẽ hiệu quả hơn thay vì liên tục sửa chữa dự án ban đầu. Trong bài báo này, chúng tôi nghiên cứu và đề xuất giải pháp khắc phục những thiếu sót chính của Bitcoin. Chúng tôi tin rằng một hệ thống có tính đến các giải pháp mà chúng tôi đề xuất sẽ dẫn đến sự cạnh tranh lành mạnh giữa các hệ thống tiền điện tử khác nhau. Chúng tôi cũng đề xuất tiền điện tử của riêng mình, “CryptoNote”, một cái tên nhấn mạnh bước đột phá tiếp theo của tiền điện tử.
Perkenalan
“Bitcoin” [1] telah berhasil menerapkan konsep uang elektronik p2p. Keduanya para profesional dan masyarakat umum mulai menghargai kombinasi yang nyaman dari transaksi publik dan proof-of-work sebagai model kepercayaan. Saat ini, basis pengguna uang elektronik tumbuh dengan kecepatan yang stabil; pelanggan tertarik dengan biaya rendah dan anonimitas yang diberikan oleh uang elektronik dan pedagang menilai emisi yang diprediksi dan didesentralisasi. Bitcoin punya secara efektif membuktikan bahwa uang elektronik bisa sesederhana uang kertas dan senyaman mungkin kartu kredit. Sayangnya, Bitcoin mempunyai beberapa kekurangan. Misalnya saja sistem terdistribusi sifatnya tidak fleksibel, mencegah penerapan fitur-fitur baru hingga hampir semua pengguna jaringan memperbarui klien mereka. Beberapa kelemahan kritis yang tidak dapat diperbaiki dengan cepat menghalangi Bitcoin penyebarannya secara luas. Dalam model yang tidak fleksibel seperti ini, akan lebih efisien jika meluncurkan proyek baru daripada terus-menerus memperbaiki proyek aslinya. Dalam makalah ini, kami mempelajari dan mengusulkan solusi terhadap kekurangan utama Bitcoin. Kami percaya bahwa sistem yang mempertimbangkan solusi yang kami usulkan akan menghasilkan persaingan yang sehat antara sistem kas elektronik yang berbeda. Kami juga mengusulkan uang elektronik kami sendiri, “CryptoNote”, sebuah nama yang menekankan terobosan berikutnya dalam uang elektronik.
Bitcoin Hạn chế và giải pháp khả thi
2 Bitcoin nhược điểm và một số giải pháp khả thi 2.1 Truy xuất nguồn gốc của các giao dịch Quyền riêng tư và ẩn danh là những khía cạnh quan trọng nhất của tiền điện tử. Thanh toán ngang hàng tìm cách che giấu tầm nhìn của bên thứ ba, một sự khác biệt rõ rệt khi so sánh với truyền thống ngân hàng. Đặc biệt, T. Okamoto và K. Ohta đã mô tả sáu tiêu chí của tiền điện tử lý tưởng, trong đó bao gồm “quyền riêng tư: mối quan hệ giữa người dùng và giao dịch mua hàng của anh ta phải không thể theo dõi được bởi bất kỳ ai” [30]. Từ mô tả của họ, chúng tôi rút ra được hai thuộc tính ẩn danh hoàn toàn mô hình tiền điện tử phải đáp ứng để tuân thủ các yêu cầu do Okamoto nêu ra và Ohta: Không thể theo dõi: đối với mỗi giao dịch đến, tất cả những người gửi có thể đều có khả năng được trang bị. Không thể liên kết: đối với bất kỳ hai giao dịch gửi đi nào cũng không thể chứng minh được chúng đã được gửi đến cùng một người. Thật không may, Bitcoin không đáp ứng yêu cầu không thể theo dõi. Vì tất cả các giao dịch diễn ra giữa những người tham gia mạng đều công khai nên mọi giao dịch đều có thể được 1 CryptoNote v 2.0 Nicolas van Saberhagen Ngày 17 tháng 10 năm 2013 1 Giới thiệu “Bitcoin” [1] đã triển khai thành công khái niệm tiền điện tử p2p. Cả hai các chuyên gia và công chúng nói chung đã đánh giá cao sự kết hợp thuận tiện của giao dịch công khai và proof-of-work làm mô hình tin cậy. Ngày nay, cơ sở người dùng tiền điện tử đang phát triển với tốc độ ổn định; khách hàng bị thu hút bởi mức phí thấp và tính ẩn danh được cung cấp bằng tiền điện tử và người bán đánh giá mức phát thải được dự đoán và phi tập trung của nó. Bitcoin có đã chứng minh một cách hiệu quả rằng tiền điện tử có thể đơn giản như tiền giấy và thuận tiện như thẻ tín dụng. Thật không may, Bitcoin mắc phải một số thiếu sót. Ví dụ: hệ thống được phân phối Bản chất là không linh hoạt, ngăn cản việc triển khai các tính năng mới cho đến khi gần như tất cả người dùng mạng cập nhật ứng dụng khách của họ. Một số lỗi nghiêm trọng không thể khắc phục nhanh chóng sẽ ngăn cản Bitcoin tuyên truyền rộng rãi. Trong những mô hình không linh hoạt như vậy, việc triển khai một dự án mới sẽ hiệu quả hơn thay vì liên tục sửa chữa dự án ban đầu. Trong bài báo này, chúng tôi nghiên cứu và đề xuất giải pháp khắc phục những thiếu sót chính của Bitcoin. Chúng tôi tin rằng một hệ thống có tính đến các giải pháp mà chúng tôi đề xuất sẽ dẫn đến sự cạnh tranh lành mạnh giữa các hệ thống tiền điện tử khác nhau. Chúng tôi cũng đề xuất tiền điện tử của riêng mình, “CryptoNote”, một cái tên nhấn mạnh bước đột phá tiếp theo của tiền điện tử. 2 Bitcoin nhược điểm và một số giải pháp khả thi 2.1 Truy xuất nguồn gốc của các giao dịch Quyền riêng tư và ẩn danh là những khía cạnh quan trọng nhất của tiền điện tử. Thanh toán ngang hàng tìm cách che giấu tầm nhìn của bên thứ ba, một sự khác biệt rõ rệt khi so sánh với truyền thống ngân hàng. Đặc biệt, T. Okamoto và K. Ohta đã mô tả sáu tiêu chí của tiền điện tử lý tưởng, trong đó bao gồm “quyền riêng tư: mối quan hệ giữa người dùng và giao dịch mua hàng của anh ta phải không thể theo dõi được bởi bất kỳ ai” [30]. Từ mô tả của họ, chúng tôi rút ra được hai thuộc tính ẩn danh hoàn toàn mô hình tiền điện tử phải đáp ứng để tuân thủ các yêu cầu do Okamoto nêu ra và Ohta: Không thể theo dõi: đối với mỗi giao dịch đến, tất cả những người gửi có thể đều có khả năng được trang bị. Không thể liên kết: đối với bất kỳ hai giao dịch gửi đi nào cũng không thể chứng minh được chúng đã được gửi đến cùng một người. Thật không may, Bitcoin không đáp ứng yêu cầu không thể theo dõi. Vì tất cả các giao dịch diễn ra giữa những người tham gia mạng đều công khai nên mọi giao dịch đều có thể được 1 3 Bitcoin chắc chắn không đạt được "không thể theo dõi". Khi tôi gửi BTC cho bạn, ví tiền được gửi từ đó được đóng dấu không thể hủy ngang trên blockchain. Không có câu hỏi nào về việc ai đã gửi số tiền đó, bởi vì chỉ người biết khóa riêng mới có thể gửi chúng.được truy tìm rõ ràng về nguồn gốc duy nhất và người nhận cuối cùng. Ngay cả khi hai người tham gia trao đổi vốn theo cách gián tiếp, một phương pháp tìm đường được thiết kế phù hợp sẽ tiết lộ nguồn gốc và người nhận cuối cùng. Người ta cũng nghi ngờ rằng Bitcoin không đáp ứng thuộc tính thứ hai. Một số nhà nghiên cứu đã nêu ([33, 35, 29, 31]) rằng việc phân tích blockchain cẩn thận có thể tiết lộ mối liên hệ giữa người dùng mạng Bitcoin và các giao dịch của họ. Mặc dù một số phương pháp được đang tranh chấp [25], người ta nghi ngờ rằng nhiều thông tin cá nhân ẩn có thể được trích xuất từ cơ sở dữ liệu công cộng. Việc Bitcoin không đáp ứng được hai thuộc tính được nêu ở trên khiến chúng tôi kết luận rằng đó là không phải là một hệ thống tiền điện tử ẩn danh mà là một hệ thống tiền điện tử giả ẩn danh. Người dùng đã nhanh chóng phát triển giải pháp khắc phục nhược điểm này. Hai giải pháp trực tiếp là “dịch vụ rửa tiền” [2] và sự phát triển của các phương pháp phân tán [3, 4]. Cả hai giải pháp đều dựa trên ý tưởng trộn một số giao dịch công khai và gửi chúng qua một số địa chỉ trung gian; đến lượt nó gặp phải nhược điểm là cần có bên thứ ba đáng tin cậy. Gần đây, một kế hoạch sáng tạo hơn đã được đề xuất bởi I. Miers et al. [28]: “Zerocoin”. Zerocoin sử dụng bộ tích lũy một chiều bằng mật mã và bằng chứng không có kiến thức cho phép người dùng “chuyển đổi” bitcoin thành zerocoin và chi tiêu chúng bằng cách sử dụng bằng chứng quyền sở hữu ẩn danh thay vì chữ ký số dựa trên khóa công khai rõ ràng. Tuy nhiên, những bằng chứng tri thức như vậy có một hằng số nhưng kích thước không thuận tiện - khoảng 30kb (dựa trên giới hạn Bitcoin ngày nay), điều này đưa ra đề xuất không thực tế. Các tác giả thừa nhận rằng giao thức này khó có thể được đa số chấp nhận Bitcoin người dùng [5]. 2.2 Hàm proof-of-work Bitcoin người sáng tạo Satoshi Nakamoto đã mô tả thuật toán ra quyết định đa số là “mộtCPU-một phiếu bầu” và sử dụng chức năng định giá giới hạn CPU (gấp đôi SHA-256) cho proof-of-work của mình kế hoạch. Vì người dùng bỏ phiếu cho lịch sử giao dịch duy nhất [1] nên tính hợp lý và tính nhất quán của quá trình này là điều kiện quan trọng cho toàn bộ hệ thống. Tính bảo mật của mô hình này có hai nhược điểm. Đầu tiên, nó yêu cầu 51% dung lượng mạng sức mạnh khai thác nằm dưới sự kiểm soát của người dùng trung thực. Thứ hai, tiến độ của hệ thống (sửa lỗi, sửa lỗi bảo mật, v.v...) yêu cầu đại đa số người dùng phải ủng hộ và đồng ý với thay đổi (điều này xảy ra khi người dùng cập nhật phần mềm ví của họ) [6].Cuối cùng, cuộc bỏ phiếu tương tự này cơ chế này cũng được sử dụng cho các cuộc thăm dò ý kiến tập thể về việc triển khai một số tính năng [7]. Điều này cho phép chúng ta phỏng đoán các tính chất phải được thỏa mãn bởi proof-of-work chức năng định giá. Chức năng như vậy không được cho phép người tham gia mạng có ảnh hưởng đáng kể lợi thế hơn người tham gia khác; nó đòi hỏi sự tương đương giữa phần cứng thông thường và cao chi phí của các thiết bị tùy chỉnh. Từ các ví dụ gần đây [8], chúng ta có thể thấy rằng hàm SHA-256 được sử dụng trong kiến trúc Bitcoin không có thuộc tính này khi việc khai thác trở nên hiệu quả hơn trên GPU và thiết bị ASIC khi so sánh với CPU cao cấp. Vì vậy, Bitcoin tạo điều kiện thuận lợi cho khoảng cách lớn giữa quyền biểu quyết của người tham gia vì nó vi phạm nguyên tắc “một CPU-một phiếu bầu” do chủ sở hữu GPU và ASIC sở hữu quyền biểu quyết lớn hơn nhiều khi so sánh với chủ sở hữu CPU. Đó là một ví dụ cổ điển về Nguyên tắc Pareto trong đó 20% người tham gia hệ thống kiểm soát hơn 80% số phiếu bầu. Người ta có thể lập luận rằng sự bất bình đẳng như vậy không liên quan đến an ninh mạng vì nó không số lượng nhỏ người tham gia kiểm soát đa số phiếu bầu nhưng tính trung thực của những điều này những người tham gia quan trọng. Tuy nhiên, lập luận như vậy có phần sai sót vì nó đúng hơn là khả năng phần cứng chuyên dụng giá rẻ xuất hiện thay vì sự trung thực của người tham gia đặt ra một mối đe dọa. Để chứng minh điều này, chúng ta hãy lấy ví dụ sau. Giả sử có ác tâm cá nhân đạt được sức mạnh khai thác đáng kể bằng cách tạo ra trang trại khai thác của riêng mình thông qua giá rẻ 2 được truy tìm rõ ràng về nguồn gốc duy nhất và người nhận cuối cùng. Ngay cả khi hai người tham gia trao đổi vốn theo cách gián tiếp, một phương pháp tìm đường được thiết kế phù hợp sẽ tiết lộ nguồn gốc và người nhận cuối cùng. Người ta cũng nghi ngờ rằng Bitcoin không đáp ứng thuộc tính thứ hai. Một số nhà nghiên cứu đã nêu ([33, 35, 29, 31]) rằng việc phân tích blockchain cẩn thận có thể tiết lộ mối liên hệ giữa người dùng mạng Bitcoin và các giao dịch của họ. Mặc dù một số phương pháp được dbị tranh cãi [25], người ta nghi ngờ rằng nhiều thông tin cá nhân ẩn có thể được trích xuất từ cơ sở dữ liệu công cộng. Việc Bitcoin không đáp ứng được hai thuộc tính được nêu ở trên khiến chúng tôi kết luận rằng đó là không phải là một hệ thống tiền điện tử ẩn danh mà là một hệ thống tiền điện tử giả ẩn danh. Người dùng đã nhanh chóng phát triển giải pháp khắc phục nhược điểm này. Hai giải pháp trực tiếp là “dịch vụ rửa tiền” [2] và sự phát triển của các phương pháp phân tán [3, 4]. Cả hai giải pháp đều dựa trên ý tưởng trộn một số giao dịch công khai và gửi chúng qua một số địa chỉ trung gian; đến lượt nó gặp phải nhược điểm là cần có bên thứ ba đáng tin cậy. Gần đây, một kế hoạch sáng tạo hơn đã được đề xuất bởi I. Miers et al. [28]: “Zerocoin”. Zerocoin sử dụng bộ tích lũy một chiều bằng mật mã và bằng chứng không có kiến thức cho phép người dùng “chuyển đổi” bitcoin thành zerocoin và chi tiêu chúng bằng cách sử dụng bằng chứng quyền sở hữu ẩn danh thay vì chữ ký số dựa trên khóa công khai rõ ràng. Tuy nhiên, những bằng chứng tri thức như vậy có một hằng số nhưng kích thước bất tiện - khoảng 30kb (dựa trên giới hạn Bitcoin ngày nay), điều này khiến đề xuất không thực tế. Các tác giả thừa nhận rằng giao thức này khó có thể được đa số chấp nhận Bitcoin người dùng [5]. 2.2 Hàm proof-of-work Bitcoin người sáng tạo Satoshi Nakamoto đã mô tả thuật toán ra quyết định đa số là “mộtCPU-một phiếu bầu” và sử dụng chức năng định giá giới hạn CPU (gấp đôi SHA-256) cho proof-of-work của mình kế hoạch. Vì người dùng bỏ phiếu cho lịch sử giao dịch duy nhất [1] nên tính hợp lý và tính nhất quán của quá trình này là điều kiện quan trọng cho toàn bộ hệ thống. Tính bảo mật của mô hình này có hai nhược điểm. Đầu tiên, nó yêu cầu 51% dung lượng mạng sức mạnh khai thác nằm dưới sự kiểm soát của người dùng trung thực. Thứ hai, tiến độ của hệ thống (sửa lỗi, sửa lỗi bảo mật, v.v...) yêu cầu đại đa số người dùng phải ủng hộ và đồng ý với thay đổi (điều này xảy ra khi người dùng cập nhật phần mềm ví của họ) [6].Cuối cùng, cuộc bỏ phiếu tương tự này cơ chế này cũng được sử dụng cho các cuộc thăm dò ý kiến tập thể về việc triển khai một số tính năng [7]. Điều này cho phép chúng ta phỏng đoán các tính chất phải được thỏa mãn bởi proof-of-work chức năng định giá. Chức năng như vậy không được cho phép người tham gia mạng có ảnh hưởng đáng kể lợi thế hơn người tham gia khác; nó đòi hỏi sự tương đương giữa phần cứng thông thường và cao chi phí của các thiết bị tùy chỉnh. Từ các ví dụ gần đây [8], chúng ta có thể thấy rằng hàm SHA-256 được sử dụng trong kiến trúc Bitcoin không có thuộc tính này khi việc khai thác trở nên hiệu quả hơn trên GPU và thiết bị ASIC khi so sánh với CPU cao cấp. Vì vậy, Bitcoin tạo điều kiện thuận lợi cho khoảng cách lớn giữa quyền biểu quyết của người tham gia vì nó vi phạm nguyên tắc “một CPU-một phiếu bầu” do chủ sở hữu GPU và ASIC sở hữu quyền biểu quyết lớn hơn nhiều khi so sánh với chủ sở hữu CPU. Đó là một ví dụ cổ điển về Nguyên tắc Pareto trong đó 20% người tham gia hệ thống kiểm soát hơn 80% số phiếu bầu. Người ta có thể lập luận rằng sự bất bình đẳng như vậy không liên quan đến an ninh mạng vì nó không số lượng nhỏ người tham gia kiểm soát đa số phiếu bầu nhưng tính trung thực của những điều này những người tham gia quan trọng. Tuy nhiên, lập luận như vậy có phần sai sót vì nó đúng hơn là khả năng phần cứng chuyên dụng giá rẻ xuất hiện thay vì sự trung thực của người tham gia đặt ra một mối đe dọa. Để chứng minh điều này, chúng ta hãy lấy ví dụ sau. Giả sử có ác tâm cá nhân đạt được sức mạnh khai thác đáng kể bằng cách tạo ra trang trại khai thác của riêng mình thông qua giá rẻ 2 4 Có lẽ, nếu mỗi người dùng giúp họ ẩn danh bằng cách luôn tạo một địa chỉ mới đối với MỌI khoản thanh toán đã nhận được (điều này thật vô lý nhưng về mặt kỹ thuật là cách "chính xác" để thực hiện), và nếu mọi người dùng giúp đỡ những người khác ẩn danh bằng cách nhấn mạnh rằng họ không bao giờ gửi tiền đến cùng một địa chỉ BTC hai lần, thì Bitcoin vẫn sẽ chỉ tình cờ vượt qua kiểm tra khả năng không liên kết. Tại sao? Dữ liệu người tiêu dùng có thể được sử dụng để tìm hiểu một lượng thông tin đáng kinh ngạc về con người mọi lúc. Hãy xem, ví dụ http://www.applieddatalabs.com/content/target-knows-it-shows Bây giờ, hãy tưởng tượng đây là 20 năm sau và hãy tưởng tượng thêm rằng Target không chỉ biết về thói quen mua hàng của bạn tại Target nhưng họ đã khai thác blockchain cho TẤT CẢ MUA HÀNG CÁ NHÂN CỦA BẠN BẰNG VÍ COINBASE CỦA BẠN TRONG TRƯỚC ĐÂY MƯỜI HAI NĂM. Họ sẽ nói "Này anh bạn, tối nay anh có muốn mua thuốc ho không, anh sẽ không mua đâu." ngày mai sẽ khỏe." Điều này có thể không xảy ra nếu việc sắp xếp theo nhiều bên được khai thác đúng cách. Hãy xem, ví dụ, điều nàybài đăng trên blog: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ Tôi không hoàn toàn bị thuyết phục về phép toán trên đó, nhưng ... từng bài một, phải không? Cần trích dẫn. Trong khi giao thức Zerocoin (độc lập) có thể không hiệu quả thì Zerocash giao thức dường như đã thực hiện một giao dịch có kích thước 1kb. Dự án đó được hỗ trợ bởi tất nhiên là quân đội Hoa Kỳ và Israel, vậy nên ai biết được sức mạnh của nó. Mặt khác Mặt khác, không ai muốn có thể chi tiêu mà không có sự giám sát hơn quân đội. http://zerocash-project.org/ Tôi không bị thuyết phục... xem, ví dụ: http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Trích dẫn lời của nhà phát triển tiền điện tử Maurice Planck (có lẽ là một bút danh) từ tiền điện tử diễn đàn: "Zerocoin, Zerocash. Tôi phải thừa nhận đây là công nghệ tiên tiến nhất. Vâng, trích dẫn ở trên là từ phân tích phiên bản trước của giao thức. Theo hiểu biết của tôi, nó không phải 288, nhưng 384 byte, nhưng dù sao đây cũng là tin tốt. Họ đã sử dụng một kỹ thuật hoàn toàn mới có tên là SNARK, kỹ thuật này có một số nhược điểm nhất định: ví dụ: cơ sở dữ liệu ban đầu lớn về các tham số công khai cần thiết để tạo chữ ký (hơn 1 GB) và thời gian đáng kể cần thiết để tạo một giao dịch (hơn một phút). Cuối cùng, họ đang sử dụng một tiền điện tử non trẻ, mà tôi đã đề cập là một ý tưởng đáng tranh cãi: https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. Thu 03/04/2014 7:56 chiều Một chức năng được thực hiện trong CPU và không phù hợp với GPU, FPGA hoặc ASIC tính toán. "Câu đố" được sử dụng trong proof-of-work được gọi là hàm định giá, hàm chi phí hoặc chức năng câu đố.
được truy tìm rõ ràng về nguồn gốc duy nhất và người nhận cuối cùng. Ngay cả khi hai người tham gia trao đổi vốn theo cách gián tiếp, một phương pháp tìm đường được thiết kế phù hợp sẽ tiết lộ nguồn gốc và người nhận cuối cùng. Người ta cũng nghi ngờ rằng Bitcoin không đáp ứng thuộc tính thứ hai. Một số nhà nghiên cứu đã nêu ([33, 35, 29, 31]) rằng việc phân tích blockchain cẩn thận có thể tiết lộ mối liên hệ giữa người dùng mạng Bitcoin và các giao dịch của họ. Mặc dù một số phương pháp được đang tranh chấp [25], người ta nghi ngờ rằng có thể trích xuất nhiều thông tin cá nhân ẩn từ cơ sở dữ liệu công cộng. Việc Bitcoin không thỏa mãn hai thuộc tính được nêu ở trên khiến chúng tôi kết luận rằng đó là không phải là một hệ thống tiền điện tử ẩn danh mà là một hệ thống tiền điện tử giả ẩn danh. Người dùng đã nhanh chóng phát triển giải pháp khắc phục nhược điểm này. Hai giải pháp trực tiếp là “dịch vụ rửa tiền” [2] và sự phát triển của các phương pháp phân tán [3, 4]. Cả hai giải pháp đều dựa trên ý tưởng trộn một số giao dịch công khai và gửi chúng qua một số địa chỉ trung gian; đến lượt nó gặp phải nhược điểm là cần có bên thứ ba đáng tin cậy. Gần đây, một kế hoạch sáng tạo hơn đã được đề xuất bởi I. Miers et al. [28]: “Zerocoin”. Zerocoin sử dụng bộ tích lũy một chiều bằng mật mã và bằng chứng không có kiến thức cho phép người dùng “chuyển đổi” bitcoin thành zerocoin và chi tiêu chúng bằng cách sử dụng bằng chứng quyền sở hữu ẩn danh thay vì chữ ký số dựa trên khóa công khai rõ ràng. Tuy nhiên, những bằng chứng tri thức như vậy có một hằng số nhưng kích thước không thuận tiện - khoảng 30kb (dựa trên giới hạn Bitcoin của ngày hôm nay), điều này đưa ra đề xuất không thực tế. Các tác giả thừa nhận rằng giao thức này khó có thể được đa số chấp nhận Bitcoin người dùng [5]. 2.2 Hàm proof-of-work Bitcoin người sáng tạo Satoshi Nakamoto đã mô tả thuật toán ra quyết định đa số là “mộtCPU-một phiếu bầu” và sử dụng chức năng định giá giới hạn CPU (gấp đôi SHA-256) cho proof-of-work của mình kế hoạch. Vì người dùng bỏ phiếu cho lịch sử giao dịch duy nhất [1] nên tính hợp lý và tính nhất quán của quá trình này là điều kiện quan trọng cho toàn bộ hệ thống. Tính bảo mật của mô hình này có hai nhược điểm. Đầu tiên, nó yêu cầu 51% dung lượng mạng sức mạnh khai thác nằm dưới sự kiểm soát của người dùng trung thực. Thứ hai, tiến độ của hệ thống (sửa lỗi, sửa lỗi bảo mật, v.v...) yêu cầu đại đa số người dùng phải ủng hộ và đồng ý với thay đổi (điều này xảy ra khi người dùng cập nhật phần mềm ví của họ) [6].Cuối cùng, cuộc bỏ phiếu tương tự này cơ chế này cũng được sử dụng cho các cuộc thăm dò ý kiến tập thể về việc triển khai một số tính năng [7]. Điều này cho phép chúng ta phỏng đoán các tính chất phải được thỏa mãn bởi proof-of-work chức năng định giá. Chức năng như vậy không được cho phép người tham gia mạng có ảnh hưởng đáng kể lợi thế hơn người tham gia khác; nó đòi hỏi sự tương đương giữa phần cứng thông thường và cao chi phí của các thiết bị tùy chỉnh. Từ các ví dụ gần đây [8], chúng ta có thể thấy rằng hàm SHA-256 được sử dụng trong kiến trúc Bitcoin không sở hữu thuộc tính này khi việc khai thác trở nên hiệu quả hơn trên GPU và thiết bị ASIC khi so sánh với CPU cao cấp. Vì vậy, Bitcoin tạo điều kiện thuận lợi cho khoảng cách lớn giữa quyền biểu quyết của người tham gia vì nó vi phạm nguyên tắc “một CPU-một phiếu bầu” do chủ sở hữu GPU và ASIC sở hữu quyền biểu quyết lớn hơn nhiều khi so sánh với chủ sở hữu CPU. Đó là một ví dụ cổ điển về Nguyên tắc Pareto trong đó 20% người tham gia hệ thống kiểm soát hơn 80% số phiếu bầu. Người ta có thể lập luận rằng sự bất bình đẳng như vậy không liên quan đến an ninh mạng vì nó không số lượng nhỏ người tham gia kiểm soát đa số phiếu bầu nhưng tính trung thực của những điều này những người tham gia quan trọng. Tuy nhiên, lập luận như vậy có phần sai sót vì nó đúng hơn là khả năng phần cứng chuyên dụng giá rẻ xuất hiện thay vì sự trung thực của người tham gia đặt ra một mối đe dọa. Để chứng minh điều này, chúng ta hãy lấy ví dụ sau. Giả sử có ác tâm cá nhân đạt được sức mạnh khai thác đáng kể bằng cách tạo ra trang trại khai thác của riêng mình thông qua giá rẻ 2 được truy tìm rõ ràng về nguồn gốc duy nhất và người nhận cuối cùng. Ngay cả khi hai người tham gia trao đổi vốn theo cách gián tiếp, một phương pháp tìm đường được thiết kế phù hợp sẽ tiết lộ nguồn gốc và người nhận cuối cùng. Người ta cũng nghi ngờ rằng Bitcoin không đáp ứng thuộc tính thứ hai. Một số nhà nghiên cứu đã nêu ([33, 35, 29, 31]) rằng việc phân tích blockchain cẩn thận có thể tiết lộ mối liên hệ giữa người dùng mạng Bitcoin và các giao dịch của họ. Mặc dù một số phương pháp được dbị tranh cãi [25], người ta nghi ngờ rằng nhiều thông tin cá nhân ẩn có thể được trích xuất từ cơ sở dữ liệu công cộng. Việc Bitcoin không đáp ứng được hai thuộc tính được nêu ở trên khiến chúng tôi kết luận rằng đó là không phải là một hệ thống tiền điện tử ẩn danh mà là một hệ thống tiền điện tử giả ẩn danh. Người dùng đã nhanh chóng phát triển giải pháp khắc phục nhược điểm này. Hai giải pháp trực tiếp là “dịch vụ rửa tiền” [2] và sự phát triển của các phương pháp phân tán [3, 4]. Cả hai giải pháp đều dựa trên ý tưởng trộn một số giao dịch công khai và gửi chúng qua một số địa chỉ trung gian; đến lượt nó gặp phải nhược điểm là cần có bên thứ ba đáng tin cậy. Gần đây, một kế hoạch sáng tạo hơn đã được đề xuất bởi I. Miers et al. [28]: “Zerocoin”. Zerocoin sử dụng bộ tích lũy một chiều bằng mật mã và bằng chứng không có kiến thức cho phép người dùng “chuyển đổi” bitcoin thành zerocoin và chi tiêu chúng bằng cách sử dụng bằng chứng quyền sở hữu ẩn danh thay vì chữ ký số dựa trên khóa công khai rõ ràng. Tuy nhiên, những bằng chứng tri thức như vậy có một hằng số nhưng kích thước bất tiện - khoảng 30kb (dựa trên giới hạn Bitcoin ngày nay), điều này khiến đề xuất không thực tế. Các tác giả thừa nhận rằng giao thức này khó có thể được đa số chấp nhận Bitcoin người dùng [5]. 2.2 Hàm proof-of-work Bitcoin người sáng tạo Satoshi Nakamoto đã mô tả thuật toán ra quyết định theo đa số là “mộtCPU-một phiếu bầu” và sử dụng chức năng định giá giới hạn CPU (gấp đôi SHA-256) cho proof-of-work của mình kế hoạch. Vì người dùng bỏ phiếu cho lịch sử giao dịch duy nhất [1] nên tính hợp lý và tính nhất quán của quá trình này là điều kiện quan trọng cho toàn bộ hệ thống. Tính bảo mật của mô hình này có hai nhược điểm. Đầu tiên, nó yêu cầu 51% dung lượng mạng sức mạnh khai thác nằm dưới sự kiểm soát của người dùng trung thực. Thứ hai, tiến độ của hệ thống (sửa lỗi, sửa lỗi bảo mật, v.v...) yêu cầu đại đa số người dùng phải ủng hộ và đồng ý với thay đổi (điều này xảy ra khi người dùng cập nhật phần mềm ví của họ) [6].Cuối cùng, cuộc bỏ phiếu tương tự này cơ chế này cũng được sử dụng cho các cuộc thăm dò ý kiến tập thể về việc triển khai một số tính năng [7]. Điều này cho phép chúng ta phỏng đoán các tính chất phải được thỏa mãn bởi proof-of-work chức năng định giá. Chức năng như vậy không được cho phép người tham gia mạng có ảnh hưởng đáng kể lợi thế hơn người tham gia khác; nó đòi hỏi sự tương đương giữa phần cứng thông thường và cao chi phí của các thiết bị tùy chỉnh. Từ các ví dụ gần đây [8], chúng ta có thể thấy rằng hàm SHA-256 được sử dụng trong kiến trúc Bitcoin không sở hữu thuộc tính này khi việc khai thác trở nên hiệu quả hơn trên GPU và thiết bị ASIC khi so sánh với CPU cao cấp. Vì vậy, Bitcoin tạo điều kiện thuận lợi cho khoảng cách lớn giữa quyền biểu quyết của người tham gia vì nó vi phạm nguyên tắc “một CPU-một phiếu bầu” do chủ sở hữu GPU và ASIC sở hữu quyền biểu quyết lớn hơn nhiều khi so sánh với chủ sở hữu CPU. Đó là một ví dụ cổ điển về Nguyên tắc Pareto trong đó 20% người tham gia hệ thống kiểm soát hơn 80% số phiếu bầu. Người ta có thể lập luận rằng sự bất bình đẳng như vậy không liên quan đến an ninh mạng vì nó không số lượng nhỏ người tham gia kiểm soát đa số phiếu bầu nhưng tính trung thực của những điều này những người tham gia quan trọng. Tuy nhiên, lập luận như vậy có phần sai sót vì nó đúng hơn là khả năng phần cứng chuyên dụng giá rẻ xuất hiện thay vì sự trung thực của người tham gia đặt ra một mối đe dọa. Để chứng minh điều này, chúng ta hãy lấy ví dụ sau. Giả sử có ác tâm cá nhân đạt được sức mạnh khai thác đáng kể bằng cách tạo ra trang trại khai thác của riêng mình thông qua giá rẻ 2 Bình luận ở trang 2
Bitcoin Kekurangan dan Kemungkinan Solusinya
2 Bitcoin kekurangan dan beberapa kemungkinan solusi 2.1 Ketertelusuran transaksi Privasi dan anonimitas adalah aspek terpenting dari uang elektronik. Pembayaran antar rekan berusaha untuk disembunyikan dari pandangan pihak ketiga, perbedaan yang nyata jika dibandingkan dengan tradisional perbankan. Secara khusus, T. Okamoto dan K. Ohta menjelaskan enam kriteria uang elektronik yang ideal, yang mencakup “privasi: hubungan antara pengguna dan pembeliannya harus tidak dapat dilacak oleh siapa pun” [30]. Dari uraiannya, kami memperoleh dua properti yang sepenuhnya anonim model uang elektronik harus memenuhi persyaratan yang digariskan oleh Okamoto dan Ohta: Untraceability: untuk setiap transaksi masuk, semua pengirim yang mungkin memiliki kemungkinan yang sama. Tidak dapat dihubungkan: untuk dua transaksi keluar mana pun, tidak mungkin dibuktikan bahwa mereka telah dikirim orang yang sama. Sayangnya, Bitcoin tidak memenuhi persyaratan tidak dapat dilacak. Karena semua transaksi yang terjadi di antara peserta jaringan bersifat publik, maka transaksi apa pun bisa bersifat publik 1 Catatan Kripto v 2.0 Nicolas van Saberhagen 17 Oktober 2013 1 Pendahuluan “Bitcoin” [1] telah berhasil menerapkan konsep uang elektronik p2p. Keduanya para profesional dan masyarakat umum mulai menghargai kombinasi yang nyaman dari transaksi publik dan proof-of-work sebagai model kepercayaan. Saat ini, basis pengguna uang elektronik tumbuh dengan kecepatan yang stabil; pelanggan tertarik dengan biaya rendah dan anonimitas yang diberikan oleh uang elektronik dan pedagang menilai emisi yang diprediksi dan didesentralisasi. Bitcoin punya secara efektif membuktikan bahwa uang elektronik bisa sesederhana uang kertas dan senyaman mungkin kartu kredit. Sayangnya, Bitcoin mempunyai beberapa kekurangan. Misalnya saja sistem terdistribusi sifatnya tidak fleksibel, mencegah penerapan fitur-fitur baru hingga hampir semua pengguna jaringan memperbarui klien mereka. Beberapa kelemahan kritis yang tidak dapat diperbaiki dengan cepat menghalangi Bitcoin penyebarannya secara luas. Dalam model yang tidak fleksibel seperti ini, akan lebih efisien jika meluncurkan proyek baru daripada terus-menerus memperbaiki proyek aslinya. Dalam makalah ini, kami mempelajari dan mengusulkan solusi terhadap kekurangan utama Bitcoin. Kami percaya bahwa sistem yang mempertimbangkan solusi yang kami usulkan akan menghasilkan persaingan yang sehat antara sistem kas elektronik yang berbeda. Kami juga mengusulkan uang elektronik kami sendiri, “CryptoNote”, sebuah nama yang menekankan terobosan berikutnya dalam uang elektronik. 2 Bitcoin kekurangan dan beberapa kemungkinan solusi 2.1 Ketertelusuran transaksi Privasi dan anonimitas adalah aspek terpenting dari uang elektronik. Pembayaran antar rekan berusaha untuk disembunyikan dari pandangan pihak ketiga, perbedaan yang nyata jika dibandingkan dengan tradisional perbankan. Secara khusus, T. Okamoto dan K. Ohta menjelaskan enam kriteria uang elektronik yang ideal, yang mencakup “privasi: hubungan antara pengguna dan pembeliannya harus tidak dapat dilacak oleh siapa pun” [30]. Dari uraiannya, kami memperoleh dua properti yang sepenuhnya anonim model uang elektronik harus memenuhi persyaratan yang digariskan oleh Okamoto dan Ohta: Untraceability: untuk setiap transaksi masuk, semua pengirim yang mungkin memiliki kemungkinan yang sama. Tidak dapat dihubungkan: untuk dua transaksi keluar mana pun, tidak mungkin dibuktikan bahwa mereka telah dikirim orang yang sama. Sayangnya, Bitcoin tidak memenuhi persyaratan tidak dapat dilacak. Karena semua transaksi yang terjadi di antara peserta jaringan bersifat publik, maka transaksi apa pun bisa bersifat publik 1 3 Bitcoin pasti gagal dalam "tidak dapat dilacak". Saat saya mengirimi Anda BTC, dompet asal pengirimannya dicap secara tidak dapat ditarik kembali pada blockchain. Tidak ada pertanyaan tentang siapa yang mengirim dana tersebut, karena hanya orang yang mengetahui kunci privat yang dapat mengirimkannya.ditelusuri secara jelas ke asal yang unik dan penerima akhir. Bahkan jika dua peserta bertukar dana secara tidak langsung, metode pencarian jalur yang dirancang dengan baik akan mengungkap asal usul dan penerima akhir. Diduga juga Bitcoin tidak memenuhi properti kedua. Beberapa peneliti menyatakan ([33, 35, 29, 31]) bahwa analisis blockchain yang cermat dapat mengungkapkan hubungan antara pengguna jaringan Bitcoin dan transaksinya. Meskipun ada beberapa metode yang bisa dilakukan disengketakan [25], diduga banyak informasi pribadi tersembunyi yang dapat diambil dari basis data publik. Kegagalan Bitcoin dalam memenuhi kedua sifat yang diuraikan di atas membuat kita menyimpulkan bahwa hal tersebut memang benar adanya bukan sistem kas elektronik anonim melainkan sistem kas elektronik pseudo-anonim. Pengguna cepat berkembang solusi untuk menghindari kelemahan ini. Dua solusi langsung adalah “layanan pencucian” [2] dan pengembangan metode terdistribusi [3, 4]. Kedua solusi tersebut didasarkan pada gagasan pencampuran beberapa transaksi publik dan mengirimkannya melalui beberapa alamat perantara; yang pada gilirannya menderita kelemahan karena membutuhkan pihak ketiga yang tepercaya. Baru-baru ini, skema yang lebih kreatif diusulkan oleh I. Miers dkk. [28]: “Nolkoin”. nol koin menggunakan akumulator kriptografi satu arah dan bukti tanpa pengetahuan yang memungkinkan pengguna melakukannya “konversi” bitcoin menjadi zerocoin dan belanjakan menggunakan bukti kepemilikan anonim tanda tangan digital berbasis kunci publik yang eksplisit. Namun, bukti-bukti pengetahuan tersebut mempunyai keteguhan tetapi ukurannya tidak nyaman - sekitar 30kb (berdasarkan batas Bitcoin saat ini), yang membuat proposal tidak praktis. Penulis mengakui bahwa protokol tersebut kemungkinan besar tidak akan pernah diterima oleh mayoritas orang Bitcoin pengguna [5]. 2.2 Fungsi proof-of-work Pencipta Bitcoin Satoshi Nakamoto mendeskripsikan algoritme pengambilan keputusan mayoritas sebagai “oneCPU-one-vote” dan menggunakan fungsi penetapan harga yang terikat CPU (ganda SHA-256) untuk proof-of-work miliknya skema. Karena pengguna memilih satu riwayat transaksi pesanan [1], kewajaran dan Konsistensi proses ini merupakan kondisi kritis bagi keseluruhan sistem. Keamanan model ini memiliki dua kelemahan. Pertama, ini membutuhkan 51% jaringan kekuatan penambangan berada di bawah kendali pengguna yang jujur. Kedua, kemajuan sistem (perbaikan bug, perbaikan keamanan, dll...) mengharuskan sebagian besar pengguna untuk mendukung dan menyetujuinya perubahan (ini terjadi ketika pengguna memperbarui perangkat lunak dompet mereka) [6]. Akhirnya pemungutan suara yang sama Mekanisme ini juga digunakan untuk jajak pendapat kolektif tentang penerapan beberapa fitur [7]. Hal ini memungkinkan kita untuk menduga sifat-sifat yang harus dipenuhi oleh proof-of-work fungsi penetapan harga. Fungsi tersebut tidak boleh memungkinkan peserta jaringan untuk memiliki signifikansi keunggulan dibandingkan peserta lain; itu membutuhkan keseimbangan antara perangkat keras umum dan perangkat keras tinggi biaya perangkat khusus. Dari contoh terbaru [8], kita dapat melihat bahwa fungsi SHA-256 digunakan dalam arsitektur Bitcoin tidak memiliki properti ini karena penambangan menjadi lebih efisien pada GPU dan perangkat ASIC jika dibandingkan dengan CPU kelas atas. Oleh karena itu, Bitcoin menciptakan kondisi yang menguntungkan bagi kesenjangan yang besar antara hak suara peserta karena melanggar prinsip “satu CPU-satu suara” yang dimiliki oleh pemilik GPU dan ASIC hak suara yang jauh lebih besar jika dibandingkan dengan pemilik CPU. Ini adalah contoh klasik dari Prinsip Pareto dimana 20% peserta sistem mengontrol lebih dari 80% suara. Ada yang berpendapat bahwa ketidaksetaraan tersebut tidak relevan dengan keamanan jaringan karena memang tidak relevan jumlah peserta yang sedikit menguasai suara mayoritas tetapi kejujurannya peserta yang penting. Akan tetapi, argumen tersebut agak cacat karena justru merupakan argumen yang salah kemungkinan munculnya perangkat keras khusus yang murah daripada kejujuran peserta yang mana menimbulkan ancaman. Untuk mendemonstrasikannya, mari kita ambil contoh berikut. Misalkan seorang yang jahat individu memperoleh kekuatan penambangan yang signifikan dengan menciptakan lahan penambangannya sendiri dengan biaya murah 2 ditelusuri secara jelas ke asal yang unik dan penerima akhir. Bahkan jika dua peserta bertukar dana secara tidak langsung, metode pencarian jalur yang dirancang dengan baik akan mengungkap asal usul dan penerima akhir. Diduga juga Bitcoin tidak memenuhi properti kedua. Beberapa peneliti menyatakan ([33, 35, 29, 31]) bahwa analisis blockchain yang cermat dapat mengungkapkan hubungan antara pengguna jaringan Bitcoin dan transaksinya. Meskipun ada beberapa metode yang bisa dilakukan ddisengketakan [25], diduga banyak informasi pribadi tersembunyi yang dapat diekstraksi dari basis data publik. Kegagalan Bitcoin dalam memenuhi dua sifat yang diuraikan di atas membuat kita menyimpulkan bahwa hal tersebut memang benar adanya bukan sistem kas elektronik anonim melainkan sistem kas elektronik pseudo-anonim. Pengguna cepat berkembang solusi untuk menghindari kelemahan ini. Dua solusi langsung adalah “layanan pencucian” [2] dan pengembangan metode terdistribusi [3, 4]. Kedua solusi tersebut didasarkan pada gagasan pencampuran beberapa transaksi publik dan mengirimkannya melalui beberapa alamat perantara; yang pada gilirannya menderita kelemahan karena membutuhkan pihak ketiga yang tepercaya. Baru-baru ini, skema yang lebih kreatif diusulkan oleh I. Miers dkk. [28]: “Nolkoin”. nol koin menggunakan akumulator kriptografi satu arah dan bukti tanpa pengetahuan yang memungkinkan pengguna melakukannya “konversi” bitcoin menjadi zerocoin dan belanjakan menggunakan bukti kepemilikan anonim tanda tangan digital berbasis kunci publik yang eksplisit. Namun, bukti-bukti pengetahuan tersebut mempunyai keteguhan tetapi ukurannya tidak nyaman - sekitar 30kb (berdasarkan batas Bitcoin saat ini), yang membuat proposal tidak praktis. Penulis mengakui bahwa protokol tersebut kemungkinan besar tidak akan pernah diterima oleh mayoritas orang Bitcoin pengguna [5]. 2.2 Fungsi proof-of-work Pencipta Bitcoin Satoshi Nakamoto mendeskripsikan algoritme pengambilan keputusan mayoritas sebagai “oneCPU-one-vote” dan menggunakan fungsi penetapan harga yang terikat CPU (ganda SHA-256) untuk proof-of-work miliknya skema. Karena pengguna memilih satu riwayat transaksi pesanan [1], kewajaran dan Konsistensi proses ini merupakan kondisi kritis bagi keseluruhan sistem. Keamanan model ini memiliki dua kelemahan. Pertama, ini membutuhkan 51% jaringan kekuatan penambangan berada di bawah kendali pengguna yang jujur. Kedua, kemajuan sistem (perbaikan bug, perbaikan keamanan, dll...) mengharuskan sebagian besar pengguna untuk mendukung dan menyetujuinya perubahan (ini terjadi ketika pengguna memperbarui perangkat lunak dompet mereka) [6]. Akhirnya pemungutan suara yang sama Mekanisme ini juga digunakan untuk jajak pendapat kolektif tentang penerapan beberapa fitur [7]. Hal ini memungkinkan kita untuk menduga sifat-sifat yang harus dipenuhi oleh proof-of-work fungsi penetapan harga. Fungsi tersebut tidak boleh memungkinkan peserta jaringan untuk memiliki signifikansi keunggulan dibandingkan peserta lain; itu membutuhkan keseimbangan antara perangkat keras umum dan perangkat keras tinggi biaya perangkat khusus. Dari contoh terbaru [8], kita dapat melihat bahwa fungsi SHA-256 digunakan dalam arsitektur Bitcoin tidak memiliki properti ini karena penambangan menjadi lebih efisien GPU dan perangkat ASIC jika dibandingkan dengan CPU kelas atas. Oleh karena itu, Bitcoin menciptakan kondisi yang menguntungkan bagi kesenjangan yang besar antara hak suara peserta karena melanggar prinsip “satu CPU-satu suara” yang dimiliki oleh pemilik GPU dan ASIC hak suara yang jauh lebih besar jika dibandingkan dengan pemilik CPU. Ini adalah contoh klasik dari Prinsip Pareto dimana 20% peserta sistem mengontrol lebih dari 80% suara. Ada yang berpendapat bahwa ketidaksetaraan tersebut tidak relevan dengan keamanan jaringan karena memang tidak relevan jumlah peserta yang sedikit menguasai suara mayoritas tetapi kejujurannya peserta yang penting. Akan tetapi, argumen tersebut agak cacat karena justru merupakan argumen yang salah kemungkinan munculnya perangkat keras khusus yang murah daripada kejujuran peserta yang mana menimbulkan ancaman. Untuk mendemonstrasikannya, mari kita ambil contoh berikut. Misalkan seorang yang jahat individu memperoleh kekuatan penambangan yang signifikan dengan menciptakan lahan penambangannya sendiri dengan biaya murah 2 4 Agaknya, jika setiap pengguna membantu anonimitas mereka dengan selalu membuat alamat baru untuk SETIAP pembayaran yang diterima (yang tidak masuk akal tetapi secara teknis merupakan cara yang "benar" untuk melakukannya), dan jika setiap pengguna membantu anonimitas orang lain dengan bersikeras bahwa mereka tidak pernah mengirim dana ke alamat BTC yang sama dua kali, maka Bitcoin hanya akan secara tidak langsung meneruskan tes ketidakterhubungan. Mengapa? Data konsumen dapat digunakan untuk mengetahui banyak hal tentang orang-orang sepanjang waktu. Lihat, misalnya http://www.applieddatalabs.com/content/target-knows-it-shows Sekarang, bayangkan ini 20 tahun ke depan dan bayangkan lebih jauh bahwa Target tidak mengetahuinya begitu saja tentang kebiasaan pembelian Anda di Target, tetapi mereka telah menambang blockchain untuk SEMUANYA PEMBELIAN PRIBADI ANDA DENGAN DOMPET COINBASE ANDA UNTUK MASA LALU DUA BELAS TAHUN. Mereka akan berkata, "hai sobat, kamu mungkin ingin membeli obat batuk malam ini, tapi kamu tidak akan melakukannya merasa sehat besok." Hal ini mungkin tidak terjadi jika penyortiran multi-pihak dieksploitasi dengan benar. Lihat, misalnya, inientri blog: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ Saya tidak sepenuhnya yakin dengan perhitungan matematisnya, tapi... satu makalah pada satu waktu, bukan? Diperlukan kutipan. Meskipun protokol Zerocoin (mandiri) mungkin tidak mencukupi, Zerocash protokol tampaknya telah menerapkan transaksi berukuran 1kb. Proyek itu didukung oleh tentu saja militer AS dan Israel, jadi siapa yang tahu tentang ketangguhannya. Di sisi lain Di sisi lain, tidak ada orang yang lebih ingin mengeluarkan dana tanpa pengawasan selain pihak militer. http://zerocash-project.org/ Saya tidak yakin... lihat, misalnya, http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Mengutip pengembang Cryptonote Maurice Planck (mungkin nama samaran) dari cryptonote tersebut forum: "Zerocoin, Zerocash. Harus saya akui, ini adalah teknologi tercanggih. Ya, kutipannya di atas adalah dari analisis protokol versi sebelumnya. Sepengetahuan saya, ternyata tidak 288, tapi 384 byte, tapi bagaimanapun ini adalah kabar baik. Mereka menggunakan teknik baru yang disebut SNARK, yang memiliki kelemahan tertentu: misalnya, database awal yang besar dari parameter publik yang diperlukan untuk membuat tanda tangan (lebih dari 1 GB) dan waktu yang signifikan diperlukan untuk membuat transaksi (lebih dari satu menit). Akhirnya, mereka menggunakan a crypto muda, yang saya sebutkan sebagai ide yang bisa diperdebatkan: https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. Kam 03 Apr 2014 19:56 Fungsi yang dijalankan di CPU dan tidak cocok untuk GPU, FPGA, atau ASIC komputasi. "Teka-teki" yang digunakan di proof-of-work disebut sebagai fungsi harga, fungsi biaya, atau fungsi teka-teki.
ditelusuri secara jelas ke asal yang unik dan penerima akhir. Bahkan jika dua peserta bertukar dana secara tidak langsung, metode pencarian jalur yang dirancang dengan baik akan mengungkap asal usul dan penerima akhir. Diduga juga Bitcoin tidak memenuhi properti kedua. Beberapa peneliti menyatakan ([33, 35, 29, 31]) bahwa analisis blockchain yang cermat dapat mengungkapkan hubungan antara pengguna jaringan Bitcoin dan transaksinya. Meskipun ada beberapa metode yang bisa dilakukan disengketakan [25], diduga banyak informasi pribadi tersembunyi yang dapat diambil dari basis data publik. Kegagalan Bitcoin dalam memenuhi kedua sifat yang diuraikan di atas membuat kita menyimpulkan bahwa hal tersebut memang benar adanya bukan sistem kas elektronik anonim melainkan sistem kas elektronik pseudo-anonim. Pengguna cepat berkembang solusi untuk menghindari kelemahan ini. Dua solusi langsung adalah “layanan pencucian” [2] dan pengembangan metode terdistribusi [3, 4]. Kedua solusi tersebut didasarkan pada gagasan pencampuran beberapa transaksi publik dan mengirimkannya melalui beberapa alamat perantara; yang pada gilirannya menderita kelemahan karena membutuhkan pihak ketiga yang tepercaya. Baru-baru ini, skema yang lebih kreatif diusulkan oleh I. Miers dkk. [28]: “Nolkoin”. nol koin menggunakan akumulator kriptografi satu arah dan bukti tanpa pengetahuan yang memungkinkan pengguna melakukannya “konversi” bitcoin menjadi zerocoin dan belanjakan menggunakan bukti kepemilikan anonim tanda tangan digital berbasis kunci publik yang eksplisit. Namun, bukti-bukti pengetahuan tersebut mempunyai keteguhan tetapi ukurannya tidak nyaman - sekitar 30kb (berdasarkan batas Bitcoin hari ini), yang membuat proposal tidak praktis. Penulis mengakui bahwa protokol tersebut kemungkinan besar tidak akan pernah diterima oleh mayoritas orang Bitcoin pengguna [5]. 2.2 Fungsi proof-of-work Pencipta Bitcoin Satoshi Nakamoto mendeskripsikan algoritme pengambilan keputusan mayoritas sebagai “oneCPU-one-vote” dan menggunakan fungsi penetapan harga yang terikat CPU (ganda SHA-256) untuk proof-of-work miliknya skema. Karena pengguna memilih satu riwayat transaksi pesanan [1], kewajaran dan Konsistensi proses ini merupakan kondisi kritis bagi keseluruhan sistem. Keamanan model ini memiliki dua kelemahan. Pertama, ini membutuhkan 51% jaringan kekuatan penambangan berada di bawah kendali pengguna yang jujur. Kedua, kemajuan sistem (perbaikan bug, perbaikan keamanan, dll...) mengharuskan sebagian besar pengguna untuk mendukung dan menyetujuinya perubahan (ini terjadi ketika pengguna memperbarui perangkat lunak dompet mereka) [6]. Akhirnya pemungutan suara yang sama Mekanisme ini juga digunakan untuk jajak pendapat kolektif tentang penerapan beberapa fitur [7]. Hal ini memungkinkan kita untuk menduga sifat-sifat yang harus dipenuhi oleh proof-of-work fungsi penetapan harga. Fungsi tersebut tidak boleh memungkinkan peserta jaringan untuk memiliki signifikansi keunggulan dibandingkan peserta lain; itu membutuhkan keseimbangan antara perangkat keras umum dan perangkat keras tinggi biaya perangkat khusus. Dari contoh terbaru [8], kita dapat melihat bahwa fungsi SHA-256 digunakan dalam arsitektur Bitcoin tidak memiliki properti ini karena penambangan menjadi lebih efisien pada GPU dan perangkat ASIC jika dibandingkan dengan CPU kelas atas. Oleh karena itu, Bitcoin menciptakan kondisi yang menguntungkan bagi kesenjangan yang besar antara hak suara peserta karena melanggar prinsip “satu CPU-satu suara” yang dimiliki oleh pemilik GPU dan ASIC hak suara yang jauh lebih besar jika dibandingkan dengan pemilik CPU. Ini adalah contoh klasik dari Prinsip Pareto dimana 20% peserta sistem mengontrol lebih dari 80% suara. Ada yang berpendapat bahwa ketidaksetaraan tersebut tidak relevan dengan keamanan jaringan karena memang tidak relevan jumlah peserta yang sedikit menguasai suara mayoritas tetapi kejujurannya peserta yang penting. Akan tetapi, argumen tersebut agak cacat karena justru merupakan argumen yang salah kemungkinan munculnya perangkat keras khusus yang murah daripada kejujuran peserta yang mana menimbulkan ancaman. Untuk mendemonstrasikannya, mari kita ambil contoh berikut. Misalkan seorang yang jahat individu memperoleh kekuatan penambangan yang signifikan dengan menciptakan lahan penambangannya sendiri dengan biaya murah 2 ditelusuri secara jelas ke asal yang unik dan penerima akhir. Bahkan jika dua peserta bertukar dana secara tidak langsung, metode pencarian jalur yang dirancang dengan baik akan mengungkap asal usul dan penerima akhir. Diduga juga Bitcoin tidak memenuhi properti kedua. Beberapa peneliti menyatakan ([33, 35, 29, 31]) bahwa analisis blockchain yang cermat dapat mengungkapkan hubungan antara pengguna jaringan Bitcoin dan transaksinya. Meskipun ada beberapa metode yang bisa dilakukan ddisengketakan [25], diduga banyak informasi pribadi tersembunyi yang dapat diekstraksi dari basis data publik. Kegagalan Bitcoin dalam memenuhi kedua sifat yang diuraikan di atas membuat kita menyimpulkan bahwa hal tersebut memang benar adanya bukan sistem kas elektronik anonim melainkan sistem kas elektronik pseudo-anonim. Pengguna cepat berkembang solusi untuk menghindari kelemahan ini. Dua solusi langsung adalah “layanan pencucian” [2] dan pengembangan metode terdistribusi [3, 4]. Kedua solusi tersebut didasarkan pada gagasan pencampuran beberapa transaksi publik dan mengirimkannya melalui beberapa alamat perantara; yang pada gilirannya menderita kelemahan karena membutuhkan pihak ketiga yang tepercaya. Baru-baru ini, skema yang lebih kreatif diusulkan oleh I. Miers dkk. [28]: “Nolkoin”. nol koin menggunakan akumulator kriptografi satu arah dan bukti tanpa pengetahuan yang memungkinkan pengguna melakukannya “konversi” bitcoin menjadi zerocoin dan belanjakan menggunakan bukti kepemilikan anonim tanda tangan digital berbasis kunci publik yang eksplisit. Namun, bukti-bukti pengetahuan tersebut mempunyai keteguhan tetapi ukurannya tidak nyaman - sekitar 30kb (berdasarkan batas Bitcoin saat ini), yang membuat proposal tidak praktis. Penulis mengakui bahwa protokol tersebut kemungkinan besar tidak akan pernah diterima oleh mayoritas orang Bitcoin pengguna [5]. 2.2 Fungsi proof-of-work Pencipta Bitcoin Satoshi Nakamoto mendeskripsikan algoritme pengambilan keputusan mayoritas sebagai “oneCPU-one-vote” dan menggunakan fungsi penetapan harga yang terikat CPU (ganda SHA-256) untuk proof-of-work miliknya skema. Karena pengguna memilih satu riwayat transaksi pesanan [1], kewajaran dan Konsistensi proses ini merupakan kondisi kritis bagi keseluruhan sistem. Keamanan model ini memiliki dua kelemahan. Pertama, ini membutuhkan 51% jaringan kekuatan penambangan berada di bawah kendali pengguna yang jujur. Kedua, kemajuan sistem (perbaikan bug, perbaikan keamanan, dll...) mengharuskan sebagian besar pengguna untuk mendukung dan menyetujuinya perubahan (ini terjadi ketika pengguna memperbarui perangkat lunak dompet mereka) [6]. Akhirnya pemungutan suara yang sama Mekanisme ini juga digunakan untuk jajak pendapat kolektif tentang penerapan beberapa fitur [7]. Hal ini memungkinkan kita untuk menduga sifat-sifat yang harus dipenuhi oleh proof-of-work fungsi penetapan harga. Fungsi tersebut tidak boleh memungkinkan peserta jaringan untuk memiliki signifikansi keunggulan dibandingkan peserta lain; itu membutuhkan keseimbangan antara perangkat keras umum dan perangkat keras tinggi biaya perangkat khusus. Dari contoh terbaru [8], kita dapat melihat bahwa fungsi SHA-256 digunakan dalam arsitektur Bitcoin tidak memiliki properti ini karena penambangan menjadi lebih efisien pada GPU dan perangkat ASIC jika dibandingkan dengan CPU kelas atas. Oleh karena itu, Bitcoin menciptakan kondisi yang menguntungkan bagi kesenjangan yang besar antara hak suara peserta karena melanggar prinsip “satu CPU-satu suara” yang dimiliki oleh pemilik GPU dan ASIC hak suara yang jauh lebih besar jika dibandingkan dengan pemilik CPU. Ini adalah contoh klasik dari Prinsip Pareto dimana 20% peserta sistem mengontrol lebih dari 80% suara. Ada yang berpendapat bahwa ketidaksetaraan tersebut tidak relevan dengan keamanan jaringan karena memang tidak relevan jumlah peserta yang sedikit menguasai suara mayoritas tetapi kejujurannya peserta yang penting. Akan tetapi, argumen tersebut agak cacat karena justru merupakan argumen yang salah kemungkinan munculnya perangkat keras khusus yang murah daripada kejujuran peserta yang mana menimbulkan ancaman. Untuk mendemonstrasikannya, mari kita ambil contoh berikut. Misalkan seorang yang jahat individu memperoleh kekuatan penambangan yang signifikan dengan menciptakan lahan penambangannya sendiri dengan biaya murah 2 Komentar di halaman 2
Công nghệ CryptoNote
Bây giờ chúng ta đã đề cập đến những hạn chế của công nghệ Bitcoin, chúng ta sẽ tập trung vào trình bày các tính năng của CryptoNote.
Teknologi CryptoNote
Sekarang kita telah membahas keterbatasan teknologi Bitcoin, kita akan berkonsentrasi pada hal tersebut menyajikan fitur-fitur CryptoNote.
Giao dịch không thể theo dõi
Trong phần này, chúng tôi đề xuất một sơ đồ các giao dịch ẩn danh hoàn toàn thỏa mãn cả khả năng không thể theo dõi
và điều kiện không thể liên kết. Một tính năng quan trọng trong giải pháp của chúng tôi là tính tự chủ của nó: người gửi
không bắt buộc phải hợp tác với người dùng khác hoặc bên thứ ba đáng tin cậy để thực hiện các giao dịch của mình;
do đó mỗi người tham gia tạo ra một lưu lượng truy cập bìa một cách độc lập.
4.1
Bình luận văn học
Sơ đồ của chúng tôi dựa trên nguyên tắc mật mã được gọi là chữ ký nhóm. Lần đầu tiên được trình bày bởi
D. Chaum và E. van Heyst [19], nó cho phép người dùng ký vào tin nhắn của mình thay mặt cho nhóm.
Sau khi ký tin nhắn, người dùng cung cấp (vì mục đích xác minh) chứ không phải thông tin công khai của riêng mình
1Đây được gọi là “giới hạn mềm” — hạn chế máy khách tham chiếu để tạo khối mới. Tối đa cứng của
kích thước khối có thể là 1 MB
4
chúng nếu cần thiết sẽ gây ra những hạn chế chính. Thật không may, thật khó để dự đoán khi nào
các hằng số có thể cần phải được thay đổi và việc thay thế chúng có thể dẫn đến những hậu quả khủng khiếp.
Một ví dụ điển hình về thay đổi giới hạn được mã hóa cứng dẫn đến hậu quả tai hại là khối
giới hạn kích thước được đặt thành 250kb1. Giới hạn này đủ để chứa khoảng 10000 giao dịch tiêu chuẩn. trong
đầu năm 2013, giới hạn này gần như đã đạt được và đạt được thỏa thuận nhằm tăng
giới hạn. Thay đổi được triển khai trong phiên bản ví 0.8 và kết thúc bằng việc chia chuỗi 24 khối
và một cuộc tấn công chi tiêu gấp đôi thành công [9]. Mặc dù lỗi không nằm trong giao thức Bitcoin nhưng
đúng hơn là trong công cụ cơ sở dữ liệu, nó có thể dễ dàng bị phát hiện bằng một bài kiểm tra căng thẳng đơn giản nếu có
không có giới hạn kích thước khối được giới thiệu một cách giả tạo.
Các hằng số cũng hoạt động như một dạng điểm tập trung.
Bất chấp bản chất ngang hàng của
Bitcoin, phần lớn các nút sử dụng ứng dụng khách tham chiếu chính thức [10] được phát triển bởi
một nhóm nhỏ người Nhóm này đưa ra quyết định thực hiện các thay đổi đối với giao thức
và hầu hết mọi người đều chấp nhận những thay đổi này bất kể “tính đúng đắn” của chúng. Một số quyết định gây ra
các cuộc thảo luận sôi nổi và thậm chí còn kêu gọi tẩy chay [11], điều này cho thấy rằng cộng đồng và
các nhà phát triển có thể không đồng ý ở một số điểm quan trọng. Do đó, có vẻ hợp lý khi có một giao thức
với các biến do người dùng cấu hình và tự điều chỉnh như một cách có thể để tránh những vấn đề này.
2,5
Tập lệnh cồng kềnh
Hệ thống tập lệnh trong Bitcoin là một tính năng nặng nề và phức tạp. Nó có khả năng cho phép người ta tạo ra
các giao dịch phức tạp [12], nhưng một số tính năng của nó bị vô hiệu hóa do lo ngại về bảo mật và
một số thậm chí chưa bao giờ được sử dụng [13]. Kịch bản (bao gồm cả phần người gửi và người nhận)
đối với giao dịch phổ biến nhất trong Bitcoin trông như thế này:
chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa chung có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi đã chọn sử dụng lược đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi chọne sử dụng sơ đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 8 Chữ ký vòng hoạt động như thế này: Alex muốn tiết lộ một thông điệp tới WikiLeaks về chủ nhân của cô ấy. Mỗi nhân viên trong Công ty của cô đều có một cặp khóa riêng/chung (Ri, Ui). Cô ấy sáng tác chữ ký của cô ấy với thông tin đầu vào được đặt là tin nhắn của cô ấy, m, khóa riêng của cô ấy, Ri và MỌI NGƯỜI khóa công khai, (Ui;i=1...n). Bất kỳ ai (không biết bất kỳ khóa riêng nào) đều có thể xác minh dễ dàng rằng cặp some (Rj, Uj) phải được sử dụng để tạo chữ ký... ai đó làm việc cho người chủ của Alex... nhưng về cơ bản đó chỉ là phỏng đoán ngẫu nhiên để tìm ra đó có thể là ai. http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 Lưu ý rằng chữ ký vòng có thể liên kết được mô tả ở đây trái ngược với "không thể liên kết" được mô tả ở trên. Ở đây, chúng tôi chặn hai tin nhắn và chúng tôi có thể xác định xem liệu chúng có giống nhau không bên đã gửi chúng, mặc dù chúng tôi vẫn không thể xác định được bên đó là ai. các định nghĩa "không thể liên kết" được sử dụng để xây dựng Cryptonote có nghĩa là chúng tôi không thể xác định liệu cùng một bên đang nhận chúng. Do đó, những gì chúng ta thực sự có ở đây là BỐN điều đang diễn ra. Một hệ thống có thể được liên kết hoặc không thể liên kết được, tùy thuộc vào việc có thể xác định được người gửi của hai tin nhắn giống nhau (bất kể điều này có yêu cầu thu hồi tính ẩn danh hay không). Và một hệ thống có thể không thể liên kết được hoặc không thể hủy liên kết được, tùy thuộc vào việc có thể thực hiện được hay không. xác định xem người nhận hai tin nhắn có giống nhau hay không (bất kể có hay không điều này yêu cầu thu hồi ẩn danh). Xin đừng trách tôi vì thuật ngữ khủng khiếp này. Các nhà lý thuyết đồ thị có lẽ nên hài lòng. Một số bạn có thể cảm thấy thoải mái hơn với "có thể liên kết được với người nhận" so với "có thể liên kết được với người gửi". http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Khi tôi đọc điều này, đây có vẻ là một tính năng ngớ ngẩn. Sau đó tôi đọc được rằng nó có thể là một tính năng dành cho bỏ phiếu điện tử, và điều đó có vẻ hợp lý. Thật tuyệt, từ quan điểm đó. Nhưng tôi không hoàn toàn chắc chắn về việc cố tình thực hiện chữ ký vòng có thể theo dõi. http://search.ieice.org/bin/summary.php?id=e95-a_1_151
chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi đã chọn sử dụng lược đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi chọne sử dụng sơ đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 9 Trời ơi, tác giả của sách trắng này chắc chắn có thể diễn đạt điều này tốt hơn! Hãy nói rằng một công ty do nhân viên sở hữu muốn bỏ phiếu về việc có nên mua một số sản phẩm mới hay không tài sản, Alex và Brenda đều là nhân viên. Công ty cung cấp cho mỗi nhân viên một thông báo như "Tôi bỏ phiếu đồng ý cho Dự luật A!" có "vấn đề" siêu thông tin [ĐỀ XUẤT A] và yêu cầu họ ký vào đó bằng chữ ký vòng có thể theo dõi được nếu họ ủng hộ đề xuất. Sử dụng chữ ký vòng truyền thống, một nhân viên không trung thực có thể ký tin nhắn nhiều lần, có lẽ là với nonce khác nhau, để bỏ phiếu bao nhiêu lần tùy thích. Mặt khác tay, trong sơ đồ chữ ký vòng có thể theo dõi, Alex sẽ bỏ phiếu và khóa riêng của cô ấy sẽ có đã được sử dụng trong vấn đề [ĐỀ XUẤT A]. Nếu Alex cố gắng ký một tin nhắn như "Tôi, Brenda, chấp thuận đề xuất A!” để "đóng khung" Brenda và bỏ phiếu kép, tin nhắn mới này cũng sẽ có vấn đề [ĐỀ XUẤT A]. Vì khóa riêng của Alex đã giải quyết được vấn đề [PROP A] nên danh tính của Alex sẽ ngay lập tức bị phát hiện là lừa đảo. Mà, đối mặt với nó, là khá tuyệt! Mật mã thực thi sự bình đẳng trong bỏ phiếu. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Bài viết này rất thú vị, về cơ bản là tạo ra một chữ ký vòng đặc biệt nhưng không có bất kỳ sự đồng ý của người tham gia khác. Cấu trúc chữ ký có thể khác nhau; Tôi chưa đào sâu và tôi chưa biết liệu nó có an toàn hay không. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai Chữ ký nhóm đặc biệt là: chữ ký vòng, là chữ ký nhóm không có nhóm người quản lý, không tập trung hóa, nhưng cho phép một thành viên trong một nhóm đặc biệt tuyên bố một cách có căn cứ rằng nó đã (không) ban hành chữ ký ẩn danh thay mặt cho nhóm. http://link.springer.com/chapter/10.1007/11908739_9 Điều này không hoàn toàn chính xác, theo sự hiểu biết của tôi. Và sự hiểu biết của tôi có thể sẽ thay đổi khi Tôi hiểu sâu hơn về dự án này. Nhưng theo hiểu biết của tôi, hệ thống phân cấp trông như thế này. Dấu hiệu nhóm: người quản lý nhóm kiểm soát khả năng truy xuất nguồn gốc và khả năng thêm hoặc xóa thành viên từ việc trở thành người ký kết. Ring sigs: Thành lập nhóm tùy ý không có người quản lý nhóm. Không thu hồi ẩn danh. Không có cách nào để từ chối chính mình từ một chữ ký cụ thể. Với vòng có thể theo dõi và liên kết được chữ ký, tính ẩn danh có thể mở rộng được phần nào. Chữ ký nhóm đặc biệt: giống như chữ ký vòng, nhưng các thành viên có thể chứng minh rằng họ không tạo ra một chữ ký cụ thể. Điều này rất quan trọng khi bất kỳ ai trong nhóm đều có thể tạo ra chữ ký. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Thuật toán của Fujisaki và Suzuki sau đó được tác giả điều chỉnh để mang lại tính chất một lần. Vì vậy chúng ta sẽ phân tích thuật toán của Fujisaki và Suzuki đồng thời với thuật toán mới thay vì hơn là đi qua nó ở đây.
chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi đã chọn sử dụng lược đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi chọne sử dụng sơ đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 10 Khả năng liên kết theo nghĩa "chữ ký vòng có thể liên kết" có nghĩa là chúng tôi có thể biết liệu hai giao dịch gửi đi có đến từ cùng một nguồn hay không mà không tiết lộ nguồn đó là ai. Tác giả suy yếu khả năng liên kết để (a) bảo vệ quyền riêng tư nhưng vẫn (b) phát hiện bất kỳ giao dịch nào bằng khóa riêng lần thứ hai là không hợp lệ. Được rồi, đây là câu hỏi về thứ tự sự kiện. Hãy xem xét kịch bản sau đây. Khai thác của tôi máy tính sẽ có blockchain hiện tại, nó sẽ có khối giao dịch riêng mà nó gọi hợp pháp, nó sẽ hoạt động trên khối đó trong câu đố proof-of-work và nó sẽ có một danh sách các giao dịch đang chờ xử lý sẽ được thêm vào khối tiếp theo. Nó cũng sẽ gửi bất kỳ thông tin mới nào giao dịch vào nhóm giao dịch đang chờ xử lý đó. Nếu tôi không giải được khối tiếp theo, nhưng người khác làm vậy, tôi nhận được bản sao cập nhật của blockchain. Khối tôi đang làm việc và danh sách các giao dịch đang chờ xử lý của tôi đều có thể có một số giao dịch hiện đã được kết hợp vào blockchain. Làm sáng tỏ khối đang chờ xử lý của tôi, kết hợp khối đó với danh sách các giao dịch đang chờ xử lý của tôi và gọi đó là nhóm giao dịch đang chờ xử lý của tôi. Xóa mọi thứ hiện có chính thức trong blockchain. Bây giờ tôi phải làm gì? Trước tiên tôi có nên xem qua và "loại bỏ tất cả các khoản chi tiêu gấp đôi" không? Mặt khác tay, tôi có nên tìm kiếm trong danh sách và đảm bảo rằng mỗi khóa riêng tư đều chưa được được sử dụng và nếu nó đã được sử dụng trong danh sách của tôi thì tôi đã nhận được bản sao đầu tiên trước, và do đó bất kỳ bản sao nào nữa là bất hợp pháp. Vì vậy, tôi tiến hành xóa tất cả các phiên bản sau lần đầu tiên của cùng một khóa riêng. Hình học đại số chưa bao giờ là điểm mạnh của tôi. http://en.wikipedia.org/wiki/EdDSA Tốc độ như vậy, nhiều wow. ĐÂY là hình học đại số để giành chiến thắng. Không phải là tôi biết bất cứ điều gì về điều đó. Có vấn đề hay không, các nhật ký rời rạc đang hoạt động rất nhanh. Và máy tính lượng tử ăn chúng cho bữa sáng. http://link.springer.com/article/10.1007/s13389-012-0027-1 Đây trở thành một con số thực sự quan trọng, nhưng không có lời giải thích hay trích dẫn nào về việc nó đã được chọn. Đơn giản chỉ cần chọn một số nguyên tố lớn đã biết là được, nhưng nếu có sự thật về số nguyên tố lớn này, điều đó có thể ảnh hưởng đến sự lựa chọn của chúng ta. Các biến thể khác nhau của tiền điện tử có thể chọn các giá trị khác nhau của ồ, nhưng không có cuộc thảo luận nào trong bài viết này về cách điều đó sự lựa chọn sẽ ảnh hưởng đến sự lựa chọn của chúng ta về các thông số tổng thể khác được liệt kê ở trang 5. Bài viết này cần một phần về việc lựa chọn các giá trị tham số.
khóa người dùng riêng là một cặp (a, b) gồm hai khóa ec-key riêng khác nhau; khóa theo dõi là một cặp (a, B) khóa ec-key riêng và công khai (trong đó B = bG và a ̸= b); khóa người dùng chung là một cặp (A, B) gồm hai khóa ec-key công khai được dẫn xuất từ (a, b); địa chỉ tiêu chuẩn là sự thể hiện khóa người dùng công cộng được đưa vào chuỗi thân thiện với con người với việc sửa lỗi; địa chỉ bị cắt ngắn là sự thể hiện nửa sau (điểm B) của khóa người dùng công khai được cung cấp thành chuỗi thân thiện với con người có sửa lỗi. Cấu trúc giao dịch vẫn tương tự như cấu trúc trong Bitcoin: mọi người dùng đều có thể chọn một số khoản thanh toán đến độc lập (đầu ra giao dịch), ký chúng với các khóa riêng và gửi chúng đến các điểm đến khác nhau. Ngược lại với mô hình của Bitcoin, trong đó người dùng sở hữu khóa riêng và khóa chung duy nhất, trong mô hình mô hình đề xuất, người gửi tạo khóa công khai một lần dựa trên địa chỉ của người nhận và một số dữ liệu ngẫu nhiên Theo nghĩa này, một giao dịch đến cho cùng một người nhận sẽ được gửi đến một khóa chung một lần (không trực tiếp đến một địa chỉ duy nhất) và chỉ người nhận mới có thể khôi phục khóa phần riêng tư tương ứng để lấy lại tiền của anh ấy (sử dụng khóa riêng tư duy nhất của anh ấy). Người nhận có thể chi tiêu số tiền bằng cách sử dụng chữ ký vòng, giữ kín quyền sở hữu và chi tiêu thực tế của mình. Các chi tiết của giao thức được giải thích trong các phần phụ tiếp theo. 4.3 Thanh toán không thể liên kết Địa chỉ Bitcoin cổ điển, sau khi được xuất bản, sẽ trở thành mã nhận dạng rõ ràng cho các địa chỉ gửi đến các khoản thanh toán, liên kết chúng lại với nhau và gắn với bút danh của người nhận. Nếu ai đó muốn nhận được một giao dịch “không bị ràng buộc”, anh ta phải chuyển địa chỉ của mình đến người gửi bằng một kênh riêng. Nếu anh ta muốn nhận các giao dịch khác nhau mà không thể chứng minh được là thuộc về cùng một chủ sở hữu anh ta nên tạo ra tất cả các địa chỉ khác nhau và không bao giờ xuất bản chúng dưới bút danh của chính mình. công cộng Riêng tư Alice Carol Địa chỉ 1 của Bob Địa chỉ 2 của Bob Chìa khóa của Bob 1 Chìa khóa 2 của Bob Bob Hình 2. Mô hình khóa/giao dịch Bitcoin truyền thống. Chúng tôi đề xuất giải pháp cho phép người dùng xuất bản một địa chỉ duy nhất và nhận được vô điều kiện thanh toán không thể liên kết. Đích của mỗi đầu ra CryptoNote (theo mặc định) là khóa chung, bắt nguồn từ địa chỉ của người nhận và dữ liệu ngẫu nhiên của người gửi. Ưu điểm chính so với Bitcoin là mỗi khóa đích là duy nhất theo mặc định (trừ khi người gửi sử dụng cùng một dữ liệu cho mỗi khóa đích). giao dịch của mình cho cùng một người nhận). Do đó, không có vấn đề như “tái sử dụng địa chỉ” bởi thiết kế và không người quan sát nào có thể xác định liệu có bất kỳ giao dịch nào được gửi đến một địa chỉ hoặc liên kết cụ thể hay không hai địa chỉ với nhau. 6 khóa người dùng riêng là một cặp (a, b) gồm hai khóa ec-key riêng khác nhau; khóa theo dõi là một cặp (a, B) khóa ec-key riêng và công khai (trong đó B = bG và a ̸= b); khóa người dùng chung là một cặp (A, B) gồm hai khóa ec-key công khai được dẫn xuất từ (a, b); địa chỉ tiêu chuẩn là sự thể hiện khóa người dùng công cộng được đưa vào chuỗi thân thiện với con người với việc sửa lỗi; địa chỉ bị cắt ngắn là sự thể hiện nửa sau (điểm B) của khóa người dùng công khai được cung cấp thành chuỗi thân thiện với con người có sửa lỗi. Cấu trúc giao dịch vẫn tương tự như cấu trúc trong Bitcoin: mọi người dùng đều có thể chọn một số khoản thanh toán đến độc lập (đầu ra giao dịch), ký chúng với các khóa riêng và gửi chúng đến các điểm đến khác nhau. Ngược lại với mô hình của Bitcoin, trong đó người dùng sở hữu khóa riêng và khóa chung duy nhất, trong mô hình mô hình đề xuất, người gửi tạo khóa công khai một lần dựa trên địa chỉ của người nhận và một số dữ liệu ngẫu nhiên Theo nghĩa này, một giao dịch đến cho cùng một người nhận sẽ được gửi đến một khóa chung một lần (không trực tiếp đến một địa chỉ duy nhất) và chỉ người nhận mới có thể khôi phục khóa phần riêng tư tương ứng để lấy lại tiền của anh ấy (sử dụng khóa riêng tư duy nhất của anh ấy). Người nhận có thể chi tiêu số tiền bằng cách sử dụng chữ ký vòng, giữ kín quyền sở hữu và chi tiêu thực tế của mình. Các chi tiết của giao thức được giải thích trong các phần phụ tiếp theo. 4.3 Thanh toán không thể liên kết Địa chỉ Bitcoin cổ điển, sau khi được xuất bản, sẽ trở thành mã nhận dạng rõ ràng cho các địa chỉ gửi đến các khoản thanh toán, liên kết chúng lại với nhau và gắn với bút danh của người nhận. Nếu ai đó muốn nhận được một giao dịch “không bị ràng buộc”, anh ta phải chuyển địa chỉ của mình đến người gửi bằng một kênh riêng. Nếu anh ta muốn nhận các giao dịch khác nhau mà không thể chứng minh được là thuộc về cùng một chủ sở hữu anh ta nên tạo ra tất cả các địa chỉ khác nhau và không bao giờ xuất bản chúng dưới bút danh của chính mình. công cộng Riêng tư Alice Carol Địa chỉ 1 của Bob Địa chỉ 2 của Bob Chìa khóa của Bob 1 Chìa khóa 2 của Bob Bob Hình 2. Mod khóa/giao dịch Bitcoin truyền thốngel. Chúng tôi đề xuất giải pháp cho phép người dùng xuất bản một địa chỉ duy nhất và nhận được vô điều kiện thanh toán không thể liên kết. Đích của mỗi đầu ra CryptoNote (theo mặc định) là khóa chung, bắt nguồn từ địa chỉ của người nhận và dữ liệu ngẫu nhiên của người gửi. Ưu điểm chính so với Bitcoin là mỗi khóa đích là duy nhất theo mặc định (trừ khi người gửi sử dụng cùng một dữ liệu cho mỗi khóa đích). giao dịch của mình cho cùng một người nhận). Do đó, không có vấn đề như “tái sử dụng địa chỉ” bởi thiết kế và không người quan sát nào có thể xác định liệu có bất kỳ giao dịch nào được gửi đến một địa chỉ hoặc liên kết cụ thể hay không hai địa chỉ với nhau. 6 11 Vì vậy, điều này giống như Bitcoin, nhưng với Hộp thư bưu điện ẩn danh, vô hạn, chỉ người nhận mới có thể đổi tạo khóa riêng ẩn danh như chữ ký vòng có thể. Bitcoin hoạt động theo cách này. Nếu Alex có 0,112 Bitcoin trong ví mà cô ấy vừa nhận được từ Frank thì cô ấy thực sự có chữ ký tin nhắn "Tôi, [FRANK], gửi 0,112 Bitcoin tới [alex] + H0 + N0" trong đó 1) Frank đã ký vào tin nhắn bằng khóa riêng của anh ấy [FRANK], 2) Frank đã ký tin nhắn với công khai của Alex key, [alex], 3) Frank đã đưa vào một số dạng lịch sử của bitcoin, H0 và 4) Frank bao gồm một bit dữ liệu ngẫu nhiên được gọi là nonce, N0. Sau đó, nếu Alex muốn gửi 0,011 Bitcoin cho Charlene, cô ấy sẽ nhận tin nhắn của Frank và cô ấy sẽ đặt giá trị đó thành H1 và ký hai tin nhắn: một cho giao dịch của cô ấy và một cho thay đổi. H1= "Tôi, [FRANK], gửi 0,112 Bitcoin tới [alex] + H0 + N" "Tôi, [ALEX], gửi 0,011 Bitcoin tới [charlene] + H1 + N1" "Tôi, [ALEX], gửi 0,101 Bitcoin khi thay đổi thành [alex] + H1 + N2." trong đó Alex ký cả hai tin nhắn bằng khóa riêng của cô ấy [ALEX], tin nhắn đầu tiên bằng khóa riêng của Charlene. khóa công khai [charlene], tin nhắn thứ hai có khóa công khai [alex] của Alex và bao gồm cả lịch sử và một số nonces N1 và N2 được tạo ngẫu nhiên một cách thích hợp. Tiền điện tử hoạt động theo cách này: Nếu Alex có 0,112 tiền điện tử trong ví mà cô ấy vừa nhận được từ Frank, thì cô ấy thực sự có một tờ tiền đã ký. tin nhắn "Tôi, [ai đó trong nhóm đặc biệt], gửi 0,112 Cryptonote đến [địa chỉ một lần] + H0 + N0.” Alex phát hiện ra rằng đây là tiền của cô ấy bằng cách kiểm tra khóa riêng [ALEX] của cô ấy. [địa chỉ một lần] cho mỗi tin nhắn gửi đi và nếu cô ấy muốn sử dụng nó, cô ấy sẽ làm như vậy cách sau đây. Cô ấy chọn người nhận tiền, có lẽ Charlene đã bắt đầu bỏ phiếu cho các cuộc tấn công bằng máy bay không người lái nên Alex muốn gửi tiền cho Brenda. Vì vậy, Alex tra cứu khóa công khai của Brenda, [brenda], và sử dụng khóa riêng của cô ấy, [ALEX], để tạo địa chỉ một lần [ALEX+brenda]. Cô ấy sau đó chọn một bộ sưu tập C tùy ý từ mạng lưới người dùng tiền điện tử và cô ấy xây dựng một chữ ký vòng từ nhóm đặc biệt này. Chúng tôi đặt lịch sử của mình làm tin nhắn trước đó, thêm nonces và tiếp tục như bình thường? H1 = "Tôi, [ai đó trong nhóm đặc biệt], gửi 0,112 tiền điện tử đến [địa chỉ một lần] + H0 + N0.” "Tôi, [ai đó trong bộ sưu tập C], gửi 0,011 Cryptonote tới [địa chỉ một lần được tạo từALEX+brenda] + H1 + N1" "Tôi, [ai đó trong bộ sưu tập C], gửi 0.101 Cryptonote dưới dạng thay đổi thành [địa chỉ một lần-madefrom-ALEX+alex] + H1 + N2" Bây giờ, Alex và Brenda đều quét tất cả các tin nhắn đến để tìm bất kỳ địa chỉ một lần nào đã được lưu trữ. được tạo bằng chìa khóa của họ. Nếu họ tìm thấy thì tin nhắn đó là tin nhắn hoàn toàn mới của họ. tiền điện tử! Và thậm chí sau đó, giao dịch vẫn sẽ đạt blockchain. Nếu đồng tiền nhập vào địa chỉ đó được biết là được gửi từ tội phạm, những người đóng góp chính trị hoặc từ các ủy ban và tài khoản với ngân sách nghiêm ngặt (tức là tham ô) hoặc nếu chủ sở hữu mới của những đồng tiền này mắc sai lầm và gửi những đồng tiền này đến một địa chỉ chung với những đồng tiền mà anh ta được biết là sở hữu, khuôn mẫu ẩn danh bitcoin tăng giá.
khóa người dùng riêng là một cặp (a, b) gồm hai khóa ec-key riêng khác nhau; khóa theo dõi là một cặp (a, B) khóa ec-key riêng và công khai (trong đó B = bG và a ̸= b); khóa người dùng chung là một cặp (A, B) gồm hai khóa ec-key công khai được dẫn xuất từ (a, b); địa chỉ tiêu chuẩn là sự thể hiện khóa người dùng công cộng được đưa vào chuỗi thân thiện với con người với việc sửa lỗi; địa chỉ bị cắt ngắn là sự thể hiện nửa sau (điểm B) của khóa người dùng công khai được cung cấp thành chuỗi thân thiện với con người có sửa lỗi. Cấu trúc giao dịch vẫn tương tự như cấu trúc trong Bitcoin: mọi người dùng đều có thể chọn một số khoản thanh toán đến độc lập (đầu ra giao dịch), ký chúng với các khóa riêng và gửi chúng đến các điểm đến khác nhau. Ngược lại với mô hình của Bitcoin, trong đó người dùng sở hữu khóa riêng và khóa chung duy nhất, trong mô hình mô hình đề xuất, người gửi tạo khóa công khai một lần dựa trên địa chỉ của người nhận và một số dữ liệu ngẫu nhiên Theo nghĩa này, một giao dịch đến cho cùng một người nhận sẽ được gửi đến một khóa chung một lần (không trực tiếp đến một địa chỉ duy nhất) và chỉ người nhận mới có thể khôi phục khóa phần riêng tư tương ứng để lấy lại tiền của anh ấy (sử dụng khóa riêng tư duy nhất của anh ấy). Người nhận có thể chi tiêu số tiền bằng cách sử dụng chữ ký vòng, giữ kín quyền sở hữu và chi tiêu thực tế của mình. Các chi tiết của giao thức được giải thích trong các phần phụ tiếp theo. 4.3 Thanh toán không thể liên kết Địa chỉ Bitcoin cổ điển, sau khi được xuất bản, sẽ trở thành mã nhận dạng rõ ràng cho các địa chỉ gửi đến các khoản thanh toán, liên kết chúng lại với nhau và gắn với bút danh của người nhận. Nếu ai đó muốn nhận được một giao dịch “không bị ràng buộc”, anh ta phải chuyển địa chỉ của mình đến người gửi bằng một kênh riêng. Nếu anh ta muốn nhận các giao dịch khác nhau mà không thể chứng minh được là thuộc về cùng một chủ sở hữu anh ta nên tạo ra tất cả các địa chỉ khác nhau và không bao giờ xuất bản chúng dưới bút danh của chính mình. công cộng Riêng tư Alice Carol Địa chỉ 1 của Bob Địa chỉ 2 của Bob Chìa khóa của Bob 1 Chìa khóa 2 của Bob Bob Hình 2. Mô hình khóa/giao dịch Bitcoin truyền thống. Chúng tôi đề xuất giải pháp cho phép người dùng xuất bản một địa chỉ duy nhất và nhận được vô điều kiện thanh toán không thể liên kết. Đích của mỗi đầu ra CryptoNote (theo mặc định) là khóa chung, bắt nguồn từ địa chỉ của người nhận và dữ liệu ngẫu nhiên của người gửi. Ưu điểm chính so với Bitcoin là mỗi khóa đích là duy nhất theo mặc định (trừ khi người gửi sử dụng cùng một dữ liệu cho mỗi khóa đích). giao dịch của mình cho cùng một người nhận). Do đó, không có vấn đề như “tái sử dụng địa chỉ” bởi thiết kế và không người quan sát nào có thể xác định liệu có bất kỳ giao dịch nào được gửi đến một địa chỉ hoặc liên kết cụ thể hay không hai địa chỉ với nhau. 6 khóa người dùng riêng là một cặp (a, b) gồm hai khóa ec-key riêng khác nhau; khóa theo dõi là một cặp (a, B) khóa ec-key riêng và công khai (trong đó B = bG và a ̸= b); khóa người dùng chung là một cặp (A, B) gồm hai khóa ec-key công khai được dẫn xuất từ (a, b); địa chỉ tiêu chuẩn là sự thể hiện khóa người dùng công cộng được đưa vào chuỗi thân thiện với con người với việc sửa lỗi; địa chỉ bị cắt ngắn là sự thể hiện nửa sau (điểm B) của khóa người dùng công khai được cung cấp thành chuỗi thân thiện với con người có sửa lỗi. Cấu trúc giao dịch vẫn tương tự như cấu trúc trong Bitcoin: mọi người dùng đều có thể chọn một số khoản thanh toán đến độc lập (đầu ra giao dịch), ký chúng với các khóa riêng và gửi chúng đến các điểm đến khác nhau. Ngược lại với mô hình của Bitcoin, trong đó người dùng sở hữu khóa riêng và khóa chung duy nhất, trong mô hình mô hình đề xuất, người gửi tạo khóa công khai một lần dựa trên địa chỉ của người nhận và một số dữ liệu ngẫu nhiên Theo nghĩa này, một giao dịch đến cho cùng một người nhận sẽ được gửi đến một khóa chung một lần (không trực tiếp đến một địa chỉ duy nhất) và chỉ người nhận mới có thể khôi phục khóa phần riêng tư tương ứng để lấy lại tiền của anh ấy (sử dụng khóa riêng tư duy nhất của anh ấy). Người nhận có thể chi tiêu số tiền bằng cách sử dụng chữ ký vòng, giữ kín quyền sở hữu và chi tiêu thực tế của mình. Các chi tiết của giao thức được giải thích trong các phần phụ tiếp theo. 4.3 Thanh toán không thể liên kết Địa chỉ Bitcoin cổ điển, sau khi được xuất bản, sẽ trở thành mã nhận dạng rõ ràng cho các địa chỉ gửi đến các khoản thanh toán, liên kết chúng lại với nhau và gắn với bút danh của người nhận. Nếu ai đó muốn nhận được một giao dịch “không bị ràng buộc”, anh ta phải chuyển địa chỉ của mình đến người gửi bằng một kênh riêng. Nếu anh ta muốn nhận các giao dịch khác nhau mà không thể chứng minh được là thuộc về cùng một chủ sở hữu anh ta nên tạo ra tất cả các địa chỉ khác nhau và không bao giờ xuất bản chúng dưới bút danh của chính mình. công cộng Riêng tư Alice Carol Địa chỉ 1 của Bob Địa chỉ 2 của Bob Chìa khóa của Bob 1 Chìa khóa 2 của Bob Bob Hình 2. Mod khóa/giao dịch Bitcoin truyền thốngel. Chúng tôi đề xuất giải pháp cho phép người dùng xuất bản một địa chỉ duy nhất và nhận được vô điều kiện thanh toán không thể liên kết. Đích của mỗi đầu ra CryptoNote (theo mặc định) là khóa chung, bắt nguồn từ địa chỉ của người nhận và dữ liệu ngẫu nhiên của người gửi. Ưu điểm chính so với Bitcoin là mỗi khóa đích là duy nhất theo mặc định (trừ khi người gửi sử dụng cùng một dữ liệu cho mỗi khóa đích). giao dịch của mình cho cùng một người nhận). Do đó, không có vấn đề như “tái sử dụng địa chỉ” bởi thiết kế và không người quan sát nào có thể xác định liệu có bất kỳ giao dịch nào được gửi đến một địa chỉ hoặc liên kết cụ thể hay không hai địa chỉ với nhau. 6 12 Do đó, thay vì người dùng gửi tiền từ địa chỉ (thực sự là khóa công khai) đến địa chỉ (một khóa công khai khác) bằng cách sử dụng khóa riêng của họ, người dùng sẽ gửi tiền từ hộp thư bưu điện một lần (đang tạo bằng khóa chung của bạn bè bạn) tới hộp thư bưu điện một lần (tương tự) bằng cách sử dụng khóa riêng của mình. Theo một nghĩa nào đó, chúng tôi đang nói "Được rồi, mọi người hãy rút tiền ra khi nó đang diễn ra." chuyển xung quanh! Chỉ cần biết rằng chìa khóa của chúng ta có thể mở được chiếc hộp đó là đủ chúng ta biết trong hộp có bao nhiêu tiền. Đừng bao giờ để dấu vân tay của bạn trên Hộp thư bưu điện hoặc thực sự sử dụng nó, chỉ cần trao đổi chiếc hộp chứa đầy tiền mặt. Bằng cách đó chúng tôi không biết ai đã gửi cái gì, nhưng nội dung của những địa chỉ công cộng này vẫn không có ma sát, có thể thay thế được, có thể chia được và vẫn sở hữu tất cả những phẩm chất tốt đẹp khác của tiền mà chúng ta mong muốn như bitcoin.” Một tập hợp vô hạn các hộp PO. Bạn công bố địa chỉ, tôi có khóa riêng. Tôi sử dụng khóa riêng của tôi và địa chỉ của bạn, và một số dữ liệu ngẫu nhiên để tạo khóa công khai. Thuật toán được thiết kế sao cho, vì địa chỉ đã được sử dụng để tạo khóa chung, chỉ khóa riêng CỦA BẠN mới hoạt động để mở khóa tin nhắn. Một người quan sát, Eve, thấy bạn công bố địa chỉ của mình và thấy khóa công khai mà tôi công bố. Tuy nhiên, cô ấy không biết liệu tôi đã công bố khóa công khai của mình dựa trên địa chỉ của bạn hay của cô ấy, hay của Brenda hoặc của Charlene, hoặc của bất cứ ai. Cô ấy kiểm tra khóa riêng của mình với khóa chung mà tôi đã thông báo và thấy nó không hoạt động; đó không phải là tiền của cô ấy. Cô ấy không biết khóa riêng của người khác và chỉ người nhận tin nhắn mới có khóa riêng mới có thể mở khóa tin nhắn. Vì vậy không có ai lắng nghe có thể xác định ai đã nhận tiền ít hơn nhiều là lấy tiền.
công cộng Riêng tư Alice Carol Chìa khóa một lần Chìa khóa một lần Chìa khóa một lần Bob Chìa khóa của Bob Địa chỉ của Bob Hình 3. Mô hình khóa/giao dịch CryptoNote. Đầu tiên, người gửi thực hiện trao đổi Diffe-Hellman để lấy bí mật chung từ dữ liệu của mình và một nửa địa chỉ của người nhận. Sau đó, anh ta tính toán khóa đích một lần bằng cách sử dụng khóa chia sẻ bí mật và nửa sau của địa chỉ. Hai ec-key khác nhau được yêu cầu từ người nhận đối với hai bước này, do đó, địa chỉ CryptoNote tiêu chuẩn lớn gần gấp đôi ví Bitcoin địa chỉ. Người nhận cũng thực hiện trao đổi Diffe-Hellman để khôi phục thông tin tương ứng chìa khóa bí mật. Một chuỗi giao dịch tiêu chuẩn diễn ra như sau: 1. Alice muốn gửi thanh toán cho Bob, người đã công bố địa chỉ tiêu chuẩn của mình. Cô ấy giải nén địa chỉ và lấy khóa chung của Bob (A, B). 2. Alice tạo ra một \(r \in [1, l - 1]\) ngẫu nhiên và tính khóa công khai một lần \(P = H_s(rA)G +\) B. 3. Alice sử dụng P làm khóa đích cho đầu ra và cũng đóng gói giá trị R = rG (như một phần của sàn giao dịch Diffie-Hellman) ở đâu đó trong giao dịch. Lưu ý rằng cô ấy có thể tạo các đầu ra khác có khóa chung duy nhất: khóa của người nhận khác nhau (Ai, Bi) ngụ ý Pi khác nhau ngay cả với cùng một r. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích R = rG P = Hs(rA)G + B Người nhận khóa công khai Dữ liệu ngẫu nhiên của người gửi r (A, B) Hình 4. Cấu trúc giao dịch tiêu chuẩn. 4. Alice gửi giao dịch. 5. Bob kiểm tra mọi giao dịch được chuyển bằng khóa riêng của mình (a, b) và tính P ′ = Hs(aR)G + B. Nếu giao dịch của Alice với Bob là người nhận nằm trong số đó, thì aR = arG = rA và P ′ = P. 7 công cộng Riêng tư Alice Carol Chìa khóa một lần Chìa khóa một lần Chìa khóa một lần Bob Chìa khóa của Bob Địa chỉ của Bob Hình 3. Mô hình khóa/giao dịch CryptoNote. Đầu tiên, người gửi thực hiện trao đổi Diffe-Hellman để lấy bí mật chung từ dữ liệu của mình và một nửa địa chỉ của người nhận. Sau đó, anh ta tính toán khóa đích một lần bằng cách sử dụng khóa chia sẻ bí mật và nửa sau của địa chỉ. Hai ec-key khác nhau được yêu cầu từ người nhận đối với hai bước này, do đó, địa chỉ CryptoNote tiêu chuẩn lớn gần gấp đôi so với ví Bitcoin địa chỉ. Người nhận cũng thực hiện trao đổi Diffe-Hellman để khôi phục thông tin tương ứng chìa khóa bí mật. Một chuỗi giao dịch tiêu chuẩn diễn ra như sau: 1. Alice muốn gửi thanh toán cho Bob, người đã công bố địa chỉ tiêu chuẩn của mình. Cô ấy giải nén địa chỉ và lấy khóa chung của Bob (A, B). 2. Alice tạo ra một \(r \in [1, l - 1]\) ngẫu nhiên và tính khóa công khai một lần \(P = H_s(rA)G +\) B. 3. Alice sử dụng P làm khóa đích cho đầu ra và cũng đóng gói giá trị R = rG (như một phần của sàn giao dịch Diffie-Hellman) ở đâu đó trong giao dịch. Lưu ý rằng cô ấy có thể tạo các đầu ra khác có khóa chung duy nhất: khóa của người nhận khác nhau (Ai, Bi) ngụ ý Pi khác nhau ngay cả với cùng một r. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích R = rG P = Hs(rA)G + B Người nhận khóa công khai Dữ liệu ngẫu nhiên của người gửi r (A, B) Hình 4. Cấu trúc giao dịch tiêu chuẩn. 4. Alice gửi giao dịch. 5. Bob kiểm tra mọi giao dịch được chuyển bằng khóa riêng của mình (a, b) và tính P ′ = Hs(aR)G + B. Nếu giao dịch của Alice với Bob là người nhận nằm trong số đó, thì aR = arG = rA và P ′ = P. 7 13 Tôi tự hỏi sẽ đau đầu đến thế nào khi thực hiện một lựa chọn mật mã kế hoạch. Hình elip hoặc cách khác. Vì vậy, nếu kế hoạch nào đó bị phá vỡ trong tương lai, tiền tệ sẽ chuyển đổi mà không cần quan tâm. Có lẽ là một cơn đau lớn ở mông. Được rồi, đây chính xác là những gì tôi vừa giải thích trong bình luận trước đó. Kiểu Diffie-Hellman trao đổi rất gọn gàng. Giả sử Alex và Brenda mỗi người có một số bí mật A và B và một số họ không quan tâm đến việc giữ bí mật, a và b. Họ mong muốn tạo ra một bí mật được chia sẻ mà không cần Eva phát hiện ra nó. Diffie và Hellman đã nghĩ ra cách để Alex và Brenda chia sẻ các số công khai a và b, nhưng không phải các số riêng tư A và B, và tạo ra một bí mật chung, K. Sử dụng bí mật được chia sẻ này, K, mà không có bất kỳ Eva nào lắng nghe để có thể tạo ra bí mật tương tự K, Alex và Brenda hiện có thể sử dụng K làm khóa mã hóa bí mật và gửi lại các tin nhắn bí mật trở đi. Đây là cách nó CÓ THỂ hoạt động, mặc dù nó sẽ hoạt động với các số lớn hơn 100. Chúng ta sẽ sử dụng 100 vì tính toán các số nguyên theo modulo 100 tương đương với việc "loại bỏ tất cả nhưng là hai chữ số cuối cùng của một số." Alex và Brenda mỗi người chọn A, a, B và b. Họ giữ bí mật cho A và B. Alex nói với Brenda giá trị của modulo 100 (chỉ hai chữ số cuối) và Brenda nói với Alex giá trị của cô ấy là b modulo 100. Bây giờ Eva biết (a,b) modulo 100. Nhưng Alex biết (a,b,A) nên cô ấy có thể tính x=abA modulo 100.Alex bỏ qua tất cả trừ chữ số cuối cùng vì chúng ta đang làm việc lại theo số nguyên modulo 100. Tương tự, Brenda biết (a,b,B) nên cô ấy có thể tính y=abB modulo 100. Bây giờ Alex có thể xuất bản x và Brenda có thể xuất bản y. Nhưng bây giờ Alex có thể tính yA = abBA modulo 100 và Brenda có thể tính xB = abBA modulo 100. Cả hai đều biết cùng một số! Nhưng tất cả những gì Eva đã nghe là (a,b,abA,abB). Cô ấy không có cách nào dễ dàng để tính abA*B. Bây giờ, đây là cách suy nghĩ dễ dàng và kém an toàn nhất về sàn giao dịch Diffi-Hellman. Có nhiều phiên bản an toàn hơn. Nhưng hầu hết các phiên bản đều hoạt động vì hệ số nguyên và rời rạc logarit rất khó và cả hai vấn đề đó đều được giải quyết dễ dàng bằng máy tính lượng tử. Tôi sẽ xem xét liệu có tồn tại phiên bản nào chống lại lượng tử hay không. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange "Chuỗi txn tiêu chuẩn" được liệt kê ở đây thiếu rất nhiều bước, chẳng hạn như CHỮ KÝ. Họ chỉ được coi là đương nhiên ở đây. Điều này thực sự tồi tệ, bởi vì thứ tự mà chúng ta nội dung ký tên, thông tin có trong tin nhắn đã ký, v.v.... tất cả những điều này cực kỳ quan trọng đối với giao thức. Thực hiện sai một hoặc hai bước, thậm chí hơi sai trật tự trong khi triển khai " trình tự giao dịch tiêu chuẩn" có thể khiến tính bảo mật của toàn bộ hệ thống bị nghi ngờ. Hơn nữa, các bằng chứng được trình bày sau trong bài báo có thể không đủ chặt chẽ nếu khuôn khổ mà chúng hoạt động được xác định một cách lỏng lẻo như trong phần này.
công cộng Riêng tư Alice Carol Chìa khóa một lần Chìa khóa một lần Chìa khóa một lần Bob Chìa khóa của Bob Địa chỉ của Bob Hình 3. Mô hình khóa/giao dịch CryptoNote. Đầu tiên, người gửi thực hiện trao đổi Diffe-Hellman để lấy bí mật chung từ dữ liệu của mình và một nửa địa chỉ của người nhận. Sau đó, anh ta tính toán khóa đích một lần bằng cách sử dụng khóa chia sẻ bí mật và nửa sau của địa chỉ. Hai ec-key khác nhau được yêu cầu từ người nhận đối với hai bước này, do đó, địa chỉ CryptoNote tiêu chuẩn lớn gần gấp đôi ví Bitcoin địa chỉ. Người nhận cũng thực hiện trao đổi Diffe-Hellman để khôi phục thông tin tương ứng chìa khóa bí mật. Một chuỗi giao dịch tiêu chuẩn diễn ra như sau: 1. Alice muốn gửi thanh toán cho Bob, người đã công bố địa chỉ tiêu chuẩn của mình. Cô ấy giải nén địa chỉ và lấy khóa chung của Bob (A, B). 2. Alice tạo ra một \(r \in [1, l - 1]\) ngẫu nhiên và tính khóa công khai một lần \(P = H_s(rA)G +\) B. 3. Alice sử dụng P làm khóa đích cho đầu ra và cũng đóng gói giá trị R = rG (như một phần của sàn giao dịch Diffie-Hellman) ở đâu đó trong giao dịch. Lưu ý rằng cô ấy có thể tạo các đầu ra khác có khóa chung duy nhất: khóa của người nhận khác nhau (Ai, Bi) ngụ ý Pi khác nhau ngay cả với cùng một r. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích R = rG P = Hs(rA)G + B Người nhận khóa công khai Dữ liệu ngẫu nhiên của người gửi r (A, B) Hình 4. Cấu trúc giao dịch tiêu chuẩn. 4. Alice gửi giao dịch. 5. Bob kiểm tra mọi giao dịch được chuyển bằng khóa riêng của mình (a, b) và tính P ′ = Hs(aR)G + B. Nếu giao dịch của Alice với Bob là người nhận nằm trong số đó, thì aR = arG = rA và P ′ = P. 7 công cộng Riêng tư Alice Carol Chìa khóa một lần Chìa khóa một lần Chìa khóa một lần Bob Chìa khóa của Bob Địa chỉ của Bob Hình 3. Mô hình khóa/giao dịch CryptoNote. Đầu tiên, người gửi thực hiện trao đổi Diffe-Hellman để lấy bí mật chung từ dữ liệu của mình và một nửa địa chỉ của người nhận. Sau đó, anh ta tính toán khóa đích một lần bằng cách sử dụng khóa chia sẻ bí mật và nửa sau của địa chỉ. Hai ec-key khác nhau được yêu cầu từ người nhận đối với hai bước này, do đó, địa chỉ CryptoNote tiêu chuẩn lớn gần gấp đôi so với ví Bitcoin địa chỉ. Người nhận cũng thực hiện trao đổi Diffe-Hellman để khôi phục thông tin tương ứng chìa khóa bí mật. Một chuỗi giao dịch tiêu chuẩn diễn ra như sau: 1. Alice muốn gửi thanh toán cho Bob, người đã công bố địa chỉ tiêu chuẩn của mình. Cô ấy giải nén địa chỉ và lấy khóa chung của Bob (A, B). 2. Alice tạo ra một \(r \in [1, l - 1]\) ngẫu nhiên và tính khóa công khai một lần \(P = H_s(rA)G +\) B. 3. Alice sử dụng P làm khóa đích cho đầu ra và cũng đóng gói giá trị R = rG (như một phần của sàn giao dịch Diffie-Hellman) ở đâu đó trong giao dịch. Lưu ý rằng cô ấy có thể tạo các đầu ra khác có khóa chung duy nhất: khóa của người nhận khác nhau (Ai, Bi) ngụ ý Pi khác nhau ngay cả với cùng một r. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích R = rG P = Hs(rA)G + B Người nhận khóa công khai Dữ liệu ngẫu nhiên của người gửi r (A, B) Hình 4. Cấu trúc giao dịch tiêu chuẩn. 4. Alice gửi giao dịch. 5. Bob kiểm tra mọi giao dịch được chuyển bằng khóa riêng của mình (a, b) và tính P ′ = Hs(aR)G + B. Nếu giao dịch của Alice với Bob là người nhận nằm trong số đó, thì aR = arG = rA và P ′ = P. 7 14 Lưu ý rằng (các) tác giả đã làm rất tốt việc giữ cho thuật ngữ của họ rõ ràng xuyên suốt văn bản, nhưng đặc biệt là ở phần tiếp theo này. Sự tái sinh tiếp theo của bài viết này nhất thiết sẽ là khắt khe hơn rất nhiều. Trong văn bản họ gọi P là khóa công khai một lần của họ. Trong sơ đồ, họ gọi R là "Khóa công khai Tx" và P là "Khóa đích" của họ. Nếu tôi định viết lại điều này, tôi sẽ trình bày rất cụ thể một số thuật ngữ trước khi thảo luận về các phần này. Cái giếng này rất lớn. Xem trang 5. Ai chọn ell? Sơ đồ minh họa khóa công khai giao dịch R = rG, ngẫu nhiên và được chọn bởi người gửi, không phải là một phần của đầu ra Tx. Điều này là do nó có thể giống nhau đối với nhiều giao dịch cho nhiều người và không được sử dụng SAU ĐÓ để chi tiêu. Một R mới được tạo ra mỗi khi bạn muốn phát một giao dịch CryptoNote mới. Hơn nữa, R chỉ được sử dụng để kiểm tra xem bạn có phải là người nhận giao dịch hay không. Đó không phải là dữ liệu rác mà là rác đối với bất kỳ ai không có khóa riêng được liên kết với (A, B). Mặt khác, khóa Đích P = Hs(rA)G + B là một phần của đầu ra Tx. mọi người việc duyệt qua mọi dữ liệu của giao dịch đi qua phải kiểm tra P* được tạo bởi chính chúng với P này để xem liệu họ có sở hữu giao dịch chuyển tiếp này hay không. Bất kỳ ai có đầu ra giao dịch chưa chi tiêu (UTXO) sẽ có một loạt các chữ P này được sắp xếp với số lượng. Để chi tiêud, họ ký một số tin nhắn mới bao gồm P. Alice phải ký giao dịch này bằng (các) khóa riêng một lần được liên kết với (các) Khóa đích đầu ra giao dịch chưa được chi tiêu. Mỗi khóa đích do Alice sở hữu đều được trang bị với khóa riêng một lần cũng được sở hữu (có lẽ) bởi Alice. Mỗi lần Alice muốn gửi nội dung của khóa đích cho tôi, hoặc Bob, hoặc Brenda, hoặc Charlie hoặc Charlene, cô ấy sử dụng khóa riêng của mình để ký giao dịch. Khi nhận được giao dịch, tôi sẽ nhận được một giao dịch mới Khóa công khai Tx, khóa công khai Đích mới và tôi sẽ có thể khôi phục khóa riêng x một lần mới. Kết hợp khóa riêng một lần của tôi, x, với Đích công khai của giao dịch mới (các) khóa là cách chúng tôi gửi một giao dịch mới
- Bob có thể khôi phục khóa riêng một lần tương ứng: x = Hs(aR) + b, do đó P = xG. Anh ta có thể sử dụng sản lượng này bất cứ lúc nào bằng cách ký một giao dịch với x. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích P ′ = Hs(aR)G + bG khóa công khai một lần x = Hs(aR) + b khóa riêng một lần Người nhận khóa riêng (a, b) R P' ?= P Hình 5. Kiểm tra giao dịch đến. Kết quả là Bob nhận được các khoản thanh toán đến, được liên kết với các khóa công khai một lần. không thể liên kết được đối với người xem. Một số lưu ý bổ sung: • Khi Bob “nhận ra” các giao dịch của mình (xem bước 5), thực tế anh ấy chỉ sử dụng một nửa số tiền của mình thông tin cá nhân: (a, B). Cặp này còn được gọi là khóa theo dõi, có thể được chuyển qua cho bên thứ ba (Carol). Bob có thể ủy quyền cho cô ấy xử lý các giao dịch mới. Bob không cần phải tin tưởng Carol một cách rõ ràng, vì cô ấy không thể khôi phục được khóa bí mật một lần. không có khóa riêng đầy đủ của Bob (a, b). Cách tiếp cận này hữu ích khi Bob thiếu băng thông hoặc sức mạnh tính toán (điện thoại thông minh, ví phần cứng, v.v.). • Trong trường hợp Alice muốn chứng minh cô ấy đã gửi giao dịch đến địa chỉ của Bob, cô ấy có thể tiết lộ r hoặc sử dụng bất kỳ loại giao thức không có kiến thức nào để chứng minh rằng cô ấy biết r (ví dụ bằng cách ký giao dịch với r). • Nếu Bob muốn có một địa chỉ tương thích với việc kiểm tra, nơi tất cả các giao dịch đến đều được có thể liên kết được, anh ta có thể xuất bản khóa theo dõi của mình hoặc sử dụng địa chỉ bị cắt ngắn. Địa chỉ đó chỉ đại diện cho một khóa ec công khai B và phần còn lại mà giao thức yêu cầu là suy ra từ nó như sau: a = Hs(B) và A = Hs(B)G. Trong cả hai trường hợp, mỗi người đều có thể “nhận ra” tất cả giao dịch đến của Bob, nhưng tất nhiên, không ai có thể chi tiêu các khoản tiền được bao bọc bên trong chúng mà không có khóa bí mật b. 4.4 Chữ ký đổ chuông một lần Giao thức dựa trên chữ ký vòng một lần cho phép người dùng đạt được khả năng hủy liên kết vô điều kiện. Thật không may, các loại chữ ký mật mã thông thường cho phép theo dõi các giao dịch người gửi và người nhận tương ứng. Giải pháp của chúng tôi cho sự thiếu sót này nằm ở việc sử dụng một chữ ký khác hơn những loại hiện đang được sử dụng trong hệ thống tiền điện tử. Đầu tiên chúng tôi sẽ cung cấp một mô tả chung về thuật toán của chúng tôi mà không có tham chiếu rõ ràng đến tiền điện tử. Chữ ký vòng một lần chứa bốn thuật toán: (GEN, SIG, VER, LNK): GEN: lấy tham số công khai và xuất ra cặp ec (P, x) và khóa chung I. SIG: nhận thông điệp m, tập \(S'\) khóa công khai {Pi}i̸=s, một cặp (Ps, xs) và xuất ra chữ ký \(\sigma\) và một tập hợp \(S = \)S'\( \cup \{P_s\}\). 8
-
Bob có thể khôi phục khóa riêng một lần tương ứng: x = Hs(aR) + b, do đó P = xG. Anh ta có thể sử dụng sản lượng này bất cứ lúc nào bằng cách ký một giao dịch với x. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích P ′ = Hs(aR)G + bG khóa công khai một lần x = Hs(aR) + b khóa riêng một lần Người nhận khóa riêng (a, b) R P' ?= P Hình 5. Kiểm tra giao dịch đến. Kết quả là Bob nhận được các khoản thanh toán đến, được liên kết với các khóa công khai một lần. không thể liên kết được đối với người xem. Một số lưu ý bổ sung: • Khi Bob “nhận ra” các giao dịch của mình (xem bước 5), thực tế anh ấy chỉ sử dụng một nửa số tiền của mình thông tin cá nhân: (a, B). Cặp này còn được gọi là khóa theo dõi, có thể được chuyển qua cho bên thứ ba (Carol). Bob có thể ủy quyền cho cô ấy xử lý các giao dịch mới. Bob không cần phải tin tưởng Carol một cách rõ ràng, vì cô ấy không thể khôi phục được khóa bí mật một lần. không có khóa riêng đầy đủ của Bob (a, b). Cách tiếp cận này hữu ích khi Bob thiếu băng thông hoặc sức mạnh tính toán (điện thoại thông minh, ví phần cứng, v.v.). • Trong trường hợp Alice muốn chứng minh cô ấy đã gửi giao dịch đến địa chỉ của Bob, cô ấy có thể tiết lộ r hoặc sử dụng bất kỳ loại giao thức không có kiến thức nào để chứng minh rằng cô ấy biết r (ví dụ bằng cách ký giao dịch với r). • Nếu Bob muốn có một địa chỉ tương thích với việc kiểm tra, nơi tất cả các giao dịch đến đều được có thể liên kết được, anh ta có thể xuất bản khóa theo dõi của mình hoặc sử dụng địa chỉ bị cắt ngắn. Địa chỉ đó chỉ đại diện cho một khóa ec công khai B và phần còn lại mà giao thức yêu cầu là suy ra từ nó như sau: a = Hs(B) và A = Hs(B)G. Trong cả hai trường hợp, mỗi người đều có thể “nhận ra” tất cả giao dịch đến của Bob, nhưng tất nhiên, không ai có thể chi tiêu các khoản tiền được bao bọc bên trong chúng mà không có khóa bí mật b. 4.4 Chữ ký đổ chuông một lần Giao thức dựa trên chữ ký vòng một lần cho phép người dùng đạt được khả năng hủy liên kết vô điều kiện. Thật không may, các loại chữ ký mật mã thông thường cho phép theo dõi các giao dịch người gửi và người nhận tương ứng. Giải pháp của chúng tôi cho sự thiếu sót này nằm ở việc sử dụng một chữ ký khác hơn những loại hiện đang được sử dụng trong hệ thống tiền điện tử. Đầu tiên chúng tôi sẽ cung cấp một gentất cả mô tả về thuật toán của chúng tôi mà không có tham chiếu rõ ràng đến tiền điện tử. Chữ ký vòng một lần chứa bốn thuật toán: (GEN, SIG, VER, LNK): GEN: lấy tham số công khai và xuất ra cặp ec (P, x) và khóa chung I. SIG: nhận thông điệp m, tập \(S'\) khóa công khai {Pi}i̸=s, một cặp (Ps, xs) và xuất ra chữ ký \(\sigma\) và một tập hợp \(S = \)S'\( \cup \{P_s\}\). 8 15 Đầu ra giao dịch chưa chi tiêu ở đây trông như thế nào? Sơ đồ gợi ý rằng đầu ra giao dịch chỉ bao gồm hai điểm dữ liệu: số tiền và khóa đích. Nhưng đây không phải đủ vì khi tôi cố gắng sử dụng "đầu ra" này, tôi vẫn cần biết R=rG. Hãy nhớ rằng, r được người gửi chọn và R là a) được sử dụng để nhận dạng các ghi chú tiền điện tử đến là của bạn sở hữu và b) được sử dụng để tạo khóa riêng một lần được sử dụng để "yêu cầu" tiền điện tử của bạn. Phần này tôi không hiểu? Lấy lý thuyết "được rồi, chúng tôi có những thứ này chữ ký và giao dịch, và chúng tôi chuyển chúng qua lại" vào thế giới lập trình "được rồi, thông tin cụ thể nào tạo nên một cá nhân UTXO?" Cách tốt nhất để trả lời câu hỏi đó là đào sâu vào nội dung của mã hoàn toàn không có chú thích. Làm tốt lắm, nhóm bytecoin. Nhớ lại: khả năng liên kết có nghĩa là "có phải cùng một người đã gửi không?" và khả năng không liên kết có nghĩa là "đã làm như vậy người ta nhận được không?”. Vì vậy, một hệ thống có thể liên kết được hoặc không thể liên kết được, không thể liên kết được hoặc không thể liên kết được. Khó chịu, tôi biết. Vì vậy, khi Nic van Saberhagen ở đây nói "...các khoản thanh toán đến [được] liên kết với một lần các khóa công khai mà người xem không thể liên kết được", hãy xem ý anh ấy là gì. Đầu tiên, hãy xem xét tình huống trong đó Alice gửi cho Bob hai giao dịch riêng biệt từ cùng một địa chỉ đến cùng một địa chỉ. Trong vũ trụ Bitcoin, Alice đã phạm sai lầm rồi gửi từ cùng một địa chỉ và do đó giao dịch đã không đạt được mong muốn của chúng tôi về số lượng có hạn khả năng liên kết. Hơn nữa, vì cô ấy đã gửi tiền đến cùng một địa chỉ nên cô ấy đã thất bại trong mong muốn của chúng tôi. vì khả năng không liên kết được. Giao dịch bitcoin này vừa có thể (hoàn toàn) có thể liên kết vừa không thể hủy liên kết. Mặt khác, trong thế giới tiền điện tử, giả sử Alice gửi cho Bob một số tiền điện tử, sử dụng địa chỉ công cộng của Bob. Cô ấy chọn làm bộ khóa công khai khó hiểu của mình, tất cả đều được công khai chìa khóa trong khu vực tàu điện ngầm Washington DC. Alex tạo khóa công khai một lần bằng chính khóa của cô ấy thông tin và thông tin công khai của Bob. Cô ấy gửi tiền đi và bất kỳ người quan sát nào cũng sẽ chỉ có thể thu thập được "Ai đó từ khu vực đô thị Washington DC đã gửi 2,3 tiền điện tử tới địa chỉ công khai một lần XYZ123." Chúng tôi có quyền kiểm soát xác suất đối với khả năng liên kết ở đây, vì vậy chúng tôi sẽ gọi đây là "gần như không thể liên kết". Chúng tôi cũng chỉ thấy tiền khóa công khai một lần được gửi tới. Ngay cả khi chúng tôi nghi ngờ người nhận là Bob, chúng tôi không có khóa riêng của anh ấy và vì vậy chúng tôi không thể kiểm tra xem một giao dịch được chuyển thuộc về Bob chứ đừng nói đến việc tạo khóa riêng một lần của anh ấy để đổi tiền điện tử của anh ấy. Vậy cái này trên thực tế là hoàn toàn "không thể liên kết được". Vì vậy, đây là thủ thuật gọn gàng nhất trong tất cả. Ai muốn thực sự tin tưởng một MtGox khác? Chúng tôi có thể thoải mái lưu trữ một số lượng BTC trên Coinbase, nhưng bảo mật bitcoin cao nhất là một ví vật lý. Điều đó thật bất tiện. Trong trường hợp này, bạn có thể cho đi một nửa khóa riêng của mình một cách đáng tin cậy mà không ảnh hưởng đến tài khoản của bạn. khả năng tiêu tiền của bản thân. Khi làm điều này, tất cả những gì bạn đang làm là nói cho ai đó cách phá vỡ tính không liên kết. Cái khác các đặc tính của CN hoạt động giống như một loại tiền tệ được bảo toàn, như bằng chứng chống chi tiêu gấp đôi và không có gì.
-
Bob có thể khôi phục khóa riêng một lần tương ứng: x = Hs(aR) + b, do đó P = xG. Anh ta có thể sử dụng sản lượng này bất cứ lúc nào bằng cách ký một giao dịch với x. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích P ′ = Hs(aR)G + bG khóa công khai một lần x = Hs(aR) + b khóa riêng một lần Người nhận khóa riêng (a, b) R P' ?= P Hình 5. Kiểm tra giao dịch đến. Kết quả là Bob nhận được các khoản thanh toán đến, được liên kết với các khóa công khai một lần. không thể liên kết được đối với người xem. Một số lưu ý bổ sung: • Khi Bob “nhận ra” các giao dịch của mình (xem bước 5), thực tế anh ấy chỉ sử dụng một nửa số tiền của mình thông tin cá nhân: (a, B). Cặp này còn được gọi là khóa theo dõi, có thể được chuyển qua cho bên thứ ba (Carol). Bob có thể ủy quyền cho cô ấy xử lý các giao dịch mới. Bob không cần phải tin tưởng Carol một cách rõ ràng, vì cô ấy không thể khôi phục được khóa bí mật một lần. không có khóa riêng đầy đủ của Bob (a, b). Cách tiếp cận này hữu ích khi Bob thiếu băng thông hoặc sức mạnh tính toán (điện thoại thông minh, ví phần cứng, v.v.). • Trong trường hợp Alice muốn chứng minh cô ấy đã gửi giao dịch đến địa chỉ của Bob, cô ấy có thể tiết lộ r hoặc sử dụng bất kỳ loại giao thức không có kiến thức nào để chứng minh rằng cô ấy biết r (ví dụ bằng cách ký giao dịch với r). • Nếu Bob muốn có một địa chỉ tương thích với việc kiểm tra, nơi tất cả các giao dịch đến đều được có thể liên kết được, anh ta có thể xuất bản khóa theo dõi của mình hoặc sử dụng địa chỉ bị cắt ngắn. Địa chỉ đó chỉ đại diện cho một khóa ec công khai B và phần còn lại mà giao thức yêu cầu là suy ra từ nó như sau: a = Hs(B) và A = Hs(B)G. Trong cả hai trường hợp, mỗi người đều có thể “nhận ra” tất cả giao dịch đến của Bob, nhưng tất nhiên, không ai có thể chi tiêu các khoản tiền được bao bọc bên trong chúng mà không có khóa bí mật b. 4.4 Chữ ký đổ chuông một lần Giao thức dựa trên chữ ký vòng một lần cho phép người dùng đạt được khả năng hủy liên kết vô điều kiện. Thật không may, các loại chữ ký mật mã thông thường cho phép theo dõi các giao dịch người gửi và người nhận tương ứng. Giải pháp của chúng tôi cho sự thiếu sót này nằm ở việc sử dụng một chữ ký khác hơn những loại hiện đang được sử dụng trong hệ thống tiền điện tử. Đầu tiên chúng tôi sẽ cung cấp một mô tả chung về thuật toán của chúng tôi mà không có tham chiếu rõ ràng đến tiền điện tử. Chữ ký vòng một lần chứa bốn thuật toán: (GEN, SIG, VER, LNK): GEN: lấy tham số công khai và xuất ra cặp ec (P, x) và khóa chung I. SIG: nhận thông điệp m, tập \(S'\) khóa công khai {Pi}i̸=s, một cặp (Ps, xs) và xuất ra chữ ký \(\sigma\) và một tập hợp \(S = \)S'\( \cup \{P_s\}\). 8
- Bob có thể khôi phục khóa riêng một lần tương ứng: x = Hs(aR) + b, do đó P = xG. Anh ta có thể sử dụng sản lượng này bất cứ lúc nào bằng cách ký một giao dịch với x. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích P ′ = Hs(aR)G + bG khóa công khai một lần x = Hs(aR) + b khóa riêng một lần Người nhận khóa riêng (a, b) R P' ?= P Hình 5. Kiểm tra giao dịch đến. Kết quả là Bob nhận được các khoản thanh toán đến, được liên kết với các khóa công khai một lần. không thể liên kết được đối với người xem. Một số lưu ý bổ sung: • Khi Bob “nhận ra” các giao dịch của mình (xem bước 5), thực tế anh ấy chỉ sử dụng một nửa số tiền của mình thông tin cá nhân: (a, B). Cặp này còn được gọi là khóa theo dõi, có thể được chuyển qua cho bên thứ ba (Carol). Bob có thể ủy quyền cho cô ấy xử lý các giao dịch mới. Bob không cần phải tin tưởng Carol một cách rõ ràng, vì cô ấy không thể khôi phục được khóa bí mật một lần. không có khóa riêng đầy đủ của Bob (a, b). Cách tiếp cận này hữu ích khi Bob thiếu băng thông hoặc sức mạnh tính toán (điện thoại thông minh, ví phần cứng, v.v.). • Trong trường hợp Alice muốn chứng minh cô ấy đã gửi giao dịch đến địa chỉ của Bob, cô ấy có thể tiết lộ r hoặc sử dụng bất kỳ loại giao thức không có kiến thức nào để chứng minh rằng cô ấy biết r (ví dụ bằng cách ký giao dịch với r). • Nếu Bob muốn có một địa chỉ tương thích với việc kiểm tra, nơi tất cả các giao dịch đến đều được có thể liên kết được, anh ta có thể xuất bản khóa theo dõi của mình hoặc sử dụng địa chỉ bị cắt ngắn. Địa chỉ đó chỉ đại diện cho một khóa ec công khai B và phần còn lại mà giao thức yêu cầu là suy ra từ nó như sau: a = Hs(B) và A = Hs(B)G. Trong cả hai trường hợp, mỗi người đều có thể “nhận ra” tất cả giao dịch đến của Bob, nhưng tất nhiên, không ai có thể chi tiêu các khoản tiền được bao bọc bên trong chúng mà không có khóa bí mật b. 4.4 Chữ ký đổ chuông một lần Giao thức dựa trên chữ ký vòng một lần cho phép người dùng đạt được khả năng hủy liên kết vô điều kiện. Thật không may, các loại chữ ký mật mã thông thường cho phép theo dõi các giao dịch người gửi và người nhận tương ứng. Giải pháp của chúng tôi cho sự thiếu sót này nằm ở việc sử dụng một chữ ký khác hơn những loại hiện đang được sử dụng trong hệ thống tiền điện tử. Đầu tiên chúng tôi sẽ cung cấp một gentất cả mô tả về thuật toán của chúng tôi mà không có tham chiếu rõ ràng đến tiền điện tử. Chữ ký vòng một lần chứa bốn thuật toán: (GEN, SIG, VER, LNK): GEN: lấy tham số công khai và xuất ra cặp ec (P, x) và khóa chung I. SIG: nhận thông điệp m, tập \(S'\) khóa công khai {Pi}i̸=s, một cặp (Ps, xs) và xuất ra chữ ký \(\sigma\) và một tập hợp \(S = \)S'\( \cup \{P_s\}\). 8 16 Có, vậy là bây giờ chúng ta có a) địa chỉ thanh toán và b) ID thanh toán. Một nhà phê bình có thể hỏi "chúng ta có thực sự cần phải làm điều này không? Rốt cuộc, nếu một thương gia nhận được 112.00678952 CN chính xác, và đó là đơn đặt hàng của tôi, và tôi có ảnh chụp màn hình hoặc biên nhận hay bất cứ thứ gì, phải không? mức độ chính xác điên rồ có đủ không?" Câu trả lời là "có lẽ, hầu hết thời gian, hàng ngày, giao dịch trực tiếp." Tuy nhiên, tình huống phổ biến hơn (đặc biệt là trong thế giới kỹ thuật số) là: một thương gia bán một tập hợp các đối tượng, mỗi đối tượng có một mức giá cố định. Giả sử vật A là 0,001 CN, vật B là 0,01 CN và vật C là 0,1 CN. Bây giờ, nếu người bán nhận được đơn hàng với giá 1.618 CN thì có rất nhiều (nhiều!) cách để sắp xếp đơn hàng cho khách hàng. Và do đó, nếu không có loại ID thanh toán nào đó, xác định cái gọi là đơn hàng "duy nhất" của một khách hàng với cái gọi là chi phí "duy nhất" của họ trật tự trở nên không thể. Buồn cười hơn nữa: nếu mọi thứ trong cửa hàng trực tuyến của tôi có giá chính xác là 1,0 CN, và tôi có được 1000 khách hàng mỗi ngày? Và bạn muốn chứng minh rằng bạn đã mua đúng 3 đồ vật hai tuần trước? Không có ID thanh toán? Chúc may mắn, anh bạn. Tóm tắt câu chuyện: Khi Bob công bố một địa chỉ thanh toán, cuối cùng anh ấy cũng có thể công bố một địa chỉ thanh toán. ID thanh toán (xem ví dụ: tiền gửi Poloniex XMR). Điều này khác với những gì được mô tả trong văn bản ở đây Alice là người tạo ID thanh toán. Phải có cách nào đó để Bob tạo ID thanh toán. (a,B) Hãy nhớ lại rằng khóa theo dõi (a,B) có thể được công bố; mất đi tính bí mật về giá trị của ý chí 'a' không vi phạm khả năng chi tiêu của bạn hoặc cho phép người khác ăn trộm của bạn (tôi nghĩ... điều đó sẽ có được chứng minh), nó sẽ chỉ cho phép mọi người xem tất cả các giao dịch đến. Một địa chỉ bị cắt ngắn, như được mô tả trong đoạn này, chỉ cần lấy phần "riêng tư" của khóa và tạo ra nó từ phần "công khai". Tiết lộ giá trị cho 'a' sẽ loại bỏ khả năng không liên kết nhưng sẽ bảo toàn phần còn lại của giao dịch. Tác giả muốn nói là "không thể hủy liên kết" vì không thể liên kết được đề cập đến người nhận và có thể liên kết được đề cập đến người gửi. Cũng rõ ràng là tác giả đã không nhận ra rằng có hai khía cạnh khác nhau về khả năng liên kết. Vì xét cho cùng, giao dịch là một đối tượng được định hướng trên biểu đồ nên sẽ có hai câu hỏi: "hai giao dịch này có đến cùng một người không?" và "hai giao dịch này sắp diễn ra từ cùng một người?” Đây là chính sách "không quay lại", theo đó thuộc tính không thể liên kết của CryptoNote được có điều kiện. Điều đó có nghĩa là Bob có thể chọn các giao dịch đến của mình để không thể hủy liên kết được sử dụng chính sách này. Đây là một tuyên bố mà họ chứng minh theo Mô hình Oracle ngẫu nhiên. Chúng ta sẽ đạt được điều đó; sự ngẫu nhiên Oracle có ưu và nhược điểm.
VER: nhận thông điệp m, tập S, chữ ký \(\sigma\) và xuất ra “true” hoặc “false”. LNK: lấy tập I = {Ii}, chữ ký \(\sigma\) và xuất ra “được liên kết” hoặc “độc lập”. Ý tưởng đằng sau giao thức này khá đơn giản: người dùng tạo ra một chữ ký có thể được được kiểm tra bằng một bộ khóa công khai chứ không phải bằng một khóa chung duy nhất. Danh tính của người ký là không thể phân biệt được với những người dùng khác có khóa chung trong bộ cho đến khi chủ sở hữu tạo ra chữ ký thứ hai sử dụng cùng một cặp khóa. Khóa riêng x0 \(\cdots\) xi \(\cdots\) xn Khóa công khai P0 \(\cdots\) Pi \(\cdots\) Pn Nhẫn Chữ ký ký tên xác minh Hình 6. Ẩn danh chữ ký vòng. GEN: Người ký chọn một khóa bí mật ngẫu nhiên \(x \in [1, l - 1]\) và tính toán tương ứng khóa công khai P = xG. Ngoài ra, anh ta còn tính một khóa công khai khác I = xHp(P) mà chúng ta sẽ gọi là “hình ảnh quan trọng”. SIG: Người ký tạo chữ ký vòng một lần với kiến thức không tương tác chứng minh bằng cách sử dụng các kỹ thuật từ [21]. Anh ta chọn một tập con ngẫu nhiên \(S'\) của n từ những người dùng khác khóa công khai Pi, cặp khóa riêng của anh ta (x, P) và ảnh khóa I. Giả sử 0 n là chỉ số bí mật của người ký trong S (để khóa công khai của anh ta là Ps). Anh ấy chọn ngẫu nhiên một {qi | tôi = 0 . . . n} và {wi | tôi = 0 . . . n, i ̸= s} từ (1 . . . l) và áp dụng các phép biến đổi sau: Lý = ( khí công, nếu tôi = s qiG + wiPi, nếu tôi ̸= s Ri = ( qiHp(Pi), nếu tôi = s qiHp(Pi) + wiI, nếu tôi ̸= s Bước tiếp theo là nhận thử thách không tương tác: c = Hs(m, L1, . . , Ln, R1, . . . , Rn) Cuối cùng người ký tính toán phản hồi: ci = , nếu tôi ̸= s c − nP tôi=0 ci mod tôi, nếu tôi = s ri = ( khí, nếu tôi ̸= s qs −csx mod tôi, nếu tôi = s Chữ ký thu được là \(\sigma\) = (I, c1, . . , cn, r1, . . . , rn). 9 VER: nhận thông điệp m, tập S, chữ ký \(\sigma\) và xuất ra “true” hoặc “false”. LNK: lấy tập I = {Ii}, chữ ký \(\sigma\) và xuất ra “được liên kết” hoặc “độc lập”. Ý tưởng đằng sau giao thức này khá đơn giản: người dùng tạo ra một chữ ký có thể được được kiểm tra bằng một bộ khóa công khai chứ không phải bằng một khóa chung duy nhất. Danh tính của người ký là không thể phân biệt được với những người dùng khác có khóa chung trong bộ cho đến khi chủ sở hữu tạo ra chữ ký thứ hai sử dụng cùng một cặp khóa. Khóa riêng x0 \(\cdots\) xi \(\cdots\) xn Khóa công khai P0 \(\cdots\) Pi \(\cdots\) Pn Nhẫn Chữ ký ký tên xác minh Hình 6. Ẩn danh chữ ký vòng. GEN: Người ký chọn một khóa bí mật ngẫu nhiên \(x \in [1, l - 1]\) và tính toán tương ứng khóa công khai P = xG. Ngoài ra, anh ta còn tính một khóa công khai khác I = xHp(P) mà chúng ta sẽ gọi là “hình ảnh quan trọng”. SIG: Người ký tạo chữ ký vòng một lần với kiến thức không tương tác chứng minh bằng cách sử dụng các kỹ thuật từ [21]. Anh ta chọn một tập con ngẫu nhiên \(S'\) của n từ những người dùng khác khóa công khai Pi, cặp khóa riêng của anh ta (x, P) và ảnh khóa I. Giả sử 0 n là chỉ số bí mật của người ký trong S (để khóa công khai của anh ta là Ps). Anh ấy chọn ngẫu nhiên một {qi | tôi = 0 . . . n} và {wi | tôi = 0 . . . n, i ̸= s} từ (1 . . . l) và áp dụng các phép biến đổi sau: Lý = ( khí công, nếu tôi = s qiG + wiPi, nếu tôi ̸= s Ri = ( qiHp(Pi), nếu tôi = s qiHp(Pi) + wiI, nếu tôi ̸= s Bước tiếp theo là nhận thử thách không tương tác: c = Hs(m, L1, . . , Ln, R1, . . . , Rn) Cuối cùng người ký tính toán phản hồi: ci = , nếu tôi ̸= s c − nP tôi=0 ci mod tôi, nếu tôi = s ri = ( khí, nếu tôi ̸= s qs −csx mod tôi, nếu tôi = s Chữ ký thu được là \(\sigma\) = (I, c1, . . , cn, r1, . . . , rn). 9 17 Có lẽ điều này thật ngu ngốc nhưng phải cẩn thận khi kết hợp S và P_s. Nếu bạn chỉ nối thêm khóa công khai cuối cùng đến cuối, khả năng không liên kết bị hỏng vì bất kỳ ai kiểm tra các giao dịch chuyển qua chỉ có thể kiểm tra khóa công khai cuối cùng được liệt kê trong mỗi giao dịch và bùng nổ. Đó là khóa công khai liên quan đến người gửi. Vì vậy, sau khi hợp nhất, một bộ tạo số giả ngẫu nhiên phải được được sử dụng để hoán vị các khóa công khai đã chọn. "...cho đến khi chủ sở hữu tạo ra chữ ký thứ hai bằng cách sử dụng cùng một cặp khóa." Tôi ước (các) tác giả? sẽ giải thích chi tiết về điều này. Tôi tin rằng điều này có nghĩa là "hãy đảm bảo rằng mỗi khi bạn chọn một bộ khóa công khai để làm xáo trộn với chính mình, bạn chọn một bộ chìa khóa hoàn toàn mới không có hai chiếc chìa khóa nào giống nhau." Điều này có vẻ giống như một điều kiện khá mạnh để đặt vào tình trạng không thể liên kết được. Có lẽ "bạn chọn một bộ ngẫu nhiên mới từ tất cả các khóa có thể" với giả định rằng, mặc dù các giao lộ không tầm thường chắc chắn sẽ xảy ra, chúng sẽ không xảy ra thường xuyên. Dù bằng cách nào, tôi cần phải tìm hiểu sâu hơn về tuyên bố này. Điều này đang tạo ra chữ ký vòng. Bằng chứng không có kiến thức thật tuyệt vời: Tôi thách bạn chứng minh cho tôi thấy rằng bạn biết một bí mật mà không tiết lộ bí mật. Ví dụ: giả sử chúng ta đang ở lối vào của một hang động hình bánh rán, và ở phía sau hang động (ngoài tầm nhìn từ lối vào) là một ocánh cửa mới mà bạn khẳng định bạn có chìa khóa. Nếu bạn đi một hướng, nó luôn cho phép bạn đi qua, nhưng nếu bạn đi hướng hướng khác, bạn cần một chìa khóa. Nhưng bạn thậm chí còn không muốn cho tôi xem chìa khóa chứ đừng nói đến cho tôi thấy rằng nó mở được cánh cửa. Nhưng bạn muốn chứng minh cho tôi thấy rằng bạn biết cách mở cửa. Trong cài đặt tương tác, tôi tung đồng xu. Đầu ở bên trái, đuôi ở bên phải và bạn đi xuống hang động hình bánh rán theo cách đồng xu hướng dẫn bạn. Ở phía sau, ngoài tầm nhìn của tôi, bạn mở cửa để quay lại phía bên kia. Chúng tôi lặp lại thí nghiệm tung đồng xu cho đến khi tôi hài lòng rằng bạn có chìa khóa. Nhưng đó rõ ràng là bằng chứng không có kiến thức TƯƠNG TÁC. Có những phiên bản không tương tác mà bạn và tôi không bao giờ phải giao tiếp; Bằng cách này, không kẻ nghe trộm nào có thể can thiệp được. http://en.wikipedia.org/wiki/Zero-knowledge_proof Điều này trái ngược với định nghĩa trước đó.
VER: nhận thông điệp m, tập S, chữ ký \(\sigma\) và xuất ra “true” hoặc “false”. LNK: lấy tập I = {Ii}, chữ ký \(\sigma\) và xuất ra “được liên kết” hoặc “độc lập”. Ý tưởng đằng sau giao thức này khá đơn giản: người dùng tạo ra một chữ ký có thể được được kiểm tra bằng một bộ khóa công khai chứ không phải bằng một khóa chung duy nhất. Danh tính của người ký là không thể phân biệt được với những người dùng khác có khóa chung trong bộ cho đến khi chủ sở hữu tạo ra chữ ký thứ hai sử dụng cùng một cặp khóa. Khóa riêng x0 \(\cdots\) xi \(\cdots\) xn Khóa công khai P0 \(\cdots\) Pi \(\cdots\) Pn Nhẫn Chữ ký ký tên xác minh Hình 6. Ẩn danh chữ ký vòng. GEN: Người ký chọn một khóa bí mật ngẫu nhiên \(x \in [1, l - 1]\) và tính toán tương ứng khóa công khai P = xG. Ngoài ra, anh ta còn tính một khóa công khai khác I = xHp(P) mà chúng ta sẽ gọi là “hình ảnh quan trọng”. SIG: Người ký tạo chữ ký vòng một lần với kiến thức không tương tác chứng minh bằng cách sử dụng các kỹ thuật từ [21]. Anh ta chọn một tập con ngẫu nhiên \(S'\) của n từ những người dùng khác khóa công khai Pi, cặp khóa riêng của anh ta (x, P) và ảnh khóa I. Giả sử 0 n là chỉ số bí mật của người ký trong S (để khóa công khai của anh ta là Ps). Anh ấy chọn ngẫu nhiên một {qi | tôi = 0 . . . n} và {wi | tôi = 0 . . . n, i ̸= s} từ (1 . . . l) và áp dụng các phép biến đổi sau: Lý = ( khí công, nếu tôi = s qiG + wiPi, nếu tôi ̸= s Ri = ( qiHp(Pi), nếu tôi = s qiHp(Pi) + wiI, nếu tôi ̸= s Bước tiếp theo là nhận thử thách không tương tác: c = Hs(m, L1, . . , Ln, R1, . . . , Rn) Cuối cùng người ký tính toán phản hồi: ci = , nếu tôi ̸= s c − nP tôi=0 ci mod tôi, nếu tôi = s ri = ( khí, nếu tôi ̸= s qs −csx mod tôi, nếu tôi = s Chữ ký thu được là \(\sigma\) = (I, c1, . . , cn, r1, . . . , rn). 9 VER: nhận thông điệp m, tập S, chữ ký \(\sigma\) và xuất ra “true” hoặc “false”. LNK: lấy tập I = {Ii}, chữ ký \(\sigma\) và xuất ra “được liên kết” hoặc “độc lập”. Ý tưởng đằng sau giao thức này khá đơn giản: người dùng tạo ra một chữ ký có thể được được kiểm tra bằng một bộ khóa công khai chứ không phải bằng một khóa chung duy nhất. Danh tính của người ký là không thể phân biệt được với những người dùng khác có khóa chung trong bộ cho đến khi chủ sở hữu tạo ra chữ ký thứ hai sử dụng cùng một cặp khóa. Khóa riêng x0 \(\cdots\) xi \(\cdots\) xn Khóa công khai P0 \(\cdots\) Pi \(\cdots\) Pn Nhẫn Chữ ký ký tên xác minh Hình 6. Ẩn danh chữ ký vòng. GEN: Người ký chọn một khóa bí mật ngẫu nhiên \(x \in [1, l - 1]\) và tính toán tương ứng khóa công khai P = xG. Ngoài ra, anh ta còn tính một khóa công khai khác I = xHp(P) mà chúng ta sẽ gọi là “hình ảnh quan trọng”. SIG: Người ký tạo chữ ký vòng một lần với kiến thức không tương tác chứng minh bằng cách sử dụng các kỹ thuật từ [21]. Anh ta chọn một tập con ngẫu nhiên \(S'\) của n từ những người dùng khác khóa công khai Pi, cặp khóa riêng của anh ta (x, P) và ảnh khóa I. Giả sử 0 n là chỉ số bí mật của người ký trong S (để khóa công khai của anh ta là Ps). Anh ấy chọn ngẫu nhiên một {qi | tôi = 0 . . . n} và {wi | tôi = 0 . . . n, i ̸= s} từ (1 . . . l) và áp dụng các phép biến đổi sau: Lý = ( khí công, nếu tôi = s qiG + wiPi, nếu tôi ̸= s Ri = ( qiHp(Pi), nếu tôi = s qiHp(Pi) + wiI, nếu tôi ̸= s Bước tiếp theo là nhận thử thách không tương tác: c = Hs(m, L1, . . , Ln, R1, . . . , Rn) Cuối cùng người ký tính toán phản hồi: ci = , nếu tôi ̸= s c − nP tôi=0 ci mod tôi, nếu tôi = s ri = ( khí, nếu tôi ̸= s qs −csx mod tôi, nếu tôi = s Chữ ký thu được là \(\sigma\) = (I, c1, . . , cn, r1, . . . , rn). 9 18 Toàn bộ lĩnh vực này là bất khả tri về tiền điện tử, chỉ mô tả thuật toán chữ ký vòng mà không cần tham chiếu đến tiền tệ. Tôi nghi ngờ một số ký hiệu nhất quán với phần còn lại của bài báo, mặc dù. Ví dụ: x là khóa bí mật "ngẫu nhiên" được chọn trong GEN, cung cấp khóa chung P và hình ảnh khóa công khai I. Giá trị này của x là giá trị Bob tính toán ở phần 6 trang 8. Vậy đây là bắt đầu làm sáng tỏ một số nhầm lẫn từ mô tả trước đó. Điều này thật tuyệt vời; tiền không được chuyển từ "địa chỉ công cộng của Alice sang địa chỉ công cộng của Bob địa chỉ." Nó đang được chuyển từ địa chỉ một lần sang địa chỉ một lần. Vì vậy, theo một nghĩa nào đó, đây là cách mọi thứ hoạt động. Nếu Alex có một số tiền điện tử vì ai đó đã gửi chúng cho cô ấy, điều này có nghĩa là cô ấy có khóa riêng cần thiết để gửi chúng cho Bob. Cô ấy sử dụng trao đổi Diffie-Hellman sử dụng thông tin công khai của Bob để tạo địa chỉ một lần mới và các tiền điện tử được chuyển đến địa chỉ đó. Bây giờ, do trao đổi DH (có lẽ là an toàn) đã được sử dụng để tạo địa chỉ một lần mới mà Alex đã gửi CN của cô ấy tới, Bob là người duy nhất có khóa riêng cần thiết để lặp lại ở trên. Vậy bây giờ Bob là Alex. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation Tổng kết nên được lập chỉ mục trên j chứ không phải i. Mỗi c_i là rác ngẫu nhiên (vì w_i là ngẫu nhiên) ngoại trừ cái mông c_iđược liên kết với khóa thực tế liên quan đến chữ ký này. Giá trị của c là hash của thông tin trước đó. Tuy nhiên, tôi nghĩ rằng điều này có thể chứa một lỗi đánh máy tệ hơn việc sử dụng lại chỉ mục 'i', vì c_s dường như được xác định một cách ngầm định, không rõ ràng. Thật vậy, nếu chúng ta tin vào phương trình này thì chúng ta xác định được rằng c_s = (1/2)c - (1/2) tổng_i neq s c_i. Tức là hash trừ đi cả đống số ngẫu nhiên. Mặt khác, nếu phép tính tổng này được đọc là "c_s = (c - sum_j neq s c_j) mod l", sau đó chúng tôi lấy hash thông tin trước đó của chúng tôi, tạo ra một loạt các số ngẫu nhiên, trừ tất cả các số ngẫu nhiên đó khỏi hash và kết quả là c_s. Điều này có vẻ là điều gì "nên" xảy ra theo trực giác của tôi và phù hợp với bước xác minh ở trang 10. Nhưng trực giác không phải là toán học. Tôi sẽ tìm hiểu sâu hơn về điều này. Tương tự như trước; tất cả những thứ này sẽ là rác ngẫu nhiên ngoại trừ thứ liên quan đến thực tế khóa công khai của người ký x. Ngoại trừ lần này, đây là những gì tôi mong đợi hơn từ cấu trúc: r_i là ngẫu nhiên đối với i!=s và r_s chỉ được xác định bởi bí mật x và các giá trị được lập chỉ mục s của q_i và c_i.
VER: Người xác minh kiểm tra chữ ký bằng cách áp dụng các phép biến đổi nghịch đảo: ( L’ i = riG + ciPi R’ i = riHp(Pi) + ciI Cuối cùng, người xác minh sẽ kiểm tra xem nP tôi=0 ci ?= Hs(m, L′ 0, . . . , L' n, R' 0, . . . , R′ n) mod l Nếu đẳng thức này đúng, trình xác minh sẽ chạy thuật toán LNK. Ngược lại, người xác minh sẽ từ chối chữ ký. LNK: Trình xác minh kiểm tra xem liệu tôi có được sử dụng trong các chữ ký trước đây hay không (các giá trị này được lưu trong tập I). Việc sử dụng nhiều lần ngụ ý rằng hai chữ ký được tạo ra dưới cùng một khóa bí mật. Ý nghĩa của giao thức: bằng cách áp dụng phép biến đổi L, người ký chứng minh rằng mình biết sao cho x có ít nhất một Pi = xG. Để làm cho bằng chứng này không thể lặp lại, chúng tôi giới thiệu hình ảnh chính vì I = xHp(P). Người ký sử dụng cùng các hệ số (ri, ci) để chứng minh gần như cùng một tuyên bố: anh ta biết x sao cho ít nhất một \(H_p(P_i) = I \cdot x^{-1}\). Nếu ánh xạ \(x \to I\) là một phép tiêm: 1. Không ai có thể khôi phục khóa chung từ hình ảnh khóa và xác định người ký; 2. Người ký không được phép ký hai chữ ký có chữ I khác nhau và cùng chữ x. Phân tích bảo mật đầy đủ được cung cấp trong Phụ lục A. 4,5 Giao dịch CryptoNote tiêu chuẩn Bằng cách kết hợp cả hai phương pháp (khóa công khai không thể liên kết và chữ ký vòng không thể theo dõi), Bob đạt được mức độ riêng tư mới so với sơ đồ Bitcoin ban đầu. Nó yêu cầu anh ta chỉ lưu trữ một khóa riêng (a, b) và xuất bản (A, B) để bắt đầu nhận và gửi các giao dịch ẩn danh. Trong khi xác thực mỗi giao dịch, Bob chỉ thực hiện thêm hai phép nhân đường cong elip và một phép cộng cho mỗi đầu ra để kiểm tra xem giao dịch có thuộc về anh ta hay không. Đối với mỗi anh ấy đầu ra Bob khôi phục cặp khóa dùng một lần (pi, Pi) và lưu nó vào ví của mình. Mọi đầu vào đều có thể được chứng minh một cách gián tiếp là có cùng một chủ sở hữu chỉ khi chúng xuất hiện trong một giao dịch duy nhất. trong trên thực tế, mối quan hệ này khó thiết lập hơn nhiều do chữ ký vòng một lần. Với chữ ký vòng Bob có thể ẩn mọi đầu vào của người khác một cách hiệu quả; tất cả có thể người chi tiêu sẽ có thể trang bị được, ngay cả chủ sở hữu trước đó (Alice) cũng không có nhiều thông tin hơn bất kỳ người quan sát nào. Khi ký giao dịch của mình, Bob chỉ định n đầu ra nước ngoài với số tiền tương đương với số tiền của anh ấy. đầu ra, trộn tất cả chúng mà không có sự tham gia của người dùng khác. Bản thân Bob (cũng như bất kỳ ai khác) không biết liệu bất kỳ khoản thanh toán nào trong số này đã được chi tiêu hay chưa: một đầu ra có thể được sử dụng trong hàng nghìn chữ ký như một yếu tố mơ hồ và không bao giờ là mục tiêu che giấu. gấp đôi kiểm tra chi tiêu xảy ra trong giai đoạn LNK khi kiểm tra bộ ảnh chính đã sử dụng. Bob có thể tự mình chọn mức độ mơ hồ: n = 1 nghĩa là xác suất anh ta có chi tiêu đầu ra có xác suất 50%, n = 99 cho 1%. Kích thước của chữ ký kết quả tăng lên tuyến tính như O(n+1), do đó, tính ẩn danh được cải thiện sẽ khiến Bob phải trả thêm phí giao dịch. Anh ấy cũng có thể đặt n = 0 và làm cho chữ ký vòng của anh ta chỉ bao gồm một phần tử, tuy nhiên điều này sẽ ngay lập tức tiết lộ anh ta là một người chi tiêu. 10 VER: Người xác minh kiểm tra chữ ký bằng cách áp dụng các phép biến đổi nghịch đảo: ( L' i = riG + ciPi R’ i = riHp(Pi) + ciI Cuối cùng, người xác minh sẽ kiểm tra xem nP tôi=0 ci ?= Hs(m, L′ 0, . . . , L' n, R' 0, . . . , R′ n) mod l Nếu đẳng thức này đúng, trình xác minh sẽ chạy thuật toán LNK. Ngược lại, người xác minh sẽ từ chối chữ ký. LNK: Trình xác minh kiểm tra xem liệu tôi có được sử dụng trong các chữ ký trước đây hay không (các giá trị này được lưu trong tập I). Việc sử dụng nhiều lần ngụ ý rằng hai chữ ký được tạo ra dưới cùng một khóa bí mật. Ý nghĩa của giao thức: bằng cách áp dụng phép biến đổi L, người ký chứng minh rằng mình biết sao cho x có ít nhất một Pi = xG. Để làm cho bằng chứng này không thể lặp lại, chúng tôi giới thiệu hình ảnh chính vì I = xHp(P). Người ký sử dụng cùng các hệ số (ri, ci) để chứng minh gần như cùng một tuyên bố: anh ta biết x sao cho ít nhất một \(H_p(P_i) = I \cdot x^{-1}\). Nếu ánh xạ \(x \to I\) là một phép tiêm: 1. Không ai có thể khôi phục khóa chung từ hình ảnh khóa và xác định người ký; 2. Người ký không được phép ký hai chữ ký có chữ I khác nhau và cùng chữ x. Phân tích bảo mật đầy đủ được cung cấp trong Phụ lục A. 4,5 Giao dịch CryptoNote tiêu chuẩn Bằng cách kết hợp cả hai phương pháp (khóa công khai không thể liên kết và chữ ký vòng không thể theo dõi), Bob đạt được mức độ riêng tư mới so với sơ đồ Bitcoin ban đầu. Nó yêu cầu anh ta chỉ lưu trữ một khóa riêng (a, b) và xuất bản (A, B) để bắt đầu nhận và gửi các giao dịch ẩn danh. Trong khi xác thực mỗi giao dịch, Bob chỉ thực hiện thêm hai phép nhân đường cong elip và một phép cộng cho mỗi đầu ra để kiểm tra xem giao dịch có thuộc về anh ta hay không. Đối với mỗi anh ấy đầu ra Bob khôi phục cặp khóa một lần (pi, Pi) và stquặng nó vào ví của mình. Mọi đầu vào đều có thể được chứng minh một cách gián tiếp là có cùng một chủ sở hữu chỉ khi chúng xuất hiện trong một giao dịch duy nhất. trong trên thực tế, mối quan hệ này khó thiết lập hơn nhiều do chữ ký vòng một lần. Với chữ ký vòng Bob có thể ẩn mọi đầu vào của người khác một cách hiệu quả; tất cả có thể người chi tiêu sẽ có thể trang bị được, ngay cả chủ sở hữu trước đó (Alice) cũng không có nhiều thông tin hơn bất kỳ người quan sát nào. Khi ký giao dịch của mình, Bob chỉ định n đầu ra nước ngoài với số tiền tương đương với số tiền của anh ấy. đầu ra, trộn tất cả chúng mà không có sự tham gia của người dùng khác. Bản thân Bob (cũng như bất kỳ ai khác) không biết liệu bất kỳ khoản thanh toán nào trong số này đã được chi tiêu hay chưa: một đầu ra có thể được sử dụng trong hàng nghìn chữ ký như một yếu tố mơ hồ và không bao giờ là mục tiêu che giấu. gấp đôi kiểm tra chi tiêu xảy ra trong giai đoạn LNK khi kiểm tra bộ ảnh chính đã sử dụng. Bob có thể tự mình chọn mức độ mơ hồ: n = 1 nghĩa là xác suất anh ta có chi tiêu đầu ra có xác suất 50%, n = 99 cho 1%. Kích thước của chữ ký kết quả tăng lên tuyến tính như O(n+1), do đó, tính ẩn danh được cải thiện sẽ khiến Bob phải trả thêm phí giao dịch. Anh ấy cũng có thể đặt n = 0 và làm cho chữ ký vòng của anh ta chỉ bao gồm một phần tử, tuy nhiên điều này sẽ ngay lập tức tiết lộ anh ta là một người chi tiêu. 10 19 Lúc này, tôi vô cùng bối rối. Alex nhận được tin nhắn M có chữ ký (I,c_1, ..., c_n, r_1, ..., r_n) và danh sách công khai phím S. và cô ấy chạy VER. Điều này sẽ tính toán L_i’ và R_i’ Điều này xác minh rằng c_s = c - sum_i neq s c_i ở trang trước. Lúc đầu tôi RẤT (ha) bối rối. Bất kỳ ai cũng có thể tính L_i’ và R_i’. Thật vậy, mỗi r_i và c_i đã được công bố ở phần chữ ký sigma cùng với giá trị của I. Tập S = P_i của tất cả các khóa công khai cũng đã được công bố. Vì vậy, bất cứ ai đã nhìn thấy sigma và tập hợp khóa S = P_i sẽ nhận cùng giá trị cho L_i’ và R_i’ và do đó kiểm tra chữ ký. Nhưng rồi tôi nhớ ra phần này chỉ mô tả thuật toán chữ ký chứ không phải "kiểm tra nếu đã ký, hãy kiểm tra xem đã GỬI CHO TÔI chưa, và nếu vậy thì hãy tiêu tiền." Đây ĐƠN GIẢN là phần chữ ký của trò chơi. Tôi muốn đọc Phụ lục A khi tôi đến đó. Tôi muốn xem bản so sánh toàn diện giữa từng hoạt động của Cryptonote với Bitcoin. Ngoài ra, điện/sự bền vững. Những phần nào của thuật toán tạo thành "đầu vào" ở đây? Tôi tin rằng đầu vào giao dịch là Số tiền và tập hợp UTXO có tổng số tiền lớn hơn số tiền Số tiền. Điều này không rõ ràng. "Mục tiêu ẩn nấp?" Tôi đã nghĩ về điều này được vài phút rồi nhưng tôi vẫn chưa ý tưởng mù mờ nhất về ý nghĩa của nó. Một cuộc tấn công chi tiêu gấp đôi chỉ có thể được thực hiện bằng cách thao túng khóa đã sử dụng của nút bộ hình ảnh \(I\). "Mức độ mơ hồ" = n nhưng tổng số khóa công khai có trong giao dịch là n+1. Điều đó có nghĩa là, mức độ mơ hồ sẽ là "bạn muốn có bao nhiêu người KHÁC tham gia" đám đông à?" Theo mặc định, câu trả lời có thể sẽ là "càng nhiều càng tốt".
VER: Người xác minh kiểm tra chữ ký bằng cách áp dụng các phép biến đổi nghịch đảo: ( L' i = riG + ciPi R’ i = riHp(Pi) + ciI Cuối cùng, người xác minh sẽ kiểm tra xem nP tôi=0 ci ?= Hs(m, L′ 0, . . . , L' n, R' 0, . . . , R′ n) mod l Nếu đẳng thức này đúng, trình xác minh sẽ chạy thuật toán LNK. Ngược lại, người xác minh sẽ từ chối chữ ký. LNK: Trình xác minh kiểm tra xem liệu tôi có được sử dụng trong các chữ ký trước đây hay không (các giá trị này được lưu trong tập I). Việc sử dụng nhiều lần ngụ ý rằng hai chữ ký được tạo ra dưới cùng một khóa bí mật. Ý nghĩa của giao thức: bằng cách áp dụng phép biến đổi L, người ký chứng minh rằng mình biết sao cho x có ít nhất một Pi = xG. Để làm cho bằng chứng này không thể lặp lại, chúng tôi giới thiệu hình ảnh chính vì I = xHp(P). Người ký sử dụng cùng các hệ số (ri, ci) để chứng minh gần như cùng một tuyên bố: anh ta biết x sao cho ít nhất một \(H_p(P_i) = I \cdot x^{-1}\). Nếu ánh xạ \(x \to I\) là một phép tiêm: 1. Không ai có thể khôi phục khóa chung từ hình ảnh khóa và xác định người ký; 2. Người ký không được phép ký hai chữ ký có chữ I khác nhau và cùng chữ x. Phân tích bảo mật đầy đủ được cung cấp trong Phụ lục A. 4,5 Giao dịch CryptoNote tiêu chuẩn Bằng cách kết hợp cả hai phương pháp (khóa công khai không thể liên kết và chữ ký vòng không thể theo dõi), Bob đạt được mức độ bảo mật mới so với sơ đồ Bitcoin ban đầu. Nó yêu cầu anh ta chỉ lưu trữ một khóa riêng (a, b) và xuất bản (A, B) để bắt đầu nhận và gửi các giao dịch ẩn danh. Trong khi xác thực mỗi giao dịch, Bob chỉ thực hiện thêm hai phép nhân đường cong elip và một phép cộng cho mỗi đầu ra để kiểm tra xem giao dịch có thuộc về anh ta hay không. Đối với mỗi anh ấy đầu ra Bob khôi phục cặp khóa dùng một lần (pi, Pi) và lưu nó vào ví của mình. Mọi đầu vào đều có thể được chứng minh một cách gián tiếp là có cùng một chủ sở hữu chỉ khi chúng xuất hiện trong một giao dịch duy nhất. trong trên thực tế, mối quan hệ này khó thiết lập hơn nhiều do chữ ký vòng một lần. Với chữ ký vòng Bob có thể ẩn mọi đầu vào của người khác một cách hiệu quả; tất cả có thể người chi tiêu sẽ có thể trang bị được, ngay cả chủ sở hữu trước đó (Alice) cũng không có nhiều thông tin hơn bất kỳ người quan sát nào. Khi ký giao dịch của mình, Bob chỉ định n đầu ra nước ngoài với số tiền tương đương với số tiền của anh ấy. đầu ra, trộn tất cả chúng mà không có sự tham gia của người dùng khác. Bản thân Bob (cũng như bất kỳ ai khác) không biết liệu bất kỳ khoản thanh toán nào trong số này đã được chi tiêu hay chưa: một đầu ra có thể được sử dụng trong hàng nghìn chữ ký như một yếu tố mơ hồ và không bao giờ là mục tiêu che giấu. gấp đôi kiểm tra chi tiêu xảy ra trong giai đoạn LNK khi kiểm tra bộ ảnh chính đã sử dụng. Bob có thể tự mình chọn mức độ mơ hồ: n = 1 nghĩa là xác suất anh ta có chi tiêu đầu ra có xác suất 50%, n = 99 cho 1%. Kích thước của chữ ký kết quả tăng lên tuyến tính như O(n+1), do đó, tính ẩn danh được cải thiện sẽ khiến Bob phải trả thêm phí giao dịch. Anh ấy cũng có thể đặt n = 0 và làm cho chữ ký vòng của anh ta chỉ bao gồm một phần tử, tuy nhiên điều này sẽ ngay lập tức tiết lộ anh ta là một người chi tiêu. 10 VER: Người xác minh kiểm tra chữ ký bằng cách áp dụng các phép biến đổi nghịch đảo: ( L' i = riG + ciPi R’ i = riHp(Pi) + ciI Cuối cùng, người xác minh sẽ kiểm tra xem nP tôi=0 ci ?= Hs(m, L′ 0, . . . , L' n, R' 0, . . . , R′ n) mod l Nếu đẳng thức này đúng, trình xác minh sẽ chạy thuật toán LNK. Ngược lại, người xác minh sẽ từ chối chữ ký. LNK: Trình xác minh kiểm tra xem liệu tôi có được sử dụng trong các chữ ký trước đây hay không (các giá trị này được lưu trong tập I). Việc sử dụng nhiều lần ngụ ý rằng hai chữ ký được tạo ra dưới cùng một khóa bí mật. Ý nghĩa của giao thức: bằng cách áp dụng phép biến đổi L, người ký chứng minh rằng mình biết sao cho x có ít nhất một Pi = xG. Để làm cho bằng chứng này không thể lặp lại, chúng tôi giới thiệu hình ảnh chính vì I = xHp(P). Người ký sử dụng cùng các hệ số (ri, ci) để chứng minh gần như cùng một tuyên bố: anh ta biết x sao cho ít nhất một \(H_p(P_i) = I \cdot x^{-1}\). Nếu ánh xạ \(x \to I\) là một phép tiêm: 1. Không ai có thể khôi phục khóa chung từ hình ảnh khóa và xác định người ký; 2. Người ký không được phép ký hai chữ ký có chữ I khác nhau và cùng chữ x. Phân tích bảo mật đầy đủ được cung cấp trong Phụ lục A. 4,5 Giao dịch CryptoNote tiêu chuẩn Bằng cách kết hợp cả hai phương pháp (khóa công khai không thể liên kết và chữ ký vòng không thể theo dõi), Bob đạt được mức độ riêng tư mới so với sơ đồ Bitcoin ban đầu. Nó yêu cầu anh ta chỉ lưu trữ một khóa riêng (a, b) và xuất bản (A, B) để bắt đầu nhận và gửi các giao dịch ẩn danh. Trong khi xác thực mỗi giao dịch, Bob chỉ thực hiện thêm hai phép nhân đường cong elip và một phép cộng cho mỗi đầu ra để kiểm tra xem giao dịch có thuộc về anh ta hay không. Đối với mỗi anh ấy đầu ra Bob khôi phục cặp khóa một lần (pi, Pi) và stquặng nó vào ví của mình. Mọi đầu vào đều có thể được chứng minh một cách gián tiếp là có cùng một chủ sở hữu chỉ khi chúng xuất hiện trong một giao dịch duy nhất. trong trên thực tế, mối quan hệ này khó thiết lập hơn nhiều do chữ ký vòng một lần. Với chữ ký vòng Bob có thể ẩn mọi đầu vào của người khác một cách hiệu quả; tất cả có thể người chi tiêu sẽ có thể trang bị được, ngay cả chủ sở hữu trước đó (Alice) cũng không có nhiều thông tin hơn bất kỳ người quan sát nào. Khi ký giao dịch của mình, Bob chỉ định n đầu ra nước ngoài với số tiền tương đương với số tiền của anh ấy. đầu ra, trộn tất cả chúng mà không có sự tham gia của người dùng khác. Bản thân Bob (cũng như bất kỳ ai khác) không biết liệu bất kỳ khoản thanh toán nào trong số này đã được chi tiêu hay chưa: một đầu ra có thể được sử dụng trong hàng nghìn chữ ký như một yếu tố mơ hồ và không bao giờ là mục tiêu che giấu. gấp đôi kiểm tra chi tiêu xảy ra trong giai đoạn LNK khi kiểm tra bộ ảnh chính đã sử dụng. Bob có thể tự mình chọn mức độ mơ hồ: n = 1 nghĩa là xác suất anh ta có chi tiêu đầu ra có xác suất 50%, n = 99 cho 1%. Kích thước của chữ ký kết quả tăng lên tuyến tính như O(n+1), do đó, tính ẩn danh được cải thiện sẽ khiến Bob phải trả thêm phí giao dịch. Anh ấy cũng có thể đặt n = 0 và làm cho chữ ký vòng của anh ta chỉ bao gồm một phần tử, tuy nhiên điều này sẽ ngay lập tức tiết lộ anh ta là một người chi tiêu. 10 20 Điều này thật thú vị; trước đó, chúng tôi đã cung cấp một cách để người nhận, Bob, thực hiện tất cả việc THU NHẬP giao dịch không thể hủy liên kết bằng cách chọn một nửa số khóa riêng của anh ta một cách xác định hoặc bằng cách xuất bản một nửa khóa riêng của mình dưới dạng công khai. Đây là một loại chính sách không quay trở lại. Ở đây, chúng ta thấy một cách để người gửi, Alex, chọn một giao dịch gửi đi duy nhất có thể liên kết được, nhưng trên thực tế, điều này tiết lộ Alex là người gửi toàn bộ mạng lưới. Đây KHÔNG phải là một loại chính sách không thể quay lại. Đây là giao dịch theo giao dịch. Có chính sách thứ ba không? Người nhận, Bob, có thể tạo ID thanh toán duy nhất cho Alex không? không bao giờ thay đổi, có lẽ sử dụng trao đổi Diffie-Hellman? Nếu có ai bao gồm khoản thanh toán đó ID được gói ở đâu đó trong giao dịch của cô ấy tới địa chỉ của Bob, nó phải đến từ Alex. Bằng cách này, Alex không cần phải tiết lộ bản thân với toàn bộ mạng lưới bằng cách chọn liên kết một địa chỉ cụ thể giao dịch, nhưng cô ấy vẫn có thể nhận dạng chính mình với người mà cô ấy gửi tiền. Đây không phải là điều Poloniex làm sao?
Giao dịch đầu vào TX Đầu ra0 . . . đầu ra . . . đầu ra Hình ảnh chính Chữ ký Chữ ký nhẫn Khóa đích Đầu ra1 Khóa đích đầu ra Giao dịch nước ngoài Đầu ra của người gửi Khóa đích Cặp khóa dùng một lần Một lần khóa riêng Tôi = xHp(P) P, x Hình 7. Tạo chữ ký vòng trong một giao dịch tiêu chuẩn. 5 Bằng chứng công việc bình đẳng Trong phần này, chúng tôi đề xuất và xây dựng thuật toán proof-of-work mới. Mục tiêu chính của chúng tôi là thu hẹp khoảng cách giữa các công cụ khai thác CPU (đa số) và GPU/FPGA/ASIC (thiểu số). Đó là thích hợp là một số người dùng có thể có lợi thế nhất định so với những người khác, nhưng khoản đầu tư của họ ít nhất phải tăng trưởng tuyến tính với sức mạnh. Tổng quát hơn, sản xuất các thiết bị có mục đích đặc biệt phải càng ít lợi nhuận càng tốt. 5.1 Công trình liên quan Giao thức Bitcoin proof-of-work ban đầu sử dụng chức năng định giá sử dụng nhiều CPU SHA-256. Nó chủ yếu bao gồm các toán tử logic cơ bản và chỉ dựa vào tốc độ tính toán của do đó bộ xử lý hoàn toàn phù hợp cho việc triển khai đa lõi/băng tải. Tuy nhiên, máy tính hiện đại không bị giới hạn bởi số lượng thao tác mỗi giây, mà còn theo kích thước bộ nhớ. Mặc dù một số bộ xử lý có thể nhanh hơn đáng kể so với những bộ xử lý khác [8], kích thước bộ nhớ ít có khả năng khác nhau giữa các máy. Hàm giá giới hạn theo bộ nhớ lần đầu tiên được giới thiệu bởi Abadi và cộng sự và được định nghĩa là “các hàm có thời gian tính toán bị chi phối bởi thời gian truy cập bộ nhớ” [15]. Ý tưởng chính là xây dựng một thuật toán phân bổ một khối dữ liệu lớn (“scratchpad”) trong bộ nhớ có thể được truy cập tương đối chậm (ví dụ: RAM) và “truy cập vào chuỗi vị trí không thể đoán trước” bên trong nó. Một khối phải đủ lớn để bảo quản dữ liệu có lợi hơn việc tính toán lại nó cho mỗi lần truy cập. Thuật toán cũng nên ngăn chặn sự song song bên trong, do đó N luồng đồng thời sẽ cần bộ nhớ gấp N lần cùng một lúc. Dwork và cộng sự [22] đã nghiên cứu và chính thức hóa cách tiếp cận này khiến họ đề xuất một phương pháp khác biến thể của hàm định giá: “Mbound”. Một tác phẩm nữa thuộc về F. Coelho [20], người 11 Giao dịch đầu vào TX Đầu ra0 . . . đầu ra . . . đầu ra Hình ảnh chính Chữ ký Chữ ký nhẫn Khóa đích Đầu ra1 Khóa đích đầu ra Giao dịch nước ngoài Đầu ra của người gửi Khóa đích Cặp khóa dùng một lần Một lần khóa riêng Tôi = xHp(P) P, x Hình 7. Tạo chữ ký vòng trong một giao dịch tiêu chuẩn. 5 Bằng chứng công việc bình đẳng Trong phần này, chúng tôi đề xuất và xây dựng thuật toán proof-of-work mới. Mục tiêu chính của chúng tôi là thu hẹp khoảng cách giữa các công cụ khai thác CPU (đa số) và GPU/FPGA/ASIC (thiểu số). Đó là thích hợp là một số người dùng có thể có lợi thế nhất định so với những người khác, nhưng khoản đầu tư của họ ít nhất phải tăng trưởng tuyến tính với sức mạnh. Tổng quát hơn, sản xuất các thiết bị có mục đích đặc biệt phải càng ít lợi nhuận càng tốt. 5.1 Công trình liên quan Giao thức Bitcoin proof-of-work ban đầu sử dụng chức năng định giá sử dụng nhiều CPU SHA-256. Nó chủ yếu bao gồm các toán tử logic cơ bản và chỉ dựa vào tốc độ tính toán của do đó bộ xử lý hoàn toàn phù hợp cho việc triển khai đa lõi/băng tải. Tuy nhiên, máy tính hiện đại không bị giới hạn bởi số lượng thao tác mỗi giây, mà còn theo kích thước bộ nhớ. Mặc dù một số bộ xử lý có thể nhanh hơn đáng kể so với những bộ xử lý khác [8], kích thước bộ nhớ ít có khả năng khác nhau giữa các máy. Hàm giá giới hạn theo bộ nhớ lần đầu tiên được giới thiệu bởi Abadi và cộng sự và được định nghĩa là “các hàm có thời gian tính toán bị chi phối bởi thời gian truy cập bộ nhớ” [15]. Ý tưởng chính là xây dựng một thuật toán phân bổ một khối dữ liệu lớn (“scratchpad”) trong bộ nhớ có thể được truy cập tương đối chậm (ví dụ: RAM) và “truy cập vào chuỗi vị trí không thể đoán trước” bên trong nó. Một khối phải đủ lớn để bảo quản dữ liệu có lợi hơn việc tính toán lại nó cho mỗi lần truy cập. Thuật toán cũng nên ngăn chặn sự song song bên trong, do đó N luồng đồng thời sẽ cần bộ nhớ gấp N lần cùng một lúc. Dwork và cộng sự [22] đã nghiên cứu và chính thức hóa phương pháp này khiến họ đề xuất một phương pháp khác biến thể của hàm định giá: “Mbound”. Một tác phẩm nữa thuộc về F. Coelho [20], người 11 21 Bề ngoài, đây là UTXO của chúng tôi: số tiền và khóa đích. Nếu Alex là người xây dựng giao dịch tiêu chuẩn này và gửi cho Bob thì Alex cũng có khóa riêng đến từng điều này. Tôi rất thích sơ đồ này vì nó trả lời một số câu hỏi trước đó. Một đầu vào Txn bao gồm của một tập hợp các đầu ra Txn và một kehình ảnh y. Sau đó nó được ký bằng chữ ký vòng, bao gồm tất cả trong số các khóa riêng mà Alex sở hữu đối với tất cả các giao dịch nước ngoài được gói gọn trong thỏa thuận. các Đầu ra Txn bao gồm một số tiền và một khóa đích. Người nhận giao dịch có thể, theo ý muốn, tạo khóa riêng một lần của họ như được mô tả trước đó trong bài viết để sử dụng tiền. Sẽ rất thú vị khi tìm hiểu xem mã này khớp với mã thực tế đến mức nào... Không, Nic van Saberhagen mô tả một cách lỏng lẻo một số thuộc tính của thuật toán bằng chứng công việc, mà không thực sự mô tả thuật toán đó. Bản thân thuật toán CryptoNight sẽ YÊU CẦU phân tích sâu. Khi tôi đọc điều này, tôi lắp bắp. Đầu tư có nên tăng trưởng ít nhất là tuyến tính với sức mạnh hay nên đầu tư tăng trưởng nhiều nhất tuyến tính với sức mạnh? Và rồi tôi nhận ra; Tôi, với tư cách là một thợ mỏ hoặc một nhà đầu tư, thường nghĩ "tôi có thể nhận được bao nhiêu năng lượng" để đầu tư à?" chứ không phải "cần đầu tư bao nhiêu cho một lượng điện năng cố định?" Tất nhiên, biểu thị đầu tư là I và lũy thừa là P. Nếu I(P) là đầu tư là hàm của lũy thừa và P(I) là quyền lực như một hàm của đầu tư, chúng sẽ nghịch đảo với nhau (bất cứ nơi nào có thể tồn tại nghịch đảo). Và nếu I(P) nhanh hơn tuyến tính thì P(I) chậm hơn tuyến tính. Do đó, sẽ có một tỷ lệ lợi nhuận giảm cho các nhà đầu tư. Điều đó có nghĩa là, điều tác giả muốn nói ở đây là: "chắc chắn rồi, khi bạn đầu tư nhiều hơn, bạn sẽ nhận được nhiều hơn." quyền lực. Nhưng chúng ta nên cố gắng làm cho tỷ lệ lợi nhuận giảm đi." Cuối cùng, các khoản đầu tư vào CPU sẽ đạt mức cận tuyến tính; câu hỏi đặt ra là liệu các tác giả đã thiết kế một thuật toán POW sẽ buộc ASIC cũng phải làm điều này. Liệu một "tiền tệ tương lai" giả định có nên luôn được khai thác với nguồn tài nguyên chậm nhất/hạn chế nhất không? Bài báo của Abadi và cộng sự (có một số kỹ sư của Google và Microsoft là tác giả) là, về cơ bản, sử dụng thực tế là trong vài năm qua kích thước bộ nhớ đã nhỏ hơn nhiều sự khác biệt giữa các máy so với tốc độ bộ xử lý và với tỷ lệ công suất đầu tư cao hơn tuyến tính. Trong một vài năm nữa, điều này có thể phải được đánh giá lại! Mọi thứ đều là một cuộc chạy đua vũ trang... Việc xây dựng hàm hash là khó; việc xây dựng hàm hash thỏa mãn các ràng buộc này có vẻ khó khăn hơn. Bài viết này dường như không có lời giải thích nào về thực tế hashing thuật toán CryptoNight. Tôi nghĩ đó là cách triển khai SHA-3 sử dụng bộ nhớ cứng, dựa trên trên các bài đăng trên diễn đàn nhưng tôi không biết... và đó chính là vấn đề. Nó phải được giải thích.
đề xuất giải pháp hiệu quả nhất: “Hokkaido”. Theo hiểu biết của chúng tôi, công việc cuối cùng dựa trên ý tưởng tìm kiếm giả ngẫu nhiên trong một mảng lớn là thuật toán được gọi là “mã hóa” của C. Percival [32]. Không giống như các chức năng trước đó, nó tập trung vào dẫn xuất khóa chứ không phải hệ thống proof-of-work. Bất chấp thực tế này, tiền điện tử có thể phục vụ mục đích của chúng tôi: nó hoạt động tốt như một hàm định giá trong bài toán chuyển đổi một phần hash chẳng hạn như SHA-256 trong Bitcoin. Hiện tại, tiền điện tử đã được áp dụng trong Litecoin [14] và một số nhánh Bitcoin khác. Tuy nhiên, việc triển khai nó không thực sự bị giới hạn về bộ nhớ: tỷ lệ “thời gian truy cập bộ nhớ/tổng thể time” không đủ lớn vì mỗi phiên bản chỉ sử dụng 128 KB. Điều này cho phép các công cụ khai thác GPU hiệu quả hơn khoảng 10 lần và tiếp tục để lại khả năng tạo ra tương đối thiết bị khai thác rẻ tiền nhưng hiệu quả cao. Hơn nữa, bản thân việc xây dựng mật mã cho phép trao đổi tuyến tính giữa kích thước bộ nhớ và Tốc độ CPU do thực tế là mọi khối trong bảng ghi nhớ chỉ bắt nguồn từ khối trước đó. Ví dụ: bạn có thể lưu trữ từng khối thứ hai và tính toán lại các khối khác một cách lười biếng, tức là chỉ khi nó trở nên cần thiết. Các chỉ mục giả ngẫu nhiên được giả định là phân bố đồng đều, do đó giá trị kỳ vọng của việc tính toán lại các khối bổ sung là 1 \(2 \cdot N\), trong đó N là số của các lần lặp. Tổng thời gian tính toán tăng ít hơn một nửa vì cũng có các hoạt động độc lập với thời gian (thời gian không đổi) chẳng hạn như chuẩn bị bảng ghi nhớ và hash bật mỗi lần lặp. Tiết kiệm 2/3 chi phí bộ nhớ 1 \(3 \cdot N\) + 1 3 \(\cdot\) \(2 \cdot N\) = N phép tính lại bổ sung; Kết quả 10/9 1 \(10 \cdot N\)+ . . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Dễ dàng chứng minh rằng chỉ lưu trữ 1 s của tất cả các khối tăng thời gian ít hơn hệ số s−1 2 . Điều này ngụ ý rằng một máy có CPU Nhanh hơn 200 lần so với các chip hiện đại, chỉ có thể lưu trữ 320 byte của bảng ghi nhớ. 5.2 Thuật toán đề xuất Chúng tôi đề xuất thuật toán giới hạn bộ nhớ mới cho hàm định giá proof-of-work. Nó dựa vào truy cập ngẫu nhiên vào bộ nhớ chậm và nhấn mạnh sự phụ thuộc vào độ trễ. Ngược lại với việc mã hóa mọi khối mới (dài 64 byte) phụ thuộc vào tất cả các khối trước đó. Kết quả là một giả thuyết “Trình tiết kiệm bộ nhớ” sẽ tăng tốc độ tính toán của anh ấy theo cấp số nhân. Thuật toán của chúng tôi yêu cầu khoảng 2 Mb cho mỗi phiên bản vì những lý do sau: 1. Nó phù hợp với bộ đệm L3 (mỗi lõi) của bộ xử lý hiện đại, sẽ trở thành xu hướng chủ đạo trong một vài năm nữa; 2. Một megabyte bộ nhớ trong là kích thước gần như không thể chấp nhận được đối với đường dẫn ASIC hiện đại; 3. GPU có thể chạy hàng trăm phiên bản đồng thời, nhưng chúng bị hạn chế theo những cách khác: Bộ nhớ GDDR5 chậm hơn bộ nhớ đệm CPU L3 và đáng chú ý về băng thông của nó, không phải tốc độ truy cập ngẫu nhiên 4. Việc mở rộng đáng kể bàn di chuột sẽ đòi hỏi phải tăng số lần lặp lại, trong đó lần lượt ngụ ý sự gia tăng thời gian tổng thể. Các cuộc gọi “nặng” trong mạng p2p không tin cậy có thể dẫn đến các lỗ hổng nghiêm trọng vì các nút có nghĩa vụ kiểm tra proof-of-work của mọi khối mới. Nếu một nút dành một lượng thời gian đáng kể cho mỗi lần đánh giá hash, nó có thể dễ dàng Bị tấn công DDoS bởi hàng loạt đối tượng giả mạo có dữ liệu công việc tùy ý (giá trị nonce). 12 đề xuất giải pháp hiệu quả nhất: “Hokkaido”. Theo hiểu biết của chúng tôi, công việc cuối cùng dựa trên ý tưởng tìm kiếm giả ngẫu nhiên trong một mảng lớn là thuật toán được gọi là “mã hóa” của C. Percival [32]. Không giống như các chức năng trước đó, nó tập trung vào dẫn xuất khóa chứ không phải hệ thống proof-of-work. Bất chấp thực tế này, tiền điện tử có thể phục vụ mục đích của chúng tôi: nó hoạt động tốt như một hàm định giá trong bài toán chuyển đổi một phần hash chẳng hạn như SHA-256 trong Bitcoin. Hiện tại, tiền điện tử đã được áp dụng trong Litecoin [14] và một số nhánh Bitcoin khác. Tuy nhiên, việc triển khai nó không thực sự bị giới hạn về bộ nhớ: tỷ lệ “thời gian truy cập bộ nhớ/tổng thể time” không đủ lớn vì mỗi phiên bản chỉ sử dụng 128 KB. Điều này cho phép các công cụ khai thác GPU hiệu quả hơn khoảng 10 lần và tiếp tục để lại khả năng tạo ra tương đối thiết bị khai thác rẻ tiền nhưng hiệu quả cao. Hơn nữa, bản thân việc xây dựng mật mã cho phép trao đổi tuyến tính giữa kích thước bộ nhớ và Tốc độ CPU do thực tế là mọi khối trong bảng ghi nhớ chỉ bắt nguồn từ khối trước đó. Ví dụ: bạn có thể lưu trữ từng khối thứ hai và tính toán lại các khối khác một cách lười biếng, tức là chỉ khi nó trở nên cần thiết. Các chỉ mục giả ngẫu nhiên được giả định là phân bố đồng đều, do đó giá trị kỳ vọng của việc tính toán lại các khối bổ sung là 1 \(2 \cdot N\), ở đâuN là số của các lần lặp. Tổng thời gian tính toán tăng ít hơn một nửa vì cũng có các hoạt động độc lập với thời gian (thời gian không đổi) chẳng hạn như chuẩn bị bảng ghi nhớ và hash bật mỗi lần lặp. Tiết kiệm 2/3 chi phí bộ nhớ 1 \(3 \cdot N\) + 1 3 \(\cdot\) \(2 \cdot N\) = N phép tính lại bổ sung; Kết quả 10/9 1 \(10 \cdot N\)+ . . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Dễ dàng chứng minh rằng chỉ lưu trữ 1 s của tất cả các khối tăng thời gian ít hơn hệ số s−1 2 . Điều này ngụ ý rằng một máy có CPU Nhanh hơn 200 lần so với các chip hiện đại, chỉ có thể lưu trữ 320 byte của bảng ghi nhớ. 5.2 Thuật toán đề xuất Chúng tôi đề xuất thuật toán giới hạn bộ nhớ mới cho hàm định giá proof-of-work. Nó dựa vào truy cập ngẫu nhiên vào bộ nhớ chậm và nhấn mạnh sự phụ thuộc vào độ trễ. Ngược lại với việc mã hóa mọi khối mới (dài 64 byte) phụ thuộc vào tất cả các khối trước đó. Kết quả là một giả thuyết “Trình tiết kiệm bộ nhớ” sẽ tăng tốc độ tính toán của anh ấy theo cấp số nhân. Thuật toán của chúng tôi yêu cầu khoảng 2 Mb cho mỗi phiên bản vì những lý do sau: 1. Nó phù hợp với bộ đệm L3 (mỗi lõi) của bộ xử lý hiện đại, sẽ trở thành xu hướng chủ đạo trong một vài năm nữa; 2. Một megabyte bộ nhớ trong là kích thước gần như không thể chấp nhận được đối với đường dẫn ASIC hiện đại; 3. GPU có thể chạy hàng trăm phiên bản đồng thời, nhưng chúng bị hạn chế theo những cách khác: Bộ nhớ GDDR5 chậm hơn bộ nhớ đệm CPU L3 và đáng chú ý về băng thông của nó, không phải tốc độ truy cập ngẫu nhiên 4. Việc mở rộng đáng kể bàn di chuột sẽ đòi hỏi phải tăng số lần lặp lại, trong đó lần lượt ngụ ý sự gia tăng thời gian tổng thể. Các cuộc gọi “nặng” trong mạng p2p không tin cậy có thể dẫn đến các lỗ hổng nghiêm trọng vì các nút có nghĩa vụ kiểm tra proof-of-work của mọi khối mới. Nếu một nút dành một lượng thời gian đáng kể cho mỗi lần đánh giá hash, nó có thể dễ dàng Bị tấn công DDoS bởi hàng loạt đối tượng giả mạo có dữ liệu công việc tùy ý (giá trị nonce). 12 22 Đừng bận tâm, đó là một đồng tiền điện tử? Thuật toán ở đâu? Tất cả những gì tôi thấy là một quảng cáo. Đây là nơi Cryptonote, nếu thuật toán PoW của họ đáng giá, sẽ thực sự tỏa sáng. Nó không phải thực sự là SHA-256, nó không hẳn là mã hóa. Nó mới, bị ràng buộc về bộ nhớ và không đệ quy.
6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ của giá trị thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ giải quyết vấn đề cân bằng giữa chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ đề cập đến sự đánh đổi giữa việc cân bằnge chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 23 Đơn vị nguyên tử. Tôi thích điều đó. Đây có phải là tương đương với Satoshi không? Nếu vậy thì điều đó có nghĩa là sẽ có 185 tỷ tiền điện tử. Tôi biết điều này cuối cùng phải được điều chỉnh trong một vài trang hoặc có thể có lỗi đánh máy? Nếu phần thưởng cơ bản là "tất cả các đồng xu còn lại" thì chỉ cần một khối là đủ để nhận được tất cả các đồng xu. Instamine. Mặt khác, nếu điều này được cho là tỷ lệ thuận theo một cách nào đó với sự khác biệt về thời gian giữa hiện tại và một số ngày chấm dứt sản xuất tiền xu? Điều đó sẽ có ý nghĩa. Ngoài ra, trong thế giới của tôi, hai dấu hiệu lớn hơn như thế này có nghĩa là "lớn hơn nhiều". Có phải tác giả có thể có ý nghĩa gì khác? Nếu việc điều chỉnh độ khó xảy ra ở mỗi khối thì kẻ tấn công có thể có một trang trại rất lớn máy móc khai thác và tắt trong những khoảng thời gian được lựa chọn cẩn thận. Điều này có thể gây ra một vụ nổ hỗn loạn (hoặc sụp đổ về 0) một cách khó khăn nếu các công thức điều chỉnh độ khó không được giảm bớt một cách thích hợp. Không còn nghi ngờ gì nữa, phương pháp của Bitcoin không phù hợp để tính toán lại nhanh chóng, nhưng ý tưởng về quán tính trong những hệ thống này cần phải được chứng minh chứ không phải được coi là đương nhiên. Hơn nữa, dao động trong mạng không nhất thiết là một vấn đề trừ khi nó dẫn đến sự dao động của giá trị bề ngoài nguồn cung tiền xu - và việc có độ khó thay đổi rất nhanh có thể gây ra "sự điều chỉnh quá mức". Thời gian sử dụng, đặc biệt là trong một khoảng thời gian ngắn như vài phút, sẽ tỷ lệ thuận với "tổng thời gian". số khối được tạo trên mạng." Hằng số tỷ lệ sẽ tự tăng lên theo thời gian, có lẽ sẽ tăng theo cấp số nhân nếu CN thành công. Có thể là một ý tưởng tốt hơn nếu bạn chỉ cần điều chỉnh độ khó để giữ “tổng số khối được tạo trên mạng kể từ khi khối cuối cùng được thêm vào chuỗi chính" trong một số giá trị không đổi hoặc với biến thể giới hạn hoặc một cái gì đó như thế. Nếu một thuật toán thích ứng được tính toán dễ thực hiện có thể được xác định, điều này dường như sẽ giải quyết được vấn đề. Nhưng sau đó, nếu chúng tôi sử dụng phương pháp đó, ai đó có trang trại khai thác lớn có thể đóng cửa trang trại của họ trong vài giờ và bật lại. Trong vài khối đầu tiên, trang trại đó sẽ tạo ra ngân hàng. Vì vậy, trên thực tế, phương pháp này sẽ đưa ra một điểm thú vị: việc khai thác trở thành (trung bình) một thua trò chơi mà không có ROI, đặc biệt khi có nhiều người truy cập mạng hơn. Nếu độ khó khai thác mạng được theo dõi rất chặt chẽ hashtỷ lệ, bằng cách nào đó tôi nghi ngờ mọi người sẽ khai thác nhiều như họ hiện tại làm. Hoặc mặt khác, thay vì giữ cho trang trại khai thác của họ hoạt động 24/7, họ có thể biến chúng thành bật trong 6 giờ, tắt trong 2 giờ, bật trong 6 giờ, tắt trong 2 giờ, hoặc tương tự. Chỉ cần chuyển sang đồng tiền khác trong vài giờ, đợi cho độ khó giảm xuống, sau đó nhảy trở lại để nhận thêm một ít các khối lợi nhuận khi mạng thích ứng. Và bạn biết gì không? Điều này thực sự có lẽ một trong những kịch bản khai thác tốt hơn mà tôi đã đặt tâm trí vào... Đây có thể là một vòng tròn, nhưng nếu thời gian tạo khối trung bình là khoảng một phút, chúng ta có thể sử dụng số khối làm đại diện cho "thời gian đã sử dụng?"
6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ của giá trị thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ giải quyết vấn đề cân bằng giữa chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ đề cập đến sự đánh đổi giữa việc cân bằnge chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 24 Được rồi, vậy là chúng ta có blockchain và mỗi khối có dấu thời gian NGOÀI RA để chỉ đơn giản là ra lệnh. Điều này rõ ràng được chèn vào đơn giản chỉ để điều chỉnh độ khó, bởi vì dấu thời gian được rất không đáng tin cậy, như đã đề cập. Chúng ta có được phép có dấu thời gian mâu thuẫn trong chuỗi không? Nếu Khối A xuất hiện trước Khối B trong chuỗi và mọi thứ đều nhất quán về mặt tài chính, nhưng Khối A dường như được tạo ra sau Khối B? Bởi vì, có lẽ, ai đó đã sở hữu một phần lớn của mạng? Thế có ổn không? Có lẽ là do tình hình tài chính không được cải thiện. Được rồi, vì vậy tôi ghét sự tùy tiện này "chỉ 80% khối là hợp pháp cho blockchain chính" cách tiếp cận. Nó nhằm mục đích ngăn chặn những kẻ nói dối điều chỉnh dấu thời gian của họ? Nhưng bây giờ, nó bổ sung thêm khuyến khích mọi người nói dối về dấu thời gian của họ và chỉ chọn mức trung bình. Hãy xác định. Có nghĩa là "đối với khối này, chỉ bao gồm các giao dịch bao gồm phí lớn hơn hơn p%, tốt nhất là với mức phí lớn hơn 2p%" hay đại loại như thế? Họ có ý gì khi nói không có thật? Nếu giao dịch nhất quán với lịch sử trong quá khứ của blockchain và giao dịch bao gồm các khoản phí làm hài lòng người khai thác, điều đó chưa đủ sao? Vâng, không, không nhất thiết. Nếu không tồn tại kích thước khối tối đa thì sẽ không có gì để giữ người dùng độc hại từ việc đơn giản tải lên một khối giao dịch khổng lồ cho chính mình cùng một lúc chỉ để làm chậm lại mạng lưới. Quy tắc cốt lõi về kích thước khối tối đa ngăn cản mọi người đưa một lượng lớn rác vào dữ liệu trên blockchain cùng một lúc chỉ để làm chậm quá trình. Nhưng một quy định như vậy chắc chắn phải hãy thích ứng - chẳng hạn như trong mùa Giáng sinh, chúng ta có thể dự kiến lưu lượng truy cập sẽ tăng đột biến và kích thước khối sẽ trở nên rất lớn và ngay sau đó, kích thước khối sẽ giảm xuống một lần nữa. Vì vậy, chúng ta cần a) một loại giới hạn thích ứng nào đó hoặc b) một giới hạn đủ lớn để 99% đỉnh Giáng sinh hợp lý không phá vỡ giới hạn. Tất nhiên, điều thứ hai là không thể ước tính - ai biết liệu một loại tiền tệ có được ưa chuộng hay không? Tốt hơn là hãy làm cho nó thích ứng và không phải lo lắng về nó. Nhưng sau đó chúng ta có một vấn đề về lý thuyết điều khiển: làm thế nào để điều này thích ứng mà không cần dễ bị tấn công hoặc dao động điên cuồng và điên cuồng? Lưu ý rằng phương pháp thích ứng không ngăn người dùng độc hại tích lũy số tiền nhỏ dữ liệu rác theo thời gian trên blockchain gây ra tình trạng phình to trong thời gian dài. Đây là một vấn đề khác hoàn toàn và một đồng tiền điện tử có vấn đề nghiêm trọng.
6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ của giá trị thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ giải quyết vấn đề cân bằng giữa chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ của giá trị thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ đề cập đến sự đánh đổi giữa việc cân bằnge chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 25 Thay đổi tỷ lệ thời gian sao cho một đơn vị thời gian là N khối, về mặt lý thuyết, kích thước khối trung bình vẫn có thể tăng theo cấp số nhân thành 2ˆt. Mặt khác, một giới hạn tổng quát hơn trên khối tiếp theo sẽ là M_nf(M_n) cho một số hàm f. Những tính chất nào của f sẽ chúng tôi chọn để đảm bảo một số "tăng trưởng hợp lý" về kích thước khối? Sự tiến triển của kích thước khối (sau thời gian thay đổi tỷ lệ) sẽ như sau: M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... Và mục tiêu ở đây là chọn f sao cho chuỗi này tăng không nhanh hơn, chẳng hạn, tuyến tính, hoặc thậm chí có thể là Log(t). Tất nhiên, nếu f(M_n) = a với hằng số a nào đó thì chuỗi này là thực sự M_n aM_n aˆ2M_n aˆ3M_n ... Và tất nhiên, cách duy nhất có thể hạn chế điều này ở mức tăng trưởng tuyến tính tối đa là chọn a=1. Tất nhiên, điều này là không thể thực hiện được. Nó không cho phép tăng trưởng chút nào. Mặt khác, nếu f(M_n) là một hàm không hằng thì tình huống còn phức tạp hơn nhiều. phức tạp và có thể cho phép một giải pháp tao nhã. Tôi sẽ suy nghĩ về điều này một lúc. Khoản phí này sẽ phải đủ lớn để giảm bớt hình phạt vượt quá kích thước từ phần tiếp theo. Tại sao người dùng phổ thông lại được coi là nam giới nhỉ? Hả?
khả năng làm tăng blockchain và tạo thêm tải cho các nút. Để ngăn cản những người tham gia ác ý tạo ra các khối lớn, chúng tôi giới thiệu một chức năng phạt: Phần thưởng mới = Phần thưởng cơ bản \(\cdot\) kích thước khối MN −1 2 Quy tắc này chỉ được áp dụng khi BlkSize lớn hơn kích thước khối trống tối thiểu cần thiết gần đạt mức tối đa(10kb, \(M_N \cdot 110\%\)). Người khai thác được phép tạo các khối có “kích thước thông thường” và thậm chí vượt quá nó với lợi nhuận khi tổng phí vượt quá mức phạt. Nhưng phí khó có thể tăng bậc hai không giống giá trị phạt nên sẽ có sự cân bằng. 6.3 Kịch bản giao dịch CryptoNote có một hệ thống con viết kịch bản rất tối giản. Người gửi chỉ định một biểu thức Φ = f (x1, x2, . . . , xn), trong đó n là số khóa công khai đích {Pi}n tôi = 1. Chỉ có năm nhị phân các toán tử được hỗ trợ: min, max, sum, mul và cmp. Khi người nhận chi tiêu khoản thanh toán này, anh ta tạo ra 0 k n chữ ký và chuyển chúng đến đầu vào giao dịch. Quá trình xác minh chỉ cần đánh giá Φ với xi = 1 để kiểm tra chữ ký hợp lệ cho khóa chung Pi và xi = 0. Người xác minh chấp nhận bằng chứng nếu ffΦ > 0. Mặc dù đơn giản, cách tiếp cận này bao gồm mọi trường hợp có thể xảy ra: • Chữ ký đa/ngưỡng. Đối với chữ ký đa chữ ký “M-out-of-N” kiểu Bitcoin (tức là người nhận phải cung cấp ít nhất 0 ∼M ∼N chữ ký hợp lệ) Φ = x1+x2+. . .+xN \(\geq M\) (để rõ ràng, chúng tôi đang sử dụng ký hiệu đại số chung). Chữ ký ngưỡng có trọng số (một số phím có thể quan trọng hơn các phím khác) có thể được biểu thị dưới dạng Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Và kịch bản trong đó khóa chính tương ứng với Φ = max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Dễ dàng chứng minh được rằng bất kỳ trường hợp phức tạp nào cũng có thể được biểu thị bằng các toán tử này, tức là chúng tạo thành cơ sở. • Bảo vệ bằng mật khẩu. Việc sở hữu mật khẩu bí mật s tương đương với kiến thức về một khóa riêng, được xác định từ mật khẩu: k = KDF(s). Do đó, một máy thu có thể chứng minh rằng mình biết mật khẩu bằng cách cung cấp một chữ ký khác dưới khóa k. Người gửi chỉ cần thêm khóa công khai tương ứng vào đầu ra của chính mình. Lưu ý rằng điều này phương pháp này an toàn hơn nhiều so với “câu đố giao dịch” được sử dụng trong Bitcoin [13], trong đó mật khẩu được chuyển rõ ràng trong đầu vào. • Các trường hợp thoái hóa. Φ = 1 có nghĩa là bất kỳ ai cũng có thể tiêu tiền; Φ = 0 đánh dấu đầu ra là không thể chi tiêu mãi mãi. Trong trường hợp tập lệnh đầu ra kết hợp với khóa chung quá lớn đối với người gửi, anh ta có thể sử dụng loại đầu ra đặc biệt, cho biết người nhận sẽ đưa dữ liệu này vào đầu vào của mình trong khi người gửi chỉ cung cấp hash trong số đó. Cách tiếp cận này tương tự như “trả tiền chohash” của Bitcoin tính năng này, nhưng thay vì thêm các lệnh script mới, chúng tôi xử lý trường hợp này ở cấu trúc dữ liệu cấp độ. 7 Kết luận Chúng tôi đã điều tra các lỗ hổng lớn trong Bitcoin và đề xuất một số giải pháp khả thi. Những tính năng thuận lợi này và sự phát triển không ngừng của chúng tôi tạo nên hệ thống tiền điện tử mới CryptoNote một đối thủ nặng ký của Bitcoin, vượt trội hơn tất cả các nhánh của nó. 14 khả năng làm tăng blockchain và tạo thêm tải cho các nút. Để ngăn cản những người tham gia ác ý tạo ra các khối lớn, chúng tôi giới thiệu một chức năng phạt: Phần thưởng mới = Phần thưởng cơ bản \(\cdot\) kích thước khối MN −1 2 Quy tắc này chỉ được áp dụng khi BlkSize lớn hơn kích thước khối trống tối thiểu cần thiết gần đạt mức tối đa(10kb, \(M_N \cdot 110\%\)). Người khai thác được phép tạo các khối có “kích thước thông thường” và thậm chí vượt quá nó với lợi nhuận khi tổng phí vượt quá mức phạt. Nhưng phí khó có thể tăng bậc hai không giống giá trị phạt nên sẽ có sự cân bằng. 6.3 Kịch bản giao dịch CryptoNote có một hệ thống con viết kịch bản rất tối giản. Người gửi chỉ định một biểu thức Φ = f (x1, x2, . . . , xn), trong đó n là số khóa công khai đích {Pi}n tôi = 1. Chỉ có năm nhị phân các toán tử được hỗ trợ: min, max, sum, mul và cmp. Khi người nhận chi tiêu khoản thanh toán này, anh ta tạo ra 0 k n chữ ký và chuyển chúng đến đầu vào giao dịch. Quá trình xác minh chỉ cần đánh giá Φ với xi = 1 để kiểm tra chữ ký hợp lệ cho khóa chung Pi và xi = 0. Người xác minh chấp nhận bằng chứng nếu ffΦ > 0. Mặc dù đơn giản, cách tiếp cận này bao gồm mọi trường hợp có thể xảy ra: • Chữ ký đa/ngưỡng. Đối với chữ ký đa chữ ký “M-out-of-N” kiểu Bitcoin (tức là người nhận phải cung cấp ít nhất 0 ∼M ∼N chữ ký hợp lệ) Φ = x1+x2+. . .+xN \(\geq M\) (để rõ ràng, chúng tôi đang sử dụng ký hiệu đại số chung). Chữ ký ngưỡng có trọng số (một số phím có thể quan trọng hơn các phím khác) có thể được biểu thị dưới dạng Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Và bối cảnhio trong đó khóa chính tương ứng với Φ = max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Dễ dàng chứng minh được rằng bất kỳ trường hợp phức tạp nào cũng có thể được biểu thị bằng các toán tử này, tức là chúng tạo thành cơ sở. • Bảo vệ bằng mật khẩu. Việc sở hữu mật khẩu bí mật s tương đương với kiến thức về một khóa riêng, được xác định từ mật khẩu: k = KDF(s). Do đó, một máy thu có thể chứng minh rằng mình biết mật khẩu bằng cách cung cấp một chữ ký khác dưới khóa k. Người gửi chỉ cần thêm khóa công khai tương ứng vào đầu ra của chính mình. Lưu ý rằng điều này phương pháp này an toàn hơn nhiều so với “câu đố giao dịch” được sử dụng trong Bitcoin [13], trong đó mật khẩu được chuyển rõ ràng trong đầu vào. • Các trường hợp thoái hóa. Φ = 1 có nghĩa là bất kỳ ai cũng có thể tiêu tiền; Φ = 0 đánh dấu đầu ra là không thể chi tiêu mãi mãi. Trong trường hợp tập lệnh đầu ra kết hợp với khóa chung quá lớn đối với người gửi, anh ta có thể sử dụng loại đầu ra đặc biệt, cho biết người nhận sẽ đưa dữ liệu này vào đầu vào của mình trong khi người gửi chỉ cung cấp hash trong số đó. Cách tiếp cận này tương tự như “trả tiền chohash” của Bitcoin tính năng này, nhưng thay vì thêm các lệnh script mới, chúng tôi xử lý trường hợp này ở cấu trúc dữ liệu cấp độ. 7 Kết luận Chúng tôi đã điều tra các lỗ hổng lớn trong Bitcoin và đề xuất một số giải pháp khả thi. Những tính năng thuận lợi này và sự phát triển không ngừng của chúng tôi tạo nên hệ thống tiền điện tử mới CryptoNote một đối thủ nặng ký của Bitcoin, vượt trội hơn tất cả các nhánh của nó. 14 26 Điều này có thể không cần thiết nếu chúng ta có thể tìm ra cách giới hạn kích thước khối theo thời gian... Điều này cũng không thể đúng được. Họ chỉ đặt "NewReward" thành một hình parabol hướng lên trong đó kích thước khối là biến độc lập. Vì vậy, phần thưởng mới sẽ tăng lên đến vô tận. Mặt khác, nếu tay, phần thưởng mới là Max(0,Phần thưởng cơ bản(1-(BlkSize/Mn - 1)ˆ2)), sau đó phần thưởng mới sẽ là một parabol hướng xuống dưới với đỉnh ở kích thước khối = Mn và có điểm chặn tại Kích thước khối = 0 và Kích thước khối = 2Mn. Và đó dường như là những gì họ đang cố gắng mô tả. Tuy nhiên, điều này không
Transaksi yang Tidak Dapat Dilacak
Pada bagian ini kami mengusulkan skema transaksi anonim yang memenuhi kedua kondisi tidak dapat dilacak
dan kondisi tidak dapat dihubungkan. Fitur penting dari solusi kami adalah otonominya: pengirim
tidak diharuskan bekerja sama dengan pengguna lain atau pihak ketiga yang dipercaya untuk melakukan transaksinya;
karenanya setiap peserta menghasilkan lalu lintas sampul secara mandiri.
4.1
Tinjauan literatur
Skema kami bergantung pada primitif kriptografi yang disebut tanda tangan grup. Pertama kali disajikan oleh
D. Chaum dan E. van Heyst [19], memungkinkan pengguna untuk menandatangani pesannya atas nama grup.
Setelah menandatangani pesan, pengguna memberikan (untuk tujuan verifikasi) bukan pesan publiknya sendiri
1Ini disebut “batas lunak” — batasan klien referensi untuk membuat blok baru. Keras maksimal
kemungkinan ukuran blokir adalah 1 MB
4
mereka jika perlu yang menyebabkan kelemahan utama. Sayangnya, sulit untuk memprediksi kapan hal tersebut akan terjadi
konstanta mungkin perlu diubah dan menggantinya dapat menimbulkan konsekuensi yang buruk.
Contoh bagus dari perubahan batas hardcode yang menyebabkan konsekuensi bencana adalah pemblokiran
batas ukuran disetel ke 250kb1. Batas ini cukup untuk menampung sekitar 10.000 transaksi standar. Di
awal tahun 2013, batas tersebut hampir tercapai dan tercapai kesepakatan untuk meningkatkannya
batas. Perubahan tersebut diterapkan pada dompet versi 0.8 dan diakhiri dengan pemisahan rantai 24 blok
dan serangan pembelanjaan ganda yang berhasil [9]. Meskipun bugnya bukan pada protokol Bitcoin, tapi
melainkan di mesin database, hal itu bisa dengan mudah ditangkap dengan stress test sederhana jika ada
tidak ada batasan ukuran blok yang diperkenalkan secara artifisial.
Konstanta juga berperan sebagai bentuk titik sentralisasi.
Meskipun bersifat peer-to-peer
Bitcoin, sebagian besar node menggunakan klien referensi resmi [10] yang dikembangkan oleh
sekelompok kecil orang. Kelompok ini membuat keputusan untuk menerapkan perubahan pada protokol
dan kebanyakan orang menerima perubahan ini terlepas dari “kebenarannya”. Beberapa keputusan menyebabkan
diskusi yang memanas bahkan seruan boikot [11], yang menandakan bahwa komunitas dan
pengembang mungkin tidak setuju pada beberapa poin penting. Oleh karena itu tampaknya logis untuk memiliki protokol
dengan variabel yang dapat dikonfigurasi pengguna dan dapat disesuaikan sendiri sebagai cara yang mungkin untuk menghindari masalah ini.
2.5
Skrip besar
Sistem skrip di Bitcoin adalah fitur yang berat dan kompleks. Ini berpotensi memungkinkan seseorang untuk berkreasi
transaksi canggih [12], namun beberapa fiturnya dinonaktifkan karena masalah keamanan dan
bahkan ada yang belum pernah dipakai [13]. Naskah (termasuk bagian pengirim dan penerima)
untuk transaksi terpopuler di Bitcoin tampilannya seperti ini:
kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar kami, kami memilih untuk menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Peningkatan privasi memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar, kami memilihe menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Privasi yang ditingkatkan memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 8 Tanda tangan cincin berfungsi seperti ini: Alex ingin membocorkan pesan ke WikiLeaks tentang majikannya. Setiap karyawan di Perusahaannya memiliki pasangan kunci privat/publik (Ri, Ui). Dia menulis tanda tangannya dengan masukan yang ditetapkan sebagai pesannya, m, kunci pribadinya, Ri, dan milik SEMUA ORANG kunci publik, (Ui;i=1...n). Siapa pun (tanpa mengetahui kunci pribadi apa pun) dapat memverifikasinya dengan mudah beberapa pasangan (Rj, Uj) pasti digunakan untuk membuat tanda tangan... seseorang yang bekerja untuk majikan Alex... tapi pada dasarnya ini hanyalah tebakan acak untuk mengetahui perusahaan mana yang dimaksud. http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 Perhatikan bahwa tanda cincin yang dapat ditautkan yang dijelaskan di sini adalah kebalikan dari "tidak dapat ditautkan" dijelaskan di atas. Di sini, kami mencegat dua pesan, dan kami dapat menentukan apakah pesan tersebut sama pihak yang mengirimkannya, meskipun kami masih belum dapat menentukan siapa pihak tersebut. Itu definisi "tidak dapat ditautkan" yang digunakan untuk membuat Cryptonote berarti kita tidak dapat menentukan apakah pihak yang sama menerimanya. Oleh karena itu, apa yang sebenarnya kita miliki di sini adalah EMPAT hal yang terjadi. Suatu sistem dapat ditautkan atau tidak dapat ditautkan, tergantung pada apakah mungkin untuk menentukan apakah pengirimnya dua pesan adalah sama (terlepas dari apakah hal ini memerlukan pencabutan anonimitas). Dan suatu sistem dapat dibatalkan tautannya atau tidak dapat dibatalkan tautannya, bergantung pada apakah hal itu memungkinkan atau tidak menentukan apakah penerima dua pesan itu sama (terlepas dari apakah atau tidak ini memerlukan pencabutan anonimitas). Tolong jangan salahkan saya atas terminologi buruk ini. Para ahli teori grafik mungkin seharusnya begitu senang. Beberapa dari Anda mungkin lebih nyaman dengan "receiver linkable" versus "sender linkable". http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Ketika saya membaca ini, ini tampak seperti fitur yang konyol. Kemudian saya membaca bahwa itu mungkin fitur untuk pemungutan suara elektronik, dan itu tampaknya masuk akal. Agak keren, dari sudut pandang itu. Tapi aku tidak sepenuhnya yakin tentang penerapan tanda tangan cincin yang dapat dilacak dengan sengaja. http://search.ieice.org/bin/summary.php?id=e95-a_1_151
kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar kami, kami memilih untuk menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Privasi yang ditingkatkan memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar, kami memilihe menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan pada Bitcoin di masa mendatang. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Privasi yang ditingkatkan memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 9 Astaga, penulis whitepaper ini pasti bisa menjelaskannya dengan lebih baik! Katakanlah sebuah perusahaan milik karyawan ingin mengambil suara apakah akan mengakuisisi perusahaan baru tertentu atau tidak aset, dan Alex serta Brenda keduanya adalah karyawan. Perusahaan membekali setiap karyawan a pesan seperti "Saya memilih ya pada Proposisi A!" yang memiliki metainformasi "masalah" [PROP A] dan meminta mereka untuk menandatanganinya dengan tanda cincin yang dapat dilacak jika mereka mendukung proposisi tersebut. Dengan menggunakan tanda tangan cincin tradisional, karyawan yang tidak jujur dapat menandatangani pesan tersebut berkali-kali, mungkin dengan nonce yang berbeda, untuk memilih sebanyak yang mereka suka. Di sisi lain sisi lain, dalam skema tanda tangan cincin yang dapat dilacak, Alex akan memilih, dan kunci pribadinya akan memilikinya telah digunakan pada masalah [PROP A]. Jika Alex mencoba menandatangani pesan seperti "Saya, Brenda, menyetujuinya proposisi A!" untuk "menjebak" Brenda dan memberikan suara ganda, pesan baru ini juga akan menimbulkan masalah [PROP A]. Karena kunci pribadi Alex telah mengatasi masalah [PROP A], identitas Alex akan segera terungkap sebagai penipuan. Jujur saja, itu cukup keren! Kriptografi menegakkan kesetaraan suara. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Makalah ini menarik, pada dasarnya membuat tanda tangan cincin ad-hoc tetapi tanpa satupun persetujuan peserta lain. Struktur tanda tangannya mungkin berbeda; Saya belum menggali dalam, dan saya belum melihat apakah itu aman. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai Tanda tangan kelompok ad-hoc adalah: tanda tangan cincin, yaitu tanda tangan kelompok yang tidak ada kelompoknya manajer, tidak ada sentralisasi, namun mengizinkan anggota dalam kelompok ad-hoc untuk mengklaim hal tersebut mereka (belum) mengeluarkan tanda tangan anonim atas nama grup. http://link.springer.com/chapter/10.1007/11908739_9 Menurut pemahaman saya, ini kurang tepat. Dan pemahaman saya kemungkinan besar akan berubah Saya mendalami proyek ini lebih dalam. Tapi dari pemahaman saya, hierarkinya terlihat seperti ini. Tanda grup: manajer grup mengontrol ketertelusuran dan kemampuan menambah atau menghapus anggota dari menjadi penandatangan. Ring sign : Pembentukan grup secara sewenang-wenang tanpa adanya manajer grup. Tidak ada pencabutan anonimitas. Tidak ada cara untuk menolak diri sendiri dari tanda tangan tertentu. Dengan cincin yang dapat dilacak dan dihubungkan tanda tangan, anonimitas agak terukur. Tanda tangan kelompok ad-hoc: seperti tanda tangan cincin, namun anggota dapat membuktikan bahwa mereka tidak membuat tanda tangan tertentu. Hal ini penting ketika siapa pun dalam kelompok dapat membuat tanda tangan. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Algoritme Fujisaki dan Suzuki kemudian diubah oleh penulis untuk memberikan ketepatan waktu. Jadi kami akan menganalisis algoritma Fujisaki dan Suzuki secara bersamaan dengan algoritma baru daripada membahasnya di sini.
kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar kami, kami memilih untuk menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Privasi yang ditingkatkan memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar, kami memilihe menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Peningkatan privasi memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 10 Keterhubungan dalam arti “tanda tangan cincin yang dapat ditautkan” berarti kita dapat mengetahui apakah dua transaksi keluar berasal dari sumber yang sama tanpa mengungkapkan siapa sumbernya. Para penulis melemah keterhubungan sehingga (a) menjaga privasi, namun tetap (b) mendeteksi transaksi apa pun yang menggunakan kunci pribadi kedua kalinya sebagai tidak sah. Oke, jadi ini pertanyaan urutan kejadian. Pertimbangkan skenario berikut. Penambangan saya komputer akan memiliki blockchain saat ini, ia akan memiliki blok transaksi sendiri yang dipanggilnya sah, ia akan mengerjakan blok itu dalam teka-teki proof-of-work, dan ia akan memiliki daftar transaksi yang tertunda untuk ditambahkan ke blok berikutnya. Itu juga akan mengirimkan yang baru transaksi ke dalam kumpulan transaksi yang tertunda itu. Jika saya tidak menyelesaikan blok berikutnya, tapi orang lain melakukannya, saya mendapatkan salinan terbaru dari blockchain. Blok yang sedang saya kerjakan dan daftar transaksi saya yang tertunda, keduanya mungkin memiliki beberapa transaksi yang sekarang dimasukkan ke dalam blockchain. Buka blok saya yang tertunda, gabungkan itu dengan daftar transaksi saya yang tertunda, dan panggil itu kumpulan transaksi saya yang tertunda. Hapus semua yang sekarang secara resmi ada di blockchain. Sekarang, apa yang harus saya lakukan? Haruskah saya terlebih dahulu melakukan dan "menghapus semua pembelanjaan ganda"? Di sisi lain Sebaliknya, haruskah saya menelusuri daftar dan memastikan bahwa setiap kunci pribadi belum ada digunakan, dan jika sudah digunakan dalam daftar saya, maka saya menerima salinan pertama terlebih dahulu, dan karenanya salinan selanjutnya tidak sah. Jadi saya melanjutkan dengan menghapus semua instance setelah yang pertama dari kunci pribadi yang sama. Geometri aljabar tidak pernah menjadi keahlian saya. http://en.wikipedia.org/wiki/EdDSA Kecepatan seperti itu, wow. INI adalah geometri aljabar untuk kemenangan. Bukannya aku tahu apa pun tentang itu. Masalahnya, atau tidak, log diskrit menjadi sangat cepat. Dan komputer kuantum memakannya untuk sarapan. http://link.springer.com/article/10.1007/s13389-012-0027-1 Ini menjadi angka yang sangat penting, namun tidak ada penjelasan atau kutipan bagaimana caranya dipilih. Cukup dengan memilih satu bilangan prima besar yang diketahui saja sudah cukup, tetapi jika memang ada bilangan prima yang diketahui fakta tentang bilangan prima besar ini, yang dapat memengaruhi pilihan kita. Varian berbeda dari cryptonote dapat memilih nilai yang berbeda eh, tapi belum ada pembahasan di tulisan ini tentang bagaimana caranya pilihan kita akan memengaruhi pilihan kita terhadap parameter global lainnya yang tercantum di halaman 5. Makalah ini memerlukan bagian tentang pemilihan nilai parameter.
kunci pengguna pribadi adalah pasangan (a, b) dari dua kunci pribadi yang berbeda; kunci pelacakan adalah pasangan (a, B) dari kunci ec pribadi dan publik (di mana B = bG dan a ̸= b); kunci pengguna publik adalah pasangan (A, B) dari dua kunci ec publik yang berasal dari (a, b); alamat standar adalah representasi kunci pengguna publik yang diberikan ke dalam string ramah manusia dengan koreksi kesalahan; alamat terpotong adalah representasi paruh kedua (titik B) dari kunci pengguna publik yang diberikan menjadi string ramah manusia dengan koreksi kesalahan. Struktur transaksi tetap serupa dengan struktur di Bitcoin: setiap pengguna dapat memilih beberapa pembayaran masuk independen (keluaran transaksi), tandatangani dengan yang sesuai kunci pribadi dan mengirimkannya ke tujuan yang berbeda. Bertentangan dengan model Bitcoin, di mana pengguna memiliki kunci pribadi dan publik yang unik, dalam model yang diusulkan pengirim menghasilkan kunci publik satu kali berdasarkan alamat penerima dan beberapa data acak. Dalam pengertian ini, transaksi masuk untuk penerima yang sama dikirim ke a kunci publik satu kali (tidak langsung ke alamat unik) dan hanya penerima yang dapat memulihkannya bagian pribadi yang sesuai untuk menebus dananya (menggunakan kunci pribadi uniknya). Penerima bisa membelanjakan dananya menggunakan tanda tangan cincin, menjaga kepemilikan dan pengeluaran aktualnya tetap anonim. Rincian protokol dijelaskan pada subbagian berikutnya. 4.3 Pembayaran yang tidak dapat ditautkan Alamat Bitcoin klasik, setelah dipublikasikan, menjadi pengenal yang jelas untuk masuk pembayaran, menghubungkannya dan mengaitkannya dengan nama samaran penerima. Jika seseorang ingin menerima transaksi “tidak terikat”, ia harus menyampaikan alamatnya kepada pengirim melalui saluran pribadi. Jika dia ingin menerima transaksi berbeda yang tidak dapat dibuktikan milik pemilik yang sama dia harus membuat semua alamat yang berbeda dan tidak pernah mempublikasikannya dengan nama samarannya sendiri. Publik Pribadi Alice Karol Addr Bob 1 Addr Bob 2 Kunci Bob 1 Kunci Bob 2 Bob Gambar 2. Model kunci/transaksi Bitcoin tradisional. Kami mengusulkan solusi yang memungkinkan pengguna untuk mempublikasikan satu alamat dan menerima tanpa syarat pembayaran yang tidak dapat dihubungkan. Tujuan dari setiap keluaran CryptoNote (secara default) adalah kunci publik, berasal dari alamat penerima dan data acak pengirim. Keuntungan utama melawan Bitcoin adalah setiap kunci tujuan bersifat unik secara default (kecuali pengirim menggunakan data yang sama untuk masing-masing kunci tujuan transaksinya kepada penerima yang sama). Oleh karena itu, tidak ada masalah seperti “penggunaan kembali alamat” oleh desainnya dan tidak ada pengamat yang dapat menentukan apakah ada transaksi yang dikirim ke alamat atau tautan tertentu dua alamat bersama-sama. 6 kunci pengguna pribadi adalah pasangan (a, b) dari dua kunci pribadi yang berbeda; kunci pelacakan adalah pasangan (a, B) dari kunci ec pribadi dan publik (di mana B = bG dan a ̸= b); kunci pengguna publik adalah pasangan (A, B) dari dua kunci ec publik yang berasal dari (a, b); alamat standar adalah representasi kunci pengguna publik yang diberikan ke dalam string ramah manusia dengan koreksi kesalahan; alamat terpotong adalah representasi paruh kedua (titik B) dari kunci pengguna publik yang diberikan menjadi string ramah manusia dengan koreksi kesalahan. Struktur transaksi tetap serupa dengan struktur di Bitcoin: setiap pengguna dapat memilih beberapa pembayaran masuk independen (keluaran transaksi), tandatangani dengan yang sesuai kunci pribadi dan mengirimkannya ke tujuan yang berbeda. Bertentangan dengan model Bitcoin, di mana pengguna memiliki kunci pribadi dan publik yang unik, dalam model yang diusulkan pengirim menghasilkan kunci publik satu kali berdasarkan alamat penerima dan beberapa data acak. Dalam pengertian ini, transaksi masuk untuk penerima yang sama dikirim ke a kunci publik satu kali (tidak langsung ke alamat unik) dan hanya penerima yang dapat memulihkannya bagian pribadi yang sesuai untuk menebus dananya (menggunakan kunci pribadi uniknya). Penerima bisa membelanjakan dananya menggunakan tanda tangan cincin, menjaga kepemilikan dan pengeluaran aktualnya tetap anonim. Rincian protokol dijelaskan pada subbagian berikutnya. 4.3 Pembayaran yang tidak dapat ditautkan Alamat Bitcoin klasik, setelah dipublikasikan, menjadi pengenal yang jelas untuk masuk pembayaran, menghubungkannya dan mengaitkannya dengan nama samaran penerima. Jika seseorang ingin menerima transaksi “tidak terikat”, ia harus menyampaikan alamatnya kepada pengirim melalui saluran pribadi. Jika dia ingin menerima transaksi berbeda yang tidak dapat dibuktikan milik pemilik yang sama dia harus membuat semua alamat yang berbeda dan tidak pernah mempublikasikannya dengan nama samarannya sendiri. Publik Pribadi Alice Karol Addr Bob 1 Addr Bob 2 Kunci Bob 1 Kunci Bob 2 Bob Gambar 2. Mod kunci/transaksi Bitcoin tradisionalel. Kami mengusulkan solusi yang memungkinkan pengguna untuk mempublikasikan satu alamat dan menerima tanpa syarat pembayaran yang tidak dapat dihubungkan. Tujuan dari setiap keluaran CryptoNote (secara default) adalah kunci publik, berasal dari alamat penerima dan data acak pengirim. Keuntungan utama melawan Bitcoin adalah setiap kunci tujuan bersifat unik secara default (kecuali pengirim menggunakan data yang sama untuk masing-masing kunci tujuan transaksinya kepada penerima yang sama). Oleh karena itu, tidak ada masalah seperti “penggunaan kembali alamat” oleh desainnya dan tidak ada pengamat yang dapat menentukan apakah ada transaksi yang dikirim ke alamat atau tautan tertentu dua alamat bersama-sama. 6 11 Jadi ini seperti Bitcoin, tetapi dengan PO Box anonim yang tak terbatas, hanya dapat ditukarkan oleh penerima menghasilkan kunci pribadi yang anonim seperti tanda tangan cincin. Bitcoin bekerja dengan cara ini. Jika Alex memiliki 0,112 Bitcoin di dompetnya yang baru saja dia terima dari Frank, dia benar-benar memiliki tanda tangan pesan "Saya, [FRANK], kirim 0,112 Bitcoin ke [alex] + H0 + N0" dimana 1) Frank telah menandatangani pesan dengan kunci pribadinya [FRANK], 2) Frank telah menandatangani pesan tersebut dengan publik Alex key, [alex], 3) Frank telah memasukkan beberapa bentuk sejarah bitcoin, H0, dan 4) Frank menyertakan sedikit data acak yang disebut nonce, N0. Jika Alex kemudian ingin mengirim 0,011 Bitcoin ke Charlene, dia akan menerima pesan Frank, dan dia akan menyetelnya ke H1, dan menandatangani dua pesan: satu untuk transaksinya, dan satu lagi untuk perubahan. H1= "Saya, [FRANK], kirim 0,112 Bitcoin ke [alex] + H0 + N" "Saya, [ALEX], kirim 0,011 Bitcoin ke [charlene] + H1 + N1" "Saya, [ALEX], kirim 0,101 Bitcoin sebagai perubahan ke [alex] + H1 + N2." di mana Alex menandatangani kedua pesan dengan kunci pribadinya [ALEX], pesan pertama dengan milik Charlene kunci publik [charlene], pesan kedua dengan kunci publik Alex [alex], dan termasuk sejarah dan beberapa nonces N1 dan N2 yang dihasilkan secara acak dengan tepat. Cryptonote bekerja dengan cara ini: Jika Alex memiliki 0,112 Cryptonote di dompetnya yang baru saja dia terima dari Frank, dia benar-benar memiliki tanda tangan pesan "Saya, [seseorang dalam grup ad-hoc], mengirim 0,112 Cryptonote ke [alamat satu kali] + H0 + Tidak0." Alex mengetahui bahwa ini adalah uangnya dengan memeriksa kunci pribadinya [ALEX]. [alamat satu kali] untuk setiap pesan yang lewat, dan jika dia ingin membelanjakannya, dia melakukannya cara berikut. Dia memilih penerima uang, mungkin Charlene sudah mulai memilih serangan drone Alex malah ingin mengirim uang ke Brenda. Jadi Alex mencari kunci publik Brenda, [brenda], dan menggunakan kunci pribadinya sendiri, [ALEX], untuk menghasilkan alamat satu kali [ALEX+brenda]. Dia kemudian memilih koleksi C yang sewenang-wenang dari jaringan pengguna cryptonote dan dia membangunnya tanda tangan cincin dari grup ad-hoc ini. Kami mengatur riwayat kami seperti pesan sebelumnya, tambahkan nonces, dan lanjutkan seperti biasa? H1 = "Saya, [seseorang dalam grup ad-hoc], mengirim 0,112 Cryptonote ke [alamat satu kali] + H0 + Tidak0." "Saya, [seseorang di koleksi C], mengirim 0,011 Cryptonote ke [alamat-satu-kali-dibuat-dariALEX+brenda] + H1 + N1" "Saya, [seseorang di koleksi C], mengirimkan 0,101 Cryptonote sebagai perubahan ke [alamat-satu-kali-dibuat dari-ALEX+alex] + H1 + N2" Sekarang, Alex dan Brenda memindai semua pesan masuk untuk mencari alamat satu kali yang ada dibuat menggunakan kunci mereka. Jika mereka menemukannya, maka pesan itu adalah pesan baru bagi mereka uang kripto! Itupun transaksinya masih akan mencapai blockchain. Jika koin masuk ke alamat itu diketahui dikirim dari penjahat, kontributor politik, atau dari komite dan akun dengan anggaran yang ketat (yaitu penggelapan), atau jika pemilik baru koin tersebut melakukan kesalahan dan mengirimkan koin-koin ini ke alamat yang sama dengan koin-koin yang diketahui miliknya, jig anonimitas ada di bitcoin.
kunci pengguna pribadi adalah pasangan (a, b) dari dua kunci pribadi yang berbeda; kunci pelacakan adalah pasangan (a, B) dari kunci ec pribadi dan publik (di mana B = bG dan a ̸= b); kunci pengguna publik adalah pasangan (A, B) dari dua kunci ec publik yang berasal dari (a, b); alamat standar adalah representasi kunci pengguna publik yang diberikan ke dalam string ramah manusia dengan koreksi kesalahan; alamat terpotong adalah representasi paruh kedua (titik B) dari kunci pengguna publik yang diberikan menjadi string ramah manusia dengan koreksi kesalahan. Struktur transaksi tetap serupa dengan struktur di Bitcoin: setiap pengguna dapat memilih beberapa pembayaran masuk independen (keluaran transaksi), tandatangani dengan yang sesuai kunci pribadi dan mengirimkannya ke tujuan yang berbeda. Bertentangan dengan model Bitcoin, di mana pengguna memiliki kunci pribadi dan publik yang unik, dalam model yang diusulkan pengirim menghasilkan kunci publik satu kali berdasarkan alamat penerima dan beberapa data acak. Dalam pengertian ini, transaksi masuk untuk penerima yang sama dikirim ke a kunci publik satu kali (tidak langsung ke alamat unik) dan hanya penerima yang dapat memulihkannya bagian pribadi yang sesuai untuk menebus dananya (menggunakan kunci pribadi uniknya). Penerima bisa membelanjakan dananya menggunakan tanda tangan cincin, menjaga kepemilikan dan pengeluaran aktualnya tetap anonim. Rincian protokol dijelaskan pada subbagian berikutnya. 4.3 Pembayaran yang tidak dapat ditautkan Alamat Bitcoin klasik, setelah dipublikasikan, menjadi pengenal yang jelas untuk masuk pembayaran, menghubungkannya dan mengaitkannya dengan nama samaran penerima. Jika seseorang ingin menerima transaksi “tidak terikat”, ia harus menyampaikan alamatnya kepada pengirim melalui saluran pribadi. Jika dia ingin menerima transaksi berbeda yang tidak dapat dibuktikan milik pemilik yang sama dia harus membuat semua alamat yang berbeda dan tidak pernah mempublikasikannya dengan nama samarannya sendiri. Publik Pribadi Alice Karol Addr Bob 1 Addr Bob 2 Kunci Bob 1 Kunci Bob 2 Bob Gambar 2. Model kunci/transaksi Bitcoin tradisional. Kami mengusulkan solusi yang memungkinkan pengguna untuk mempublikasikan satu alamat dan menerima tanpa syarat pembayaran yang tidak dapat dihubungkan. Tujuan dari setiap keluaran CryptoNote (secara default) adalah kunci publik, berasal dari alamat penerima dan data acak pengirim. Keuntungan utama melawan Bitcoin adalah setiap kunci tujuan bersifat unik secara default (kecuali pengirim menggunakan data yang sama untuk masing-masing kunci tujuan transaksinya kepada penerima yang sama). Oleh karena itu, tidak ada masalah seperti “penggunaan kembali alamat” oleh desainnya dan tidak ada pengamat yang dapat menentukan apakah ada transaksi yang dikirim ke alamat atau tautan tertentu dua alamat bersama-sama. 6 kunci pengguna pribadi adalah pasangan (a, b) dari dua kunci pribadi yang berbeda; kunci pelacakan adalah pasangan (a, B) dari kunci ec pribadi dan publik (di mana B = bG dan a ̸= b); kunci pengguna publik adalah pasangan (A, B) dari dua kunci ec publik yang berasal dari (a, b); alamat standar adalah representasi kunci pengguna publik yang diberikan ke dalam string ramah manusia dengan koreksi kesalahan; alamat terpotong adalah representasi paruh kedua (titik B) dari kunci pengguna publik yang diberikan menjadi string ramah manusia dengan koreksi kesalahan. Struktur transaksi tetap serupa dengan struktur di Bitcoin: setiap pengguna dapat memilih beberapa pembayaran masuk independen (keluaran transaksi), tandatangani dengan yang sesuai kunci pribadi dan mengirimkannya ke tujuan yang berbeda. Bertentangan dengan model Bitcoin, di mana pengguna memiliki kunci pribadi dan publik yang unik, di model yang diusulkan pengirim menghasilkan kunci publik satu kali berdasarkan alamat penerima dan beberapa data acak. Dalam pengertian ini, transaksi masuk untuk penerima yang sama dikirim ke a kunci publik satu kali (tidak langsung ke alamat unik) dan hanya penerima yang dapat memulihkannya bagian pribadi yang sesuai untuk menebus dananya (menggunakan kunci pribadi uniknya). Penerima bisa membelanjakan dananya menggunakan tanda tangan cincin, menjaga kepemilikan dan pengeluaran aktualnya tetap anonim. Rincian protokol dijelaskan pada subbagian berikutnya. 4.3 Pembayaran yang tidak dapat ditautkan Alamat Bitcoin klasik, setelah dipublikasikan, menjadi pengenal yang jelas untuk masuk pembayaran, menghubungkannya dan mengaitkannya dengan nama samaran penerima. Jika seseorang ingin menerima transaksi “tidak terikat”, ia harus menyampaikan alamatnya kepada pengirim melalui saluran pribadi. Jika dia ingin menerima transaksi berbeda yang tidak dapat dibuktikan milik pemilik yang sama dia harus membuat semua alamat yang berbeda dan tidak pernah mempublikasikannya dengan nama samarannya sendiri. Publik Pribadi Alice Karol Addr Bob 1 Addr Bob 2 Kunci Bob 1 Kunci Bob 2 Bob Gambar 2. Mod kunci/transaksi Bitcoin tradisionalel. Kami mengusulkan solusi yang memungkinkan pengguna untuk mempublikasikan satu alamat dan menerima tanpa syarat pembayaran yang tidak dapat dihubungkan. Tujuan dari setiap keluaran CryptoNote (secara default) adalah kunci publik, berasal dari alamat penerima dan data acak pengirim. Keuntungan utama melawan Bitcoin adalah setiap kunci tujuan bersifat unik secara default (kecuali pengirim menggunakan data yang sama untuk masing-masing kunci tujuan transaksinya kepada penerima yang sama). Oleh karena itu, tidak ada masalah seperti “penggunaan kembali alamat” oleh desainnya dan tidak ada pengamat yang dapat menentukan apakah ada transaksi yang dikirim ke alamat atau tautan tertentu dua alamat bersama-sama. 6 12 Oleh karena itu, daripada pengguna mengirimkan koin dari alamat (yang sebenarnya merupakan kunci publik) ke alamat (kunci publik lainnya) menggunakan kunci pribadi mereka, pengguna mengirimkan koin dari PO-box satu kali (yang dihasilkan menggunakan kunci publik teman Anda) ke PO-box satu kali (demikian pula) menggunakan kunci pribadinya sendiri. Dalam arti tertentu, kita mengatakan, "Oke, semuanya, ambillah uang itu selagi masih ada dipindahkan! Cukup mengetahui bahwa kunci kita dapat membuka kotak itu dan itu kita tahu berapa banyak uang yang ada di dalam kotak. Jangan pernah menaruh sidik jari Anda di PO Box atau benar-benar menggunakannya, cukup tukarkan kotak yang berisi uang tunai itu sendiri. Dengan begitu kita tidak tahu siapa yang mengirim apa, tapi isi dari pidato publik ini masih tanpa gesekan, sepadan, dapat dibagi, dan masih memiliki semua kualitas uang bagus lainnya yang kita inginkan seperti bitcoin." Satu set kotak PO yang tak terbatas. Anda mempublikasikan alamat, saya punya kunci pribadi. Saya menggunakan kunci pribadi saya dan alamat Anda, dan beberapa data acak, untuk menghasilkan kunci publik. Algoritma ini dirancang sedemikian rupa sehingga, sejak Anda alamat digunakan untuk menghasilkan kunci publik, hanya kunci pribadi ANDA yang berfungsi untuk membuka kunci pesan. Seorang pengamat, Eve, melihat Anda mempublikasikan alamat Anda, dan melihat kunci publik yang saya umumkan. Namun, dia tidak tahu apakah saya mengumumkan kunci publik saya berdasarkan alamat Anda, alamatnya, atau alamat Brenda atau milik Charlene, atau siapa pun. Dia memeriksa kunci pribadinya dengan kunci publik yang saya umumkan dan melihatnya tidak berhasil; itu bukan uangnya. Dia tidak mengetahui kunci pribadi orang lain, dan hanya penerima pesan yang memiliki kunci pribadi yang dapat membuka kunci pesan tersebut. Jadi tidak ada seorang pun mendengarkan dapat menentukan siapa yang menerima uang apalagi mengambil uang tersebut.
Publik Pribadi Alice Karol Kunci satu kali Kunci satu kali Kunci satu kali Bob Kunci Bob Alamat Bob Gambar 3. Kunci/model transaksi CryptoNote. Pertama, pengirim melakukan pertukaran Diffie-Hellman untuk mendapatkan rahasia bersama dari datanya dan setengah dari alamat penerima. Kemudian dia menghitung kunci tujuan satu kali, menggunakan kunci bersama rahasia dan paruh kedua alamat. Dua kunci ec yang berbeda diperlukan dari penerima untuk dua langkah ini, jadi alamat CryptoNote standar hampir dua kali lebih besar dari dompet Bitcoin alamat. Penerima juga melakukan pertukaran Diffie-Hellman untuk memulihkannya kunci rahasia. Urutan transaksi standar adalah sebagai berikut: 1. Alice ingin mengirimkan pembayaran kepada Bob, yang telah mempublikasikan alamat standarnya. Dia membongkar alamatnya dan mendapatkan kunci publik Bob (A, B). 2. Alice membangkitkan r acak \(\in\)[1, l−1] dan menghitung kunci publik satu kali \(P = H_s(rA)G +\) B. 3. Alice menggunakan P sebagai kunci tujuan untuk keluaran dan juga mengemas nilai R = rG (sebagai bagian dari bursa Diffie-Hellman) di suatu tempat dalam transaksi. Perhatikan bahwa dia bisa mencipta keluaran lain dengan kunci publik unik: kunci penerima yang berbeda (Ai, Bi) menyiratkan Pi yang berbeda bahkan dengan r yang sama. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan R = rG P = Hs(rA)G + B Penerima kunci publik Data acak pengirim r (A,B) Gambar 4. Struktur transaksi standar. 4. Alice mengirimkan transaksi. 5. Bob memeriksa setiap transaksi yang lewat dengan kunci privatnya (a, b), dan menghitung P ′ = Hs(ar)G + B. Jika transaksi Alice dengan Bob sebagai penerima ada di antara mereka, maka aR = arG = rA dan P′ = P. 7 Publik Pribadi Alice Karol Kunci satu kali Kunci satu kali Kunci satu kali Bob Kunci Bob Alamat Bob Gambar 3. Kunci/model transaksi CryptoNote. Pertama, pengirim melakukan pertukaran Diffie-Hellman untuk mendapatkan rahasia bersama dari datanya dan setengah dari alamat penerima. Kemudian dia menghitung kunci tujuan satu kali, menggunakan kunci bersama rahasia dan paruh kedua alamat. Dua kunci ec yang berbeda diperlukan dari penerima untuk dua langkah ini, jadi alamat CryptoNote standar hampir dua kali lebih besar dari dompet Bitcoin alamat. Penerima juga melakukan pertukaran Diffie-Hellman untuk memulihkannya kunci rahasia. Urutan transaksi standar adalah sebagai berikut: 1. Alice ingin mengirimkan pembayaran kepada Bob, yang telah mempublikasikan alamat standarnya. Dia membongkar alamatnya dan mendapatkan kunci publik Bob (A, B). 2. Alice membangkitkan r acak \(\in\)[1, l−1] dan menghitung kunci publik satu kali \(P = H_s(rA)G +\) B. 3. Alice menggunakan P sebagai kunci tujuan untuk keluaran dan juga mengemas nilai R = rG (sebagai bagian dari bursa Diffie-Hellman) di suatu tempat dalam transaksi. Perhatikan bahwa dia bisa mencipta keluaran lain dengan kunci publik unik: kunci penerima yang berbeda (Ai, Bi) menyiratkan Pi yang berbeda bahkan dengan r yang sama. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan R = rG P = Hs(rA)G + B Penerima kunci publik Data acak pengirim r (A,B) Gambar 4. Struktur transaksi standar. 4. Alice mengirimkan transaksi. 5. Bob memeriksa setiap transaksi yang lewat dengan kunci privatnya (a, b), dan menghitung P ′ = Hs(ar)G + B. Jika transaksi Alice dengan Bob sebagai penerima ada di antara mereka, maka aR = arG = rA dan P′ = P. 7 13 Saya bertanya-tanya betapa sulitnya menerapkan pilihan kriptografi skema. Elips atau lainnya. Jadi jika suatu skema dilanggar di masa depan, mata uang akan beralih tanpa rasa khawatir. Mungkin sangat menyebalkan. Oke, ini persis seperti yang baru saja saya jelaskan di komentar saya sebelumnya. Tipe Diffe-Hellman pertukarannya rapi. Katakanlah Alex dan Brenda masing-masing mempunyai nomor rahasia, A dan B, dan sebuah nomor mereka tidak peduli untuk menjaga rahasia, a dan b. Mereka ingin menghasilkan rahasia bersama tanpa Eva menemukannya. Diffie dan Hellman menemukan cara agar Alex dan Brenda berbagi nomor publik a dan b, tetapi bukan nomor pribadi A dan B, dan menghasilkan rahasia bersama, K. Menggunakan rahasia bersama ini, K, tanpa ada Eva yang mendengarkan untuk dapat menghasilkan hal yang sama K, Alex dan Brenda sekarang dapat menggunakan K sebagai kunci enkripsi rahasia dan meneruskan pesan rahasia kembali dan sebagainya. Begini cara kerjanya BISA, meskipun harus bekerja dengan angka yang jauh lebih besar dari 100. Kita akan menggunakan 100 karena mengerjakan bilangan bulat modulo 100 sama dengan "membuang semua tapi dua digit terakhir dari sebuah angka." Alex dan Brenda masing-masing memilih A, a, B, dan b. Mereka merahasiakan A dan B. Alex memberi tahu Brenda nilai modulo 100 (hanya dua digit terakhir) dan Brenda memberi tahu Alex nilai b modulo 100. Sekarang Eva tahu (a,b) modulo 100. Tapi Alex tahu (a,b,A) jadi dia dapat menghitung x=abA modulo 100.Alex memotong semuanya kecuali angka terakhir karena kami sedang mengerjakan di bawah bilangan bulat modulo 100 lagi. Demikian pula, Brenda mengetahui (a,b,B) sehingga dia dapat menghitung y=abB modulo 100. Alex sekarang dapat mempublikasikan x dan Brenda dapat mempublikasikan y. Tapi sekarang Alex bisa menghitung yA = abBA modulo 100, dan Brenda bisa menghitung xB = abBA modulo 100. Mereka berdua tahu nomor yang sama! Tapi yang Eva dengar hanyalah (a,b,abA,abB). Dia tidak memiliki cara mudah untuk menghitung abA*B. Sekarang, ini adalah cara berpikir yang paling mudah dan paling tidak aman tentang pertukaran Diffie-Hellman. Ada versi yang lebih aman. Tetapi sebagian besar versi berfungsi karena faktorisasi bilangan bulat dan diskrit logaritma itu sulit, dan kedua permasalahan tersebut mudah diselesaikan oleh komputer kuantum. Saya akan melihat apakah ada versi yang tahan terhadap kuantum. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange "Urutan txn standar" yang tercantum di sini tidak memiliki banyak langkah, seperti TANDA TANGAN. Mereka dianggap remeh di sini. Yang benar-benar buruk, karena urutannya kita barang tanda tangan, informasi yang disertakan dalam pesan yang ditandatangani, dan sebagainya... semua ini luar biasa penting bagi protokol. Melakukan satu atau dua langkah yang salah, bahkan sedikit tidak sesuai, saat menerapkan "the urutan transaksi standar" dapat mempertanyakan keamanan seluruh sistem. Selain itu, bukti-bukti yang disajikan kemudian dalam makalah ini mungkin tidak cukup teliti jika kerangka kerja di mana mereka bekerja didefinisikan secara longgar seperti pada bagian ini.
Publik Pribadi Alice Karol Kunci satu kali Kunci satu kali Kunci satu kali Bob Kunci Bob Alamat Bob Gambar 3. Kunci/model transaksi CryptoNote. Pertama, pengirim melakukan pertukaran Diffie-Hellman untuk mendapatkan rahasia bersama dari datanya dan setengah dari alamat penerima. Kemudian dia menghitung kunci tujuan satu kali, menggunakan kunci bersama rahasia dan paruh kedua alamat. Dua kunci ec yang berbeda diperlukan dari penerima untuk dua langkah ini, jadi alamat CryptoNote standar hampir dua kali lebih besar dari dompet Bitcoin alamat. Penerima juga melakukan pertukaran Diffie-Hellman untuk memulihkannya kunci rahasia. Urutan transaksi standar adalah sebagai berikut: 1. Alice ingin mengirimkan pembayaran kepada Bob, yang telah mempublikasikan alamat standarnya. Dia membongkar alamatnya dan mendapatkan kunci publik Bob (A, B). 2. Alice membangkitkan r acak \(\in\)[1, l−1] dan menghitung kunci publik satu kali \(P = H_s(rA)G +\) B. 3. Alice menggunakan P sebagai kunci tujuan untuk keluaran dan juga mengemas nilai R = rG (sebagai bagian dari bursa Diffie-Hellman) di suatu tempat dalam transaksi. Perhatikan bahwa dia bisa mencipta keluaran lain dengan kunci publik unik: kunci penerima yang berbeda (Ai, Bi) menyiratkan Pi yang berbeda bahkan dengan r yang sama. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan R = rG P = Hs(rA)G + B Penerima kunci publik Data acak pengirim r (A,B) Gambar 4. Struktur transaksi standar. 4. Alice mengirimkan transaksi. 5. Bob memeriksa setiap transaksi yang lewat dengan kunci privatnya (a, b), dan menghitung P ′ = Hs(ar)G + B. Jika transaksi Alice dengan Bob sebagai penerima ada di antara mereka, maka aR = arG = rA dan P′ = P. 7 Publik Pribadi Alice Karol Kunci satu kali Kunci satu kali Kunci satu kali Bob Kunci Bob Alamat Bob Gambar 3. Kunci/model transaksi CryptoNote. Pertama, pengirim melakukan pertukaran Diffie-Hellman untuk mendapatkan rahasia bersama dari datanya dan setengah dari alamat penerima. Kemudian dia menghitung kunci tujuan satu kali, menggunakan kunci bersama rahasia dan paruh kedua alamat. Dua kunci ec yang berbeda diperlukan dari penerima untuk dua langkah ini, jadi alamat CryptoNote standar hampir dua kali lebih besar dari dompet Bitcoin alamat. Penerima juga melakukan pertukaran Diffie-Hellman untuk memulihkannya kunci rahasia. Urutan transaksi standar adalah sebagai berikut: 1. Alice ingin mengirimkan pembayaran kepada Bob, yang telah mempublikasikan alamat standarnya. Dia membongkar alamatnya dan mendapatkan kunci publik Bob (A, B). 2. Alice membangkitkan r acak \(\in\)[1, l−1] dan menghitung kunci publik satu kali \(P = H_s(rA)G +\) B. 3. Alice menggunakan P sebagai kunci tujuan untuk keluaran dan juga mengemas nilai R = rG (sebagai bagian dari bursa Diffie-Hellman) di suatu tempat dalam transaksi. Perhatikan bahwa dia bisa mencipta keluaran lain dengan kunci publik unik: kunci penerima yang berbeda (Ai, Bi) menyiratkan Pi yang berbeda bahkan dengan r yang sama. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan R = rG P = Hs(rA)G + B Penerima kunci publik Data acak pengirim r (A,B) Gambar 4. Struktur transaksi standar. 4. Alice mengirimkan transaksi. 5. Bob memeriksa setiap transaksi yang lewat dengan kunci privatnya (a, b), dan menghitung P ′ = Hs(ar)G + B. Jika transaksi Alice dengan Bob sebagai penerima ada di antara mereka, maka aR = arG = rA dan P′ = P. 7 14 Perhatikan bahwa penulisnya melakukan pekerjaan yang buruk dalam menjaga terminologi mereka tetap lurus teksnya, tetapi terutama di bagian berikutnya. Inkarnasi berikutnya dari makalah ini tentu saja akan terjadi jauh lebih ketat. Dalam teks mereka menyebut P sebagai kunci publik satu kali. Dalam diagram, mereka menyebut R sebagai "Kunci publik Tx" dan P sebagai "Kunci Tujuan". Jika saya ingin menulis ulang ini, saya akan melakukannya secara khusus memaparkan beberapa terminologi sebelum membahas bagian ini. Ell ini sangat besar. Lihat halaman 5. Siapa yang memilih El? Diagram tersebut menggambarkan bahwa transaksi kunci publik R = rG yang bersifat acak dan terpilih oleh pengirim, bukan bagian dari keluaran Tx. Ini karena bisa jadi sama untuk banyak orang transaksi ke banyak orang, dan tidak digunakan KEMUDIAN untuk dibelanjakan. R baru dihasilkan setiap kali Anda ingin menyiarkan transaksi CryptoNote baru. Selanjutnya R hanya digunakan untuk memeriksa apakah Anda adalah penerima transaksi. Ini bukan data sampah, tapi sampah bagi siapa pun tanpa kunci pribadi yang terkait dengan (A,B). Sebaliknya, kunci Tujuan, P = Hs(rA)G + B adalah bagian dari keluaran Tx. Semuanya mengobrak-abrik setiap data transaksi yang lewat harus memeriksa P* yang dihasilkannya sendiri P ini untuk melihat apakah mereka memiliki transaksi yang lewat ini. Siapa pun yang memiliki keluaran transaksi yang belum terpakai (UTXO) akan memiliki banyak Ps yang berserakan dengan jumlah. Untuk menghabiskand, mereka menandatangani beberapa pesan baru termasuk P. Alice harus menandatangani transaksi ini dengan kunci pribadi satu kali yang terkait dengan Kunci Tujuan keluaran transaksi yang tidak terpakai. Setiap kunci tujuan yang dimiliki oleh Alice dilengkapi dengan kunci pribadi satu kali yang juga dimiliki (mungkin) oleh Alice. Setiap kali Alice menginginkannya kirimkan isi kunci tujuan kepadaku, atau Bob, atau Brenda, atau Charlie atau Charlene, dia menggunakan kunci pribadinya untuk menandatangani transaksi. Setelah menerima transaksi, saya akan menerima yang baru Kunci publik Tx, kunci publik Tujuan baru, dan saya akan dapat memulihkan kunci pribadi satu kali yang baru x. Menggabungkan kunci pribadi satu kali saya, x, dengan Tujuan publik transaksi baru kuncinya adalah cara kami mengirim transaksi baru
- Bob dapat memulihkan kunci pribadi satu kali yang sesuai: x = Hs(aR) + b, sehingga P = xG. Dia dapat membelanjakan output ini kapan saja dengan menandatangani transaksi dengan x. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan P′ = Hs(aR)G + bG kunci publik satu kali x = Hs(aR) + b kunci pribadi satu kali Penerima kunci pribadi (a,b) R P' ?= hal Gambar 5. Pengecekan transaksi masuk. Hasilnya Bob mendapat pembayaran masuk, terkait dengan kunci publik satu kali tidak dapat dihubungkan untuk penonton. Beberapa catatan tambahan: • Ketika Bob “mengenali” transaksinya (lihat langkah 5) praktis dia hanya menggunakan setengah dari transaksinya informasi pribadi: (a, B). Pasangan ini, juga dikenal sebagai kunci pelacakan, dapat diteruskan kepada pihak ketiga (Carol). Bob dapat mendelegasikan kepadanya pemrosesan transaksi baru. Bob tidak perlu mempercayai Carol secara eksplisit, karena dia tidak dapat memulihkan kunci rahasia satu kali p tanpa kunci pribadi lengkap Bob (a, b). Pendekatan ini berguna ketika Bob kekurangan bandwidth atau kekuatan komputasi (ponsel pintar, dompet perangkat keras, dll.). • Jika Alice ingin membuktikan bahwa dia mengirimkan transaksi ke alamat Bob, dia dapat mengungkapkannya r atau gunakan protokol tanpa pengetahuan apa pun untuk membuktikan bahwa dia mengetahui r (misalnya dengan menandatangani transaksi dengan r). • Jika Bob ingin memiliki alamat yang kompatibel dengan audit di mana semua transaksi masuk berada dapat ditautkan, dia dapat mempublikasikan kunci pelacakannya atau menggunakan alamat yang terpotong. Alamat itu hanya mewakili satu kunci ec publik B, dan bagian sisanya yang diperlukan oleh protokol adalah diturunkan darinya sebagai berikut: a = Hs(B) dan A = Hs(B)G. Dalam kedua kasus tersebut, setiap orang demikian mampu “mengenali” semua transaksi masuk Bob, namun tentu saja tidak ada yang bisa membelanjakannya dana yang terkandung di dalamnya tanpa kunci rahasia b. 4.4 Tanda tangan cincin satu kali Protokol yang didasarkan pada tanda tangan dering satu kali memungkinkan pengguna mencapai ketidakterhubungan tanpa syarat. Sayangnya, jenis tanda tangan kriptografi biasa mengizinkan pelacakan transaksi ke mereka masing-masing pengirim dan penerima. Solusi kami terhadap kekurangan ini terletak pada penggunaan tanda tangan yang berbeda jenisnya dibandingkan yang saat ini digunakan dalam sistem kas elektronik. Pertama-tama kami akan memberikan gambaran umum tentang algoritma kami tanpa referensi eksplisit uang elektronik. Tanda tangan dering satu kali berisi empat algoritma: (GEN, SIG, VER, LNK): GEN: mengambil parameter publik dan mengeluarkan pasangan ec (P, x) dan kunci publik I. SIG: mengambil pesan m, satu set \(S'\) kunci publik {Pi}i̸=s, sepasang (Ps, xs) dan menghasilkan tanda tangan \(\sigma\) dan himpunan \(S = \)S'\( \cup \{P_s\}\). 8
-
Bob dapat memulihkan kunci pribadi satu kali yang sesuai: x = Hs(aR) + b, sehingga P = xG. Dia dapat membelanjakan output ini kapan saja dengan menandatangani transaksi dengan x. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan P′ = Hs(aR)G + bG kunci publik satu kali x = Hs(aR) + b kunci pribadi satu kali Penerima kunci pribadi (a,b) R P' ?= hal Gambar 5. Pengecekan transaksi masuk. Hasilnya Bob mendapat pembayaran masuk, terkait dengan kunci publik satu kali tidak dapat dihubungkan untuk penonton. Beberapa catatan tambahan: • Ketika Bob “mengenali” transaksinya (lihat langkah 5) praktis dia hanya menggunakan setengah dari transaksinya informasi pribadi: (a, B). Pasangan ini, juga dikenal sebagai kunci pelacakan, dapat diteruskan kepada pihak ketiga (Carol). Bob dapat mendelegasikan kepadanya pemrosesan transaksi baru. Bob tidak perlu mempercayai Carol secara eksplisit, karena dia tidak dapat memulihkan kunci rahasia satu kali p tanpa kunci pribadi lengkap Bob (a,b). Pendekatan ini berguna ketika Bob kekurangan bandwidth atau kekuatan komputasi (ponsel pintar, dompet perangkat keras, dll.). • Jika Alice ingin membuktikan bahwa dia mengirimkan transaksi ke alamat Bob, dia dapat mengungkapkannya r atau gunakan protokol tanpa pengetahuan apa pun untuk membuktikan bahwa dia mengetahui r (misalnya dengan menandatangani transaksi dengan r). • Jika Bob ingin memiliki alamat yang kompatibel dengan audit di mana semua transaksi masuk berada dapat ditautkan, dia dapat mempublikasikan kunci pelacakannya atau menggunakan alamat yang terpotong. Alamat itu hanya mewakili satu kunci ec publik B, dan bagian sisanya yang diperlukan oleh protokol adalah diturunkan darinya sebagai berikut: a = Hs(B) dan A = Hs(B)G. Dalam kedua kasus tersebut, setiap orang demikian mampu “mengenali” semua transaksi masuk Bob, namun tentu saja tidak ada yang bisa membelanjakannya dana yang terkandung di dalamnya tanpa kunci rahasia b. 4.4 Tanda tangan cincin satu kali Protokol yang didasarkan pada tanda tangan dering satu kali memungkinkan pengguna mencapai ketidakterhubungan tanpa syarat. Sayangnya, jenis tanda tangan kriptografi biasa mengizinkan pelacakan transaksi ke mereka masing-masing pengirim dan penerima. Solusi kami terhadap kekurangan ini terletak pada penggunaan tanda tangan yang berbeda jenisnya dibandingkan yang saat ini digunakan dalam sistem kas elektronik. Pertama-tama kami akan menyediakan general deskripsi algoritma kami tanpa referensi eksplisit uang elektronik. Tanda tangan dering satu kali berisi empat algoritma: (GEN, SIG, VER, LNK): GEN: mengambil parameter publik dan mengeluarkan pasangan ec (P, x) dan kunci publik I. SIG: mengambil pesan m, satu set \(S'\) kunci publik {Pi}i̸=s, sepasang (Ps, xs) dan menghasilkan tanda tangan \(\sigma\) dan himpunan \(S = \)S'\( \cup \{P_s\}\). 8 15 Seperti apa keluaran transaksi yang belum terpakai di sini? Diagram menunjukkan bahwa keluaran transaksi hanya terdiri dari dua titik data: jumlah dan kunci tujuan. Tapi ini tidak cukup karena ketika saya mencoba menggunakan "output" ini saya masih perlu mengetahui R=rG. Ingat, r dipilih oleh pengirim, dan R a) digunakan untuk mengenali catatan kripto yang masuk sebagai milik Anda milik sendiri dan b) digunakan untuk menghasilkan kunci pribadi satu kali yang digunakan untuk "mengklaim" uang kripto Anda. Bagian tentang ini yang aku tidak mengerti? Mengambil teori "oke, kita punya ini tanda tangan dan transaksi, dan kami menyebarkannya bolak-balik" ke dunia pemrograman "oke informasi apa khususnya yang membentuk seorang individu UTXO?" Cara terbaik untuk menjawab pertanyaan itu adalah dengan menggali isi kode yang sepenuhnya tidak dikomentari. Bagus sekali, tim bytecoin. Ingat: keterhubungan berarti "apakah orang yang sama mengirim?" dan unlinkability berarti "melakukan hal yang sama orang menerima?". Jadi suatu sistem bisa bersifat linkable atau non-linkable, unlinkable atau non-unlinkable. Mengganggu, aku tahu. Jadi ketika Nic van Saberhagen di sini mengatakan "...pembayaran yang masuk dikaitkan dengan satu kali saja kunci publik yang tidak dapat ditautkan oleh penonton," mari kita lihat apa maksudnya. Pertama, pertimbangkan situasi di mana Alice mengirim Bob dua transaksi terpisah dari transaksi yang sama alamat ke alamat yang sama. Di alam semesta Bitcoin, Alice telah melakukan kesalahan mengirim dari alamat yang sama sehingga transaksi telah gagal memenuhi keinginan kami secara terbatas keterhubungan. Terlebih lagi, karena dia mengirimkan uang ke alamat yang sama, dia menggagalkan keinginan kami untuk tidak dapat dihubungkan. Transaksi bitcoin ini (sepenuhnya) dapat ditautkan dan tidak dapat dibatalkan tautannya. Di sisi lain, di dunia cryptonote, katakanlah Alice mengirimi Bob beberapa cryptonote, menggunakan alamat publik Bob. Dia memilih sebagai kumpulan kunci publiknya yang mengaburkan semua publik yang dikenal kunci di wilayah metro Washington DC. Alex menghasilkan kunci publik satu kali menggunakan miliknya sendiri informasi dan informasi publik Bob. Dia mengirimkan uangnya, dan pengamat mana pun akan melakukannya hanya dapat memperoleh informasi "Seseorang dari wilayah metro Washington DC mengirim 2,3 cryptonotes ke alamat publik satu kali XYZ123." Kami memiliki kendali probabilistik atas keterhubungan di sini, jadi kami menyebutnya "hampir tidak dapat ditautkan". Kami juga hanya melihat satu kali kunci publik yang menjadi tujuan pengiriman uang. Bahkan jika kita mencurigai penerimanya adalah Bob, kami tidak memiliki kunci pribadinya sehingga kami tidak dapat menguji apakah transaksi tersebut lewat milik Bob apalagi menghasilkan kunci pribadi satu kali untuk menebus cryptonote-nya. Jadi ini pada kenyataannya, sama sekali "tidak dapat dihubungkan". Jadi, ini adalah trik yang paling rapi. Siapa yang ingin mempercayai MtGox lain? Kita mungkin saja nyaman menyimpan sejumlah BTC di Coinbase, tetapi keamanan bitcoin yang paling utama adalah dompet fisik. Itu tidak nyaman. Dalam hal ini, Anda dapat memberikan setengah dari kunci pribadi Anda tanpa mengorbankan kunci pribadi Anda kemampuan sendiri untuk membelanjakan uang. Saat melakukan ini, yang Anda lakukan hanyalah memberi tahu seseorang cara memutus ketidakterhubungan. Yang lainnya properti CN yang bertindak seperti mata uang dipertahankan, sebagai bukti terhadap pembelanjaan ganda dan yang lainnya.
-
Bob dapat memulihkan kunci pribadi satu kali yang sesuai: x = Hs(aR) + b, sehingga P = xG. Dia dapat membelanjakan output ini kapan saja dengan menandatangani transaksi dengan x. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan P′ = Hs(aR)G + bG kunci publik satu kali x = Hs(aR) + b kunci pribadi satu kali Penerima kunci pribadi (a,b) R P' ?= hal Gambar 5. Pengecekan transaksi masuk. Hasilnya Bob mendapat pembayaran masuk, terkait dengan kunci publik satu kali tidak dapat dihubungkan untuk penonton. Beberapa catatan tambahan: • Ketika Bob “mengenali” transaksinya (lihat langkah 5) praktis dia hanya menggunakan setengah dari transaksinya informasi pribadi: (a, B). Pasangan ini, juga dikenal sebagai kunci pelacakan, dapat diteruskan kepada pihak ketiga (Carol). Bob dapat mendelegasikan kepadanya pemrosesan transaksi baru. Bob tidak perlu mempercayai Carol secara eksplisit, karena dia tidak dapat memulihkan kunci rahasia satu kali p tanpa kunci pribadi lengkap Bob (a, b). Pendekatan ini berguna ketika Bob kekurangan bandwidth atau kekuatan komputasi (ponsel pintar, dompet perangkat keras, dll.). • Jika Alice ingin membuktikan bahwa dia mengirimkan transaksi ke alamat Bob, dia dapat mengungkapkannya r atau gunakan protokol tanpa pengetahuan apa pun untuk membuktikan bahwa dia mengetahui r (misalnya dengan menandatangani transaksi dengan r). • Jika Bob ingin memiliki alamat yang kompatibel dengan audit di mana semua transaksi masuk berada dapat ditautkan, dia dapat mempublikasikan kunci pelacakannya atau menggunakan alamat yang terpotong. Alamat itu hanya mewakili satu kunci ec publik B, dan bagian sisanya yang diperlukan oleh protokol adalah diturunkan darinya sebagai berikut: a = Hs(B) dan A = Hs(B)G. Dalam kedua kasus tersebut, setiap orang demikian mampu “mengenali” semua transaksi masuk Bob, namun tentu saja tidak ada yang bisa membelanjakannya dana yang terkandung di dalamnya tanpa kunci rahasia b. 4.4 Tanda tangan cincin satu kali Protokol yang didasarkan pada tanda tangan dering satu kali memungkinkan pengguna mencapai ketidakterhubungan tanpa syarat. Sayangnya, jenis tanda tangan kriptografi biasa mengizinkan pelacakan transaksi ke mereka masing-masing pengirim dan penerima. Solusi kami terhadap kekurangan ini terletak pada penggunaan tanda tangan yang berbeda jenisnya dibandingkan yang saat ini digunakan dalam sistem kas elektronik. Pertama-tama kami akan memberikan gambaran umum tentang algoritma kami tanpa referensi eksplisit uang elektronik. Tanda tangan dering satu kali berisi empat algoritma: (GEN, SIG, VER, LNK): GEN: mengambil parameter publik dan mengeluarkan pasangan ec (P, x) dan kunci publik I. SIG: mengambil pesan m, satu set \(S'\) kunci publik {Pi}i̸=s, sepasang (Ps, xs) dan menghasilkan tanda tangan \(\sigma\) dan himpunan \(S = \)S'\( \cup \{P_s\}\). 8
- Bob dapat memulihkan kunci pribadi satu kali yang sesuai: x = Hs(aR) + b, sehingga P = xG. Dia dapat membelanjakan output ini kapan saja dengan menandatangani transaksi dengan x. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan P′ = Hs(aR)G + bG kunci publik satu kali x = Hs(aR) + b kunci pribadi satu kali Penerima kunci pribadi (a,b) R P' ?= hal Gambar 5. Pengecekan transaksi masuk. Hasilnya Bob mendapat pembayaran masuk, terkait dengan kunci publik satu kali tidak dapat dihubungkan untuk penonton. Beberapa catatan tambahan: • Ketika Bob “mengenali” transaksinya (lihat langkah 5) praktis dia hanya menggunakan setengah dari transaksinya informasi pribadi: (a, B). Pasangan ini, juga dikenal sebagai kunci pelacakan, dapat diteruskan kepada pihak ketiga (Carol). Bob dapat mendelegasikan kepadanya pemrosesan transaksi baru. Bob tidak perlu mempercayai Carol secara eksplisit, karena dia tidak dapat memulihkan kunci rahasia satu kali p tanpa kunci pribadi lengkap Bob (a,b). Pendekatan ini berguna ketika Bob kekurangan bandwidth atau kekuatan komputasi (ponsel pintar, dompet perangkat keras, dll.). • Jika Alice ingin membuktikan bahwa dia mengirimkan transaksi ke alamat Bob, dia dapat mengungkapkannya r atau gunakan protokol tanpa pengetahuan apa pun untuk membuktikan bahwa dia mengetahui r (misalnya dengan menandatangani transaksi dengan r). • Jika Bob ingin memiliki alamat yang kompatibel dengan audit di mana semua transaksi masuk berada dapat ditautkan, dia dapat mempublikasikan kunci pelacakannya atau menggunakan alamat yang terpotong. Alamat itu hanya mewakili satu kunci ec publik B, dan bagian sisanya yang diperlukan oleh protokol adalah diturunkan darinya sebagai berikut: a = Hs(B) dan A = Hs(B)G. Dalam kedua kasus tersebut, setiap orang demikian mampu “mengenali” semua transaksi masuk Bob, namun tentu saja tidak ada yang bisa membelanjakannya dana yang terkandung di dalamnya tanpa kunci rahasia b. 4.4 Tanda tangan cincin satu kali Protokol yang didasarkan pada tanda tangan dering satu kali memungkinkan pengguna mencapai ketidakterhubungan tanpa syarat. Sayangnya, jenis tanda tangan kriptografi biasa mengizinkan pelacakan transaksi ke mereka masing-masing pengirim dan penerima. Solusi kami terhadap kekurangan ini terletak pada penggunaan tanda tangan yang berbeda jenisnya dibandingkan yang saat ini digunakan dalam sistem kas elektronik. Pertama-tama kami akan menyediakan general deskripsi algoritma kami tanpa referensi eksplisit uang elektronik. Tanda tangan dering satu kali berisi empat algoritma: (GEN, SIG, VER, LNK): GEN: mengambil parameter publik dan mengeluarkan pasangan ec (P, x) dan kunci publik I. SIG: mengambil pesan m, satu set \(S'\) kunci publik {Pi}i̸=s, sepasang (Ps, xs) dan menghasilkan tanda tangan \(\sigma\) dan himpunan \(S = \)S'\( \cup \{P_s\}\). 8 16 Ya, jadi sekarang kami memiliki a) alamat pembayaran dan b) ID pembayaran. Kritikus mungkin bertanya "apakah kita benar-benar perlu melakukan ini? Lagi pula, jika pedagang menerima 112.00678952 CN tepatnya, dan itu pesanan saya, dan saya punya tangkapan layar atau tanda terima atau apa pun, bukan tingkat presisi yang gila, cukup?" Jawabannya adalah "mungkin, sering kali, dalam kehidupan sehari-hari, transaksi tatap muka.” Namun, situasi yang lebih umum (terutama di dunia digital) adalah: seorang pedagang menjual sekumpulan objek yang masing-masing mempunyai harga tetap. Katakanlah benda A 0,001 CN, benda B 0,01 CN dan benda C adalah 0,1 CN. Nah kalau merchant mendapat order 1.618 CN, banyak sekali (banyak!) cara untuk mengatur pesanan untuk pelanggan. Jadi tanpa semacam ID pembayaran, mengidentifikasi apa yang disebut pesanan "unik" pelanggan dengan apa yang disebut biaya "unik" mereka ketertiban menjadi mustahil. Yang lebih lucu lagi: jika semua yang ada di toko online saya harganya tepat 1,0 CN, dan saya mendapatkan 1000 pelanggan sehari? Dan Anda ingin membuktikan bahwa Anda membeli tepat 3 benda dua minggu lalu? Tanpa ID pembayaran? Semoga berhasil, sobat. Singkat cerita: Saat Bob menerbitkan alamat pembayaran, dia mungkin juga menerbitkan a ID pembayaran juga (lihat, misalnya deposit Poloniex XMR). Hal ini berbeda dengan apa yang dijelaskan dalam teks di sini di mana Alice adalah orang yang menghasilkan ID pembayaran. Pasti ada cara bagi Bob untuk menghasilkan ID pembayaran juga. (a,b) Ingatlah bahwa kunci pelacakan (a,B) dapat dipublikasikan; kehilangan kerahasiaan nilai surat wasiat 'a' tidak melanggar kemampuan Anda untuk membelanjakan uang atau membiarkan orang mencuri dari Anda (menurut saya... itu akan terjadi dibuktikan), itu hanya akan memungkinkan orang untuk melihat semua transaksi masuk. Alamat yang terpotong, seperti yang dijelaskan dalam paragraf ini, hanya mengambil bagian "pribadi" dari kunci tersebut dan menghasilkannya dari bagian "publik". Mengungkap nilai 'a' akan menghilangkan ketidakterhubungan tetapi akan mempertahankan sisa transaksi. Yang dimaksud penulis adalah "tidak dapat ditautkan" karena tidak dapat ditautkan mengacu pada penerima dan dapat ditautkan mengacu pada pengirimnya. Jelas juga bahwa penulis tidak menyadari bahwa ada dua aspek berbeda dalam keterhubungan. Karena transaksi adalah objek berarah pada grafik, maka akan timbul dua pertanyaan: "Apakah kedua transaksi ini ditujukan kepada orang yang sama?" dan "apakah kedua transaksi ini akan datang dari orang yang sama?" Ini adalah kebijakan "tidak ada jalan kembali" yang mendasari properti tidak dapat ditautkannya CryptoNote bersyarat. Artinya, Bob dapat memilih agar transaksi masuknya tidak dapat dibatalkan tautannya menggunakan kebijakan ini. Ini adalah klaim yang mereka buktikan berdasarkan Random Oracle Model. Kita akan membahasnya; yang Acak Oracle memiliki pro dan kontra.
VER: mengambil pesan m, satu set S, tanda tangan \(\sigma\) dan menghasilkan output “benar” atau “salah”. LNK: mengambil himpunan I = {Ii}, tanda tangan \(\sigma\) dan menghasilkan keluaran “tertaut” atau “indep”. Ide di balik protokol ini cukup sederhana: pengguna membuat tanda tangan diperiksa oleh sekumpulan kunci publik, bukan kunci publik unik. Identitas penandatangan adalah tidak dapat dibedakan dari pengguna lain yang kunci publiknya ada di set sampai pemiliknya memproduksinya tanda tangan kedua menggunakan pasangan kunci yang sama. Kunci pribadi x0 \(\cdots\) xi \(\cdots\) xn Kunci publik P0 \(\cdots\) pi \(\cdots\) hal Cincin Tanda tangan tanda tangan verifikasi Gambar 6. Anonimitas tanda tangan dering. GEN: Penanda tangan mengambil kunci rahasia acak \(x \in [1, l - 1]\) dan menghitung kunci rahasia yang sesuai kunci publik P = xG. Selain itu, dia menghitung kunci publik lain I = xHp(P) yang akan kita lakukan sebut "gambar kunci". SIG: Penandatangan menghasilkan tanda tangan dering satu kali dengan pengetahuan nol non-interaktif pembuktian menggunakan teknik dari [21]. Dia memilih subset acak \(S'\) dari n dari pengguna lain. kunci publik Pi, pasangan kuncinya sendiri (x, P) dan gambar kunci I. Misalkan \(0 \leq s \leq n\) menjadi indeks rahasia penanda tangan di S (sehingga kunci publiknya adalah Ps). Dia memilih {qi | secara acak saya = 0 . . . n} dan {wi | saya = 0 . . . n, i ̸= s} dari (1 . . . l) dan menerapkan transformasi berikut: Li = ( qiG, jika saya = s qiG + wiPi, jika saya ̸= s Ri = ( qiHp(Pi), jika saya = s qiHp(Pi) + wiI, jika saya ̸= s Langkah selanjutnya adalah mendapatkan tantangan non-interaktif: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Akhirnya penandatangan menghitung responsnya: ci = wi, jika saya ̸= s c - nP saya=0 ci mod aku, jika saya = s ri = ( qi, jika saya ̸= s qs−csx mod aku, jika saya = s Tanda tangan yang dihasilkan adalah \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER: mengambil pesan m, satu set S, tanda tangan \(\sigma\) dan menghasilkan output “benar” atau “salah”. LNK: mengambil himpunan I = {Ii}, tanda tangan \(\sigma\) dan menghasilkan keluaran “tertaut” atau “indep”. Ide di balik protokol ini cukup sederhana: pengguna membuat tanda tangan diperiksa oleh sekumpulan kunci publik, bukan kunci publik unik. Identitas penandatangan adalah tidak dapat dibedakan dari pengguna lain yang kunci publiknya ada di set sampai pemiliknya memproduksinya tanda tangan kedua menggunakan pasangan kunci yang sama. Kunci pribadi x0 \(\cdots\) xi \(\cdots\) xn Kunci publik P0 \(\cdots\) pi \(\cdots\) hal Cincin Tanda tangan tanda tangan verifikasi Gambar 6. Anonimitas tanda tangan dering. GEN: Penanda tangan mengambil kunci rahasia acak \(x \in [1, l - 1]\) dan menghitung kunci rahasia yang sesuai kunci publik P = xG. Selain itu, dia menghitung kunci publik lain I = xHp(P) yang akan kita lakukan sebut "gambar kunci". SIG: Penandatangan menghasilkan tanda tangan dering satu kali dengan pengetahuan nol non-interaktif pembuktian menggunakan teknik dari [21]. Dia memilih subset acak \(S'\) dari n dari pengguna lain. kunci publik Pi, pasangan kuncinya sendiri (x, P) dan gambar kunci I. Misalkan \(0 \leq s \leq n\) menjadi indeks rahasia penanda tangan di S (sehingga kunci publiknya adalah Ps). Dia memilih {qi | secara acak saya = 0 . . . n} dan {wi | saya = 0 . . . n, i ̸= s} dari (1 . . . l) dan menerapkan transformasi berikut: Li = ( qiG, jika saya = s qiG + wiPi, jika saya ̸= s Ri = ( qiHp(Pi), jika saya = s qiHp(Pi) + wiI, jika saya ̸= s Langkah selanjutnya adalah mendapatkan tantangan non-interaktif: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Akhirnya penandatangan menghitung responsnya: ci = wi, jika saya ̸= s c - nP saya=0 ci mod aku, jika saya = s ri = ( qi, jika saya ̸= s qs−csx mod aku, jika saya = s Tanda tangan yang dihasilkan adalah \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 17 Mungkin ini bodoh, tapi kehati-hatian harus diberikan saat menyatukan S dan P_s. Jika Anda hanya menambahkan kunci publik terakhir sampai akhir, ketidakterhubungan rusak karena siapa pun memeriksa transaksi yang lewat cukup memeriksa kunci publik terakhir yang terdaftar di setiap transaksi dan booming. Itu kunci publiknya berhubungan dengan pengirimnya. Jadi setelah penyatuan, generator nomor pseudorandom harus ada digunakan untuk mengubah kunci publik yang dipilih. "...sampai pemilik membuat tanda tangan kedua menggunakan pasangan kunci yang sama." Saya berharap penulisnya? akan menguraikan hal ini. Saya yakin ini berarti "pastikan bahwa setiap kali Anda memilih sekumpulan kunci publik untuk dikaburkan sendiri, Anda memilih satu set yang benar-benar baru tanpa dua kunci yang sama." Yang tampak seperti a kondisi yang cukup kuat untuk ditempatkan pada ketidakterhubungan. Mungkin "Anda memilih kumpulan acak baru semua kunci yang mungkin" dengan asumsi bahwa, meskipun persimpangan nontrivial pasti akan terjadi terjadi, hal itu tidak akan sering terjadi. Apa pun yang terjadi, saya perlu menggali lebih dalam pernyataan ini. Ini menghasilkan tanda tangan cincin. Bukti tanpa pengetahuan itu luar biasa: Saya menantang Anda untuk membuktikan kepada saya bahwa Anda mengetahui sebuah rahasia tanpa mengungkapkan rahasianya. Misalnya saja kita berada di pintu masuk gua yang berbentuk donat, dan di belakang gua (di luar pandangan dari pintu masuk) ada opintu baru ke mana Anda mengaku kamu punya kuncinya. Jika Anda pergi ke satu arah, ia selalu membiarkan Anda lewat, tetapi jika Anda pergi ke arah yang lain arah lain, Anda memerlukan kunci. Tapi Anda bahkan tidak mau TUNJUKKAN kuncinya kepada saya, apalagi tunjukkan padaku bahwa itu membuka pintu. Tapi Anda ingin membuktikan kepada saya bahwa Anda tahu cara membukanya pintu. Dalam suasana interaktif, saya melempar koin. Kepala di kiri, ekor di kanan, dan Anda turun ke bawah gua berbentuk donat ke arah mana pun koin mengarahkan Anda. Di belakang, di luar pandanganku, kamu buka pintu untuk kembali ke sisi lain. Kami mengulangi eksperimen melempar koin sampai saya puas bahwa Anda memiliki kuncinya. Tapi itu jelas merupakan bukti tanpa pengetahuan yang INTERAKTIF. Ada versi non-interaktif di mana Anda dan saya tidak perlu berkomunikasi; dengan cara ini, tidak ada penyadap yang dapat mengganggu. http://en.wikipedia.org/wiki/Zero-knowledge_proof Ini kebalikan dari definisi sebelumnya.
VER: mengambil pesan m, satu set S, tanda tangan \(\sigma\) dan menghasilkan output “benar” atau “salah”. LNK: mengambil himpunan I = {Ii}, tanda tangan \(\sigma\) dan menghasilkan keluaran “tertaut” atau “indep”. Ide di balik protokol ini cukup sederhana: pengguna membuat tanda tangan diperiksa oleh sekumpulan kunci publik, bukan kunci publik unik. Identitas penandatangan adalah tidak dapat dibedakan dari pengguna lain yang kunci publiknya ada di set sampai pemiliknya memproduksinya tanda tangan kedua menggunakan pasangan kunci yang sama. Kunci pribadi x0 \(\cdots\) xi \(\cdots\) xn Kunci publik P0 \(\cdots\) pi \(\cdots\) hal Cincin Tanda tangan tanda tangan verifikasi Gambar 6. Anonimitas tanda tangan dering. GEN: Penanda tangan mengambil kunci rahasia acak \(x \in [1, l - 1]\) dan menghitung kunci rahasia yang sesuai kunci publik P = xG. Selain itu, dia menghitung kunci publik lain I = xHp(P) yang akan kita lakukan sebut "gambar kunci". SIG: Penandatangan menghasilkan tanda tangan dering satu kali dengan pengetahuan nol non-interaktif bukti menggunakan teknik dari [21]. Dia memilih subset acak \(S'\) dari n dari pengguna lain. kunci publik Pi, pasangan kuncinya sendiri (x, P) dan gambar kunci I. Misalkan \(0 \leq s \leq n\) menjadi indeks rahasia penanda tangan di S (sehingga kunci publiknya adalah Ps). Dia memilih {qi | secara acak saya = 0 . . . n} dan {wi | saya = 0 . . . n, i ̸= s} dari (1 . . . l) dan menerapkan transformasi berikut: Li = ( qiG, jika saya = s qiG + wiPi, jika saya ̸= s Ri = ( qiHp(Pi), jika saya = s qiHp(Pi) + wiI, jika saya ̸= s Langkah selanjutnya adalah mendapatkan tantangan non-interaktif: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Akhirnya penandatangan menghitung responsnya: ci = wi, jika saya ̸= s c - nP saya=0 ci mod aku, jika saya = s ri = ( qi, jika saya ̸= s qs−csx mod aku, jika saya = s Tanda tangan yang dihasilkan adalah \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER: mengambil pesan m, satu set S, tanda tangan \(\sigma\) dan menghasilkan output “benar” atau “salah”. LNK: mengambil himpunan I = {Ii}, tanda tangan \(\sigma\) dan menghasilkan keluaran “tertaut” atau “indep”. Ide di balik protokol ini cukup sederhana: pengguna membuat tanda tangan diperiksa oleh sekumpulan kunci publik, bukan kunci publik unik. Identitas penandatangan adalah tidak dapat dibedakan dari pengguna lain yang kunci publiknya ada di set sampai pemiliknya memproduksinya tanda tangan kedua menggunakan pasangan kunci yang sama. Kunci pribadi x0 \(\cdots\) xi \(\cdots\) xn Kunci publik P0 \(\cdots\) pi \(\cdots\) hal Cincin Tanda tangan tanda tangan verifikasi Gambar 6. Anonimitas tanda tangan dering. GEN: Penanda tangan mengambil kunci rahasia acak \(x \in [1, l - 1]\) dan menghitung kunci rahasia yang sesuai kunci publik P = xG. Selain itu, dia menghitung kunci publik lain I = xHp(P) yang akan kita lakukan sebut "gambar kunci". SIG: Penandatangan menghasilkan tanda tangan dering satu kali dengan pengetahuan nol non-interaktif bukti menggunakan teknik dari [21]. Dia memilih subset acak \(S'\) dari n dari pengguna lain. kunci publik Pi, pasangan kuncinya sendiri (x, P) dan gambar kunci I. Misalkan \(0 \leq s \leq n\) menjadi indeks rahasia penanda tangan di S (sehingga kunci publiknya adalah Ps). Dia memilih {qi | secara acak saya = 0 . . . n} dan {wi | saya = 0 . . . n, i ̸= s} dari (1 . . . l) dan menerapkan transformasi berikut: Li = ( qiG, jika saya = s qiG + wiPi, jika saya ̸= s Ri = ( qiHp(Pi), jika saya = s qiHp(Pi) + wiI, jika saya ̸= s Langkah selanjutnya adalah mendapatkan tantangan non-interaktif: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Akhirnya penandatangan menghitung responsnya: ci = wi, jika saya ̸= s c - nP saya=0 ci mod aku, jika saya = s ri = ( qi, jika saya ̸= s qs−csx mod aku, jika saya = s Tanda tangan yang dihasilkan adalah \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 18 Seluruh area ini adalah cryptonote agnostic, hanya menggambarkan algoritma tanda tangan cincin tanpa referensi mata uang. Saya curiga beberapa notasinya konsisten dengan makalah lainnya, meskipun begitu. Misalnya, x adalah kunci rahasia "acak" yang dipilih di GEN, yang menghasilkan kunci publik P dan gambar kunci publik I. Nilai x ini adalah nilai yang dihitung Bob di bagian 6 halaman 8. Jadi begini mulai menjernihkan beberapa kebingungan dari uraian sebelumnya. Ini keren; uang tidak ditransfer dari "alamat publik Alice ke publik Bob alamat." Ini sedang ditransfer dari alamat satu kali ke alamat satu kali. Jadi, dalam arti tertentu, inilah cara kerjanya. Jika Alex memiliki beberapa cryptonotes karena seseorang mengirimkannya kepadanya, ini berarti dia memiliki kunci pribadi yang diperlukan untuk mengirimkannya kepada Bob. Dia menggunakan pertukaran Diffie-Hellman menggunakan informasi publik Bob untuk menghasilkan alamat satu kali yang baru dan cryptonotes ditransfer ke alamat itu. Sekarang, karena pertukaran DH (yang mungkin aman) digunakan untuk menghasilkan alamat satu kali yang baru kepada siapa Alex mengirimkan CN-nya, Bob adalah satu-satunya yang memiliki kunci pribadi yang diperlukan untuk mengulanginya di atas. Jadi sekarang, Bob adalah Alex. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation Penjumlahan harus diindeks pada j bukan i. Setiap c_i adalah sampah acak (karena w_i acak) kecuali pantat c_iterkait dengan kunci sebenarnya yang terlibat dalam tanda tangan ini. Nilai c adalah a hash dari informasi sebelumnya. Saya pikir ini mungkin mengandung kesalahan ketik yang lebih buruk daripada menggunakan kembali indeks 'i', karena sepertinya c_s untuk didefinisikan secara implisit, bukan eksplisit. Memang, jika kita mengambil persamaan ini dengan keyakinan, maka kita menentukan bahwa c_s = (1/2)c - (1/2) jumlah_i neq s c_i. Artinya, hash dikurangi sejumlah angka acak. Sebaliknya jika penjumlahan ini dimaksudkan untuk dibaca "c_s = (c - sum_j neq s c_j) mod l", lalu kita ambil hash dari informasi kita sebelumnya, buat sekumpulan angka acak, kurangi semua angka acak itu dari hash, dan itu memberi kita c_s. Ini tampaknya terjadi apa yang "seharusnya" terjadi berdasarkan intuisi saya, dan cocok dengan langkah verifikasi di halaman 10. Tapi intuisi bukanlah matematika. Saya akan menggali lebih dalam tentang ini. Sama seperti sebelumnya; semua ini akan menjadi sampah acak kecuali yang terkait dengan yang sebenarnya kunci publik penandatangan x. Kecuali kali ini, inilah yang saya harapkan dari strukturnya: r_i acak untuk i!=s dan r_s hanya ditentukan oleh rahasia x dan nilai indeks s dari q_i dan c_i.
VER: Pemverifikasi memeriksa tanda tangan dengan menerapkan transformasi terbalik: ( aku saya = riG + ciPi R′ saya = riHp(Pi) + ciI Akhirnya, pemverifikasi memeriksa apakah nP saya=0 ci ?= Hs(m, L′ 0, . . . , aku′ n, R′ 0, . . . , R′ n) mod l Jika persamaan ini benar, pemverifikasi menjalankan algoritma LNK. Jika tidak, pemverifikasi akan menolak tanda tangan. LNK: Pemverifikasi memeriksa apakah saya telah digunakan pada tanda tangan sebelumnya (nilai-nilai ini disimpan di set I). Penggunaan ganda menyiratkan bahwa dua tanda tangan dihasilkan di bawah kunci rahasia yang sama. Arti protokol: dengan menerapkan transformasi L, penandatangan membuktikan bahwa dia mengetahuinya sedemikian rupa sehingga setidaknya satu Pi = xG. Untuk membuat bukti ini tidak dapat diulangi, kami memperkenalkan gambar kuncinya karena saya = xHp(P). Penandatangan menggunakan koefisien yang sama (ri, ci) untuk membuktikan pernyataan yang hampir sama: dia mengetahui x sedemikian rupa sehingga setidaknya satu \(H_p(P_i) = I \cdot x^{-1}\). Jika pemetaan \(x \to I\) adalah injeksi: 1. Tidak ada seorang pun yang dapat memulihkan kunci publik dari gambar kunci dan mengidentifikasi penandatangannya; 2. Penanda tangan tidak boleh membuat dua tanda tangan dengan huruf I berbeda dan x yang sama. Analisis keamanan lengkap disediakan di Lampiran A. 4.5 Transaksi CryptoNote standar Dengan menggabungkan kedua metode (kunci publik yang tidak dapat ditautkan dan tanda tangan cincin yang tidak dapat dilacak), Bob berhasil mencapainya tingkat privasi baru dibandingkan dengan skema Bitcoin asli. Itu mengharuskan dia untuk menyimpan saja satu kunci pribadi (a, b) dan publikasikan (A, B) untuk mulai menerima dan mengirim transaksi anonim. Saat memvalidasi setiap transaksi, Bob juga hanya melakukan dua perkalian kurva elips dan satu penambahan per output untuk memeriksa apakah suatu transaksi miliknya. Untuk setiap miliknya keluaran Bob memulihkan pasangan kunci satu kali (pi, Pi) dan menyimpannya di dompetnya. Masukan apa saja bisa terbukti secara tidak langsung mempunyai pemilik yang sama hanya jika mereka muncul dalam satu transaksi. Di Faktanya, hubungan ini jauh lebih sulit untuk dibangun karena tanda tangan satu kali saja. Dengan tanda tangan cincin, Bob dapat secara efektif menyembunyikan setiap masukan dari masukan orang lain; semua mungkin pembelanja akan sama besarnya, bahkan pemilik sebelumnya (Alice) tidak memiliki informasi lebih dari itu pengamat mana pun. Saat menandatangani transaksinya, Bob menentukan n output luar negeri dengan jumlah yang sama dengan miliknya keluaran, mencampur semuanya tanpa partisipasi pengguna lain. Bob sendiri (dan juga orang lain) tidak mengetahui apakah pembayaran ini telah dibelanjakan: suatu keluaran dapat digunakan dalam ribuan tanda tangan sebagai faktor ambiguitas dan tidak pernah menjadi sasaran persembunyian. Ganda pemeriksaan pembelanjaan terjadi pada fase LNK saat memeriksa kumpulan gambar kunci yang digunakan. Bob dapat memilih sendiri derajat ambiguitasnya: n = 1 berarti probabilitas yang dimilikinya menghabiskan output adalah probabilitas 50%, n = 99 menghasilkan 1%. Ukuran tanda tangan yang dihasilkan bertambah linier sebagai O(n+1), sehingga peningkatan anonimitas memerlukan biaya transaksi tambahan bagi Bob. Dia juga bisa setel n = 0 dan buat tanda tangan cincinnya hanya terdiri dari satu elemen, namun ini akan langsung terjadi mengungkapkan dia sebagai seorang pemboros. 10 VER: Pemverifikasi memeriksa tanda tangan dengan menerapkan transformasi terbalik: ( aku saya = riG + ciPi R′ saya = riHp(Pi) + ciI Akhirnya, pemverifikasi memeriksa apakah nP saya=0 ci ?= Hs(m, L′ 0, . . . , aku' n, R′ 0, . . . , R′ n) mod l Jika persamaan ini benar, pemverifikasi menjalankan algoritma LNK. Jika tidak, pemverifikasi akan menolak tanda tangan. LNK: Pemverifikasi memeriksa apakah saya telah digunakan pada tanda tangan sebelumnya (nilai-nilai ini disimpan di set I). Penggunaan ganda menyiratkan bahwa dua tanda tangan dihasilkan di bawah kunci rahasia yang sama. Arti protokol: dengan menerapkan transformasi L, penandatangan membuktikan bahwa dia mengetahuinya sedemikian rupa sehingga setidaknya satu Pi = xG. Untuk membuat bukti ini tidak dapat diulangi, kami memperkenalkan gambar kuncinya karena saya = xHp(P). Penandatangan menggunakan koefisien yang sama (ri, ci) untuk membuktikan pernyataan yang hampir sama: dia mengetahui x sedemikian rupa sehingga setidaknya satu \(H_p(P_i) = I \cdot x^{-1}\). Jika pemetaan \(x \to I\) adalah injeksi: 1. Tidak ada seorang pun yang dapat memulihkan kunci publik dari gambar kunci dan mengidentifikasi penandatangannya; 2. Penanda tangan tidak boleh membuat dua tanda tangan dengan huruf I berbeda dan x yang sama. Analisis keamanan lengkap disediakan di Lampiran A. 4.5 Transaksi CryptoNote standar Dengan menggabungkan kedua metode (kunci publik yang tidak dapat ditautkan dan tanda tangan cincin yang tidak dapat dilacak), Bob berhasil mencapainya tingkat privasi baru dibandingkan dengan skema Bitcoin asli. Itu mengharuskan dia untuk menyimpan saja satu kunci pribadi (a, b) dan publikasikan (A, B) untuk mulai menerima dan mengirim transaksi anonim. Saat memvalidasi setiap transaksi, Bob juga hanya melakukan dua perkalian kurva elips dan satu penambahan per output untuk memeriksa apakah suatu transaksi miliknya. Untuk setiap miliknya output Bob memulihkan keypair satu kali (pi, Pi) dan stbijih itu di dompetnya. Masukan apa saja bisa terbukti secara tidak langsung mempunyai pemilik yang sama hanya jika mereka muncul dalam satu transaksi. Di Faktanya, hubungan ini jauh lebih sulit untuk dibangun karena tanda tangan satu kali saja. Dengan tanda tangan cincin, Bob dapat secara efektif menyembunyikan setiap masukan dari masukan orang lain; semua mungkin pembelanja akan sama besarnya, bahkan pemilik sebelumnya (Alice) tidak memiliki informasi lebih dari itu pengamat mana pun. Saat menandatangani transaksinya, Bob menentukan n output luar negeri dengan jumlah yang sama dengan miliknya keluaran, mencampur semuanya tanpa partisipasi pengguna lain. Bob sendiri (dan juga orang lain) tidak mengetahui apakah pembayaran ini telah dibelanjakan: suatu keluaran dapat digunakan dalam ribuan tanda tangan sebagai faktor ambiguitas dan tidak pernah menjadi sasaran persembunyian. Ganda pemeriksaan pembelanjaan terjadi pada fase LNK saat memeriksa kumpulan gambar kunci yang digunakan. Bob dapat memilih sendiri derajat ambiguitasnya: n = 1 berarti probabilitas yang dimilikinya menghabiskan output adalah probabilitas 50%, n = 99 menghasilkan 1%. Ukuran tanda tangan yang dihasilkan bertambah linier sebagai O(n+1), sehingga peningkatan anonimitas memerlukan biaya transaksi tambahan bagi Bob. Dia juga bisa setel n = 0 dan buat tanda tangan cincinnya hanya terdiri dari satu elemen, namun ini akan langsung terjadi mengungkapkan dia sebagai seorang pemboros. 10 19 Saat ini, saya sangat bingung. Alex menerima pesan M dengan tanda tangan (I,c_1, ..., c_n, r_1, ..., r_n) dan daftar publik kunci S. dan dia menjalankan VER. Ini akan menghitung L_i' dan R_i' Ini memverifikasi bahwa c_s = c - sum_i neq s c_i pada halaman sebelumnya. Awalnya saya SANGAT (ha) bingung. Siapa pun dapat menghitung L_i' dan R_i'. Memang, masing-masing r_i dan c_i telah diterbitkan dalam tanda tangan sigma sama dengan nilai I. Himpunan S = P_i dari semua kunci publik juga telah dipublikasikan. Jadi siapapun yang pernah melihat sigma dan himpunan kunci S = P_i akan mendapatkan nilai yang sama untuk L_i' dan R_i' dan karenanya periksa tanda tangannya. Tapi kemudian saya ingat bagian ini hanya menjelaskan algoritma tanda tangan, bukan "cek jika ditandatangani, periksa apakah DIKIRIM KEPADA SAYA, dan jika demikian, belanjakan uangnya." Ini HANYA bagian tanda tangan dari permainan. Saya tertarik untuk membaca Lampiran A ketika saya akhirnya sampai di sana. Saya ingin melihat perbandingan operasi demi operasi skala penuh antara Cryptonote dengan Bitcoin. Juga, listrik/keberlanjutan. Bagian algoritma apa yang merupakan "input" di sini? Saya yakin masukan transaksi adalah Jumlah dan kumpulan UTXO yang jumlahnya lebih besar daripada jumlah Jumlah. Ini tidak jelas. “Target persembunyian?” Saya telah memikirkan hal ini selama beberapa menit sekarang dan saya masih belum memikirkannya gagasan paling kabur tentang apa artinya itu. Serangan pembelanjaan ganda hanya dapat dilakukan dengan memanipulasi kunci yang dianggap digunakan oleh sebuah node kumpulan gambar \(I\). "Tingkat ambiguitas" = n tetapi jumlah total kunci publik yang termasuk dalam transaksi adalah n+1. Artinya, tingkat ambiguitas adalah "berapa banyak orang LAIN yang Anda inginkan orang banyak?" Jawabannya mungkin, secara default, "sebanyak mungkin".
VER: Pemverifikasi memeriksa tanda tangan dengan menerapkan transformasi terbalik: ( aku saya = riG + ciPi R′ saya = riHp(Pi) + ciI Akhirnya, pemverifikasi memeriksa apakah nP saya=0 ci ?= Hs(m, L′ 0, . . . , aku' n, R′ 0, . . . , R′ n) mod l Jika persamaan ini benar, pemverifikasi menjalankan algoritma LNK. Jika tidak, pemverifikasi akan menolak tanda tangan. LNK: Pemverifikasi memeriksa apakah saya telah digunakan pada tanda tangan sebelumnya (nilai-nilai ini disimpan di set I). Penggunaan ganda menyiratkan bahwa dua tanda tangan dihasilkan di bawah kunci rahasia yang sama. Arti protokol: dengan menerapkan transformasi L, penandatangan membuktikan bahwa dia mengetahuinya sedemikian rupa sehingga setidaknya satu Pi = xG. Untuk membuat bukti ini tidak dapat diulangi, kami memperkenalkan gambar kuncinya karena saya = xHp(P). Penandatangan menggunakan koefisien yang sama (ri, ci) untuk membuktikan pernyataan yang hampir sama: dia mengetahui x sedemikian rupa sehingga setidaknya satu \(H_p(P_i) = I \cdot x^{-1}\). Jika pemetaan \(x \to I\) adalah injeksi: 1. Tidak ada seorang pun yang dapat memulihkan kunci publik dari gambar kunci dan mengidentifikasi penandatangannya; 2. Penanda tangan tidak boleh membuat dua tanda tangan dengan huruf I berbeda dan x yang sama. Analisis keamanan lengkap disediakan di Lampiran A. 4.5 Transaksi CryptoNote standar Dengan menggabungkan kedua metode (kunci publik yang tidak dapat ditautkan dan tanda tangan cincin yang tidak dapat dilacak), Bob berhasil mencapainya tingkat privasi baru dibandingkan dengan skema Bitcoin asli. Itu mengharuskan dia untuk menyimpan saja satu kunci pribadi (a, b) dan publikasikan (A, B) untuk mulai menerima dan mengirim transaksi anonim. Saat memvalidasi setiap transaksi, Bob juga hanya melakukan dua perkalian kurva elips dan satu penambahan per output untuk memeriksa apakah suatu transaksi miliknya. Untuk setiap miliknya keluaran Bob memulihkan pasangan kunci satu kali (pi, Pi) dan menyimpannya di dompetnya. Masukan apa saja bisa terbukti secara tidak langsung mempunyai pemilik yang sama hanya jika mereka muncul dalam satu transaksi. Di Faktanya, hubungan ini jauh lebih sulit untuk dibangun karena tanda tangan satu kali saja. Dengan tanda tangan cincin, Bob dapat secara efektif menyembunyikan setiap masukan dari masukan orang lain; semua mungkin pembelanja akan sama besarnya, bahkan pemilik sebelumnya (Alice) tidak memiliki informasi lebih dari itu pengamat mana pun. Saat menandatangani transaksinya, Bob menentukan n output luar negeri dengan jumlah yang sama dengan miliknya keluaran, mencampur semuanya tanpa partisipasi pengguna lain. Bob sendiri (dan juga orang lain) tidak mengetahui apakah pembayaran ini telah dibelanjakan: suatu keluaran dapat digunakan dalam ribuan tanda tangan sebagai faktor ambiguitas dan tidak pernah menjadi sasaran persembunyian. Ganda pemeriksaan pembelanjaan terjadi pada fase LNK saat memeriksa kumpulan gambar kunci yang digunakan. Bob dapat memilih sendiri derajat ambiguitasnya: n = 1 berarti probabilitas yang dimilikinya menghabiskan output adalah probabilitas 50%, n = 99 menghasilkan 1%. Ukuran tanda tangan yang dihasilkan bertambah linier sebagai O(n+1), sehingga peningkatan anonimitas memerlukan biaya transaksi tambahan bagi Bob. Dia juga bisa setel n = 0 dan buat tanda tangan cincinnya hanya terdiri dari satu elemen, namun ini akan langsung terjadi mengungkapkan dia sebagai seorang pemboros. 10 VER: Pemverifikasi memeriksa tanda tangan dengan menerapkan transformasi terbalik: ( aku saya = riG + ciPi R′ saya = riHp(Pi) + ciI Akhirnya, pemverifikasi memeriksa apakah nP saya=0 ci ?= Hs(m, L′ 0, . . . , aku' n, R′ 0, . . . , R′ n) mod l Jika persamaan ini benar, pemverifikasi menjalankan algoritma LNK. Jika tidak, pemverifikasi akan menolak tanda tangan. LNK: Pemverifikasi memeriksa apakah saya telah digunakan pada tanda tangan sebelumnya (nilai-nilai ini disimpan di set I). Penggunaan ganda menyiratkan bahwa dua tanda tangan dihasilkan di bawah kunci rahasia yang sama. Arti protokol: dengan menerapkan transformasi L, penandatangan membuktikan bahwa dia mengetahuinya sedemikian rupa sehingga setidaknya satu Pi = xG. Untuk membuat bukti ini tidak dapat diulangi, kami memperkenalkan gambar kuncinya karena saya = xHp(P). Penandatangan menggunakan koefisien yang sama (ri, ci) untuk membuktikan pernyataan yang hampir sama: dia mengetahui x sedemikian rupa sehingga setidaknya satu \(H_p(P_i) = I \cdot x^{-1}\). Jika pemetaan \(x \to I\) adalah injeksi: 1. Tidak ada seorang pun yang dapat memulihkan kunci publik dari gambar kunci dan mengidentifikasi penandatangannya; 2. Penanda tangan tidak boleh membuat dua tanda tangan dengan huruf I berbeda dan x yang sama. Analisis keamanan lengkap disediakan di Lampiran A. 4.5 Transaksi CryptoNote standar Dengan menggabungkan kedua metode (kunci publik yang tidak dapat ditautkan dan tanda tangan cincin yang tidak dapat dilacak), Bob berhasil mencapainya tingkat privasi baru dibandingkan dengan skema Bitcoin asli. Itu mengharuskan dia untuk menyimpan saja satu kunci pribadi (a, b) dan publikasikan (A, B) untuk mulai menerima dan mengirim transaksi anonim. Saat memvalidasi setiap transaksi, Bob juga hanya melakukan dua perkalian kurva elips dan satu penambahan per output untuk memeriksa apakah suatu transaksi miliknya. Untuk setiap miliknya output Bob memulihkan keypair satu kali (pi, Pi) dan stbijih itu di dompetnya. Masukan apa saja bisa terbukti secara tidak langsung mempunyai pemilik yang sama hanya jika mereka muncul dalam satu transaksi. Di Faktanya, hubungan ini jauh lebih sulit untuk dibangun karena tanda tangan satu kali saja. Dengan tanda tangan cincin, Bob dapat secara efektif menyembunyikan setiap masukan dari masukan orang lain; semua mungkin pembelanja akan sama besarnya, bahkan pemilik sebelumnya (Alice) tidak memiliki informasi lebih dari itu pengamat mana pun. Saat menandatangani transaksinya, Bob menentukan n output luar negeri dengan jumlah yang sama dengan miliknya keluaran, mencampur semuanya tanpa partisipasi pengguna lain. Bob sendiri (dan juga orang lain) tidak mengetahui apakah pembayaran ini telah dibelanjakan: suatu keluaran dapat digunakan dalam ribuan tanda tangan sebagai faktor ambiguitas dan tidak pernah menjadi sasaran persembunyian. Ganda pemeriksaan pembelanjaan terjadi pada fase LNK saat memeriksa kumpulan gambar kunci yang digunakan. Bob dapat memilih sendiri derajat ambiguitasnya: n = 1 berarti probabilitas yang dimilikinya menghabiskan output adalah probabilitas 50%, n = 99 menghasilkan 1%. Ukuran tanda tangan yang dihasilkan bertambah linier sebagai O(n+1), sehingga peningkatan anonimitas memerlukan biaya transaksi tambahan bagi Bob. Dia juga bisa setel n = 0 dan buat tanda tangan cincinnya hanya terdiri dari satu elemen, namun ini akan langsung terjadi mengungkapkan dia sebagai seorang pemboros. 10 20 Ini menarik; sebelumnya, kami menyediakan cara bagi penerima, Bob, untuk melakukan semua MASUK transaksi tidak dapat dibatalkan tautannya baik dengan memilih setengah dari kunci pribadinya secara deterministik atau dengan menerbitkan setengah kunci pribadinya sebagai publik. Ini adalah kebijakan yang tidak ada jalan mundurnya. Di sini, kita lihat cara pengirim, Alex, untuk memilih satu transaksi keluar yang dapat ditautkan, namun kenyataannya begini mengungkapkan Alex sebagai pengirim ke seluruh jaringan. Ini BUKAN kebijakan yang tidak bisa mundur. Ini adalah transaksi demi transaksi. Apakah ada kebijakan ketiga? Bisakah penerima, Bob, membuat ID pembayaran unik untuk Alex itu tidak pernah berubah, mungkin menggunakan pertukaran Diffie-Hellman? Jika ada yang memasukkan pembayaran itu ID yang dibundel di suatu tempat dalam transaksinya ke alamat Bob, pasti berasal dari Alex. Dengan cara ini, Alex tidak perlu mengungkapkan dirinya ke seluruh jaringan dengan memilih untuk menghubungkan jaringan tertentu transaksi, namun dia masih dapat mengidentifikasi dirinya kepada orang yang dia kirimi uang. Bukankah ini yang dilakukan Poloniex?
Transaksi Terima kasih masukannya Keluaran0 . . . Keluaran saya . . . Keluaran Gambar kunci Tanda tangan Tanda Tangan Cincin Kunci tujuan Keluaran1 Kunci tujuan Keluaran Transaksi luar negeri Keluaran pengirim Kunci tujuan Pasangan kunci satu kali Satu kali kunci pribadi Saya = xHp(P) hal, x Gambar 7. Pembuatan tanda tangan dering dalam transaksi standar. 5 Bukti Kerja Egalitarian Pada bagian ini kami mengusulkan dan menerapkan algoritma proof-of-work yang baru. Tujuan utama kami adalah untuk menutup kesenjangan antara penambang CPU (mayoritas) dan GPU/FPGA/ASIC (minoritas). Itu benar tepat bahwa beberapa pengguna dapat memiliki keunggulan tertentu dibandingkan yang lain, tetapi investasi mereka harus tumbuh setidaknya secara linear dengan kekuatan. Secara umum, memproduksi perangkat dengan tujuan khusus harus menjadi sesedikit mungkin menguntungkan. 5.1 Pekerjaan terkait Protokol Bitcoin proof-of-work asli menggunakan fungsi penetapan harga intensif CPU SHA-256. Ini terutama terdiri dari operator logika dasar dan hanya mengandalkan kecepatan komputasi prosesor, oleh karena itu sangat cocok untuk implementasi multicore/konveyor. Namun, komputer modern tidak dibatasi oleh jumlah operasi per detik saja, tetapi juga berdasarkan ukuran memori. Meskipun beberapa prosesor bisa jauh lebih cepat dibandingkan prosesor lainnya [8], ukuran memori cenderung bervariasi antar mesin. Fungsi harga terikat memori pertama kali diperkenalkan oleh Abadi et al dan didefinisikan sebagai “fungsi yang waktu komputasinya didominasi oleh waktu yang dihabiskan untuk mengakses memori” [15]. Ide utamanya adalah untuk membangun sebuah algoritma yang mengalokasikan blok data yang besar (“scratchpad”) dalam memori yang dapat diakses secara relatif lambat (misalnya, RAM) dan “mengakses sebuah urutan lokasi yang tidak dapat diprediksi” di dalamnya. Satu blok harus cukup besar untuk dapat diawetkan data lebih menguntungkan daripada menghitung ulang untuk setiap akses. Algoritmenya juga harus mencegah paralelisme internal, maka N thread simultan memerlukan memori N kali lebih banyak sekaligus. Dwork et al [22] menyelidiki dan memformalkan pendekatan ini sehingga mereka menyarankan pendekatan lain varian fungsi penetapan harga: “Mbound”. Satu lagi karya milik F. Coelho [20] yang 11 Transaksi Terima kasih masukannya Keluaran0 . . . Keluaran saya . . . Keluaran Gambar kunci Tanda tangan Tanda Tangan Cincin Kunci tujuan Keluaran1 Kunci tujuan Keluaran Transaksi luar negeri Keluaran pengirim Kunci tujuan Pasangan kunci satu kali Satu kali kunci pribadi Saya = xHp(P) hal, x Gambar 7. Pembuatan tanda tangan dering dalam transaksi standar. 5 Bukti Kerja Egalitarian Di bagian ini kami mengusulkan dan mendasarkan algoritma proof-of-work baru. Tujuan utama kami adalah untuk menutup kesenjangan antara penambang CPU (mayoritas) dan GPU/FPGA/ASIC (minoritas). Itu benar tepat bahwa beberapa pengguna dapat memiliki keunggulan tertentu dibandingkan yang lain, tetapi investasi mereka harus tumbuh setidaknya secara linear dengan kekuatan. Secara umum, memproduksi perangkat dengan tujuan khusus harus menjadi sesedikit mungkin menguntungkan. 5.1 Pekerjaan terkait Protokol Bitcoin proof-of-work asli menggunakan fungsi penetapan harga intensif CPU SHA-256. Ini terutama terdiri dari operator logika dasar dan hanya mengandalkan kecepatan komputasi prosesor, oleh karena itu sangat cocok untuk implementasi multicore/konveyor. Namun, komputer modern tidak dibatasi oleh jumlah operasi per detik saja, tetapi juga berdasarkan ukuran memori. Meskipun beberapa prosesor bisa jauh lebih cepat dibandingkan prosesor lainnya [8], ukuran memori cenderung bervariasi antar mesin. Fungsi harga terikat memori pertama kali diperkenalkan oleh Abadi et al dan didefinisikan sebagai “fungsi yang waktu komputasinya didominasi oleh waktu yang dihabiskan untuk mengakses memori” [15]. Ide utamanya adalah untuk membangun sebuah algoritma yang mengalokasikan blok data yang besar (“scratchpad”) dalam memori yang dapat diakses secara relatif lambat (misalnya, RAM) dan “mengakses sebuah urutan lokasi yang tidak dapat diprediksi” di dalamnya. Satu blok harus cukup besar untuk dapat diawetkan data lebih menguntungkan daripada menghitung ulang untuk setiap akses. Algoritmenya juga harus mencegah paralelisme internal, maka N thread simultan memerlukan memori N kali lebih banyak sekaligus. Dwork et al [22] menyelidiki dan memformalkan pendekatan ini sehingga mereka menyarankan pendekatan lain varian fungsi penetapan harga: “Mbound”. Satu lagi karya milik F. Coelho [20] yang 11 21 Tampaknya ini adalah UTXO kami: jumlah dan kunci tujuan. Jika Alex yang membuat transaksi standar ini dan mengirimkannya ke Bob, maka Alex juga memiliki kunci privatnya untuk masing-masing ini. Saya sangat menyukai diagram ini, karena menjawab beberapa pertanyaan sebelumnya. Masukan Txn terdiri dari satu set keluaran Txn dan kekamu gambar. Kemudian ditandatangani dengan tanda tangan cincin, termasuk semuanya kunci pribadi yang dimiliki Alex untuk semua transaksi luar negeri yang terbungkus dalam kesepakatan itu. Itu Output Txn terdiri dari jumlah dan kunci tujuan. Penerima transaksi dapat, sesuka hati, buat kunci pribadi satu kali seperti yang dijelaskan sebelumnya di makalah untuk dibelanjakan uangnya. Akan menyenangkan untuk mengetahui seberapa cocoknya ini dengan kode sebenarnya... Tidak, Nic van Saberhagen menjelaskan secara longgar beberapa properti dari algoritma bukti kerja, tanpa benar-benar menjelaskan algoritma itu. Algoritma CryptoNight sendiri MEMBUTUHKAN analisis mendalam. Ketika saya membaca ini, saya tergagap. Haruskah investasi tumbuh setidaknya secara linear dengan kekuatan, atau seharusnya investasi tumbuh paling banyak secara linear dengan kekuatan? Dan kemudian saya menyadari; Saya, sebagai penambang, atau investor, biasanya memikirkan "seberapa besar kekuatan yang bisa saya peroleh untuk investasi?" bukan "berapa banyak investasi yang diperlukan untuk jumlah listrik yang tetap?" Tentu saja, nyatakan investasi dengan I dan daya dengan P. Jika I(P) adalah investasi sebagai fungsi daya dan P(I) adalah kekuatan sebagai fungsi investasi, keduanya akan berbanding terbalik satu sama lain (di mana pun invers bisa ada). Dan jika I(P) lebih cepat dari linier maka P(I) lebih lambat dari linier. Oleh karena itu, akan ada penurunan tingkat pengembalian bagi investor. Dengan kata lain, apa yang ingin penulis katakan di sini adalah: "Tentu saja, jika Anda berinvestasi lebih banyak, Anda akan mendapatkan lebih banyak kekuatan. Tapi kita harus mencoba membuat tingkat pengembaliannya lebih rendah." Investasi CPU pada akhirnya akan terbatas secara sub-linear; pertanyaannya adalah apakah penulisnya telah merancang algoritma POW yang akan memaksa ASIC untuk juga melakukan hal ini. Haruskah “mata uang masa depan” hipotetis selalu ditambang dengan sumber daya yang paling lambat/terbatas? Makalah yang ditulis oleh Abadi dkk (yang ditulis oleh beberapa insinyur Google dan Microsoft) adalah, pada dasarnya, menggunakan fakta bahwa selama beberapa tahun terakhir ukuran memori menjadi jauh lebih kecil variansi antar mesin dibandingkan kecepatan prosesor, dan dengan rasio investasi-daya yang lebih dari linier. Dalam beberapa tahun, hal ini mungkin harus dikaji ulang! Semuanya adalah perlombaan senjata... Membangun fungsi hash sulit; membangun fungsi hash yang memenuhi batasan ini tampaknya lebih sulit. Tulisan ini sepertinya tidak memiliki penjelasan yang sebenarnya hashing algoritma CryptoNight. Saya pikir ini adalah implementasi SHA-3 yang berbasis memori di postingan forum tapi saya tidak tahu... dan itulah intinya. Itu harus dijelaskan.
mengusulkan solusi paling efektif: “Hokkaido”. Sepengetahuan kami, karya terakhir yang didasarkan pada gagasan pencarian pseudo-acak dalam array besar adalah algoritma yang dikenal sebagai "scrypt" oleh C. Percival [32]. Berbeda dengan fungsi sebelumnya yang menjadi fokusnya derivasi kunci, dan bukan sistem proof-of-work. Meskipun demikian, scrypt dapat memenuhi tujuan kita: ini berfungsi dengan baik sebagai fungsi penetapan harga dalam masalah konversi parsial hash seperti SHA-256 di Bitcoin. Saat ini scrypt telah diterapkan di Litecoin [14] dan beberapa fork Bitcoin lainnya. Namun, implementasinya tidak terlalu terikat pada memori: rasio “waktu akses memori / keseluruhan time” tidak cukup besar karena setiap instance hanya menggunakan 128 KB. Ini mengizinkan penambang GPU menjadi kira-kira 10 kali lebih efektif dan terus meninggalkan kemungkinan penciptaan secara relatif perangkat penambangan yang murah namun sangat efisien. Selain itu, konstruksi scrypt itu sendiri memungkinkan pertukaran linier antara ukuran memori dan Kecepatan CPU karena fakta bahwa setiap blok di scratchpad hanya diturunkan dari blok sebelumnya. Misalnya, Anda dapat menyimpan setiap blok kedua dan menghitung ulang blok lainnya dengan cara yang malas, yaitu saja ketika hal itu menjadi perlu. Indeks pseudo-acak diasumsikan terdistribusi secara seragam, maka nilai yang diharapkan dari perhitungan ulang blok tambahan adalah 1 \(2 \cdot N\), dimana N adalah nomornya dari iterasi. Waktu komputasi keseluruhan bertambah kurang dari setengahnya karena ada juga operasi yang tidak bergantung pada waktu (waktu konstan) seperti menyiapkan alas gores dan hashmelanjutkan setiap iterasi. Menghemat 2/3 memori membutuhkan biaya 1 3 \(\cdot\) T+1 3 \(\cdot\) \(2 \cdot N\) = N perhitungan ulang tambahan; 9/10 menghasilkan 1 10 \(\cdot\) T+. . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Mudah untuk menunjukkan bahwa menyimpan hanya 1 s dari semua blok meningkatkan waktu kurang dari faktor s−1 2. Hal ini pada gilirannya menyiratkan bahwa mesin dengan CPU 200 kali lebih cepat dibandingkan chip modern yang hanya mampu menyimpan 320 byte scratchpad. 5.2 Algoritma yang diusulkan Kami mengusulkan algoritma terikat memori baru untuk fungsi penetapan harga proof-of-work. Itu bergantung pada akses acak ke memori lambat dan menekankan ketergantungan latensi. Berbeda dengan scrypt every blok baru (panjang 64 byte) bergantung pada semua blok sebelumnya. Hasilnya bersifat hipotetis "penghemat memori" akan meningkatkan kecepatan penghitungannya secara eksponensial. Algoritme kami memerlukan sekitar 2 Mb per instance karena alasan berikut: 1. Cocok dengan cache L3 (per inti) prosesor modern, yang seharusnya menjadi mainstream dalam beberapa tahun; 2. Memori internal satu megabyte adalah ukuran yang hampir tidak dapat diterima untuk pipeline ASIC modern; 3. GPU dapat menjalankan ratusan instance secara bersamaan, namun dibatasi dalam hal lain: Memori GDDR5 lebih lambat dari cache CPU L3 dan luar biasa karena bandwidthnya kecepatan akses acak. 4. Perluasan scratchpad secara signifikan memerlukan peningkatan iterasi, yang mana dalam hal ini giliran menyiratkan peningkatan waktu secara keseluruhan. Panggilan “berat” di jaringan p2p yang tidak dapat dipercaya dapat menyebabkan kerentanan serius, karena node wajib memeriksa proof-of-work setiap blok baru. Jika sebuah node menghabiskan banyak waktu pada setiap evaluasi hash, maka node tersebut dapat dengan mudah DDoS oleh banjir objek palsu dengan data kerja sewenang-wenang (nilainonce). 12 mengusulkan solusi paling efektif: “Hokkaido”. Sepengetahuan kami, karya terakhir yang didasarkan pada gagasan pencarian pseudo-acak dalam array besar adalah algoritma yang dikenal sebagai "scrypt" oleh C. Percival [32]. Berbeda dengan fungsi sebelumnya yang menjadi fokusnya derivasi kunci, dan bukan sistem proof-of-work. Meskipun demikian, scrypt dapat memenuhi tujuan kita: ini berfungsi dengan baik sebagai fungsi penetapan harga dalam masalah konversi parsial hash seperti SHA-256 di Bitcoin. Saat ini scrypt telah diterapkan di Litecoin [14] dan beberapa fork Bitcoin lainnya. Namun, implementasinya tidak terlalu terikat pada memori: rasio “waktu akses memori / keseluruhan time” tidak cukup besar karena setiap instance hanya menggunakan 128 KB. Ini mengizinkan penambang GPU menjadi kira-kira 10 kali lebih efektif dan terus meninggalkan kemungkinan penciptaan secara relatif perangkat penambangan yang murah namun sangat efisien. Selain itu, konstruksi scrypt itu sendiri memungkinkan pertukaran linier antara ukuran memori dan Kecepatan CPU karena fakta bahwa setiap blok di scratchpad hanya diturunkan dari blok sebelumnya. Misalnya, Anda dapat menyimpan setiap blok kedua dan menghitung ulang blok lainnya dengan cara yang malas, yaitu saja ketika hal itu menjadi perlu. Indeks pseudo-acak diasumsikan terdistribusi secara seragam, maka nilai yang diharapkan dari perhitungan ulang blok tambahan adalah 1 \(2 \cdot N\), dimanaN adalah nomornya dari iterasi. Waktu komputasi keseluruhan bertambah kurang dari setengahnya karena ada juga operasi yang tidak bergantung pada waktu (waktu konstan) seperti menyiapkan alas gores dan hashmelanjutkan setiap iterasi. Menghemat 2/3 memori membutuhkan biaya 1 3 \(\cdot\) T+1 3 \(\cdot\) \(2 \cdot N\) = N perhitungan ulang tambahan; 9/10 menghasilkan 1 10 \(\cdot\) T+. . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Mudah untuk menunjukkan bahwa menyimpan hanya 1 s dari semua blok meningkatkan waktu kurang dari faktor s−1 2. Hal ini pada gilirannya menyiratkan bahwa mesin dengan CPU 200 kali lebih cepat dibandingkan chip modern yang hanya mampu menyimpan 320 byte scratchpad. 5.2 Algoritma yang diusulkan Kami mengusulkan algoritma terikat memori baru untuk fungsi penetapan harga proof-of-work. Itu bergantung pada akses acak ke memori lambat dan menekankan ketergantungan latensi. Berbeda dengan scrypt every blok baru (panjang 64 byte) bergantung pada semua blok sebelumnya. Hasilnya bersifat hipotetis "penghemat memori" akan meningkatkan kecepatan penghitungannya secara eksponensial. Algoritme kami memerlukan sekitar 2 Mb per instance karena alasan berikut: 1. Cocok dengan cache L3 (per inti) prosesor modern, yang seharusnya menjadi mainstream dalam beberapa tahun; 2. Memori internal satu megabyte adalah ukuran yang hampir tidak dapat diterima untuk pipeline ASIC modern; 3. GPU dapat menjalankan ratusan instance secara bersamaan, namun dibatasi dalam hal lain: Memori GDDR5 lebih lambat dari cache CPU L3 dan luar biasa karena bandwidthnya kecepatan akses acak. 4. Perluasan scratchpad secara signifikan memerlukan peningkatan iterasi, yang mana dalam hal ini giliran menyiratkan peningkatan waktu secara keseluruhan. Panggilan “berat” di jaringan p2p yang tidak dapat dipercaya dapat menyebabkan kerentanan serius, karena node wajib memeriksa proof-of-work setiap blok baru. Jika sebuah node menghabiskan banyak waktu pada setiap evaluasi hash, maka node tersebut dapat dengan mudah DDoS oleh banjir objek palsu dengan data kerja sewenang-wenang (nilainonce). 12 22 Sudahlah, itu koin scrypt? Dimana algoritmanya? Yang saya lihat hanyalah sebuah iklan. Di sinilah Cryptonote, jika algoritma PoW mereka bermanfaat, akan benar-benar bersinar. Bukan itu sungguh SHA-256, sebenarnya bukan scrypt. Ini baru, terikat memori, dan non-rekursif.
6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung relasi aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berurusan dengan pertukaran antara menyeimbangkan biaya dan keuntungan dari biaya dan menetapkan biayanya sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung hubungan aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berkaitan dengan pertukaran antara penyeimbangan the biaya dan keuntungan dari biaya dan menetapkan sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 23 Unit atom. Saya suka itu. Apakah ini setara dengan Satoshi? Jika demikian, berarti akan ada 185 miliar cryptonote. Saya tahu ini pada akhirnya harus diubah dalam beberapa halaman, atau mungkin ada kesalahan ketik? Jika hadiah dasarnya adalah "semua koin yang tersisa" maka hanya satu blok yang cukup untuk mendapatkan semua koin. Instamin. Di sisi lain, jika hal ini seharusnya proporsional dengan perbedaan waktu antara sekarang dan tanggal penghentian produksi koin? Itu akan terjadi masuk akal. Juga, di duniaku, dua tanda lebih besar dari seperti ini berarti "lebih besar dari". Apakah penulisnya mungkin maksudnya lain? Jika penyesuaian terhadap kesulitan terjadi di setiap blok maka penyerang dapat memiliki lahan yang sangat besar mesin menambang dan mematikan dalam interval waktu yang dipilih dengan cermat. Hal ini dapat menyebabkan ledakan yang kacau (atau jatuh ke titik nol) pada tingkat kesulitan, jika formula penyesuaian tingkat kesulitan tidak diredam dengan tepat. Tidak diragukan lagi bahwa metode Bitcoin tidak cocok untuk penghitungan ulang cepat, tetapi gagasan tentang inersia dalam sistem ini perlu dibuktikan, bukan dianggap remeh. Selanjutnya osilasi dalam kesulitan jaringan belum tentu menjadi masalah kecuali jika hal itu mengakibatkan fluktuasi yang nyata persediaan koin - dan perubahan kesulitan yang sangat cepat dapat menyebabkan "koreksi berlebihan". Waktu yang dihabiskan, terutama dalam rentang waktu yang singkat seperti beberapa menit, akan sebanding dengan “total jumlah blok yang dibuat di jaringan." Konstanta proporsionalitas akan tumbuh dengan sendirinya seiring waktu, mungkin secara eksponensial jika CN lepas landas. Mungkin merupakan ide yang lebih baik untuk menyesuaikan kesulitan untuk menjaga "total blok yang dibuat pada jaringan sejak blok terakhir ditambahkan ke rantai utama" dalam beberapa nilai konstan, atau dengan variasi terbatas atau semacamnya. Jika algoritma adaptif yaitu komputasi mudah diimplementasikan dapat ditentukan, ini tampaknya menyelesaikan masalah. Namun, jika kita menggunakan metode itu, seseorang yang memiliki lahan pertambangan besar bisa saja menutup lahan pertaniannya selama beberapa jam, dan hidupkan kembali. Untuk beberapa blok pertama, lahan pertanian tersebut akan berhasil bank. Jadi sebenarnya cara ini akan memunculkan satu hal menarik: penambangan menjadi (rata-rata) a kalah tanpa ROI, terutama karena semakin banyak orang yang menggunakan jaringan. Jika penambangannya sulit jaringan yang dilacak dengan sangat dekat hashrate, entah bagaimana saya ragu orang akan menambang sebanyak mereka saat ini lakukan. Atau, di sisi lain, alih-alih menjaga lahan pertambangan mereka tetap beroperasi 24/7, mereka malah mengubahnya menyala selama 6 jam, mati selama 2 jam, hidup selama 6 jam, mati selama 2 jam, atau semacamnya. Beralih saja ke koin lain selama beberapa jam, tunggu hingga tingkat kesulitannya mereda, lalu lanjutkan lagi untuk mendapatkan tambahan tersebut blok profitabilitas saat jaringan beradaptasi. Dan tahukah Anda? Ini sebenarnya mungkin salah satu skenario penambangan terbaik yang pernah saya pikirkan... Ini bisa bersifat melingkar, tetapi jika waktu pembuatan blok rata-rata sekitar satu menit, bisakah kita melakukannya? gunakan jumlah blok sebagai proksi untuk "waktu yang dihabiskan?"
6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung hubungan aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berurusan dengan pertukaran antara menyeimbangkan biaya dan keuntungan dari biaya dan menetapkan biayanya sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung hubungan aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berkaitan dengan pertukaran antara penyeimbangan the biaya dan keuntungan dari biaya dan menetapkan sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 24 Oke, jadi kita punya blockchain, dan setiap blok memiliki stempel waktu SELAIN sekedar menjadi dipesan. Ini jelas dimasukkan hanya untuk kesulitan penyesuaian, karena ada stempel waktunya sangat tidak dapat diandalkan, seperti yang disebutkan. Apakah kita diperbolehkan memiliki stempel waktu yang bertentangan dalam rantai? Jika Blok A berada sebelum Blok B dalam rantai tersebut, dan semuanya konsisten dalam hal keuangan, tapi Blok A sepertinya dibuat setelah Blok B? Karena, mungkin, ada yang memilikinya sebagian besar jaringan? Apakah itu oke? Mungkin karena keuangannya tidak salah. Oke, jadi saya benci kesewenang-wenangan ini "hanya 80% blok yang sah untuk blockchain utama" pendekatan. Itu dimaksudkan untuk mencegah pembohong mengubah stempel waktunya? Tapi sekarang, ia menambahkan insentif bagi semua orang untuk berbohong tentang stempel waktunya dan hanya memilih median. Silakan jelaskan. Artinya “untuk blok ini, hanya mencakup transaksi yang menyertakan biaya lebih besar dari p%, lebih disukai dengan biaya lebih besar dari 2p%" atau sesuatu seperti itu? Apa yang mereka maksud dengan palsu? Jika transaksi tersebut konsisten dengan riwayat masa lalu blockchain, dan transaksi tersebut mencakup biaya yang memuaskan para penambang, apakah itu tidak cukup? Nah, tidak, belum tentu. Jika tidak ada ukuran blok maksimum, tidak ada yang bisa menahan pengguna jahat dari sekadar mengunggah sejumlah besar transaksi ke dirinya sendiri sekaligus hanya untuk memperlambat jaringan. Aturan inti untuk ukuran blok maksimum mencegah orang membuang sampah dalam jumlah besar data di blockchain sekaligus hanya untuk memperlambat segalanya. Namun aturan seperti itu tentu saja harus dilakukan bersikap adaptif - selama musim Natal, misalnya, kita dapat memperkirakan lalu lintas akan melonjak, dan ukuran blok menjadi sangat besar, dan segera setelah itu, ukuran blok kemudian turun lagi. Jadi kita memerlukan a) semacam batasan adaptif atau b) batasan yang cukup besar sehingga 99%. puncak Natal yang masuk akal tidak akan merusak batasnya. Tentu saja, yang kedua itu tidak mungkin dilakukan perkiraan - siapa yang tahu apakah suatu mata uang akan berhasil? Lebih baik membuatnya adaptif dan tidak khawatir tentang hal itu. Tapi kemudian kita mempunyai masalah teori kontrol: bagaimana membuat ini adaptif tanpanya kerentanan terhadap serangan atau osilasi liar & gila? Perhatikan bahwa metode adaptif tidak menghentikan pengguna jahat untuk mengumpulkan sejumlah kecil uang data sampah dari waktu ke waktu di blockchain menyebabkan pembengkakan jangka panjang. Ini adalah masalah yang berbeda semuanya dan koin cryptonote memiliki masalah serius.
6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung hubungan aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berurusan dengan pertukaran antara menyeimbangkan biaya dan keuntungan dari biaya dan menetapkan biayanya sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung relasi aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berkaitan dengan pertukaran antara penyeimbangan the biaya dan keuntungan dari biaya dan menetapkan sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 25 Dengan mengubah skala waktu sehingga satu satuan waktu menjadi N blok, ukuran rata-rata blok, secara teoritis, masih dapat tumbuh secara eksponensial secara proporsional hingga 2ˆt. Di sisi lain, batasan yang lebih umum di blok berikutnya adalah M_nf(M_n) untuk beberapa fungsi f. Sifat f apa yang akan dimilikinya kita memilih untuk menjamin "pertumbuhan yang wajar" dalam ukuran blok? Kemajuan dari ukuran blok (setelah waktu penskalaan ulang) akan menjadi seperti ini: M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... Dan tujuannya di sini adalah untuk memilih f sehingga barisan ini tumbuh tidak lebih cepat dari, katakanlah, secara linear, atau mungkin bahkan sebagai Log(t). Tentu saja, jika f(M_n) = a untuk suatu konstanta a, barisan ini adalah sebenarnya M_n aM_n aˆ2M_n aˆ3M_n ... Dan, tentu saja, satu-satunya cara untuk membatasi pertumbuhan linear maksimal adalah dengan memilih a=1. Tentu saja hal ini tidak mungkin dilakukan. Itu tidak memungkinkan pertumbuhan sama sekali. Sebaliknya, jika f(M_n) adalah fungsi non-konstanta, maka situasinya jauh lebih buruk. rumit dan memungkinkan solusi yang elegan. Saya akan memikirkan hal ini sebentar. Biaya ini harus cukup besar untuk mendiskon penalti kelebihan ukuran dari bagian berikutnya. Kenapa pengguna umum diasumsikan laki-laki ya? Hah?
kemungkinan untuk mengasapi blockchain dan menghasilkan beban tambahan pada node. Untuk mencegah peserta jahat dari pembuatan blok besar kami memperkenalkan fungsi penalti: Hadiah Baru = Hadiah Dasar \(\cdot\) Ukuran Blk jamak −1 2 Aturan ini diterapkan hanya ketika BlkSize lebih besar dari ukuran blok bebas minimal yang seharusnya mendekati maksimal (10kb, \(M_N \cdot 110\%\)). Penambang diizinkan membuat blok dengan “ukuran biasa” dan genap melampauinya dengan keuntungan ketika biaya keseluruhan melebihi denda. Namun biayanya kemungkinan tidak akan meningkat kuadratik berbeda dengan nilai penalti sehingga akan terjadi keseimbangan. 6.3 Skrip transaksi CryptoNote memiliki subsistem skrip yang sangat minimalis. Pengirim menentukan ekspresi Φ = f (x1, x2, . . . , xn), dimana n adalah jumlah kunci publik tujuan {Pi}n saya=1. Hanya lima biner operator yang didukung: min, max, sum, mul dan cmp. Ketika penerima membelanjakan pembayaran ini, dia menghasilkan \(0 \leq k \leq n\) tanda tangan dan meneruskannya ke input transaksi. Proses verifikasi cukup evaluasi Φ dengan xi = 1 untuk memeriksa tanda tangan yang valid untuk kunci publik Pi, dan xi = 0. Verifier menerima bukti iffΦ > 0. Meskipun sederhana, pendekatan ini mencakup setiap kasus yang mungkin terjadi: • Tanda tangan Multi-/Ambang Batas. Untuk multi-tanda tangan “M-out-of-N” gaya Bitcoin (yaitu penerima harus memberikan setidaknya \(0 \leq M \leq N\) tanda tangan yang sah) Φ = x1+x2+. . .+xN \(\geq M\) (untuk kejelasan kami menggunakan notasi aljabar umum). Tanda tangan ambang batas tertimbang (beberapa kunci mungkin lebih penting dari yang lain) dapat dinyatakan sebagai Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Dan skenario di mana kunci utama berhubungan dengan Φ = maks(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Mudah untuk menunjukkan bahwa kasus secanggih apa pun bisa terjadi dinyatakan dengan operator-operator ini, yaitu mereka membentuk basis. • Perlindungan kata sandi. Kepemilikan kata sandi rahasia setara dengan pengetahuan kunci pribadi, yang secara deterministik diturunkan dari kata sandi: k = KDF(s). Oleh karena itu, penerima dapat membuktikan bahwa dia mengetahui kata sandinya dengan memberikan tanda tangan lain di bawah kunci k. Pengirim cukup menambahkan kunci publik yang sesuai ke keluarannya sendiri. Perhatikan bahwa ini metode ini jauh lebih aman daripada “teka-teki transaksi” yang digunakan di Bitcoin [13], di mana kata sandi secara eksplisit diteruskan dalam input. • Kasus-kasus yang merosot. Φ = 1 berarti siapa pun dapat membelanjakan uangnya; Φ = 0 menandai output sebagai tidak dapat dibelanjakan selamanya. Jika skrip keluaran yang digabungkan dengan kunci publik terlalu besar untuk pengirim, dia dapat menggunakan tipe keluaran khusus, yang menunjukkan bahwa penerima akan memasukkan data ini ke dalam masukannya sedangkan pengirim hanya memberikan hash saja. Pendekatan ini mirip dengan “bayar-ke-hash” Bitcoin fitur, tapi alih-alih menambahkan perintah skrip baru, kami menangani kasus ini di struktur data tingkat. 7 Kesimpulan Kami telah menyelidiki kelemahan utama di Bitcoin dan mengusulkan beberapa kemungkinan solusi. Fitur-fitur bermanfaat ini dan pengembangan berkelanjutan kami menjadikan sistem uang elektronik baru CryptoNote saingan serius bagi Bitcoin, mengungguli semua cabangnya. 14 kemungkinan untuk mengasapi blockchain dan menghasilkan beban tambahan pada node. Untuk mencegah peserta jahat dari pembuatan blok besar kami memperkenalkan fungsi penalti: Hadiah Baru = Hadiah Dasar \(\cdot\) Ukuran Blk jamak −1 2 Aturan ini diterapkan hanya ketika BlkSize lebih besar dari ukuran blok bebas minimal yang seharusnya mendekati maksimal (10kb, \(M_N \cdot 110\%\)). Penambang diizinkan membuat blok dengan “ukuran biasa” dan genap melampauinya dengan keuntungan ketika biaya keseluruhan melebihi denda. Namun biayanya kemungkinan tidak akan meningkat kuadratik berbeda dengan nilai penalti sehingga akan terjadi keseimbangan. 6.3 Skrip transaksi CryptoNote memiliki subsistem skrip yang sangat minimalis. Pengirim menentukan ekspresi Φ = f (x1, x2, . . . , xn), dimana n adalah jumlah kunci publik tujuan {Pi}n saya=1. Hanya lima biner operator yang didukung: min, max, sum, mul dan cmp. Ketika penerima membelanjakan pembayaran ini, dia menghasilkan \(0 \leq k \leq n\) tanda tangan dan meneruskannya ke input transaksi. Proses verifikasi cukup evaluasi Φ dengan xi = 1 untuk memeriksa tanda tangan yang valid untuk kunci publik Pi, dan xi = 0. Verifier menerima bukti iffΦ > 0. Meskipun sederhana, pendekatan ini mencakup setiap kasus yang mungkin terjadi: • Tanda tangan Multi-/Ambang Batas. Untuk multi-tanda tangan “M-out-of-N” gaya Bitcoin (yaitu penerima harus memberikan setidaknya \(0 \leq M \leq N\) tanda tangan yang sah) Φ = x1+x2+. . .+xN \(\geq M\) (untuk kejelasan kami menggunakan notasi aljabar umum). Tanda tangan ambang batas tertimbang (beberapa kunci mungkin lebih penting dari yang lain) dapat dinyatakan sebagai Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Dan skenarioio dimana kunci utama berhubungan dengan Φ = maks(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Mudah untuk menunjukkan bahwa kasus secanggih apa pun bisa terjadi dinyatakan dengan operator-operator ini, yaitu mereka membentuk basis. • Perlindungan kata sandi. Kepemilikan kata sandi rahasia setara dengan pengetahuan kunci pribadi, yang secara deterministik diturunkan dari kata sandi: k = KDF(s). Oleh karena itu, penerima dapat membuktikan bahwa dia mengetahui kata sandinya dengan memberikan tanda tangan lain di bawah kunci k. Pengirim cukup menambahkan kunci publik yang sesuai ke keluarannya sendiri. Perhatikan bahwa ini metode ini jauh lebih aman daripada “teka-teki transaksi” yang digunakan di Bitcoin [13], di mana kata sandi secara eksplisit diteruskan dalam input. • Kasus-kasus yang merosot. Φ = 1 berarti siapa pun dapat membelanjakan uangnya; Φ = 0 menandai output sebagai tidak dapat dibelanjakan selamanya. Jika skrip keluaran yang digabungkan dengan kunci publik terlalu besar untuk pengirim, dia dapat menggunakan tipe keluaran khusus, yang menunjukkan bahwa penerima akan memasukkan data ini ke dalam masukannya sedangkan pengirim hanya memberikan hash saja. Pendekatan ini mirip dengan “bayar-untuk-hash” dari Bitcoin fitur, tapi alih-alih menambahkan perintah skrip baru, kami menangani kasus ini di struktur data tingkat. 7 Kesimpulan Kami telah menyelidiki kelemahan utama di Bitcoin dan mengusulkan beberapa kemungkinan solusi. Fitur-fitur bermanfaat ini dan pengembangan berkelanjutan kami menjadikan sistem uang elektronik baru CryptoNote saingan serius bagi Bitcoin, mengungguli semua cabangnya. 14 26 Ini mungkin tidak diperlukan jika kita dapat menemukan cara untuk membatasi ukuran blok dari waktu ke waktu... Ini juga tidak mungkin benar. Mereka hanya menyetel "NewReward" ke parabola yang menghadap ke atas ukuran blok adalah variabel independen. Jadi pahala baru meledak hingga tak terhingga. Jika, di sisi lain di sisi lain, hadiah barunya adalah Maks(0,Hadiah Dasar(1-(BlkSize/Mn - 1)ˆ2)), lalu hadiah baru akan menjadi parabola menghadap ke bawah dengan puncak pada ukuran blok = Mn, dan dengan titik potong pada Ukuran Blok = 0 dan Ukuran Blok = 2Mn. Dan sepertinya itulah yang ingin mereka gambarkan. Namun, hal ini tidak terjadi
Phân tích

5
Điều đó không quá quan trọng khi một tỷ người trên thế giới sống với mức thu nhập dưới một đô la mỗi năm.
ngày và không có hy vọng tham gia vào bất kỳ loại mạng lưới khai thác nào... ngoại trừ một nền kinh tế
thế giới được thúc đẩy bởi hệ thống tiền tệ p2p với một CPU-một phiếu bầu, có lẽ sẽ còn hơn thế nữa
công bằng hơn một hệ thống được thúc đẩy bởi ngân hàng dự trữ một phần.
Nhưng giao thức của Cryptonote vẫn yêu cầu 51% người dùng trung thực... xem ví dụ: Cryptonote
diễn đàn nơi một trong những nhà phát triển, Pliskov, nói rằng một cuộc tấn công 51% thay thế dữ liệu trên blockchain truyền thống vẫn có thể hoạt động. https://forum.cryptonote.org/viewtopic.php?f=2&t=198
Lưu ý rằng bạn không thực sự cần 51% người dùng trung thực. Bạn chỉ thực sự cần "không một lời gian dối nào
phe có hơn 51% sức mạnh hash của mạng."
Hãy gọi vấn đề này của bitcoin là “sự cứng nhắc thích ứng”. Giải pháp thích ứng của Cryptonote
độ cứng nhắc là tính linh hoạt thích ứng trong các giá trị tham số giao thức. Nếu bạn cần kích thước khối lớn hơn,
không vấn đề gì, mạng sẽ được điều chỉnh nhẹ nhàng trong suốt thời gian qua.
Tức là,
cách Bitcoin điều chỉnh độ khó theo thời gian có thể được sao chép trên tất cả giao thức của chúng tôi
các tham số để không cần phải đạt được sự đồng thuận của mạng để cập nhật giao thức.
Nhìn bề ngoài thì đây có vẻ là một ý tưởng hay, nhưng nếu không có sự suy tính cẩn thận, nó sẽ tự điều chỉnh.
hệ thống có thể trở nên khá khó lường và hỗn loạn. Chúng ta sẽ xem xét sâu hơn về vấn đề này sau vì
cơ hội phát sinh. Các hệ thống "tốt" nằm ở đâu đó giữa tính cứng nhắc về mặt thích ứng và tính thích ứng
linh hoạt, và có lẽ ngay cả sự cứng nhắc cũng có tính thích ứng.
Nếu chúng tôi thực sự có "một CPU-một phiếu bầu", thì hãy hợp tác và phát triển các nhóm để đạt được 51%
sẽ khó khăn hơn. Chúng tôi kỳ vọng mọi CPU trên thế giới đều có thể khai thác, từ điện thoại
tới CPU tích hợp trong chiếc Tesla của bạn trong khi nó đang sạc.
http://en.wikipedia.org/wiki/Pareto_principle
Tôi khẳng định rằng trạng thái cân bằng Pareto là điều không thể tránh khỏi. 20% hệ thống sẽ
sở hữu 80% số CPU hoặc 20% hệ thống sẽ sở hữu 80% số ASIC. Tôi đưa ra giả thuyết này bởi vì sự phân bổ của cải cơ bản trong xã hội đã thể hiện sự phân phối Pareto,
và khi những người khai thác mới tham gia, họ sẽ được rút ra từ sự phân phối cơ bản đó.
Tuy nhiên, tôi lập luận rằng các giao thức với một CPU-một phiếu bầu sẽ thấy ROI trên phần cứng.
Chặn
phần thưởng cho mỗi nút sẽ tỷ lệ chặt chẽ hơn với số lượng nút trong mạng vì
phân phối hiệu suất giữa các nút sẽ chặt chẽ hơn nhiều. Bitcoin, mặt khác
trong tay, sẽ thấy phần thưởng khối (trên mỗi nút) tỷ lệ thuận hơn với khả năng tính toán của khối đó
nút. Nghĩa là, chỉ còn những “ông lớn” mới tham gia trò chơi khai thác. Mặt khác,
mặc dù nguyên tắc Pareto vẫn được áp dụng, nhưng trong thế giới một CPU một phiếu bầu, mọi người
tham gia vào an ninh mạng và kiếm được một chút thu nhập từ khai thác.
Trong thế giới ASIC, việc khai thác mọi XBox và điện thoại di động là không hợp lý.
Trong thế giới onecpu-one-vote, việc thưởng khai thác là rất hợp lý. Như một kết quả thú vị,
việc giành được 51% phiếu bầu càng khó khăn hơn khi số phiếu bầu ngày càng nhiều, mang lại một kết quả đáng yêu
có lợi cho an ninh mạng..phần cứng được mô tả trước đó. Giả sử rằng tỷ lệ hash toàn cầu giảm đáng kể, ngay cả đối với
trong giây lát, giờ anh ta có thể sử dụng sức mạnh khai thác của mình để phân nhánh chuỗi và chi tiêu gấp đôi. Như chúng ta sẽ thấy
ở phần sau của bài viết này, không có khả năng xảy ra sự kiện được mô tả trước đó.
2.3
Phát thải không đều
Bitcoin có tốc độ phát thải được xác định trước: mỗi khối được giải sẽ tạo ra một lượng xu cố định.
Khoảng bốn năm một lần phần thưởng này sẽ giảm đi một nửa. Mục đích ban đầu là tạo ra một
phát xạ trơn tru hạn chế với sự phân rã theo cấp số nhân, nhưng trên thực tế, chúng ta có phát xạ tuyến tính từng phần
chức năng có điểm dừng có thể gây ra sự cố cho cơ sở hạ tầng Bitcoin.
Khi điểm dừng xảy ra, người khai thác bắt đầu chỉ nhận được một nửa giá trị trước đó của họ
phần thưởng. Sự khác biệt tuyệt đối giữa 12,5 và 6,25 BTC (dự kiến cho năm 2020) có thể
có vẻ có thể chịu đựng được. Tuy nhiên, khi kiểm tra mức giảm 50 đến 25 BTC diễn ra vào tháng 11
28 năm 2012, cảm thấy không phù hợp với một số lượng đáng kể thành viên của cộng đồng khai thác mỏ. Hình
Hình 1 cho thấy tốc độ hash của mạng giảm đáng kể vào cuối tháng 11, chính xác là khi
việc giảm một nửa đã diễn ra. Sự kiện này có thể là thời điểm hoàn hảo cho cá nhân độc ác
được mô tả trong phần chức năng proof-of-work để thực hiện cuộc tấn công chi tiêu gấp đôi [36].
Hình 1. Bitcoin hash biểu đồ tỷ lệ
(nguồn: http://bitcoin.sipa.be)
2.4
Hằng số được mã hóa cứng
Bitcoin có nhiều giới hạn được mã hóa cứng, trong đó một số là yếu tố tự nhiên của thiết kế ban đầu (ví dụ:
tần suất chặn, lượng cung tiền tối đa, số lượng xác nhận) trong khi các yếu tố khác
dường như là những hạn chế nhân tạo. Đó không phải là những giới hạn mà là việc không có khả năng thay đổi nhanh chóng
3
phần cứng được mô tả trước đó. Giả sử rằng tỷ lệ hash toàn cầu giảm đáng kể, ngay cả đối với
trong giây lát, giờ anh ta có thể sử dụng sức mạnh khai thác của mình để phân nhánh chuỗi và chi tiêu gấp đôi. Như chúng ta sẽ thấy
ở phần sau của bài viết này, không có khả năng xảy ra sự kiện được mô tả trước đó.
2.3
Phát thải không đều
Bitcoin có tốc độ phát thải được xác định trước: mỗi khối được giải sẽ tạo ra một lượng xu cố định.
Khoảng bốn năm một lần phần thưởng này sẽ giảm đi một nửa. Mục đích ban đầu là tạo ra một
phát xạ trơn tru hạn chế với sự phân rã theo cấp số nhân, nhưng trên thực tế, chúng ta có phát xạ tuyến tính từng phần
chức năng có điểm dừng có thể gây ra sự cố cho cơ sở hạ tầng Bitcoin.
Khi điểm dừng xảy ra, người khai thác bắt đầu chỉ nhận được một nửa giá trị trước đó của họ
phần thưởng. Sự khác biệt tuyệt đối giữa 12,5 và 6,25 BTC (dự kiến cho năm 2020) có thể
có vẻ có thể chịu đựng được. Tuy nhiên, khi kiểm tra mức giảm 50 đến 25 BTC diễn ra vào tháng 11
28 năm 2012, cảm thấy không phù hợp với một số lượng đáng kể thành viên của cộng đồng khai thác mỏ. Hình
Hình 1 cho thấy tỷ lệ hash của mạng giảm đáng kể vào cuối tháng 11, chính xác là khi
việc giảm một nửa đã diễn ra. Sự kiện này có thể là thời điểm hoàn hảo cho cá nhân độc ác
được mô tả trong phần chức năng proof-of-work để thực hiện cuộc tấn công chi tiêu gấp đôi [36].
Hình 1. Bitcoin hash biểu đồ tỷ lệ
(nguồn: http://bitcoin.sipa.be)
2.4
Hằng số được mã hóa cứng
Bitcoin có nhiều giới hạn được mã hóa cứng, trong đó một số là yếu tố tự nhiên của thiết kế ban đầu (ví dụ:
tần suất chặn, lượng cung tiền tối đa, số lượng xác nhận) trong khi các yếu tố khác
dường như là những hạn chế nhân tạo. Đó không phải là những giới hạn mà là việc không có khả năng thay đổi nhanh chóng
3
6
Hãy gọi đây là cuộc tấn công của zombie.
Hãy cùng thảo luận về việc phát xạ liên tục có thể xảy ra như thế nào
liên quan đến một CPU-một phiếu bầu trong kịch bản tấn công zombie.
Trong thế giới một CPU-một phiếu bầu, mọi điện thoại di động và ô tô, bất cứ khi nào không hoạt động, đều sẽ được khai thác. Việc thu thập hàng đống phần cứng giá rẻ để tạo ra một trang trại khai thác sẽ rất dễ dàng, bởi vì chỉ cần
về mọi thứ đều có CPU trong đó. Mặt khác, tại thời điểm đó, số lượng CPU
Tôi nghĩ yêu cầu cần thiết để thực hiện một cuộc tấn công 51% sẽ khá đáng kinh ngạc.
Hơn nữa,
chính xác là bởi vì sẽ dễ dàng thu thập phần cứng giá rẻ nên chúng ta có thể mong đợi một cách hợp lý
rất nhiều người bắt đầu tích trữ bất cứ thứ gì có CPU. Cuộc chạy đua vũ trang trong thế giới một CPU một phiếu bầu
nhất thiết phải bình đẳng hơn trong thế giới ASIC.
Do đó, sự gián đoạn trong mạng
an ninh do tỷ lệ phát thải sẽ ÍT hơn một vấn đề trong thế giới một CPU-một phiếu bầu.
Tuy nhiên, vẫn còn hai sự thật: 1) sự gián đoạn về tốc độ phát thải có thể dẫn đến hiệu ứng lắp bắp trong
cả nền kinh tế và an ninh mạng, điều này đều tệ và 2) mặc dù một cuộc tấn công 51%
được thực hiện bởi ai đó thu thập phần cứng giá rẻ vẫn có thể xảy ra trong một CPU-bầu chọn thế giới,
có vẻ như nó sẽ khó hơn.
Có lẽ, biện pháp bảo vệ chống lại điều này là tất cả những kẻ không trung thực sẽ thử điều này
đồng thời và chúng tôi quay trở lại khái niệm bảo mật trước đó của Bitcoin: "chúng tôi không yêu cầu sự thiếu trung thực
phe kiểm soát hơn 51% mạng lưới."
Tác giả khẳng định ở đây rằng một vấn đề với bitcoin là sự gián đoạn trong việc phát hành tiền xu.
tỷ lệ này có thể dẫn đến sự sụt giảm đột ngột trong việc tham gia mạng và do đó dẫn đến an ninh mạng. Như vậy,
thích hợp hơn là tốc độ phát thải đồng xu trơn tru, khác biệt và liên tục.
Chắc chắn là tác giả không sai. Bất kỳ sự giảm đột ngột nào về mức độ tham gia mạng lưới đều có thể
dẫn đến một vấn đề như vậy, và nếu chúng ta có thể loại bỏ một nguồn của nó thì chúng ta nên làm như vậy. Nói xong, đó là
có thể là thời gian phát thải tiền xu "tương đối ổn định" bị ngắt quãng bởi những thay đổi đột ngột
là cách lý tưởng để đi từ quan điểm kinh tế. Tôi không phải là một nhà kinh tế. Vì vậy, có lẽ chúng ta
phải quyết định xem liệu chúng ta có định đánh đổi an ninh mạng để lấy kinh tế hay không - đây là cái gì vậy?
http://arxiv.org/abs/1402.2009chúng nếu cần thiết sẽ gây ra những hạn chế chính. Thật không may, thật khó để dự đoán khi nào
các hằng số có thể cần phải được thay đổi và việc thay thế chúng có thể dẫn đến những hậu quả khủng khiếp.
Một ví dụ điển hình về thay đổi giới hạn được mã hóa cứng dẫn đến hậu quả tai hại là khối
giới hạn kích thước được đặt thành 250kb1. Giới hạn này đủ để chứa khoảng 10000 giao dịch tiêu chuẩn. trong
đầu năm 2013, giới hạn này gần như đã đạt được và đạt được thỏa thuận nhằm tăng
giới hạn. Thay đổi được triển khai trong phiên bản ví 0.8 và kết thúc bằng việc chia chuỗi 24 khối
và một cuộc tấn công chi tiêu gấp đôi thành công [9]. Mặc dù lỗi không nằm trong giao thức Bitcoin nhưng
đúng hơn là trong công cụ cơ sở dữ liệu, nó có thể dễ dàng bị phát hiện bằng một bài kiểm tra căng thẳng đơn giản nếu có
không có giới hạn kích thước khối được giới thiệu một cách giả tạo.
Các hằng số cũng hoạt động như một dạng điểm tập trung.
Bất chấp bản chất ngang hàng của
Bitcoin, phần lớn các nút sử dụng ứng dụng khách tham chiếu chính thức [10] được phát triển bởi
một nhóm nhỏ người Nhóm này đưa ra quyết định thực hiện các thay đổi đối với giao thức
và hầu hết mọi người đều chấp nhận những thay đổi này bất kể “tính đúng đắn” của chúng. Một số quyết định gây ra
các cuộc thảo luận sôi nổi và thậm chí còn kêu gọi tẩy chay [11], điều này cho thấy rằng cộng đồng và
các nhà phát triển có thể không đồng ý ở một số điểm quan trọng. Do đó, có vẻ hợp lý khi có một giao thức
với các biến do người dùng cấu hình và tự điều chỉnh như một cách có thể để tránh những vấn đề này.
2,5
Tập lệnh cồng kềnh
Hệ thống tập lệnh trong Bitcoin là một tính năng nặng nề và phức tạp. Nó có khả năng cho phép người ta tạo ra
các giao dịch phức tạp [12], nhưng một số tính năng của nó bị vô hiệu hóa do lo ngại về bảo mật và
một số thậm chí chưa bao giờ được sử dụng [13]. Kịch bản (bao gồm cả phần người gửi và người nhận)
đối với giao dịch phổ biến nhất trong Bitcoin trông như thế này:
Analisa

5
Hal ini tidak terlalu menjadi masalah ketika satu miliar orang di dunia hidup dengan pendapatan kurang dari satu dolar per tahun
hari dan tidak punya harapan untuk berpartisipasi dalam jaringan penambangan apa pun... kecuali jaringan ekonomi
dunia yang digerakkan oleh sistem mata uang p2p dengan satu cpu-satu suara, mungkin akan lebih baik lagi
lebih adil daripada sistem yang didorong oleh perbankan cadangan fraksional.
Namun protokol Cryptonote masih membutuhkan 51% pengguna yang jujur... lihat, misalnya, Cryptonote
forum di mana salah satu pengembangnya, Pliskov, mengatakan bahwa serangan tradisional replace-the-data-on-theblockchain 51% masih bisa berhasil. https://forum.cryptonote.org/viewtopic.php?f=2&t=198
Perhatikan bahwa Anda tidak terlalu membutuhkan 51% pengguna yang jujur. Anda hanya benar-benar membutuhkan "tidak ada satu pun orang yang tidak jujur
faksi dengan lebih dari 51% kekuatan jaringan."
Sebut saja masalah bitcoin ini sebagai "kekakuan adaptif". Solusi Cryptonote untuk adaptif
kekakuan adalah fleksibilitas adaptif dalam nilai parameter protokol. Jika Anda membutuhkan ukuran blok yang lebih besar,
tidak masalah, jaringan akan menyesuaikan secara perlahan sepanjang waktu.
Artinya,
cara Bitcoin menyesuaikan kesulitan dari waktu ke waktu dapat direplikasi di seluruh protokol kami
parameter sehingga konsensus jaringan tidak perlu diperoleh untuk memperbarui protokol.
Di permukaan, ini sepertinya ide yang bagus, tapi tanpa pemikiran yang matang, itu hanya penyesuaian diri
sistem bisa menjadi sangat tidak terduga dan kacau. Kami akan membahasnya lebih lanjut nanti sebagai
peluang muncul. Sistem yang "baik" berada di antara sistem adaptif kaku dan adaptif
fleksibel, dan bahkan mungkin kekakuan itu sendiri bersifat adaptif.
Jika kita benar-benar memiliki "satu CPU-satu suara", maka berkolaborasi dan mengembangkan kumpulan akan mencapai 51%
akan lebih sulit. Kami berharap setiap CPU di dunia menambang, dari ponsel
ke CPU terpasang di Tesla Anda saat sedang diisi dayanya.
http://en.wikipedia.org/wiki/Pareto_principle
Saya menyatakan bahwa keseimbangan Pareto tidak dapat dihindari. 20% dari sistem akan melakukannya
memiliki 80% CPU, atau 20% sistem akan memiliki 80% ASIC. Saya berhipotesis demikian karena distribusi kekayaan yang mendasari masyarakat sudah menunjukkan distribusi Pareto,
dan ketika para penambang baru bergabung, mereka diambil dari distribusi yang mendasarinya.
Namun, saya berpendapat bahwa protokol dengan satu-cpu-satu-suara akan melihat ROI pada perangkat keras.
Blokir
imbalan per node akan lebih berbanding lurus dengan jumlah node dalam jaringan karena
distribusi kinerja di seluruh node akan jauh lebih ketat. Bitcoin, di sisi lain
di sisi lain, melihat imbalan blok (per node) lebih sebanding dengan kapasitas komputasinya
simpul. Artinya, hanya “anak-anak besar” yang masih terlibat dalam penambangan. Di sisi lain,
meskipun prinsip Pareto akan tetap berlaku, di dunia satu cpu-satu suara, semua orang
berpartisipasi dalam keamanan jaringan dan memperoleh sedikit pendapatan penambangan.
Di dunia ASIC, tidak masuk akal untuk memasang setiap XBox dan ponsel milik saya.
Di dunia onecpu-one-vote, sangat masuk akal dalam hal imbalan penambangan. Sebagai konsekuensi yang menggembirakan,
memperoleh 51% suara lebih sulit ketika ada lebih banyak suara, menghasilkan hasil yang bagus
manfaat untuk keamanan jaringan..perangkat keras yang dijelaskan sebelumnya. Misalkan tingkat hash global menurun secara signifikan, bahkan untuk
sebentar, dia sekarang dapat menggunakan kekuatan penambangannya untuk membuat rantai bercabang dan melakukan pembelanjaan ganda. Seperti yang akan kita lihat
nanti di artikel ini, kemungkinan besar peristiwa yang dijelaskan sebelumnya akan terjadi.
2.3
Emisi tidak teratur
Bitcoin memiliki tingkat emisi yang telah ditentukan: setiap blok yang dipecahkan menghasilkan sejumlah koin yang tetap.
Kira-kira setiap empat tahun, imbalan ini dikurangi setengahnya. Niat awalnya adalah untuk membuat a
emisi halus terbatas dengan peluruhan eksponensial, namun kenyataannya kita memiliki emisi linier sepotong-sepotong
fungsi yang breakpointnya dapat menyebabkan masalah pada infrastruktur Bitcoin.
Ketika breakpoint terjadi, penambang mulai menerima hanya setengah dari nilai sebelumnya
hadiah. Perbedaan absolut antara 12,5 dan 6,25 BTC (diproyeksikan untuk tahun 2020) mungkin
tampaknya dapat ditoleransi. Namun, ketika memeriksa penurunan 50 hingga 25 BTC yang terjadi pada bulan November
28 Tahun 2012, dirasa tidak pantas untuk sejumlah besar anggota komunitas pertambangan. Gambar
Gambar 1 menunjukkan penurunan drastis pada tingkat hash jaringan pada akhir bulan November, tepatnya ketika
separuh terjadi. Peristiwa ini bisa saja menjadi momen yang tepat bagi individu jahat tersebut
dijelaskan di bagian fungsi proof-of-work untuk melakukan serangan pembelanjaan ganda [36].
Gambar 1. Bitcoin hashbagan tarif
(sumber: http://bitcoin.sipa.be)
2.4
Konstanta yang dikodekan secara keras
Bitcoin memiliki banyak batasan yang dikodekan secara permanen, yang beberapa di antaranya merupakan elemen alami dari desain aslinya (mis.
frekuensi blok, jumlah maksimum uang beredar, jumlah konfirmasi) sedangkan lainnya
tampaknya merupakan kendala buatan. Yang penting bukanlah batasannya, melainkan ketidakmampuan untuk berubah dengan cepat
3
perangkat keras yang dijelaskan sebelumnya. Misalkan tingkat hash global menurun secara signifikan, bahkan untuk
sebentar, dia sekarang dapat menggunakan kekuatan penambangannya untuk membuat rantai bercabang dan melakukan pembelanjaan ganda. Seperti yang akan kita lihat
nanti di artikel ini, kemungkinan besar peristiwa yang dijelaskan sebelumnya akan terjadi.
2.3
Emisi tidak teratur
Bitcoin memiliki tingkat emisi yang telah ditentukan: setiap blok yang dipecahkan menghasilkan sejumlah koin yang tetap.
Kira-kira setiap empat tahun, imbalan ini dikurangi setengahnya. Niat awalnya adalah untuk membuat a
emisi halus terbatas dengan peluruhan eksponensial, namun kenyataannya kita memiliki emisi linier sepotong-sepotong
fungsi yang breakpointnya dapat menyebabkan masalah pada infrastruktur Bitcoin.
Ketika breakpoint terjadi, penambang mulai menerima hanya setengah dari nilai sebelumnya
hadiah. Perbedaan absolut antara 12,5 dan 6,25 BTC (diproyeksikan untuk tahun 2020) mungkin
tampaknya dapat ditoleransi. Namun, ketika memeriksa penurunan 50 hingga 25 BTC yang terjadi pada bulan November
28 Tahun 2012, dirasa tidak pantas untuk sejumlah besar anggota komunitas pertambangan. Gambar
Gambar 1 menunjukkan penurunan drastis pada tingkat hashjaringan pada akhir bulan November, tepatnya ketika
separuh terjadi. Peristiwa ini bisa saja menjadi momen yang tepat bagi individu jahat tersebut
dijelaskan di bagian fungsi proof-of-work untuk melakukan serangan pembelanjaan ganda [36].
Gambar 1. Bitcoin hashbagan tarif
(sumber: http://bitcoin.sipa.be)
2.4
Konstanta yang dikodekan secara keras
Bitcoin memiliki banyak batasan yang dikodekan secara keras, yang beberapa di antaranya merupakan elemen alami dari desain aslinya (mis.
frekuensi blok, jumlah maksimum uang beredar, jumlah konfirmasi) sedangkan lainnya
tampaknya merupakan kendala buatan. Yang penting bukanlah batasannya, melainkan ketidakmampuan untuk berubah dengan cepat
3
6
Sebut saja ini, serangan zombie.
Mari kita bahas bagaimana emisi berkelanjutan bisa terjadi
terkait dengan satu-cpu-satu-suara dalam skenario serangan zombie.
Di dunia satu-cpu-satu-suara, setiap ponsel dan mobil, kapan pun tidak digunakan, akan ditambang. Mengumpulkan banyak perangkat keras murah untuk membuat pertambangan akan sangat mudah, karena sederhana
tentang segala sesuatu memiliki CPU di dalamnya. Di sisi lain, pada saat itu, jumlah CPU
diperlukan untuk melancarkan serangan 51% akan cukup mencengangkan, menurutku.
Selain itu,
justru karena mengumpulkan perangkat keras yang murah akan mudah, kita dapat mengharapkan a
banyak orang mulai menimbun apa pun dengan CPU. Perlombaan senjata di dunia satu cpu-satu suara
tentu lebih egaliter dibandingkan di dunia ASIC.
Oleh karena itu, diskontinuitas dalam jaringan
keamanan karena tingkat emisi seharusnya KURANG menjadi masalah di dunia satu-cpu-satu-suara.
Namun, masih ada dua fakta yang tersisa: 1) diskontinuitas laju emisi dapat menyebabkan dampak yang menghambat
ekonomi dan keamanan jaringan keduanya, yang buruk, dan 2) meskipun serangan 51%.
dilakukan oleh seseorang yang mengumpulkan perangkat keras murah masih bisa terjadi dalam satu-cpu-satu-pilih dunia,
sepertinya itu harusnya lebih sulit.
Agaknya, perlindungan terhadap hal ini adalah semua pelaku yang tidak jujur akan mencoba hal ini
secara bersamaan, dan kita kembali ke gagasan keamanan Bitcoin sebelumnya: "kita tidak memerlukan tindakan tidak jujur
faksi untuk mengendalikan lebih dari 51% jaringan."
Penulis mengklaim di sini bahwa satu masalah dengan bitcoin adalah diskontinuitas emisi koin
Tingkat ini dapat menyebabkan penurunan tiba-tiba dalam partisipasi jaringan, dan karenanya keamanan jaringan. Jadi,
tingkat emisi koin yang berkelanjutan, dapat dibedakan, dan mulus lebih disukai.
Penulisnya tidak salah. Penurunan partisipasi jaringan secara tiba-tiba dapat terjadi
menyebabkan masalah seperti itu, dan jika kita dapat menghilangkan salah satu sumbernya, kita harus melakukannya. Karena itu, itu benar
mungkin saja emisi koin yang "relatif konstan" dalam jangka waktu lama diselingi oleh perubahan yang tiba-tiba
adalah cara ideal untuk melangkah dari sudut pandang ekonomi. Saya bukan seorang ekonom. Jadi, mungkin kita
harus memutuskan apakah kita akan menukar keamanan jaringan dengan sesuatu yang ekonomis-apa yang ada di sini?
http://arxiv.org/abs/1402.2009mereka jika perlu yang menyebabkan kelemahan utama. Sayangnya, sulit untuk memprediksi kapan hal tersebut akan terjadi
konstanta mungkin perlu diubah dan menggantinya dapat menimbulkan konsekuensi yang buruk.
Contoh bagus dari perubahan batas hardcode yang menyebabkan konsekuensi bencana adalah pemblokiran
batas ukuran disetel ke 250kb1. Batas ini cukup untuk menampung sekitar 10.000 transaksi standar. Di
awal tahun 2013, batas tersebut hampir tercapai dan tercapai kesepakatan untuk meningkatkannya
batas. Perubahan tersebut diterapkan pada dompet versi 0.8 dan diakhiri dengan pemisahan rantai 24 blok
dan serangan pembelanjaan ganda yang berhasil [9]. Meskipun bugnya bukan pada protokol Bitcoin, tapi
melainkan di mesin database, hal itu bisa dengan mudah ditangkap dengan stress test sederhana jika ada
tidak ada batasan ukuran blok yang diperkenalkan secara artifisial.
Konstanta juga berperan sebagai bentuk titik sentralisasi.
Meskipun bersifat peer-to-peer
Bitcoin, sebagian besar node menggunakan klien referensi resmi [10] yang dikembangkan oleh
sekelompok kecil orang. Kelompok ini membuat keputusan untuk menerapkan perubahan pada protokol
dan kebanyakan orang menerima perubahan ini terlepas dari “kebenarannya”. Beberapa keputusan menyebabkan
diskusi yang memanas bahkan seruan boikot [11], yang menandakan bahwa komunitas dan
pengembang mungkin tidak setuju pada beberapa poin penting. Oleh karena itu tampaknya logis untuk memiliki protokol
dengan variabel yang dapat dikonfigurasi pengguna dan dapat disesuaikan sendiri sebagai cara yang mungkin untuk menghindari masalah ini.
2.5
Skrip besar
Sistem skrip di Bitcoin adalah fitur yang berat dan kompleks. Ini berpotensi memungkinkan seseorang untuk berkreasi
transaksi canggih [12], namun beberapa fiturnya dinonaktifkan karena masalah keamanan dan
bahkan ada yang belum pernah dipakai [13]. Naskah (termasuk bagian pengirim dan penerima)
untuk transaksi terpopuler di Bitcoin tampilannya seperti ini: