Monero 동전을 안고 있는 DUCAT의 마네키네코
눈앞의 상대와 직접 하는 거래 · 명세 초안 1.1.0-dev13

DUCAT

운반은 Veilid. 정산은 Monero. 사이에 운영자는 없습니다.

DUCAT 서버는 어디에도 없습니다. 연락처도, 메시지도, 청구서도, 영수증도 모두 DHT 레코드이자 종단 간 봉인된 페이로드입니다. 그리고 모든 휴대폰이 완전한 Veilid 노드로 돌아가며, 자기가 쓴 만큼의 중계와 저장을 되돌려 줍니다.

0개 적합성 벡터 0가지 동작 모드 0개 언어 0대의 서버

디버그 서명, stagenet 전용. 아직 실제 돈을 위한 것이 아닙니다.

딛고 선 것들

가운데에 아무도 없는 거래

두카트는 여섯 세기 동안 베네치아에서 빈을 거쳐 레반트까지 통용된 금화였습니다. 발행자와의 관계도, 뒤에 붙은 계좌도, 딸려 오는 허가도 없었습니다. DUCAT은 바로 그것을, 누군가의 앞에 서서 거래하는 그 순간을 위해 다시 만든 것입니다.

🐱

어디에도 서버가 없습니다

연락처도, 청구서도, 결제도, 영수증도 Veilid의 DHT 위를 종단 간 봉인된 페이로드로 오갑니다. 소환장을 보낼 곳도, 속도를 조일 곳도, 플랫폼에서 내릴 곳도, 꺼 버릴 곳도 없습니다. 돌아가는 것이 아무것도 없기 때문입니다. 모든 휴대폰이 완전한 노드이며, 자기가 쓴 만큼의 중계와 저장을 되돌려 줍니다.

🔑

신원은 키 한 쌍입니다

휴대폰 안에서 만들어집니다. 이메일도, 전화번호도, 가입할 곳도 없습니다 — 그래서 누구도 대신 복구해 줄 수 없기도 합니다. 앱은 그 사실을 묻어 두는 대신 소리 내어 말합니다.

🎫

한 번만 받을 수 있는 카드

상대에게 카드를 건넵니다 — QR이든, ducat: 링크든, NFC 접촉이든. 그리고 그것은 단 한 사람에게만 유효합니다. 한 번 받아 가면 더는 작동하지 않으므로, 어딘가로 흘러간 스크린샷은 들어오는 통로가 되지 못합니다.

🔒

봉인된 대화

X3DH 형태의 암호화. 일회용 사전키와 순방향 비밀성을 갖췄습니다. 앱이 서명된 사전키로 물러서야 할 때는, 그것을 감추는 대신 열린 자물쇠를 보여 줍니다.

💬

돈을 실어 나르는 대화

우편함 방식의 스레드는 한쪽이 오프라인이어도 돌아갑니다. 여기에는 항목별 청구서가 실립니다 — 각 줄의 합이 총액과 맞지 않으면 메시지 자체가 거절됩니다 — 그리고 결제, 받는 쪽이 발행하며 자신이 인정한 거래를 가리키는 영수증이 함께 실립니다. 소규모 그룹도 바로 그 일대일 스레드로 퍼질 뿐입니다. 그룹 키도, 공유 기록도 없고, 스레드의 성질은 하나도 달라지지 않습니다.

여섯 단계, 계정 없이,
대략 일 분

이 페이지의 모든 화면 사진은 실제 휴대폰에서 돌아가는 앱입니다. 목업이 아닙니다. 여기에는 가입을 요구하는 것이 하나도 없습니다. 가입할 상대가 아예 없기 때문입니다.

6단계 중 1: 신원 만들기 — 이 휴대폰 안에서 만들어지는 키 한 쌍, 계정은 없음
1 · 신원 — 가입이 아니라 키 한 쌍
6단계 중 4: PIN 정하기, 재설정할 수 없다는 경고를 솔직하게 밝힌 화면
4 · PIN — 그리고 재설정 방법은 없다고, 솔직하게
6단계 중 5: 낯선 사람끼리 어떻게 신뢰하는가 — 양쪽이 보증금을 걸고, 끝까지 마치면 돌려받음
5 · 신뢰 — 첫 거래 전에 설명해 둡니다
6단계 중 6: 백업. 솔직히 말해 휴대폰을 벗어나기 전까지는 아직 백업이 아님
6 · 백업 — 휴대폰을 벗어나기 전까지는 「아직 백업이 아님」

당신의 신원은 기기 안에서 만들어진 키 한 쌍입니다. 이메일도, 전화번호도, 가입할 곳도 없고, 그래서 누구도 대신 복구해 줄 수 없습니다. 마지막 단계가 백업인 이유는, 복구할 수 없는 지갑이야말로 여기서 사람이 정말로 돈을 잃는 유일한 길이기 때문입니다.

정말로 당신의 것인 돈

열쇠를 직접 보관하는 Monero 지갑. 어느 화면에서나 현지 통화로 환산되며, 내장된 monero-oxide 엔진이 스캔과 지출을 맡습니다. 휴대폰에 지갑 데몬은 없습니다.

개인 홈 화면: XMR과 현지 통화 잔액, 동기화 상태, 쓸 수 있는 지폐 수, 모드 타일, 최근 입출금
잔액, 그리고 그 뒤의 지폐들
보내기와 청구: 현지 통화 또는 XMR 금액, 수수료 계산, 보내고 남는 액수
계산 전부를, 결정하기 전에
거래 내역: 누적 잔액, 영수증 검색, CSV 내보내기
체인에서 다시 짜 올린 거래 내역
누구에게 보낼지 고르기: 키 지문과 함께 나열된 연락처
누구에게 보내는지를, 키 지문으로

결제할 때는 금액, 예상 네트워크 수수료, 총액, 보내고 나서 남는 액수, 몇 장의 지폐를 쓰는지, 대략 얼마나 걸리는지가 모두 보이고 속도도 고를 수 있습니다. 내역은 체인에서 다시 짜입니다. 보낸 건은 key image로 식별하고, 거스름돈을 수입처럼 표시하지 않으며, 각 줄마다 누적 잔액이 붙고, 내역 전체를 CSV로 내보낼 수 있습니다.

Monero는 잔액이 아니라 낱장의 지폐를 씁니다. 그래서 큰 지폐 한 장만 든 지갑은 연달아 두 번 결제하지 못할 수 있습니다. 앱은 쓸 수 있는 지폐 수를 세어, 계산대 앞에서 막히는 대신 그곳에 가기 전에 한 장을 헐어 두라고 알려 줍니다.

돈을 실어 나르는 대화

연락처는 식별자가 아니라 키 한 쌍입니다. 한 번 스캔하면 한쪽이 오프라인이어도 돌아가는 우편함 방식의 대화가 열립니다 — 그리고 그 스레드는 글자만이 아니라 거래를 실어 나릅니다.

당신의 카드: 대화를 여는 한 번짜리 QR, 한 사람에게만 유효
당신의 카드 — 한 사람에게만 유효
돈을 실어 나르는 대화: 세금 줄이 있는 항목별 청구서, 영수증, 에스크로 정산 완료 띠
청구서, 결제, 영수증 — 대화 안에서
공유 게시판 위의 세 사람 그룹: 세대마다 한 레코드, 하나의 질문과 다른 휴대폰에서 온 답
그룹 — 세대마다 하나의 공유 레코드
사람들이 한 말 검색하기. 이름이 맞은 결과가 메시지가 맞은 결과보다 위에
찾기 — 사람들이 실제로 한 말을

상대에게 카드를 건넵니다 — QR로든, ducat: 링크로든, NFC 접촉으로든. 그리고 그것은 단 한 사람에게만 유효합니다. 한 번 받아 가면 더는 작동하지 않으므로, 어딘가로 흘러간 스크린샷은 들어오는 통로가 되지 못합니다.

그룹은 늘어나기만 하는 명단이고, 그 말들은 세대마다 하나의 공유 게시판 레코드에 실려 갑니다(§16.24). 각 구성원은 명단이 지니고 다니는 그룹 키 아래 자기 페이지를 쓰므로, 다섯 사람에게 보내는 메시지는 다섯 번이 아니라 한 번의 쓰기가 되고, 네트워크는 그 레코드를 다른 어떤 것과도 구별하지 못합니다. 누구도 남의 이름으로 위조할 수 없고, 나가는 일은 이 기기 안에서 끝납니다. 그룹은 계산을 나눌 수도 있습니다. 하나의 총액이 각 사람에게 가는 개별 요청이 되고, 거기에 모두가 계산을 확인할 수 있는 한 문장이 붙으며, 각 요청은 그 참조가 도착하는 대로 결제됨으로 바뀝니다.

당신의 휴대폰이 곧 가게 전부입니다

아홉 가지 모드 가운데 하나를 고르면 앱 전체가 자리를 내어 줍니다. 탭도 그 모드의 것이 되고, 지갑의 흔적은 남지 않습니다. 그 대부분이 새로운 프로토콜 객체를 필요로 하지 않았는데, 명세가 가장 자랑스러워 하는 문장이 바로 그것입니다.

동작 모드: 개인, 판매 시점, 술집 외상, 택시, 후원, 장터, 대여, 도움 구하기, 키오스크
아홉 가지 모드, 하나의 프로토콜
판매 시점: 찍어 넣은 품목과 계산된 판매세 줄
판매 시점 — 세금까지 계산해서
손님이 찍을 코드 하나; 항목별 청구서가 손님 휴대폰에 도착
코드 하나 — 찍는 순간 청구서가 도착
술집 외상: 열려 있는 것, 청구되어 기다리는 것, 한 장의 청구서로 닫힌 것
술집 외상 — 집에 가는 버스에서 정산
키오스크 모드, 손님 쪽: 원하는 것을 누르면 확정 전에 세금이 보임
키오스크 — 손님이 직접 주문
PIN 뒤의 키오스크 직원 화면: 주문, 메뉴, 세율
직원 화면 — PIN 뒤에
상설 후원 코드. 연결 가능성이라는 대가가 화면에 적혀 있음
후원 — 그 대가를 밝힌 채로

판매 시점 모드는 품목을 찍거나 입력한 총액을 받아, 해당 지역의 판매세를 계산하고 코드 하나를 보여 줍니다. 손님이 찍는 순간 청구서가 그 휴대폰에 도착하고, 결제하면 영수증이 돌아옵니다. 술집 외상은 잔마다 손님에게 알리고 마지막에 한 장의 청구서로 닫습니다. 키오스크는 휴대폰을 통째로 손님에게 넘기고, 직원 화면은 PIN 뒤에 둡니다. 후원함은 두 갈래를 모두 엽니다. 대화를 열고 돈이 도착하는 즉시 영수증을 보내는 DUCAT 코드와, 어떤 Monero 지갑에서든 보낼 수 있는 상설 주소 — 연결 가능성이라는 대가는 약관이 아니라 화면 위에 적혀 있습니다.

아무도 배차하지 않는 이동

어디로 갈지 입력합니다. 휴대폰은 GPS 위치를 지오셀로 바꿉니다 — 그 장소 자체가 주소인 공개 게시판입니다 — 그리고 호출을 붙입니다. 한 번만 쓰는 카드, 대략적인 구역, 그리고 실제 주행 경로에서 뽑아낸 제시 금액. 게시판에는 이름이 올라가지 않습니다 — 카드에도, 그 뒤의 레코드에도. 기사들은 자기 셀과 이웃 셀을 지켜보다 그것을 가져갑니다. 경쟁을 판정하는 것은 DHT이며, 중개자는 어디에도 없습니다.

초록색 선이 핵심입니다. DUCAT의 요금은 플랫폼이 승객에게 받는 금액보다 약 15% 낮고, 게다가 기사가 그 전부를 가져갑니다 — 빠져나갔을 플랫폼 수수료가 양쪽 모두에게 돌아간 것입니다. 수락은 얼굴과 함께 도착합니다 — 이름, 차, 색, 번호판, 도착 예정 시각. 그것은 승객에게만 봉인되어 전해지고 게시판에는 결코 드러나지 않습니다. 당신의 이름과 지금 서 있는 그 문간은 같은 순간 반대 방향으로, 호출을 가져간 단 한 명의 기사에게 갑니다.

단 하나의 타협을 화면 위에 분명히 적어 두었습니다. 주소 검색도, 경로 탐색도, 지도 타일도 OpenStreetMap에 묻습니다 — DUCAT이 위치를 기기 밖으로 내보내는 유일한 지점입니다. 게시판 자체는 결코 약 1.2 km보다 정밀한 정보를 담지 않습니다.

이동 호출: 경로, 거리, 시간, 그리고 플랫폼이라면 받았을 금액과 나란히 놓인 요금
호출, 플랫폼 요금과 나란히
택시 미터기: 요율은 한 번만 입력, 승차 코드, 시작할 때 조건이 대화로 도착
미터기, 조건은 대화 안에

팔거나, 빌려주거나, 당신의 한 시간을 내어 주세요

같은 게시판 장치가 이동보다 많은 것을 실어 나릅니다. 장터 매물도, 대여도, 숙련된 도움 한 시간도 모두 동네를 주소로 하는 게시판에 붙습니다. 그리고 가까이 있는 낯선 사람이 그것을 읽습니다 — 그동안 두 사람 다 어떤 플랫폼에도 손대지 않은 채로.

매물은 호출보다 성긴 게시판에 앉습니다 — 지름 오 킬로미터쯤. 열쇠 꾸러미를 가지러 사람들은 기꺼이 움직이니까요. 검색은 당신의 게시판과 그 둘레의 고리를 읽고, 응답이 오는 대로 결과를 그려 나갑니다. 그래서 가까이 세워 둔 물건은 육 초도 안 되어 화면에 뜨지만, 「이 근처에는 아무것도 없습니다」는 사십 초쯤 걸리며 그동안 확인이 끝난 구역을 하나씩 지워 나갑니다.

장터 둘러보기: 게시판에서 찾은 매물, 가격과 보증금, 물어보기 버튼과 함께
장터
도움 둘러보기: 가까이에서 제공되는 기술, 시간당 가격
도움 구하기
차량을 빌려주려 올리기: 게시판으로 나가는 공개 절반
공개되는 절반 — 게시판이 읽을 수 있는 것
예약한 사람에게만: 주소와 인계 사항은 결코 게시판에 오르지 않음
감추는 절반 — 게시판에는 결코 오르지 않음
가까운 장비 찾기: 하루 가격과 보증금이 붙은, 지금 올라와 있는 매물
찾아내기 — 가격, 보증금, 그리고 물어볼 방법

매물 등록 양식은 둘로 나뉘어 있고, 앱이 어느 쪽이 어느 쪽인지 알려 줍니다. 앞부분에 적은 것은 근처의 누구나 읽을 수 있는 공개 게시판으로 나갑니다. 주소, 열쇠를 둔 자리, 차량 번호는 뒷부분에 들어가며, 그쪽은 예약이 실제로 성사되기 전까지 당신의 휴대폰을 벗어나지 않습니다.

집 하나, 피드 하나,
그리고 나만의 선반

청구서를 실어 나르는 레코드는 페이지도 똑같이 실어 나릅니다. 당신의 키는 이미 주소이므로, 당신이 쓴 것은 누구에게 자리를 청하지 않고도 머물 곳이 있습니다.

피드: 곁에 둔 사람들의 글과, 나 자신의 집
피드 — 곁에 둔 사람들의 글
라이브러리: 발행처별로 꽂힌 호수, 여는 대신 밖으로 저장한 것
라이브러리 — 발행처별로 꽂힌 호수
전 세계: 주제별 게시판 위의 출판물, 「전체」가 모든 선반을 한꺼번에 읽는 모습
전 세계 — 주제별 게시판, 모든 선반을 한꺼번에
열어 본 매물: 그 꾸러미의 사진들, 파는 사람의 설명, 적어 넣은 값과 그 옆의 오늘 환산
열어 본 매물 — 그 사진들과 적어 넣은 값

한 인격의 집은 그 자신의 키가 이름 붙인 주소에 서 있고, 피드는 곁에 둔 사람들의 시간선입니다 — 글 하나가 사진과 파일을 함께 실을 수 있고, 하트는 돌아옵니다. 사이트는 그것을 펴낸 사람이 자기 디스크에서 내어 주며 봉인된 방에서 열리므로, 하나를 읽는다고 다른 어디에서 무언가를 끌어오지 않습니다.

출판물 — 신문, 연재물, 소프트웨어 한 조각 — 은 동네가 아니라 주제별 게시판에서 전 세계로 팔립니다. 한 편의 글은 주제의 게시판과 그 언어의 게시판 양쪽에 내려앉고, 「전체」는 여섯 선반을 나란히 읽습니다. 매물은 자기 꾸러미를 파는 사람의 휴대폰에서 가져옵니다 — 원본 크기 사진 최대 24장, 설명, 사양, 첨부 파일 — 그리고 자기가 이름 붙이지 않은 키를 만나면 통째로 거절되므로, 나쁜 문서가 좋은 사진을 숨길 수 없습니다.

두 사람 다 보증금을 겁니다.
끝까지 마치면 돌려받습니다.

가운데에서 한쪽 편을 들어 줄 회사가 없으니, DUCAT은 더 단순한 일을 합니다. 돈은 두 사람만 열 수 있는 주소에 놓이고, 해제되면 각자의 보증금이 이름을 달고 돌아갑니다. 보증금을 가져갈 수 있는 사람은 아무도 없습니다 — 우리도 마찬가지입니다. 돈을 줘야 할 「우리」라는 것이 애초에 없으니까요.

약 10% 이동 한 번 짧고, 손해 볼 여지가 작음
약 20% 묵을 곳 남의 집 열쇠
약 30% 차량 손해가 가격을 넘을 수 있음

그 숫자들은 어림짐작이 아니라 논거를 갖춘 것입니다. 수탁자를 두지 않는 Bisq의 2-of-2 방식이 가장 가까운 실제 선례이고, 양방향 예치금에 관한 연구는 균형 상태에서 이 구조가 속임수에 견딘다는 것을 보여 줍니다. 여기서 두 개의 한계가 나옵니다. 돌려주는 수수료보다 값이 낮은 보증금은 장식이 아니라 0이 되고, 어떤 보증금도 가격의 절반을 넘지 않습니다. 더 많이 노출된 쪽이 두 번째로 넣기 때문에, 그 사람의 돈이 공유 주소에 혼자 놓이는 일은 없습니다.

⅔

뒤에 회사가 없는 에스크로

거래가 보증금 이상을 요구할 때 — 승객, 기사, 그리고 양쪽이 함께 신뢰하는 중재인 연락처가 봉인된 스레드 위에서 분산 키 생성을 실행합니다. 세 기기가 하나의 Monero 주소를 이끌어 내고, 각자는 몫만 가지며, 임의의 둘이 서명할 수 있고, 나눠 주는 주체는 어디에도 없습니다. 순조로운 길은 두 번의 탭입니다.

그 밖의 모든 경우는 합의입니다. 한쪽이 나눔을 제안하면 다른 쪽이 서명하거나 역제안합니다. 발이 묶인 쪽은 중재인에게 묻고, 중재인의 공동 서명이 곧 판정입니다 — 장악당한 중재인이라도 기껏해야 이름이 적힌 당사자들 가운데 하나를 고를 수 있을 뿐, 자기 자신에게 지급할 수는 결코 없습니다. 두 입력을 쓰는 FROST 해제를 포함해, 모든 형태가 stagenet에서 체인으로 입증되었습니다.

∅

이름이 치른 대가

어떤 거래가 있기 전에 먼저 낯선 사람이 있고, 물음은 그 이름이 그에게 얼마의 대가를 치르게 했는가 입니다. 페르소나는 Monero를 소각할 수 있습니다 — 아무도 열쇠를 갖고 있지 않은 주소, 그것도 누구나 다시 계산해 볼 수 있는 해시에서 나온 주소로 보내고, 그에 대한 Monero 자신의 결제 증명을 지니는 것입니다. 당신의 앱은 그 증명을 자기 노드에 비추어 확인하고, 두 번째 노드에 그 거래가 블록에 들어갔는지 묻고, 그때부터 당신이 무언가를 결정하는 자리마다 그 페르소나를 말로 보여 줍니다. 0.01 XMR 소각, 블록 N부터. 점수는 결코 매기지 않습니다. 중요한 규칙은 경고입니다. 당신이 걸려는 것이 상대가 소각한 것보다 값나갈 때 앱이 그렇게 말해 줍니다. 아무 대가도 치르지 않은 이름은 사라져도 잃을 것이 없으니까요.

거래가 마무리된 뒤에는 양쪽 모두 평가가 담긴 영수증에 서명할 수 있고, 직접 만난 적이 있는 사람은 누구나 보증에 서명할 수 있습니다. 둘 다 봉인된 스레드를 타고 오가며, 둘 다 읽는 쪽이 혼자서 무게를 답니다 — 서명자 한 사람당 한 표, 그것도 당신이 소각을 확인한 서명자만 세고, 보증은 이미 당신의 연락처에 있는 사람에게서 온 것만 셉니다. 한 걸음뿐, 그래프도 없고, 어디에도 공개되지 않습니다. 프라이버시 대신 돈이 드는 평판입니다.

그리고 앱답게 움직입니다

쓰기 불편한 프라이버시 도구는 한 번 쓰이고 맙니다. 이 앱은 무엇이 당신에게 어떤 대가를 치르게 하는지 이름 붙여 말하고, 스무 개 언어를 하며, 나중에 덧붙인 것이 아닌 어두운 테마를 갖고 있습니다.

프로필: 연락처가 직접 보내게 할 때 생기는 연결 가능성의 대가를, 고르는 그 자리에 적어 둠
대가를 밝힘 — 고르는 바로 그 자리에서
같은 홈 화면을 어두운 Mocha 테마로
Mocha — 어두운 테마를, 제대로
같은 홈 화면을 아랍어로: 오른쪽에서 왼쪽으로 완전히 뒤집히고, 동아라비아 숫자 사용
아랍어 — 오른쪽에서 왼쪽으로 완전히 뒤집힌
설정의 장사 쪽 절반: 요금 지역, 판매세율, 프라이버시, 백업
설정의 장사 쪽 절반

프라이버시 체계에서 편리함에는 값이 있고, 앱은 그 값을 아무도 읽지 않는 약관이 아니라 당신이 고르는 바로 그 자리에서 말합니다. 연락처가 당신에게 직접 보내게 한다는 것은 주소 하나를 다시 쓴다는 뜻입니다 — 그래서 앱은 체인을 지켜보는 사람이라면 매번 같은 사람에게 돈이 갔다는 걸 알 수 있다고, 당신에게 딱 한 번만 보낸 사람들까지도 알게 된다고 말하고, 대안을 가리킵니다. 같은 태도가 곳곳에 흐릅니다. mempool에서 목격된 것은 보였을 뿐, 정산되지 않음으로 표시되고, 프로필은 언제나 그것이 실제로 그러한 것 — 본인의 주장 — 으로 제시됩니다.

스무 개 언어를 합니다 — 모든 화면이 리소스에서 글자를 읽고, 복수형은 이어 붙이는 대신 조립되며, 아랍어와 페르시아어가 그 뒤집기를 증명합니다. 영수증은 메시지가 아니라 기록입니다. 영수증마다 제 저장소에 살고, 스레드와 연락처를 지워도 남으며, 암호화된 백업에 실려 갑니다 — 그 백업은 돈만큼이나 사람도 함께 실어 나릅니다.

같은 응용 프로그램을 책상 위에서

휴대폰이 돌리는 것과 같은 Rust 위에 선 네이티브 창 — 그래서 장사하는 사람의 계산대, 키오스크, 기자실, 장터, 피드가 이식이 아니라 하나의 구현입니다.

책상의 채팅 화면: 일대일 스레드 위에 놓인 게시판 위의 그룹과 대화 창
채팅 — 일대일 스레드 위에 놓인, 게시판 위의 그룹
책상의 계산대: 찍어 넣은 판매와 술집 외상
계산대 — 찍어 넣은 판매와 술집 외상
책상의 장터 화면: 셀 근처의 매물과 그 썸네일
장터 — 셀 근처의 매물, 썸네일과 함께
책상의 상태 화면: 노드, 라우팅 테이블, 다시 연결, 로그
상태 — 노드, 라우팅 테이블, 다시 연결

휴대폰과 같은 리소스에서 스무 개 언어를 말하고, 휴대폰을 상대로 모든 의례에서 검증되었습니다. 채팅, 게시판 위의 그룹, 청구서와 영수증, 그 책상을 한 번도 만난 적 없는 휴대폰에서 결제된 키오스크 주문, 내어 주고 받아 오는 파일과 사이트, 그리고 진짜 소리가 나는 통화.

무엇이 입증되었고, 무엇이 아직인지

README는 진짜 네트워크와 진짜 stagenet 위에서 실제로 끝까지 돌아간 것들을 장부처럼 적어 둡니다 — 그리고 빈 곳도 묻어 두지 않고 그대로 밝힙니다.

끝에서 끝까지 실제로 보여 줌
  • 배차까지 마친 완전한 이동 두 건 휴대폰↔데스크톱 — 지오셀 호출부터 체인 위 정산까지, 팁과 영수증 포함 — 그리고 보증금을 건 이동은 이제 휴대폰 두 대만으로도 끝까지 달렸습니다
  • 에스크로 전 과정 — 휴대폰 두 대와 책상 위 중재인이 각각 독립적으로 2-of-3 주소를 도출; 입금 → 해제 → 기사에게 지급
  • 예약 한 건 — 주인과 손님이 각자 보증금을 넣고, 모인 금액을 손님 본인의 스캔으로 확인, 나눔을 제안하고 서명해 양쪽 모두 온전히; 도중에 Monero 노드가 시간 초과되었을 때도 새로 시작하지 않고 그 에스크로를 이어서 마쳤습니다
  • 술집 외상을 휴대폰에서 데스크톱으로, 청구서부터 영수증까지; 열 가지 공격을 거부
  • 아무것도 남기지 않고 지운 휴대폰을 설정부터 걸어 보았습니다. 첫 카드, 첫 결제, 처음부터 끝까지 결제된 키오스크 판매 — 그러고 나서 다시 지우고 자기 자신의 백업에서 되살렸습니다
  • 모든 에스크로 경로를 하루 만에 화면으로 — 장터 판매, 휴대폰 사이를 건너다니는 실시간 위치와 함께한 길거리 호출, 장비 대여, 그리고 첫 실행에서 진짜 경쟁 조건을 드러내고 그 자리에서 고친 도움 일감
  • 신뢰 계층을 논증이 아니라 직접 걸어서 — 소각을 증명하고 낯선 사람 자신의 노드로 12초 만에 확인했고, 평가가 담긴 영수증은 올바르게 0으로 저울질되었고, 데스크톱 네 대가 「내 연락처 중 2명이 아는 사람」이라는 결론에 이르렀으며, 이름 없는 호출 카드는 뒤이어 공유된 정보로 이름을 얻었습니다
적어 둠, 묻어 두지 않음
  • 프로젝트 바깥의 누군가가 한 검토는 아직 없음 — 그것이 왜 중요한지는 §2.5가 말합니다. 내부에서 다섯 개의 공격면을 훑어 마흔 몇 가지를 찾아 대부분 고쳤지만, 그것은 한 단계 아래의 일입니다
  • core/를 한 번도 읽지 않은 구현자가 아직 없음
  • NFC는 컴파일 단계에서만 확인했고, 두 휴대폰 사이에서 현장 시험을 한 적이 없으며 — 그 접촉을 실기기에서 측정한 적도 없습니다
  • 지연 수치는 배터리로 도는 휴대폰이 아니라, 노드를 직접 연결한 데스크톱에서 측정
  • 무전기 둘, 배터리 둘, 서로 독립된 시계 둘 — 현장에서 보내는 하루는 아직 빚으로 남아 있음
  • 데스크톱에는 두 번째 요소가 없음 — 기기 잠금도, 자기만의 비밀도 없어서 휴대폰이 돈이 나가기 전에 두는 그 관문은 거기서 돌아갈 수 없습니다
!

프리알파. Stagenet. 실제 돈을 위한 것이 아닙니다.

모든 빌드는 디버그 서명되어 있고 Monero의 stagenet에서 정산합니다 — 설계상 가치가 없는 코인입니다. 명세는 초안 1.1.0-dev13이며 스스로에 대해 이렇게 말합니다. 여기 최종인 것은 아무것도 없고, §14야말로 진짜 과제라고. 써 보고, 부숴 보고, 읽어 보십시오 — 다만 돈을 넣지는 마십시오.

명세가 곧 제품입니다.
나머지 전부는 그것을 정직하게 지킵니다.

ducat-protocol.md가 일차 산출물입니다 — 다섯 부분, 맨 앞의 변경 기록, 그리고 두 번째 구현이 돌리는 적합성 모음. 문서가 코드에서 소리 없이 멀어지지 못하게 하기 위해서입니다.

★ ducat-protocol.md   명세 — 초안 1.1.0-dev13, 변경 기록이 맨 앞
  core/               참조 구현 (Rust)
  vectors/            406건의 적합성 사례 + 스키마
  conformance/        네 가지 검사, push 때마다 실행
  harness/            실제 Veilid 경로 위에서 끝에서 끝까지
  sim/                오프라인 시뮬레이터, 시장 시나리오
  applications/       android/ + desktop/ (같은 소스)
  mobile/             Rust 다리: 지갑 · 우편함 · 노드
  research/           제품이 아니라 증거

네 가지 검사, push 때마다

  • 모든 벡터를 schema.json에 비추어 검증
  • 두 번째 구현이 406건 전부를 돌리며 결과가 일치해야 합니다
  • 문서를 코드에 비추어 감사 — 이렇게 해서 세 번이나 참조되면서 한 번도 쓰이지 않은 규범 절, 레지스트리가 선언하지 않은 값 범위, 그리고 문서가 한 번도 이름 붙이지 않은 여섯 가지 벡터 종류를 잡아냈습니다
  • 가져다 쓴 것 가운데 선언되지 않은 것은 없습니다

책임은 바람이 아니라 규범입니다. §18.7은 Veilid의 윤리를 적합성 요건으로 만듭니다 — 프로토콜 수수료 없음, 노드에 대한 지급 없음, 영원히. 이 코드로 무엇을 만들든 좋지만, 운반으로 돈을 버는 클라이언트는 DUCAT이 아닙니다.

휴대폰에 넣기,
또는 책상 위에

먼저 설치할 것은 없습니다 — 빌드마다 자체 Rust 라이브러리와 JVM을 품고 있습니다. 휴대폰에서는 Android, 그리고 Linux·Windows·macOS에서는 같은 응용 프로그램이 네이티브 창으로 섭니다. iOS 빌드는 없습니다; 그럴 자격을 갖추면 그때 폴더를 하나 얻게 됩니다.

🤖 Android

휴대폰 브라우저로, 가장 최신 빌드를. 릴리스 목록을 헤맬 필요가 없습니다. armeabi-v7a는 대략 2016년보다 오래된 기기 전용이고, x86_64는 에뮬레이터용입니다.

🐧 Linux

.deb와 .rpm은 패키지로 설치되고, AppImage는 그냥 실행됩니다.

🪟 Windows

서명 없음 — 처음 열 때 Windows가 경고를 띄웁니다.

🍎 macOS

Apple Silicon과 Intel 빌드. 서명이 없어 처음 열 때 macOS가 경고를 띄웁니다.

디버그 서명, stagenet 전용 — 실제 돈을 위한 것이 아닙니다.