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

egormajj

EgorMajj

Posted on July 1, 2022

Создаем на 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.

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

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

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

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

💖 💪 🙅 🚩
egormajj
EgorMajj

Posted on July 1, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

What was your win this week?
weeklyretro What was your win this week?

November 29, 2024

Where GitOps Meets ClickOps
devops Where GitOps Meets ClickOps

November 29, 2024

How to Use KitOps with MLflow
beginners How to Use KitOps with MLflow

November 29, 2024

Modern C++ for LeetCode 🧑‍💻🚀
leetcode Modern C++ for LeetCode 🧑‍💻🚀

November 29, 2024