Маркетплейс
Імена можна купувати й продавати через вбудований маркетплейс з ескроу. Усі платежі повністю екрановані.
Ескроу тут кастодіальний, і варто точно сказати, що це означає. Покупець платить на протокольну адресу реєстратора; реєстратор утримує кошти, передає ім'я і зараховує продавцеві на внутрішній баланс суму за вирахуванням сервісної комісії. Продавець виводить її коли захоче. Тобто реєстратор справді виступає ескроу-агентом — він тримає гроші однієї сторони, поки зобов'язання іншої сторони не буде виконане.
Чим це не є, так це довірчим ескроу в блокчейні. Немає смартконтракту, який випускав би кошти автоматично; зберігання в реєстратора — це найсправжнісіньке зберігання. Обмежує його те, що зобов'язання обчислюються публічно: див. Довіра та приватність — там описано інваріант балансу, який може перевірити будь-хто, і те єдине місце, де зберігання ззовні не перевіряється.
Згода продавця на продаж — це його раніше підписана команда LST, ціна з якої зафіксована в дереві
стану: команда BUY дійсна лише за рівно цією ціною, і в момент купівлі підпис продавця не
потрібен.
Продаж
Продавець підписує запит LIST у блокчейн-транзакції і формує memo з командою LIST:
PiNS:1:LST:{name}:{ed25519_pubkey}:{price}:{nonce}:{signature}
Так ім'я виставляється на Маркетплейс.
- ціна задається цілим числом сатоші й має бути більшою за нуль (1 PIVX = 100 000 000 сатоші)
- LIST можна надіслати повторно для вже виставленого імені, щоб змінити ціну; перемагає останнє оголошення
Якщо ви передумали
Продавець завжди може зняти домен з Маркетплейсу, надіславши блокчейн-транзакцію з memo, що містить команду UNLIST:
PiNS:1:ULT:{name}:{ed25519_pubkey}:{nonce}:{signature}
Так ім'я прибирається з Маркетплейсу.
Команди обробляються по черзі в порядку блокчейну PIVX. Це означає, що ваша команда UNLIST має бути отримана раніше, ніж чиясь команда BUY.
PIVX Names не керує порядком транзакцій — він цілком визначається тим, як PIVX формує блоки, і порядком індексів транзакцій усередині кожного блоку.
Купівля
Покупець надсилає транзакцію на адресу реєстратора з командою BUY у memo:
PiNS:1:BUY:{name}:{buyer_pivx_address}:{ed25519_pubkey}:{nonce}:{signature}
Сканер перевіряє:
- Ім'я має бути виставлене на продаж
- Платіж має точно збігатися з ціною оголошення
- Якщо все правильно: ім'я переходить покупцеві, а виручка за вирахуванням сервісної комісії зараховується на внутрішній баланс продавця
- Якщо ні: кошти повертаються на внутрішній баланс покупця
Якщо кілька осіб захочуть купити одне й те саме ім'я одночасно, оброблено буде лише першу транзакцію, а решті кошти повернуться на внутрішній баланс. Вивести їх можна будь-коли, просто вказавши адресу для виведення на сайті.