Как проверить регистрацию получателя перед переводом токена NEAR
У получателя может существовать аккаунт NEAR, а в контракте токена ещё нет записи для него. Для токена с поддержкой NEP-145 это проверяется view-вызовом.
Опросите нужный контракт токена
В аргументе ниже закодировано {"account_id":"alice.testnet"}. Подставьте контракт токена и заново закодируйте JSON при замене получателя. Декодируйте массив байтов результата как UTF-8 JSON.
{
"jsonrpc": "2.0",
"id": 1,
"method": "query",
"params": {
"request_type": "call_function",
"finality": "final",
"account_id": "token.testnet",
"method_name": "storage_balance_of",
"args_base64": "eyJhY2NvdW50X2lkIjoiYWxpY2UudGVzdG5ldCJ9"
}
}
Различите отсутствие записи и нулевой доступный остаток
Декодированное null означает отсутствие регистрации. Объект с положительным total и available, равным "0", описывает существующую регистрацию без доступного к выводу остатка. Одно только нулевое available не требует повторной первоначальной регистрации.
Для незарегистрированного получателя прочитайте storage_balance_bounds у того же контракта, чтобы узнать минимум перед подготовкой storage_deposit. Зафиксируйте наблюдение: другая транзакция может зарегистрировать получателя раньше.