Tác giả: lukechilds
Nguồn: https://gist.github.com/lukechilds/307341239beac72c9d8cfe3198f9bfff
Tổng quan
Đề xuất này giới thiệu một hệ thống điểm tín dụng tự quản, có thể được triển khai trước các Mint eCash hiện có. Số dư của người dùng được lưu trữ trong một hợp đồng điểm tín dụng không cần tin tưởng, có thể được chuyển đổi thành token eCash ngoài chuỗi (off-chain) bất cứ lúc nào (ví dụ: khi thanh toán). Rủi ro lưu trữ chỉ tồn tại trong thời gian xử lý thanh toán, thường chỉ vài giây, và chỉ đối với số tiền đang được chuyển. Số dư của người dùng luôn được tự quản, nếu Mint biến mất hoặc từ chối hợp tác, người dùng có thể rút đơn phương và lấy lại điểm tín dụng của mình trên chuỗi.
Giao thức này có thể được triển khai trên Bitcoin hiện tại, không cần soft fork hoặc bất kỳ mã hoạt động mới nào. Thực tế, nó không cần bất kỳ mã hoạt động nào. Toàn bộ giao thức gần như hoàn toàn ngoài chuỗi, tất cả các cách thực thi hợp đồng điểm tín dụng không cần tin tưởng này đều sẽ dẫn đến một đường phí giao dịch MuSig2 taproot, không cần sử dụng Bitcoin Script.
Vấn đề
Một quy trình tiêu chuẩn của người dùng là, sau khi nhận lương, họ sẽ gửi số tiền cần tiêu trong tháng vào một Mint eCash, sau đó dần dần phát hành các khoản thanh toán nhỏ từ Mint. Quá trình lưu chuyển tiền tệ này chủ yếu là một chiều, ngoài lương, người dùng cuối cùng rất ít khi nhận được tiền.
Nếu một người dùng cần thực hiện 4 giao dịch trị giá 10 USD mỗi ngày, thì trong một tháng họ sẽ phải thực hiện 120 giao dịch, với tổng giá trị là 1.200 USD. Họ có thể gửi 1.200 USD vào một Mint eCash vào đầu tháng, sau đó tự do chi tiêu trong suốt tháng. Hệ thống này rất hữu ích, vì nó đã nén 120 giao dịch kinh tế trong một tháng thành 1 giao dịch trên chuỗi.
Nhược điểm là, sự cải thiện về hiệu quả này đi kèm với rủi ro rất lớn. Tất cả số dư đều được lưu trữ tại Mint, người dùng phải tin tưởng rằng họ sẽ không ăn cắp tiền. Nếu một Mint có 1.000 người dùng làm như vậy, thì Mint sẽ quản lý tổng số tiền 1,2 triệu USD. Nếu những người vận hành Mint quyết định rút lui với số tiền, đây là một khoản tiền lớn. Ngay cả khi những người vận hành Mint là những người trung thực, những kẻ tấn công cũng có thể nhắm vào họ.
Giải pháp
Thay vì để Mint quản lý số dư, chúng ta có thể lưu trữ tiền trong một hợp đồng điểm tín dụng không cần tin tưởng giữa người dùng và Mint. Những điểm tín dụng này được tự quản, và cả người dùng và Mint đều có thể rút đơn phương khỏi hợp đồng mà không cần sự trợ giúp của bên kia. Điểm tín dụng có thể được chuyển giao ngay lập tức cho Mint để đổi lấy token eCash ngoài chuỗi. Chỉ khi thanh toán, điểm tín dụng mới được sử dụng để trao đổi lấy token eCash, và những token eCash này cũng sẽ được tiêu ngay lập tức. Mặc dù rủi ro lưu trữ vẫn tồn tại, nhưng nó chỉ tồn tại trong quá trình xử lý thanh toán (thường chỉ vài giây, khi giao dịch hoàn tất) và chỉ đối với giá trị được sử dụng trong giao dịch.
Hệ thống điểm tín dụng không cần tin tưởng này có thể được thực hiện bằng cách sử dụng các kênh thanh toán Spillman (một loại kênh thanh toán một chiều). Các kênh Spillman chưa bao giờ trở nên phổ biến, vì nó có hai nhược điểm lớn: nó là một chiều và sẽ hết hạn vào một thời điểm nhất định. Tuy nhiên, những nhược điểm này lại rất phù hợp với ứng dụng của chúng tôi, vì trong cách sử dụng này, người dùng chủ yếu là chi tiêu, chứ không phải nhận tiền, nên việc dòng tiền chỉ chảy một chiều không phải là vấn đề. Hơn nữa, người dùng vốn đã cần phải gửi một khoản tiền vào Mint mỗi tháng, vì vậy việc chỉ có thể tồn tại trong một tháng cũng không làm trải nghiệm tệ hơn.
Vì những nhược điểm này không cản trở chúng ta, những lợi ích của kênh Spillman trở nên rất rõ ràng. Đối với người dùng, không cần chạy nút, không có yêu cầu trực tuyến, không có nhu cầu sao lưu trạng thái phức tạp, và không cần quản lý hạn mức thu. Người dùng chỉ cần gửi tiền vào một kênh; gửi các giao dịch đã ký trước cho Mint, và có thể thanh toán thông qua kênh.
Trong giao thức này, chúng tôi đề xuất một biến thể mới của kênh Spillman, sử dụng các tính năng mới của Bitcoin để cải thiện về quyền riêng tư và hiệu quả. Chúng tôi triển khai kênh Spillman bằng cách: bất kỳ điều kiện chi tiêu nào cũng có thể được thỏa mãn thông qua một đường phí giao dịch khóa chung MuSig2 taproot. Nhược điểm là, cần có sự tương tác giữa hai bên khi thanh toán; tuy nhiên, vì việc phát hành token eCash bản thân đã yêu cầu tương tác với Mint, nên điều này không làm tăng thêm độ phức tạp.
Giao thức
Hợp đồng điểm tín dụng không cần tin tưởng là một thiết bị ký 2-of-2 MuSig2 giữa người dùng và Mint. Người dùng cung cấp cho hợp đồng số tiền đủ để tiêu trong 1 tháng, nhưng không phát sóng giao dịch nạp tiền này. Sau đó, người dùng tạo một giao dịch hoàn lại, chuyển toàn bộ số dư trong hợp đồng trở lại về nguồn vốn, nhưng giao dịch hoàn lại này có nLockTime
(khóa thời gian tuyệt đối) là một tháng sau. Sau đó, giao dịch hoàn lại này phải được người dùng và Mint cùng ký. Đây là giao dịch rút đơn phương của người dùng. Sau khi ký giao dịch hoàn lại, người dùng có thể an toàn phát sóng giao dịch nạp tiền. Sau khi giao dịch nạp tiền được xác nhận trên chuỗi, hợp đồng điểm tín dụng không cần tin tưởng này sẽ được kích hoạt, và người dùng sẽ có số tiền đủ để tiêu trong một tháng tại Mint, dưới dạng điểm tín dụng.
Khi muốn thực hiện một khoản thanh toán thông qua Mint, người dùng phải chuyển đổi điểm tín dụng không cần tin tưởng thành token eCash cần tin tưởng. Người dùng tạo một giao dịch mới, tiêu giao dịch nạp tiền, chuyển số điểm tín dụng mà Mint yêu cầu cho Mint, và chuyển số dư còn lại về cho chính mình. Người dùng sẽ tạo một mảnh ký MuSig và gửi cho Mint; Mint sẽ kết hợp mảnh ký của họ để tạo thành một chữ ký hợp lệ. Mint sẽ không chuyển lại mảnh ký của họ (hoặc giao dịch ký hợp lệ) cho người dùng. Đây là giao dịch rút đơn phương của Mint, bằng cách này họ có thể thực thi hợp đồng điểm tín dụng không cần tin tưởng bất cứ lúc nào. Bây giờ, Mint sẽ cộng thêm số token eCash tương ứng cho người dùng này. Những token này có rủi ro lưu trữ, nhưng người dùng có thể tiêu ngay lập tức để khôi phục trạng thái tự quản hoàn toàn (số dư còn lại được lưu trữ trong hợp đồng điểm tín dụng không cần tin tưởng).
Lần thanh toán tiếp theo của người dùng, họ sẽ làm tương tự, tạo một giao dịch mới, tiêu giao dịch nạp tiền, thay thế cho giao dịch cũ. Giao dịch mới sẽ thanh toán cho Mint số tiền của lần trước cộng với lần này. Vì mỗi lần cập nhật trạng thái đều tạo ra một giao dịch rút đơn phương mới cho Mint, và giao dịch mới luôn có giá trị cao hơn giao dịch cũ, Mint chỉ cần lưu giữ giao dịch rút đơn phương mới nhất, không cần quản lý trạng thái phức tạp.
Vào cuối tháng, hợp đồng điểm tín dụng không cần tin tưởng này có thể được gia hạn sang tháng tiếp theo, đồng thời nạp thêm điểm tín dụng. Người dùng và Mint cùng ký, tiêu giao dịch nạp tiền, thanh toán cho Mint số điểm tín dụng đã sử dụng trong tháng trước, và nạp số dư còn lại vào một hợp đồng mới cho tháng tiếp theo. Người dùng có thể thêm các đầu vào mới vào giao dịch này để nạp thêm điểm tín dụng cho hợp đồng mới. Cuối cùng, chỉ có 1 giao dịch
Rời khỏi hợp đồng tín dụng không cần tin tưởng này
Hai bên cũng có thể rời khỏi hợp đồng này theo cách hợp tác. Mint có thể rời khỏi bất cứ lúc nào bằng trạng thái mới nhất. Người dùng chỉ có thể rời khỏi một cách đơn phương sau khi hợp đồng bị hỏng. Điều quan trọng là, nếu hợp đồng không được đóng theo cách hợp tác, Mint phải rời khỏi trước khi hợp đồng bị hỏng, nếu không người dùng có thể rời khỏi một cách đơn phương và lấy lại tất cả các khoản tiền trong hợp đồng.
Suy nghĩ sâu hơn
Ảnh hưởng đến quyền riêng tư
Một trong những điểm tốt nhất của eCash là nó cung cấp quyền riêng tư gần như hoàn hảo. Một phần lý do để có được quyền riêng tư này là do thời gian im lặng của bạn trong Mint. Nếu bạn sử dụng giao thức này để thanh toán cho người dùng cùng Mint, bạn có thể duy trì quyền riêng tư. Tuy nhiên, nếu bạn sử dụng giao thức này để thanh toán cho hóa đơn sét điện bên ngoài Mint, bạn sẽ không thể kế thừa tính riêng tư của eCash. Bạn vẫn có thể nhận được quyền riêng tư tốt trên chuỗi và quyền riêng tư của người gửi trong mạng sét điện. Tuy nhiên, Mint có thể dễ dàng phân tích thời gian và số lượng của các giao dịch trao đổi tín dụng-token vào và ra khỏi Mint. Từ góc độ của người vận hành Mint, bạn không có quyền riêng tư.
Tuy nhiên, điều này có thể được giải quyết bằng cách nắm giữ một lượng nhỏ eCash token được bảo quản trong Mint. Ví dụ, giữ khoảng 95% số dư trong hợp đồng tín dụng không cần tin tưởng và 5% số dư dưới dạng eCash token có thể làm mờ mối quan hệ giữa các số lượng và phá vỡ mối liên kết giữa thời gian/số lượng vào/ra khỏi Mint. Bạn có thể khôi phục quyền riêng tư tuyệt vời của eCash, chỉ phơi bày 5% số dư dưới rủi ro bảo quản. Điều thú vị là điều này có thể được người dùng định cấu hình. Người dùng có thể điều chỉnh tỷ lệ này dựa trên sở thích của họ về quyền riêng tư/rủi ro bảo quản.
Không thể thu tiền không cần tin tưởng
Giao thức này mang lại trải nghiệm thanh toán không cần tin tưởng, nhưng không mang lại trải nghiệm thu tiền không cần tin tưởng. Như đã nêu trong phần quy trình sử dụng tiêu chuẩn, việc thu tiền có thể không phải là việc thường xuyên mà nhiều người dùng phải làm, vì vậy có thể không phải là một vấn đề. Người dùng có thể trực tiếp thu eCash token được bảo quản và sau đó ưu tiên tiêu dùng chúng (hoãn sử dụng tín dụng).
Ví dụ như trước, nếu một người dùng cần thanh toán 4 giao dịch trị giá 10 đô la mỗi ngày, thì tối đa họ sẽ cần 1.200 đô la trong một tháng để chi tiêu. Nếu một trong những khoản thanh toán đó bị hoàn lại, thì chỉ có 10 đô la (chiếm 0,8% tổng số dư) bị phơi bày với rủi ro bảo quản, và chỉ trong 1/4 ngày (họ sẽ nhanh chóng có cơ hội tiêu dùng số tiền đó).
Mở rộng thành thu tiền không cần tin tưởng
Có thể sao chép giao thức này theo hướng ngược lại để cho phép trải nghiệm thu tiền không cần tin tưởng, tuy nhiên, tôi cho rằng điều này quá phức tạp và không cần thiết vì lý do đã được giải thích. Có thể điều này có ý nghĩa với các doanh nghiệp muốn thu tiền thông qua Mint eCash. Trong trường hợp này, Mint sẽ trở thành trung tâm thanh toán nhanh, nhỏ và giảm thiểu niềm tin giữa người dùng và doanh nghiệp.
Bạn có thể thiết lập một kênh tín dụng không cần tin tưởng ngược từ Mint đến doanh nghiệp. Ở đây, Mint sẽ mở một kênh Spillman hướng về doanh nghiệp. Trong cấu trúc ngược này, Mint phải cung cấp thanh khoản dự kiến trước cho doanh nghiệp và thu phí từ doanh nghiệp. Doanh nghiệp cần tin tưởng rằng Mint sẽ không ăn cắp các khoản thanh toán đang được xử lý, tuy nhiên, một khi thanh toán đến, số dư sẽ được tự quản; và nếu Mint không hợp tác, doanh nghiệp có thể rời khỏi hợp đồng một cách đơn phương và lấy lại tiền. Nếu doanh nghiệp quên đóng hoặc trì hoãn trước khi hợp đồng bị hỏng, Mint có thể ăn cắp các khoản thanh toán nhận được trong vòng một tháng.
Do độ phức tạp bổ sung của cấu trúc ngược này, tôi cho rằng nó không có lợi thế rõ ràng so với doanh nghiệp sử dụng trực tiếp kênh sét điện.
Thanh khoản
Giao thức này sẽ không đặt thêm yêu cầu về thanh khoản cho Mint. Nếu một Mint đã có nhiều người dùng được bảo quản và không được bảo quản, khi những người dùng này liên tục thêm và tiêu dùng tín dụng, Mint khó có thể gặp vấn đề về thanh khoản. Tuy nhiên, nếu có một lượng lớn người dùng không được bảo quản đến đột ngột và tất cả đều cố gắng thanh toán số tiền lớn thông qua mạng sét điện, Mint có thể hết khả năng thanh toán sét điện.
Lưu ý rằng, ở đây Mint không thể sử dụng phương án dự trữ một phần, nó phải có đủ tiền để xử lý nhu cầu rút tiền của người dùng, chỉ là một phần tài sản của Mint được đặt trong hợp đồng tín dụng. Nếu tiền rời khỏi Mint, Mint có thể cần phải đóng một số hợp đồng tín dụng để thanh toán cho những người dùng khác. Vì việc đóng hợp đồng với người dùng rất phức tạp, Mint có thể chuẩn bị thêm nguồn tài chính linh hoạt để tránh điều này; hoặc có thể ủy thác thanh toán sét điện cho bên thứ ba và thanh toán hàng tháng.
Hợp đồng hết hạn
Thời gian tồn tại của một hợp đồng là tùy ý. Chúng tôi đề xuất một tháng, chỉ để phù hợp với mô hình kế toán trả lương hàng tháng điển hình. Tuy nhiên, điều này có nghĩa là mỗi tháng sẽ cần một giao dịch trên chuỗi để duy trì hợp đồng mở, ngay cả khi vẫn còn số dư lớn trong hợp đồng tín dụng. Thời gian hết hạn có thể được kéo dài lên một năm, để hợp đồng được duy trì mở trong suốt một năm. Tuy nhiên, điều này cũng có nhược điểm, nếu Mint không muốn hợp tác, tiền của người dùng sẽ bị khóa lại, tối đa là một năm. Đây có thể là một sự đánh đổi hợp lý, vì trong mô hình tin tưởng hiện tại (mô hình bảo quản), nếu Mint không hợp tác, tất cả tiền sẽ bị mất. Khóa trong một năm vẫn là một cải thiện rõ ràng.
Lời cảm ơn
Cảm ơn @tiero và nhóm @ArkLabsHQ về nghiên cứu về vai trò của kênh Spillman trong Ark, nghiên cứu này đã hướng dẫn tô
Cảm ơn @tiero, @robinlinus, @stevenroose, @kukks, @mayankchhabra, @nmfretz và @gandlafbtc đã dành thời gian đọc đề xuất này và đưa ra phản hồi. (Kết thúc)