Обработка платежей
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
На этой странице объясняется, как обрабатывать (отправлять и принимать) цифровые активы
в блокчейне TON. В основном она описывает, как работать с TON coins
, но теоретическая часть важна, даже если вы хотите обрабатывать только жетоны
.
Рекомендуется ознакомиться с Обзором обработки активов перед прочтением этого руководства.
Смарт-контракт кошелька
Смарт-контракты кошелька в сети TON позволяют внешним акторам взаимодействовать с сущностями блокчейна.
- Аутентифицирует владельца: отклоняет запросы, которые пытаются обработать или оплатить комиссии от имени лиц, не являющихся владельцами.
- Обеспечивает защиту от повторного использования: предотвращает повторное выполнение одного и того же запроса, например отправку активов в другой смарт-контракт.
- Инициирует произвольные взаимодействия с другими смарт-контрактами.
Стандартное решение для первой проблемы — криптография с открытым ключом: wallet
хранит открытый ключ и проверяет, что входящее сообщение с запросом подписано соответствующим закрытым ключом, который известен только владельцу.
Решение третьей проблемы также распространено; Как правило, запрос содержит полностью сформированное внутреннее сообщение, которое wallet
отправляет в сеть. Однако для защиты от повторного использования существует несколько различных подходов.
Кошельки на основе Seqno
Кошельки на основе Seqno используют простейший подход к упорядочиванию сообщений. Каждое сообщение имеет специальное целое число seqno
, которое должно совпадать со счетчиком, хранящимся в смарт-контракте wallet
. wallet
обновляет свой счетчик при каждом запросе, тем самым гарантируя, что один запрос не будет обработан дважды. Существует несколько версий wallet
, которые отличаются открытыми методами: возможностью ограничивать запросы по времени истечения срока действия и возможностью иметь несколько кошельков с одним и тем же открыты м ключом. Однако неотъемлемым требованием этого подхода является отправка запросов по одному, поскольку любой пропуск в последовательности seqno
приведет к невозможности обработки всех последующих запросов.
Высоконагруженные кошельки
Этот тип wallet
следует подходу, основанному на хранении идентификатора непросроченных обработанных запросов в хранилище смарт-контракта. При этом подходе любой запрос проверяется на предмет дубликата уже обработанного запроса и, если обнаруживается повтор, отклоняется. Из-за истечения срока действия контракт может не хранить все запросы вечно, но он удалит те, которые не могут быть обработаны из-за ограничения срока действия. Запросы в этот wallet
можно отправлять параллельно без помех, но этот подход требует более сложного отслеживания обработки запросов.