3. Общая готовность фреймворка Plutus.
В то время библиотека была абсолютно новой и экспериментальной, и сеть Cardano не поддерживала смарт-контакты. Специально созданный язык разработки смарт-контрактов и платформа их исполнения Plutus разрабатывались одновременно с нашим приложением для торговой площадки, поэтому постоянно что-то не работало.
Впрочем, к этому мы были готовы, и старались не отставать от обновлений Plutus и предоставлять обратную связь инженерам IOG. В специальном сообществе в Discord мы постоянно общались с разработчиками Plutus и другими участниками программы тестирования контрактов, обсуждая способы исправления возникших ошибок. Основная внутренняя команда также IOG постоянно нас поддерживала.
4. Существующее ограничение на размер транзакции.
Максимальный размер транзакции в Cardano — 16 КB. Лимиты также установлены на количество шагов вычисления (CPU) и оперативной памяти (RAM), потребляемых скриптом.
Наши сценарии оказались слишком большими, чтобы их можно было выполнять в сети. Позже стало ясно, что это связано с использованием абстракции конечного автомата из фреймворка Plutus. Абстракция обходится очень дорого, потому что добавляет много кода и увеличивает размер скрипта.
В итоге нам пришлось переписать всю реализацию, чтобы исправить проблему ограничения размера, исключив использование конечного автомата.
5. Отсутствие поддержки удалённых (браузерных) кошельков в PAB.
Для того, чтобы пользователь мог купить NFT, он должен зайти в свой браузерный кошелёк через браузерный интерфейс, ввести пароль и сабмитить транзакции (тем, кто знаком с MetaMask, известна эта схема).
Но оказалось что Plutus App Framework не поддерживает интеграцию PAB с удалённым (браузерным) кошельком. Это была самая большая проблема, которая, к сожалению, стала известна лишь в процессе работы. Реальное решение тогда было невозможно найти.
Правда, сдались мы не сразу и подготовили альтернативный сценарий запуска приложения через Cardano Wallet Backend. Сценарий развёртывания, подготовленный нами к тестированию, заключался в локальном развертывании PAB вместе с Cardano-кошельком, chain-index и приложениями Cardano-node. Таким образом, у пользователя dApp все приложения работают на его компьютере, и он использует локальный кошелёк с полным узлом. Со своей стороны мы, как провайдер, обязались хранить все его данные и совершать действия от его имени.
Этот сценарий нарушал политику конфиденциальности и казался непривлекательным для юзера, которому пришлось бы предоставить нам мастер-ключ от своего кошелька. В итоге, мы так и не смогли реализовать сценарий и запустить проект в тестнет.
На момент написания статьи (сентябрь 2022) PAB в режиме браузерного кошелька всё ещё находится в разработке. Работа с браузерными кошельками необходима для любого DeFi приложения. Необходимо дополнительно исследовать временные решения, с помощью которых можно запустить приложение для широкого круга пользователей.