Chú mèo maneki-neko của DUCAT, tay ôm một đồng Monero
giao thương ngang hàng ở cự ly gần · đặc tả bản nháp 1.1.0-dev13

DUCAT

Veilid để vận chuyển. Monero để thanh toán. Không có nhà điều hành nào ở giữa.

Không hề có máy chủ DUCAT ở bất cứ đâu — danh bạ, tin nhắn, hoá đơn và biên nhận là các bản ghi DHT cùng những gói tin niêm phong đầu-cuối, và mỗi chiếc điện thoại chạy một nút Veilid đầy đủ, trả lại phần định tuyến và lưu trữ mà nó dùng.

0 vector tuân thủ 0 chế độ hoạt động 0 ngôn ngữ 0 máy chủ

Ký ở chế độ gỡ lỗi, chỉ trên stagenet. Chưa dành cho tiền thật.

Đứng trên

Giao thương mà ở giữa không có ai

Đồng ducat từng là một đồng tiền vàng được chấp nhận từ Venice qua Vienna đến Levant suốt sáu thế kỷ — không quan hệ với bên phát hành, không tài khoản đứng sau, không giấy phép đi kèm. DUCAT chính là điều đó, cho lúc bạn đứng trước một người và làm ăn với họ.

🐱

Không máy chủ ở bất cứ đâu

Danh bạ, hoá đơn, thanh toán và biên nhận đi lại dưới dạng gói tin niêm phong đầu-cuối trên DHT của Veilid. Chẳng có gì để triệu tập ra toà, để bóp băng thông, để gỡ khỏi nền tảng hay để tắt đi, bởi chẳng có gì đang chạy. Mỗi điện thoại là một nút đầy đủ và trả lại phần định tuyến cùng lưu trữ mà nó dùng.

🔑

Danh tính là một cặp khoá

Tạo ngay trên điện thoại. Không email, không số điện thoại, không có ai để đăng ký — và cũng chính vì thế không ai khôi phục lại được cho bạn, và ứng dụng nói thẳng điều đó thay vì chôn nó đi.

🎫

Thẻ chỉ nhận được một lần

Bạn đưa ai đó một tấm thẻ — mã QR, liên kết ducat: hoặc một cú chạm NFC — và nó chỉ dùng được cho một người. Đã nhận rồi thì thẻ ngừng hoạt động, nên một ảnh chụp màn hình lọt ra chỗ khác không phải là lối vào.

🔒

Những cuộc trò chuyện niêm phong

Mã hoá theo dáng X3DH, với khoá dùng một lần và tính bí mật chuyển tiếp. Khi ứng dụng buộc phải lùi về khoá đã ký, nó cho bạn thấy một ổ khoá mở chứ không giấu đi.

💬

Những cuộc trò chuyện mang theo tiền

Các luồng dựa trên hộp thư, vẫn chạy khi một bên đang ngoại tuyến — chúng mang theo hoá đơn chi tiết mà các dòng buộc phải cộng đúng tổng, nếu không tin nhắn bị từ chối, mang theo thanh toán, và biên nhận do bên nhận tiền phát hành trỏ tới đúng giao dịch mà họ xác nhận. Nhóm nhỏ toả ra chính những luồng đôi ấy: không khoá nhóm, không bản ghi chung, mọi tính chất của luồng vẫn nguyên vẹn.

Sáu bước, không tài khoản,
khoảng một phút

Mỗi ảnh chụp trên trang này là ứng dụng đang chạy trên điện thoại, không phải bản dựng thử. Không có gì ở đây bắt bạn đăng ký, bởi chẳng có ai để đăng ký cả.

Bước 1 trên 6: tạo danh tính của bạn — một cặp khoá sinh ngay trên máy này, không tài khoản
1 · Danh tính — một cặp khoá, không phải đăng ký
Bước 4 trên 6: chọn mã PIN, kèm lời cảnh báo không thể đặt lại được nói thẳng ra
4 · Một mã PIN — và không có cách đặt lại, nói thẳng ra
Bước 5 trên 6: người lạ tin nhau bằng cách nào — cả hai bên đặt cọc, làm xong thì được trả lại
5 · Lòng tin — được giải thích trước giao dịch đầu tiên
Bước 6 trên 6: bản sao lưu, mà thật lòng thì chưa phải bản sao lưu cho tới khi rời khỏi điện thoại
6 · Bản sao lưu — «chưa phải bản sao lưu» cho tới khi rời khỏi điện thoại

Danh tính của bạn là một cặp khoá sinh ra trên thiết bị — không email, không số điện thoại, không ai để đăng ký, và cũng chính vì thế không ai khôi phục lại được cho bạn. Bước cuối là bản sao lưu, bởi một chiếc ví không khôi phục được mới là cách duy nhất khiến người ta thật sự mất tiền ở đây.

Tiền đúng là của bạn

Một chiếc ví Monero bạn tự giữ, quy đổi sang tiền bản địa ở khắp nơi, được quét và chi tiêu bởi một động cơ monero-oxide nhúng sẵn — không có tiến trình ví nào chạy trên điện thoại.

Màn hình chính cá nhân: số dư bằng XMR và tiền bản địa, trạng thái đồng bộ, bộ đếm số tờ tiêu được, các ô chế độ và những khoản gần đây
Số dư, và những tờ tiền đứng sau nó
Trả tiền hoặc yêu cầu: số tiền bằng tiền bản địa hay XMR, phép tính phí, còn lại bao nhiêu sau đó
Toàn bộ phép tính trước khi bạn đồng ý
Bản sao kê: số dư luỹ kế, tìm kiếm biên nhận, xuất CSV
Một sao kê dựng lại từ chuỗi
Chọn người để trả: danh bạ kèm vân tay khoá của từng người
Bạn đang trả cho ai, theo vân tay khoá

Khi trả tiền, màn hình hiện số tiền, phí mạng ước tính, tổng cộng, còn lại bao nhiêu sau đó, tiêu bao nhiêu tờ và mất khoảng bao lâu — và cho bạn chọn tốc độ. Lịch sử được dựng lại từ chuỗi: các khoản gửi nhận diện bằng key image, tiền thối không bao giờ hiện như khoản thu, mỗi dòng mang số dư luỹ kế, và cả bản sao kê xuất được ra CSV.

Monero tiêu từng tờ riêng biệt chứ không tiêu số dư, nên một chiếc ví chỉ giữ một tờ lớn có thể không trả nổi hai lần liên tiếp. Ứng dụng đếm số tờ có thể tiêu và bảo bạn đổi nhỏ một tờ trước khi đứng ở quầy, thay vì để hỏng việc ngay tại đó.

Những cuộc trò chuyện mang theo tiền

Một liên hệ là một cặp khoá, không phải một định danh. Một lần quét mở ra cuộc trò chuyện dựa trên hộp thư, vẫn chạy khi một bên ngoại tuyến — và những luồng ấy mang theo giao thương, chứ không chỉ chữ nghĩa.

Thẻ của bạn: mã QR dùng một lần mở ra một cuộc trò chuyện, chỉ dùng cho một người
Thẻ của bạn — chỉ dùng cho một người
Một cuộc trò chuyện mang theo tiền: hoá đơn chi tiết có dòng thuế, biên nhận, dải báo ký quỹ đã tất toán
Hoá đơn, thanh toán, biên nhận — ngay trong luồng
Một nhóm ba người trên bảng tin dùng chung: một bản ghi cho mỗi thế hệ, một câu hỏi và câu trả lời từ một điện thoại khác
Nhóm — một bản ghi dùng chung cho mỗi thế hệ
Tìm điều người ta đã nói, kết quả trùng tên xếp trên kết quả trùng nội dung tin nhắn
Tìm đúng điều người ta đã nói

Bạn đưa ai đó một tấm thẻ — bằng mã QR, liên kết ducat: hoặc một cú chạm NFC — và nó chỉ dùng được cho một người: đã nhận rồi thì ngừng hoạt động, nên một ảnh chụp màn hình lọt ra chỗ khác không phải là lối vào.

Một nhóm là danh sách chỉ có thể dài thêm, và lời của nó đi trên một bản ghi bảng tin dùng chung cho mỗi thế hệ (§16.24): mỗi thành viên viết trang của riêng mình dưới một khoá nhóm mà danh sách mang theo, nên một tin nhắn cho năm người là một lần ghi thay vì năm, và mạng không thể phân biệt bản ghi ấy với bất kỳ bản ghi nào khác. Không ai giả danh được ai, và việc rời nhóm là chuyện cục bộ. Một nhóm có thể chia hoá đơn: một tổng số trở thành yêu cầu riêng gửi tới từng người, kèm một câu để mọi người tự kiểm lại phép tính, và mỗi yêu cầu chuyển thành đã trả ngay khi tham chiếu của nó về tới.

Điện thoại của bạn là cả cửa hàng

Chọn một trong chín chế độ và cả ứng dụng bàn giao lại — với các thẻ riêng của nó, không còn gì của ví. Gần như không phần nào trong đó cần một đối tượng giao thức mới, và đó là câu mà bản đặc tả tự hào nhất.

Các chế độ hoạt động: cá nhân, quầy thu ngân, sổ nợ quán, taxi, quyên góp, chợ, cho thuê, thuê người giúp, ki-ốt
Chín chế độ, một giao thức
Quầy thu ngân: các món đã nhập kèm dòng thuế bán hàng đã tính
Quầy thu ngân — với thuế đã tính sẵn
Một mã để khách quét; hoá đơn chi tiết hiện lên điện thoại của họ
Một mã — hoá đơn đến ngay khi khách quét
Sổ nợ quán: đang mở, đã lên hoá đơn và chờ, chốt lại bằng một hoá đơn
Sổ nợ quán — thanh toán từ chuyến xe buýt về nhà
Chế độ ki-ốt, phía khách: chạm vào thứ bạn muốn, thuế hiện ra trước khi bạn đồng ý
Ki-ốt — khách tự đặt món
Bảng nhân viên của ki-ốt sau một mã PIN: đơn hàng, thực đơn, và mức thuế
Bảng nhân viên sau một mã PIN
Một mã quyên góp cố định, với cái giá về khả năng liên kết nói ngay trên màn hình
Quyên góp — với cái giá được nói rõ

Một quầy thu ngân nhập từng món hoặc nhận một tổng gõ tay, tính thuế bán hàng cho vùng của nó và hiện một mã; hoá đơn hiện lên điện thoại của khách ngay khi họ quét, và biên nhận quay về khi họ trả tiền. Một sổ nợ quán báo cho khách từng ly và chốt lại bằng một hoá đơn. Một ki-ốt giao hẳn điện thoại cho khách, với bảng nhân viên nằm sau một mã PIN. Một hòm quyên góp mở cả hai lối: một mã DUCAT mở ra cuộc trò chuyện và gửi lại biên nhận ngay khi tiền tới, cùng một địa chỉ cố định mà bất kỳ ví Monero nào cũng gửi được — với cái giá về khả năng liên kết nói ngay trên màn hình chứ không nằm trong một bản chính sách.

Một cuốc xe không ai điều phối

Gõ nơi bạn muốn đến. Điện thoại biến một toạ độ GPS thành một ô địa lý — một bảng tin công khai mà địa chỉ chính là nơi chốn ấy — rồi dán lên một lời gọi: một tấm thẻ dùng một lần, một vùng áng chừng, và một mức giá tính từ lộ trình lái xe thật. Không một cái tên nào lên bảng — không trên tấm thẻ, cũng không trong bản ghi phía sau nó. Tài xế theo dõi ô của mình và các ô lân cận rồi nhận cuốc; chính DHT làm trọng tài cuộc đua, và không hề tồn tại một bên mai mối nào.

Đường màu xanh mới là điều đáng nói: giá của DUCAT thấp hơn khoảng 15% so với mức nền tảng thu của khách, và tài xế giữ trọn phần đó — khoản chiết khấu vắng mặt, trả lại cho cả hai. Cái gật đầu đến kèm một gương mặt: tên, xe, màu, biển số, giờ tới — niêm phong gửi riêng cho khách, không bao giờ hiện lên bảng tin. Tên của chính bạn và khung cửa bạn đang đứng đợi đi ngược lại đúng khoảnh khắc ấy, tới đúng người tài xế đã nhận cuốc.

Một nhượng bộ, nói thẳng trên màn hình: tìm địa chỉ, dẫn đường và các ô bản đồ đều hỏi OpenStreetMap — nơi duy nhất DUCAT gửi vị trí ra khỏi thiết bị. Bản thân các bảng tin không bao giờ mang độ chính xác tốt hơn ~1,2 km.

Gọi một cuốc xe: lộ trình, quãng đường, thời gian, và giá cước so với mức nền tảng sẽ thu
Lời gọi, đặt cạnh giá của nền tảng
Đồng hồ tính cước: mức giá gõ một lần, một mã đón khách, điều khoản rơi vào khung chat lúc bắt đầu
Đồng hồ tính cước, với điều khoản nằm trong luồng

Bán nó, cho thuê nó, hoặc chào một giờ thời gian của bạn

Vẫn bộ máy bảng tin ấy, mang theo nhiều hơn những cuốc xe. Một tin rao ở chợ, một lượt cho thuê, hay một giờ tay nghề giúp việc đều được dán lên một bảng tin lấy khu phố làm địa chỉ, và một người lạ gần đó đọc được nó mà cả hai bên đều không chạm vào nền tảng nào.

Tin rao nằm trên những bảng thô hơn lời gọi xe — rộng chừng năm cây số, bởi người ta sẵn sàng đi một quãng để lấy một chùm chìa khoá. Việc tìm kiếm đọc bảng của bạn và vành đai quanh nó, vẽ kết quả ngay khi từng nơi trả lời, nên thứ đỗ gần bạn hiện lên màn hình trong chưa đầy sáu giây, còn «quanh đây không có gì» mất chừng bốn mươi giây và đánh dấu từng vùng đã dò xong.

Duyệt chợ: một tin rao tìm thấy trên bảng, kèm giá, tiền cọc và nút để hỏi thêm
Chợ
Duyệt người giúp việc: một kỹ năng được chào ở gần đó, tính theo giờ
Thuê người giúp
Đăng một chiếc xe cho thuê: nửa công khai sẽ lên bảng tin
Nửa công khai — phần bảng tin được đọc
Chỉ dành cho người đặt: địa chỉ và chi tiết bàn giao không bao giờ lên bảng tin
Nửa riêng tư — không bao giờ lên bảng
Tìm đồ nghề ở gần: một tin rao đang chạy với giá theo ngày và khoản cọc
Tìm ra nó — giá, tiền cọc, và một cách để hỏi

Biểu mẫu đăng tin được chia đôi và ứng dụng nói cho bạn biết nửa nào là nửa nào: mọi thứ ở phần đầu sẽ lên một bảng tin công khai mà ai ở gần cũng đọc được, còn địa chỉ, chỗ để chìa khoá và biển số thì nằm ở phần sau, phần không rời khỏi điện thoại bạn cho tới khi có một lượt đặt thật sự.

Một mái nhà, một dòng tin
và một kệ sách của riêng bạn

Những bản ghi mang được hoá đơn thì cũng mang được một trang viết. Khoá của bạn vốn đã là một địa chỉ, nên thứ bạn viết ra có chỗ để ở mà không phải xin ai một khoảng trống.

Dòng tin: bài của những người bạn giữ, và mái nhà của chính bạn
Dòng tin — bài của những người bạn giữ
Thư viện: các số báo xếp theo nhà xuất bản, lưu ra ngoài thay vì mở lên
Thư viện — các số báo xếp theo nhà xuất bản
Toàn cầu: ấn phẩm trên các bảng theo chủ đề, với «Tất cả» đọc mọi kệ cùng lúc
Toàn cầu — bảng theo chủ đề, mọi kệ cùng lúc
Một tin rao mở ra: ảnh trong gói của nó, phần mô tả của người bán, mức giá họ gõ bên cạnh tỷ giá hôm nay
Một tin rao mở ra — ảnh của nó và mức giá đã gõ

Mái nhà của một danh tính nằm ở đúng địa chỉ mà khoá của nó gọi tên, còn dòng tin là dòng thời gian của những người bạn giữ — một bài có thể mang theo ảnh và tệp, và những trái tim quay về. Các trang được chính người xuất bản phục vụ từ ổ đĩa của họ và mở ra trong một căn phòng niêm phong, nên đọc một trang không kéo về thứ gì từ nơi khác.

Các ấn phẩm — một tờ báo, một truyện dài kỳ, một phần mềm — được bán toàn cầu trên các bảng theo chủ đề thay vì theo khu phố: một bài đáp xuống bảng của chủ đề và cả bảng của ngôn ngữ nó, còn «Tất cả» đọc cả sáu kệ song song. Một tin rao kéo gói của nó về từ chính điện thoại người bán — tối đa 24 tấm ảnh cỡ đầy đủ, một phần mô tả, thông số và tệp đính kèm — và bị từ chối trọn gói ở bất kỳ khoá nào nó không gọi tên, để một tài liệu tồi không thể giấu những tấm ảnh tốt.

Cả hai cùng đặt tiền cọc.
Làm xong thì được trả lại.

Không có công ty nào ở giữa để bênh bên nào, nên DUCAT làm một điều đơn giản hơn. Tiền nằm ở một địa chỉ mà chỉ hai người mở được, và lệnh giải toả trả về cho mỗi bên đúng phần cọc của mình, ghi rõ tên. Không ai lấy được tiền cọc — kể cả chúng tôi, bởi chẳng có chúng tôi nào để mà trả.

~10% một cuốc xe ngắn, ít nguy cơ hư hỏng
~20% một chỗ ở chìa khoá nhà của một người
~30% một chiếc xe thiệt hại có thể vượt giá thuê

Những con số ấy được lập luận chứ không phải đoán — mô hình 2-trên-2 không bên giữ hộ của Bisq là tiền lệ đang chạy gần nhất, và các nghiên cứu về đặt cọc song phương chứng minh cách sắp xếp này chống gian lận ở trạng thái cân bằng. Từ đó rút ra hai giới hạn: một khoản cọc có giá trị thấp hơn phí trả lại nó thì thành số không chứ không phải đồ trang trí, và không khoản nào vượt quá nửa giá. Bên chịu rủi ro nhiều hơn nạp sau, để tiền của họ không bao giờ nằm một mình trong địa chỉ chung.

⅔

Ký quỹ mà không có công ty nào đứng sau

Khi một giao dịch cần nhiều hơn một khoản cọc: khách, tài xế và một liên hệ trọng tài được cả hai tin cậy cùng chạy một lượt sinh khoá phân tán qua luồng đã niêm phong — ba thiết bị dẫn ra một địa chỉ Monero, mỗi bên chỉ giữ một phần, hai bên bất kỳ là ký được, không có kẻ chia bài ở đâu cả. Đường đi suôn sẻ chỉ là hai cú chạm.

Mọi trường hợp khác là một thoả thuận: một bên đề nghị cách chia, bên kia ký hoặc trả giá lại. Ai mắc kẹt thì hỏi trọng tài, và chữ ký đồng thuận của trọng tài chính là phán quyết — một trọng tài bị chiếm quyền cùng lắm chỉ chọn được giữa các bên đã nêu tên, không bao giờ tự trả cho mình. Đã chứng minh trên chuỗi ở stagenet với mọi hình thái, kể cả một lượt giải toả FROST hai đầu vào.

∅

Cái giá của một cái tên

Trước khi có bất kỳ giao dịch nào thì chỉ có một người lạ, và câu hỏi là cái tên ấy đã tốn của họ bao nhiêu. Một danh tính có thể đốt Monero — gửi nó tới một địa chỉ không ai giữ khoá, dẫn ra từ một giá trị băm ai cũng tự tính lại được — và mang theo chính bằng chứng thanh toán của Monero cho khoản ấy. Ứng dụng của bạn đối chiếu bằng chứng đó với nút của chính nó, hỏi một nút thứ hai xem giao dịch đã vào khối chưa, và từ đó trở đi hiện danh tính ấy bằng lời ở mọi nơi bạn phải quyết định điều gì: đã đốt 0,01 XMR, từ khối N. Không bao giờ là một điểm số. Quy tắc đáng kể là lời cảnh báo: khi thứ bạn sắp đem ra đánh đổi có giá hơn thứ họ đã đốt, ứng dụng nói thẳng như vậy, bởi một cái tên chẳng tốn gì thì biến mất cũng chẳng mất gì.

Sau một giao dịch đã xong, bên nào cũng có thể ký một biên nhận có đánh giá, và bất kỳ ai bạn đã gặp mặt đều có thể ký một lời bảo đảm. Cả hai đi trong một luồng đã niêm phong và cả hai chỉ do người đọc tự cân — mỗi người ký một tiếng nói, chỉ tính những người ký mà bạn đã kiểm tra lần đốt của chính họ, và chỉ tính lời bảo đảm từ những người đã có sẵn trong danh bạ của bạn. Một bước, không đồ thị, không có gì được công bố ở đâu cả. Uy tín tốn tiền chứ không tốn quyền riêng tư.

Và nó cư xử như một ứng dụng đàng hoàng

Một công cụ riêng tư mà dùng khó chịu thì chỉ được dùng một lần. Cái này gọi tên cái giá bạn phải trả, nói hai mươi thứ tiếng, và có một giao diện tối không phải nghĩ ra sau cùng.

Hồ sơ: cái giá về khả năng liên kết khi cho phép liên hệ trả thẳng cho bạn, nói ngay ở chỗ bạn chọn
Cái giá được gọi tên ngay lúc bạn chọn
Vẫn màn hình chính ấy trong giao diện tối Mocha
Mocha — giao diện tối, làm cho đến nơi
Vẫn màn hình chính ấy bằng tiếng Ả Rập: một tấm gương phải-sang-trái trọn vẹn, với chữ số Ả Rập phương Đông
Tiếng Ả Rập — một tấm gương phải-sang-trái trọn vẹn
Nửa kinh doanh của phần cài đặt: vùng tính cước, mức thuế bán hàng, quyền riêng tư, sao lưu
Nửa kinh doanh của phần cài đặt

Sự tiện lợi có cái giá của nó trong một hệ thống riêng tư, và ứng dụng gọi tên cái giá ấy ngay lúc bạn chọn chứ không phải trong một bản chính sách chẳng ai đọc. Cho phép các liên hệ trả thẳng cho bạn nghĩa là dùng lại một địa chỉ — nên nó nói rằng bất cứ ai theo dõi chuỗi đều thấy được rằng cùng một người đã được trả tiền mỗi lần, kể cả những người chỉ mới trả cho bạn đúng một lần, rồi chỉ ra lựa chọn thay thế. Cũng nếp ấy chạy suốt: một lần nhìn thấy trong mempool được hiện là đã thấy, chưa hề tất toán; một hồ sơ luôn được trình bày đúng như bản chất của nó, một lời tự nhận.

Nó nói hai mươi thứ tiếng — mọi màn hình đọc từ tài nguyên, dạng số nhiều được soạn ra chứ không nối chuỗi, và tiếng Ả Rập cùng tiếng Ba Tư chứng minh tấm gương ấy. Biên nhận là hồ sơ, không phải tin nhắn: mỗi biên nhận sống trong kho riêng, sống sót qua việc xoá luồng và xoá liên hệ, và đi cùng bản sao lưu đã mã hoá — bản sao lưu mang theo cả con người chứ không chỉ tiền bạc.

Cùng một ứng dụng trên máy bàn

Một cửa sổ gốc trên chính phần Rust mà điện thoại đang chạy — nên quầy thu ngân của người bán hàng, một ki-ốt, phòng báo chí, cái chợ và dòng tin là một bản triển khai, không phải bản chuyển.

Trang Trò chuyện trên máy bàn: nhóm trên bảng phía trên các luồng đôi, kèm khung hội thoại
Trò chuyện — nhóm trên bảng, phía trên các luồng đôi
Quầy thu ngân trên máy bàn: một lượt bán đã nhập và các sổ nợ
Quầy thu ngân — một lượt bán đã nhập và các sổ nợ
Trang Chợ trên máy bàn: tin rao gần một ô kèm ảnh thu nhỏ của chúng
Cái chợ — tin rao gần một ô, kèm ảnh thu nhỏ
Trang Trạng thái trên máy bàn: nút mạng, bảng định tuyến, Kết nối lại, nhật ký
Trạng thái — nút mạng, bảng định tuyến, Kết nối lại

Nó nói hai mươi thứ tiếng của điện thoại từ cùng bộ tài nguyên, và đã được kiểm chứng đối chiếu với điện thoại trong mọi nghi thức: trò chuyện, nhóm trên bảng, hoá đơn và biên nhận, một đơn ki-ốt trả từ chiếc điện thoại chưa từng gặp máy bàn, tệp và trang được phục vụ lẫn lấy về, cùng những cuộc gọi có tiếng thật.

Điều gì đã được chứng minh, điều gì thì chưa

Tệp README ghi sổ những gì thật sự đã chạy đầu-cuối trên mạng thật và stagenet thật — và nêu rõ các khoảng trống thay vì chôn chúng đi.

Đã chạy thật từ đầu đến cuối
  • Hai cuốc xe hoàn chỉnh có điều phối điện thoại↔máy bàn — từ lời gọi qua ô địa lý đến tất toán trên chuỗi, tiền boa và biên nhận — và cuốc xe có đặt cọc nay đã chạy trọn vẹn trên hai điện thoại
  • Trọn vòng cung ký quỹ — hai điện thoại và một trọng tài ngồi bàn đã độc lập dẫn ra một địa chỉ 2-trên-3; nạp → giải toả → tài xế nhận tiền
  • Một lượt đặt chỗ — chủ nhà và khách mỗi bên nạp cọc, quỹ được xác nhận bằng chính lượt quét của khách, đề nghị chia, ký, cả hai bên vẹn nguyên; nó tiếp tục thay vì bắt đầu lại khi giữa chừng một nút Monero hết thời gian chờ
  • Sổ nợ quán từ điện thoại sang máy bàn, từ hoá đơn đến biên nhận; mười đòn tấn công bị từ chối
  • Một chiếc điện thoại xoá sạch về không được dắt qua phần cài đặt: tấm thẻ đầu tiên, khoản trả đầu tiên, một lượt bán ki-ốt trả xong từ đầu đến cuối — rồi lại xoá sạch và khôi phục từ chính bản sao lưu của nó
  • Mọi đường ký quỹ chạy qua giao diện trong một ngày — một lượt bán ở chợ, một cuốc gọi ngoài đường với vị trí trực tiếp truyền qua lại giữa các máy, một lượt thuê đồ nghề, và một việc thuê người mà lần chạy đầu tiên đã làm lộ ra và sửa được một tình huống tranh chấp thật
  • Lớp lòng tin, đi qua chứ không biện luận — một lần đốt được chứng minh và kiểm tra trên chính nút của một người lạ trong 12 giây, một biên nhận có đánh giá được cân đúng bằng không, bốn máy bàn cùng kết luận «2 liên hệ của bạn biết họ», và một tấm thẻ gọi xe không tên đã có tên nhờ thông tin chia sẻ ngay sau đó
Nói ra, không chôn đi
  • Chưa có ai ngoài dự án rà soát — §2.5 chính là lập luận vì sao điều đó quan trọng; một lượt rà nội bộ trên năm bề mặt tấn công tìm ra bốn mươi mấy thứ và sửa phần lớn, vốn là chuyện nhỏ hơn
  • Chưa có người triển khai nào chưa từng đọc core/
  • NFC đã kiểm tra ở khâu biên dịch, chưa bao giờ thử thực địa giữa hai điện thoại — và cú chạm cũng chưa từng được đo trên máy cầm tay
  • Các con số độ trễ đo trên máy bàn có nút kết nối sẵn, không phải trên điện thoại chạy pin
  • Hai sóng vô tuyến, hai viên pin, hai đồng hồ độc lập — buổi thực địa vẫn còn nợ
  • Máy bàn không có yếu tố thứ hai — không khoá thiết bị, cũng không có bí mật của riêng nó, nên cửa chặn mà điện thoại đặt trước khi tiền rời đi không thể chạy ở đó
!

Tiền alpha. Stagenet. Không dành cho tiền thật.

Mọi bản dựng đều ký ở chế độ gỡ lỗi và tất toán trên stagenet của Monero — những đồng tiền không có giá trị, đúng như thiết kế. Bản đặc tả là bản nháp 1.1.0-dev13 và tự nói về mình: chẳng có gì ở đây là chung cuộc, và §14 mới là chương trình nghị sự thật sự. Hãy thử nó, phá nó, đọc nó — chỉ đừng rót tiền vào nó.

Bản đặc tả chính là sản phẩm.
Mọi thứ khác giữ cho nó trung thực.

ducat-protocol.md là hiện vật chính — năm phần, nhật ký thay đổi đặt lên đầu, và một bộ kiểm tra tuân thủ mà một bản triển khai thứ hai chạy qua, để tài liệu không thể lặng lẽ trôi xa khỏi mã nguồn.

★ ducat-protocol.md   bản đặc tả — nháp 1.1.0-dev13, nhật ký thay đổi đặt trước
  core/               bản triển khai tham chiếu (Rust)
  vectors/            406 ca tuân thủ + lược đồ
  conformance/        bốn bộ kiểm tra, chạy mỗi lần push
  harness/            đầu-cuối trên các tuyến Veilid thật
  sim/                trình mô phỏng ngoại tuyến, kịch bản thị trường
  applications/       android/ + desktop/ (cùng tệp nguồn)
  mobile/             cầu nối Rust: ví · hộp thư · nút mạng
  research/           bằng chứng, không phải sản phẩm

Bốn bộ kiểm tra, mỗi lần push

  • Mọi vector được kiểm chứng theo schema.json
  • Một bản triển khai thứ hai chạy đủ 406 và phải khớp
  • Tài liệu được đối chiếu với mã nguồn — nhờ vậy đã bắt được một mục quy phạm được viện dẫn ba lần mà chưa bao giờ viết ra, một khoảng giá trị mà sổ đăng ký không khai báo, và sáu loại vector mà tài liệu chưa từng gọi tên
  • Không thứ gì nhập vào mà không được khai báo

Trách nhiệm gìn giữ là quy phạm chứ không phải nguyện vọng: §18.7 biến đạo lý của Veilid thành một điều kiện tuân thủ — không phí giao thức, không trả tiền cho nút, không bao giờ. Hãy dựng bất cứ thứ gì bạn muốn từ mã này, nhưng một ứng dụng kiếm tiền từ việc chuyên chở thì không phải DUCAT.

Cài lên điện thoại,
hoặc lên máy bàn

Không phải cài gì trước — mỗi bản dựng mang theo thư viện Rust và JVM của riêng nó. Android trên điện thoại, và vẫn ứng dụng ấy dưới dạng cửa sổ gốc trên Linux, Windows và macOS. Không có bản dựng cho iOS; nó sẽ có thư mục khi nào xứng đáng.

🤖 Android

Trình duyệt trên điện thoại, bản dựng mới nhất, không phải lần mò trang phát hành. armeabi-v7a chỉ dành cho máy cũ hơn khoảng năm 2016; x86_64 dành cho trình giả lập.

🐧 Linux

Bản .deb và .rpm cài như gói; còn AppImage thì chạy thẳng.

🪟 Windows

Chưa ký — Windows sẽ cảnh báo ở lần mở đầu tiên.

🍎 macOS

Bản dựng cho Apple Silicon và Intel. Chưa ký — macOS sẽ cảnh báo ở lần mở đầu tiên.

Ký ở chế độ gỡ lỗi, chỉ trên stagenet — không dành cho tiền thật.