DEV Community

EgorMajj
EgorMajj

Posted on

Создаем на Flow | Изучаем FCL — 7. Как запросить учетную запись Flow по адресу

Краткий обзор

В предыдущем посте мы рассказали о том, как собирать информацию о блоках в сети. Сегодня мы рассмотрим, как можно запросить информацию о конкретном аккаунте с помощью функции account.

Два наиболее распространенных варианта использования, которые вы будете изучать сегодня, это:

  • получить текущий баланс аккаунта FLOW
  • получить список контрактов, развернутых на аккаунте

Шаг 1 - Установка

Добавьте "@onflow/fcl": "1.0.0" в качестве зависимости

Шаг 2 - Настройка

Как и в прошлый раз импортируем необходимые методы и настраиваем FCL:

// Import methods from FCL
import { account, query, config } from "@onflow/fcl";

// Specify the API endpoint - this time we will use Mainnet
const api = "https://rest-mainnet.onflow.org";

// Configure FCL to use mainnet as the access node
config().put("accessNode.api", api);
Enter fullscreen mode Exit fullscreen mode

Шаг 3 - Копирование Resolver

Всегда приятно применять ранее приобретенные знания и практику. Поэтому давайте вернем функцию resolver из урока 4, чтобы использовать ее в нашем примере:

const resolveName = async (name) => {
    const cadence = `
    import FIND from 0x097bafa4e0b48eef

    pub fun main(name: String): Address?{
      return FIND.lookupAddress(name)
    }
  `;

  const args = (arg, t) => [arg(name, t.String)];
  return await query({ cadence, args });
};
Enter fullscreen mode Exit fullscreen mode

Шаг 4 - Поиск учетной записи

Давайте попробуем преобразовать identity name flovatar и изучим, что оно нам предлагает 😊.

Как всегда, мы будем использовать наш блок IIFE:

// We will use IIFE to execute our code right away
(async () => {
  console.clear();

  const address = await resolveName("flovatar")

    // it's possible that name will be resolved to "null"
  // so let's add some basic protection here 
    if (address){
    const accountInfo = await account(address);
    console.log({ accountInfo });
    }
})();
Enter fullscreen mode Exit fullscreen mode

После того как все разрешилось, вы должны увидеть в консоли следующее:

{
    address: "921ea449dffec68a",
    balance: 13052726819120,
    code: "",
    contracts: Object,
    keys: Array(2),
}
Enter fullscreen mode Exit fullscreen mode

Эти 5 строк соответственно:

  • address - адрес аккаунта (обратите внимание на отсутствие префикса 0x, если вы захотите использовать его в будущем)
  • balance - количество токенов FLOW в формате UFix64. Разделите на Math.pow(10,8), чтобы получить фиксированное значение
  • code - это устаревшее значение, которое ранее использовалось для хранения кода контракта, развернутого на аккаунте. Раньше можно было хранить только один контракт для каждого аккаунта.
  • contracts - объект, представляющий развернутые контракты. Ключи - это название контракта, а значения - Cadence-код уважаемого контракта.
  • keys - набор ключей, привязанных к аккаунту

Более подробную информацию о них вы можете найти на сайте Flow Docs - https://docs.onflow.org/fcl/reference/api/#blockobject.

Другие способы изучения аккаунта

Существуют способы изучения конкретного аккаунта:

До следующего раза 👋

Информационные ресурсы

Discussion (0)