Идеи проектов
В ZooBC нет виртуальной машины, поэтому никто не развёртывает в нём контракты. Вместо этого он предлагает большой набор готовых типов транзакций, и хороший проект их сочетает: цепочка — это арбитр и реестр, а приложение — его лицо, часто одна веб-страница (приложение на одной HTML-странице). Каждая идея ниже использует только типы транзакций, которые узел уже исполняет, и к каждой прилагается подвох, о котором стоит знать разработчику.
Платежи
Оплата рекой
LiquidPayment (тип 6) блокирует сумму в ZBC или токене, которая равномерно начисляется получателю в течение выбранных complete_minutes; в конце вся сумма выплачивается автоматически. LiquidPaymentStop (тип 262), отправленная любой из сторон, выплачивает долю, начисленную к этому моменту, а остальное возвращает. Странице остаётся только рисовать уровень воды. Полезно знать: раздел следует времени между метками времени двух транзакций, а доля получателя округляется вверх: 10 000 000 единиц на 3 минуты, остановленные через 66 секунд, дают получателю 3 666 667 единиц, а 6 333 333 возвращаются (ликвидные платежи (потоки)).
Залог за ущерб
Арендатор отправляет залог транзакцией SendZBC через эскроу, называя утверждающего, вознаграждение и срок (эскроу). Утверждающий может утвердить — и сумма уйдёт арендодателю — или отклонить — и она вернётся арендатору; вознаграждение утверждающий получает в любом случае. Если никто не действует, первый блок после срока возвращает арендатору сумму и вознаграждение. Подвох: аренда эскроу платится при создании и никогда не возвращается, а срок за пределами досягаемости обрезки истории отклоняется, если только депозит survival транзакции не оплачивает её хранение на такой срок.
Семейный аккаунт
LinkAccount (55), SetMemberPermissions (57), UnlinkAccount (56) и TransferGroupControl (58) дают семье один баланс, за которым стоят до 100 адресов (группы аккаунтов). Подвох: для вступления нужно согласие вступающего адреса, и оно переносит в группу всё, чем он владеет; новый участник может только принимать, пока контролёр не выдаст ему права; а участник, который уходит, ничего с собой не забирает.
Игры
Аркада костей
CreateApp с типами от 16 до 19 (две кости, подбрасывание монеты, рулетка и слоты) играет против пула приложений. Страница показывает результат примерно через 30 секунд и может читать /api/v1/apps/pool, чтобы показать наибольшую ставку, которую допускает каждая игра. Подвох: ставка, наибольшая выплата которой превышает 5 % пула, отклоняется, а очень крупный выигрыш может выплачиваться в течение нескольких блоков (одиночные ставки).
Киоск крестиков-ноликов
Тип 1 с CreateApp, JoinApp, AppMove и ClaimAppTimeout (многопользовательские приложения). Подвох: каждый ход — транзакция со своей комиссией и ожиданием блока; игрок, который ушёл, удерживает игру 240 блоков, прежде чем другой сможет её потребовать; а аккаунты с ключами в стиле Ethereum или Bitcoin занять место не могут.
Молниеносная дуэль
Игра-канал на двоих, урегулированная транзакцией SettleApp (приложения-каналы): ходы летают между игроками в виде подписанных ваучеров, а цепочка видит только ставки и урегулирование. Подвох: ваше приложение должно передавать ходы между игроками (официальный кошелёк использует ретранслятор), сохранять каждый полученный подписанный ход и следить за окном оспаривания в 240 блоков.
Токены и торговля
Кофейные штампы
IssueToken (тип 10) создаёт токен-штамп с 0 знаков после запятой, так что он перемещается целыми единицами; TransferToken (11) вручает штамп клиенту; BurnToken (13) расходует штампы у стойки (выпуск токена). Подвох: BurnToken работает только с токеном, выпущенным как погашаемый, и сжечь единицу может только её держатель; а токен живёт, лишь пока оплачивается его содержание (содержание токена (продление)).
Киоск обмена
CreateSwapOffer (18), AcceptSwapOffer (19) и CancelSwapOffer (20) создают доску атомарных обменов между любыми двумя активами (предложения обмена). Подвох: один тейкер платит всю запрашиваемую сторону, без частичного исполнения, а истечение срока предложения лишь блокирует его принятие, поэтому предложение с истёкшим сроком остаётся заблокированным, пока мейкер его не отменит.
Записи и сообщения
Штамп хеша
Транзакция, сообщение которой несёт SHA-256 файла, показывает, что файл существовал, когда был создан этот блок, а FundLongevity (52) или поле survival сохраняет её после обрезки истории (плата за сохранение данных (долговечность)). Страница /verify шлюза вычисляет хеш в браузере и ищет его в цепочке (проверка загруженного файла). Подвох: без депозита долговечности обычные узлы обрезают штамп через 30–60 дней, а первая FundLongevity должна поступить в пределах одного интервала снимков, около 30 дней.
Запечатанные открытки
Зашифрованное сообщение с пометкой «ZBE1», запечатанное ключом получателя, может нести до 268 байт текста (подписанные и зашифрованные сообщения). Подвох: запечатан только текст; сама транзакция — с отправителем, получателем и временем — так же публична, как любая другая.
Вход через ZooBC
Сайт показывает одноразовый вызов, пользователь подписывает его как сообщение ZBC-MSG-v2 с помощью публичных инструментов — подписью Ed25519 над SHA3-256("ZBC-MSG-v2" ‖ хеш генезиса ‖ сообщение), — а сайт проверяет подпись по ключу аккаунта. Подвох: подписание сообщений не входит в консенсус, и у узлов нет для него маршрута, поэтому сайт проверяет подпись сам; а официальный веб-кошелёк сообщения не подписывает.
Что требует изменения узла
- Автоматический маркетмейкер. В ZooBC нет пулов AMM — так решено; его биржа — это книга ордеров плюс предложения обмена (рынки и ордера).
- Solidity или любой контракт EVM. Виртуальной машины нет.
- Новая игра, например покер. Правила игр нельзя загрузить в виде скриптов; новой игре нужны новые правила в узле.
- Краш с кнопкой вывода выигрыша. Краш — одиночная ставка, цель которой фиксируется заранее; хода, позволяющего забрать выигрыш, нет.