Tác giả: Bitcoin Design
Payjoin đề cập đến sự hợp tác giữa người gửi và người nhận để cùng nhau xây dựng một giao dịch Bitcoin. Là một công cụ mạnh mẽ, các giao dịch Payjoin có thể cải thiện quyền riêng tư cho người dùng, tiết kiệm phí và tích hợp UTXO. Tuy nhiên, do bản chất tương tác và đồng bộ của nó, Payjoin cũng phải đối mặt với một số thách thức và sự đánh đổi.
Giao dịch Payjoin có thể phá vỡ một số phương pháp phân tích Chuỗi trong quá trình thanh toán. Tuy nhiên, việc xây dựng các giao dịch như vậy đòi hỏi người gửi và người nhận phải phối hợp theo thời gian thực thông qua một điểm cuối.
Nghiên cứu tình huống này sẽ:
- Làm rõ động cơ và mục tiêu của người gửi và người nhận.
- Phân tích trải nghiệm người dùng (UX) Payjoin của cả hai bên giao dịch và đề xuất phương pháp thiết kế tương ứng.
- Đề xuất luồng người dùng cụ thể và cung cấp các giải pháp thiết kế khả thi khi có thể.
Kết luận cốt lõi của nghiên cứu này là mặc dù quá trình thiết lập ban đầu có thể gây khó khăn cho người nhận, nhưng mỗi giao dịch tiếp theo hầu như không yêu cầu bất kỳ thao tác bổ sung nào.
Đối với người gửi, hầu như không cần thiết lập bổ sung nào ngoại trừ việc sử dụng ví hỗ trợ Payjoin. Và tùy thuộc vào lựa chọn của họ và mức độ hoàn thiện của việc triển khai cụ thể, trải nghiệm của người dùng có thể giống hệt hoặc gần giống như giao dịch thông thường.
Payjoin là gì?
Trong giao dịch Payjoin, người gửi và người nhận sẽ đóng góp thông tin đầu vào cho giao dịch theo cách hợp tác. Cơ chế Payjoin cũng được gọi là "Pay-to-Endpoint" (P2EP) vì toàn bộ quá trình hợp tác được điều phối bởi một điểm cuối mạng do người nhận điều hành. Địa chỉ của điểm cuối này sẽ được truyền cùng với địa chỉ thanh toán và thông tin số tiền thông qua URI định dạng BIP-21 .
Trong quy trình Payjoin, cả hai bên sẽ chỉnh sửa, ký và chuyển giao dịch lần cho đến khi phiên bản cuối cùng được xác nhận trước khi phát sóng. Đề ánBIP-78 chính thức định nghĩa một giao thức bao gồm hai vòng tương tác (hoặc một vòng tương tác nữa ngoài việc chia sẻ địa chỉ), như thể hiện trong hình bên dưới.

bối cảnh
Nghiên cứu tình huống này bắt nguồn từ thách thức thiết kế luồng thanh toán của người gửi dựa trên Payjoin.
Payjoin đặt ra những thách thức độc đáo đối với sự cộng tác thời gian thực giữa các bên giao dịch và chúng tôi cần một tập hợp luồng người dùng hoàn toàn mới để triển khai mạnh mẽ và tinh tế các tính năng được hỗ trợ bởi BIP-78 .
Tính đến đầu năm 2023, Payjoin vẫn chưa được áp dụng rộng rãi trong hệ sinh thái Bitcoin.
Phương pháp của chúng tôi
Nghiên cứu tình huống này thực hiện theo các bước sau:
- Hiểu được yêu cầu của người dùng và yêu cầu kỹ thuật của cả người gửi và người nhận.
- Điều tra việc triển khai Payjoin: BlueWallet (người gửi) và BTCPay Server (người nhận)
- Dựa trên nghiên cứu trên, thiết kế luồng người dùng cho người gửi và người nhận.
Hiểu người dùng và nhu cầu
Về mặt kỹ thuật, bất kỳ ai giao dịch trên Chuỗi Bitcoin đều có thể sử dụng Payjoin. Nghiên cứu trường hợp này phân loại người dùng theo hai chiều:
- Các tổ chức (doanh nghiệp, sàn giao dịch, v.v.) và cá nhân
- Người gửi và người nhận thanh toán
Mục tiêu của người nhận
- Quyền riêng tư giao dịch
- Tiết kiệm phí xử lý
- Giao dịch thành công
Là người nhận, tôi muốn:
- Tạo liên kết thanh toán hỗ trợ Payjoin và chia sẻ liên kết này với người gửi.
- Payjoin có thể được kích hoạt cho ví, tài khoản hoặc người dùng.
- Tạo ví nóng và sử dụng cho Payjoin.
- Nạp tiền ví nóng mới tạo để có UTXO có thể sử dụng.
- Kết nối ví nóng hiện có với thiết lập Payjoin của tôi.
- Bổ sung số dư cho ví chính (ví đồng hồ).
- Thiết lập thay thế địa chỉ để bổ sung số dư ví đồng hồ hoặc thực hiện các khoản thanh toán không liên quan.
- Theo dõi trạng thái của Payjoin.
- Khắc phục lỗi trong quy trình Payjoin.
Mục tiêu của người gửi
- Quyền riêng tư giao dịch
- Tối ưu hóa phí giao dịch và kiểm soát thời gian xác nhận
- Giao dịch thành công
Là người gửi, tôi muốn:
- Sử dụng Payjoin cho các khoản thanh toán riêng tư và phá vỡ phương pháp tiếp cận theo Chuỗi.
- Bạn có thể chọn sử dụng Payjoin khi thanh toán hay không.
- Kiểm tra mức phí bạn phải trả trước khi giao dịch được thực hiện.
- Kiểm soát thời gian xác nhận giao dịch.
- Nếu quá trình Payjoin không thành công, giao dịch có thể bị dừng giữa chừng.
Yêu cầu của người gửi
- Một ứng dụng hỗ trợ gửi Payjoin
- Duy trì trực tuyến trong suốt giao dịch Payjoin
Người gửi có được sự bảo vệ quyền riêng tư thông qua Payjoin, nhưng thường phải chịu phí giao dịch cao hơn.
Yêu cầu của người nhận
- Ví nóng
- Ví nóng có tiền
- Một ứng dụng hỗ trợ nhận Payjoin
- Điểm cuối vẫn trực tuyến trong suốt thời gian giao dịch
Người nhận dự kiến sẽ nhận được những lợi ích sau:
- Tăng cường tính riêng tư của giao dịch
- Tích hợp bộ sưu tập UTXO
- Tiết kiệm phí giao dịch
Gửi Payjoin
Đối với người gửi, quá trình tham gia giao dịch Payjoin tương đối đơn giản. Tất cả những gì bạn cần làm là sử dụng ví hỗ trợ Payjoin và trực tuyến trong suốt giao dịch.
Nghiên cứu: Phân tích BlueWallet
Chúng tôi đã phân tích luồng người dùng Payjoin mà BlueWallet tiên phong vào năm 2020. Xem báo cáo nghiên cứu để biết chi tiết.

Những phát hiện chính như sau:
- Trong quy trình giao dịch Payjoin, khi khối lượng giao dịch tăng lên, mức phí thực tế sẽ giảm, điều này có thể ảnh hưởng đến thời gian xác nhận giao dịch ước tính.
- Giao dịch được tạo ra bởi quy trình này sẽ có mức phí trở thành số nguyên sau khi loại bỏ đầu vào, đây có thể là manh mối để các công ty phân tích Chuỗi xác định Payjoin.
Quy trình gửi Payjoin
Chúng tôi đã thiết kế một quy trình gửi mới để cố gắng giải quyết các vấn đề trên.
Để tạo luồng này, chúng tôi giả định rằng người nhận chỉ cung cấp UTXO và không chịu phí giao dịch, vì điều này làm cho quy trình đơn giản hơn và tự động hơn cho cả hai bên.
Tóm lại, quy trình gửi mà chúng tôi thiết kế yêu cầu người dùng chọn phạm vi phí thay vì số tiền phí cụ thể (hoặc tỷ lệ), trong khi phần còn lại của quy trình gần giống như giao dịch bình thường. Chúng tôi sử dụng thiết kế này để thiết lập ba tham số tùy chọn được chỉ định trong BIP-78 để xây dựng triển khai Payjoin đơn giản và hiệu quả.

Xem tài liệu này để biết ý tưởng chi tiết.
Quá trình này có thể được xem trong tệp Figjam này. Quá trình chi tiết và các cân nhắc có trong tệp này.
Payjoin “Bắt tay”
Chúng tôi giới thiệu thuật ngữ “Payjoin Handshake” để mô tả ngắn gọn về tương tác khứ hồi tự động giữa người gửi và người nhận, trong đó PSBT ban đầu chỉ chứa thông tin đầu vào của người gửi được chuyển đổi thành giao dịch cuối cùng, có chữ ký và có thể phát sóng, chứa thông tin đầu vào từ cả hai bên.
Các bước trên không quan trọng đối với người dùng tham gia giao dịch và không yêu cầu bất kỳ thao tác bổ sung nào từ cả hai bên. Nói một cách dễ hiểu, cả hai bên thậm chí không cần biết về quy trình, miễn là họ vẫn trực tuyến trong suốt giao dịch.
Nguyên mẫu quy trình người gửi Payjoin
Mục tiêu của chúng tôi là làm cho trải nghiệm người dùng của quy trình này càng gần với quy trình bình thường càng tốt. Đối với những liên kết phải khác, chúng tôi sẽ hướng dẫn và giúp người dùng thông qua UI.

Ví hỗ trợ Payjoin sẽ hiển thị giao diện có tính năng được bật theo mặc định.

Người dùng sẽ thấy trang lựa chọn mức phí rất giống với giao diện thông thường.

Tiếp theo, màn hình sẽ hiển thị giao diện chuyển tiếp, nhắc nhở người dùng rằng giao dịch Payjoin đang được xây dựng và ký.

Sau khi quá trình "bắt tay" Payjoin hoàn tất, bạn sẽ vào giao diện kiểm tra cuối cùng trước khi giao dịch được phát đi, tại đây sẽ hiển thị mức phí cuối cùng.

Cuối cùng, giao diện thanh toán thành công sẽ thông báo cho người dùng rằng giao dịch Payjoin đã được phát thành công.
Mô tả chi tiết về từng giao diện có thể được tìm thấy trong tài liệu này. Bản thảo thiết kế có thể được tìm thấy trong tệp Figma này.
Nhận Payjoin
Dựa trên giao thức BIP78, ngưỡng cho bên nhận cao hơn nhiều so với ngưỡng cho bên gửi. Bên gửi chỉ cần một ví di động tương thích, nhưng bên nhận không thể duy trì điểm cuối luôn trực tuyến chỉ bằng ví di động. Các doanh nghiệp và tổ chức phải đối mặt với một tình huống khó xử khác: mặc dù họ có khả năng dễ dàng triển khai giải pháp tiếp nhận Payjoin, nhưng họ lại bị ngăn cản bởi những lo ngại về tính bảo mật của ví nóng.
Mặc dù hầu hết các ví di động đều là ví nóng và nạp tiền vào chúng rất đơn giản, nhưng việc chạy một máy chủ trực tuyến chuyên dụng để thực hiện bắt tay Payjoin là một thách thức về mặt kỹ thuật và thực tế. Đây có lẽ là rào cản lớn nhất hiện đang ngăn cản Payjoin giành được sự hỗ trợ và phổ biến.
Nghiên cứu: Người bán/Người nhận BTCPay
Tác giả đã thử nghiệm thành công chức năng tiếp nhận Payjoin của BTCPay v1.7.12 vào tháng 2 năm 2023.
Những phát hiện chính như sau:
- Sau khi thiết lập hoàn tất, liên kết hỗ trợ Payjoin sẽ tự động được tạo.
- Nếu người dùng chọn thêm ví nóng hiện có, BTCPay sẽ không cung cấp tùy chọn bật Payjoin trên cùng trang như khi tạo ví nóng mới.
- Cho dù trong phần cài đặt để tạo ví mới hay thêm ví hiện có, nếu người dùng chọn ví theo dõi (lạnh), họ sẽ không bao giờ có quyền truy cập vào chức năng Payjoin (vì quá trình ký giao dịch Payjoin yêu cầu sử dụng private key).
- Người bán chỉ có thể kết nối với một ví Bitcoin(trừ khi thông qua BTCPay Vault ), vì vậy nếu bạn sử dụng ví lạnh, bạn không thể thiết lập ví nóng (và do đó không thể sử dụng Payjoin).
- Nếu số dư trong ví nóng không đủ để thực hiện giao dịch Payjoin, BTCPay sẽ không nhắc nhở hoặc cảnh báo người dùng, dẫn đến thanh toán không thành công.
- Không có nơi chuyên dụng nào để quản lý và theo dõi Payjoin.
Bạn có báo cáo hiểu đầy đủ về việc chấp nhận Payjoin trên BTCPay trong bài phân tích này .
Quy trình thu được đề xuất
Ở đây, chúng tôi sẽ thiết kế luồng người dùng cho hệ thống điểm bán hàng (POS) luôn trực tuyến. Luồng này không phù hợp với ví di động.
Người nhận phải có thể thiết lập Payjoin trong quá trình cấu hình ban đầu của nền tảng (ứng dụng hoặc hệ thống POS) hoặc tại bất kỳ thời điểm nào sau đó. Sau đây là quy trình thiết lập Payjoin độc lập.

Sơ đồ luồng chi tiết tích hợp quy trình cấu hình ban đầu có trong tệp Figjam này.
Yêu cầu Payjoin
Sau khi thiết lập Payjoin có hiệu lực, tất cả các yêu cầu thanh toán (liên kết thanh toán BIP-21 hoặc Mã QR) phải chứa thông tin sàn giao dịch(bao gồm địa chỉ điểm cuối) mà không yêu cầu người dùng thực hiện thêm hành động nào.
Trạng thái/Cài đặt Payjoin
Sẽ là một ý tưởng hay khi tạo một phần trong trang cài đặt để cung cấp không gian chuyên dụng cho việc quản lý cài đặt Payjoin và theo dõi trạng thái của chúng. Phần này cũng có thể cung cấp một cổng thông tin cho người dùng sử dụng ví lạnh để khám phá và thiết lập chức năng Payjoin. Phần này có thể bao gồm nội dung sau:
- Quy trình thiết lập Payjoin
- Các tính năng khác của Payjoin, chẳng hạn như điểm cuối của bên thứ ba, thay thế địa chỉ/đầu ra, bổ sung số dư ví lạnh, v.v.
- Theo dõi trạng thái sẵn sàng của Payjoin: trạng thái ví nóng, trạng thái điểm cuối Payjoin, v.v.
Thông tin chi tiết
Chúng tôi đã học được rất nhiều trong quá trình thực hiện nghiên cứu điển hình này và quy trình người dùng mà chúng tôi thiết kế đã áp dụng nhiều hiểu biết trong đó.
- Payjoin cho phép người nhận hợp nhất UTXO, về lâu dài cho phép người tham gia trả phí thấp hơn. Điều này đặc biệt hữu ích cho sàn giao dịch, vì họ cần tính năng này nhất và có khả năng kỹ thuật để triển khai một hệ thống mạnh mẽ và đáng tin cậy.
- Xem xét rằng các bên giao dịch có thể cần trải qua nhiều vòng lặp lại và cộng tác, nghiên cứu điển hình này giới thiệu thuật ngữ “bắt tay Payjoin” để tóm tắt tất cả các tương tác tự động giữa các hoạt động của người dùng.
- Việc duy trì điểm cuối luôn hoạt động có vẻ là trở ngại lớn nhất đối với việc triển khai Payjoin và một số giải pháp thay thế được liệt kê trong bài viết.
- Mặc dù Payjoin đặt ra nhiều yêu cầu cao hơn đối với người nhận, nhưng nó cũng mang lại nhiều lợi ích và cơ hội hơn.
- Thay thế đầu ra: Đây là một ý tưởng mạnh mẽ từ BIP-78. Mặc dù có rủi ro, nhưng nó cũng có thể là một trợ thủ đắc lực cho người dùng Payjoin.
- Thay thế đầu ra: Payjoin cho phép người nhận công bố thông tin thanh toán tĩnh nhưng sử dụng một địa chỉ khác khi thực sự nhận thanh toán, tránh việc sử dụng lại địa chỉ.
- Người nhận Payjoin không cần thiết lập ví bổ sung và có thể sử dụng trực tiếp ví chi tiêu hàng ngày của mình làm ví nóng của Payjoin.
- Việc triển khai Payjoin cần phải lưu ý đến phân tích "tỷ lệ vòng" được sử dụng để xác định Payjoin, phân tích này phải được xử lý tự động mà không cần sự can thiệp của người dùng.
Khả năng mới
Vì Payjoin liên quan đến sự hợp tác bên long và nhiều liên kết không chắc chắn (như điểm cuối), nên việc hiểu và triển khai Payjoin đều có ngưỡng cao, nhưng nó cũng mở ra cánh cửa cho nhiều tính năng và dịch vụ mới.
Sau đây là một số ví dụ:
- Người nhận có thể chọn sử dụng điểm cuối của bên thứ ba (tắt tính năng thay thế địa chỉ), hy sinh một phần quyền riêng tư để đổi lấy sự tiện lợi.
- Có một số công việc thú vị đang được tiến hành xung quanh việc triển khai Payjoin không cần máy chủ , phù hợp với các nền tảng hỗ trợ cả Bitcoin và Lightning.
- Việc triển khai ở phía nhận có thể sử dụng tính năng thay thế địa chỉ để cho phép người dùng tự thực hiện thanh toán.
- Sự cộng tác Payjoin có thể được thực hiện thông qua NFC (hoặc các công nghệ truyền thông tầm gần không dây khác)
- BIP-78 có thể được sử dụng để thêm một vòng tương tác bổ sung, cho phép người gửi điều chỉnh phí sau khi "bắt tay" và sau đó gửi lại cho người nhận để phát sóng.
Nghiên cứu điển hình này đi sâu vào các vấn đề thiết kế liên quan đến Payjoin với hy vọng khơi dậy sự quan tâm của cộng đồng đối với các trường hợp sử dụng đa dạng và giá trị tiềm năng của nó.
Lời cảm ơn :
- Xin cảm ơn Pavlenex của BTCPay đã cung cấp phiên bản BTCPay có hỗ trợ Payjoin, mà chúng tôi đã sử dụng để thử nghiệm quy trình tiếp nhận.
- Cảm ơn Nicolas Dorier đã xem xét nội dung của nghiên cứu điển hình này và tích cực tham gia thảo luận trên Payjoin.
- Cuối cùng, tôi muốn cảm ơn Dan Gould vì sự hướng dẫn vô giá, sự kiên nhẫn và nhiệt tình của anh.




