Перейти к содержанию

Аккаунты

Аккаунты представляют собой многоуровневую структуру, которая связывает пользователей платформы с блокчейном. Каждый аккаунт содержит информацию о пользователе в различных контекстах: как пользователя блокчейна и участника кооперативной экономики, как пользователя системы ЦК, и как потенциального или действующего пайщика кооператива.

Данный раздел, в основном, презначен для разработчиков, однако получить общее представление о структуре аккаунта будет полезно каждому.

Структура аккаунта

Аккаунт в ЦК состоит из нескольких компонентов:

  • Blockchain Account — запись в области оперативной памяти блокчейна, которая отвечает за хранение публичного ключа доступа и прочей низкоуровневой, инфраструктурной информации о владельце;
  • Provider Account — общая информация об аккаунте в системе федерации Цифрового Кооператива, такая как электронная почта, статус в процессе регистрации, и так далее;
  • User Account — базовая информация об участнике кооперативной экономики, включает в себя состояние верификации;
  • Participant Account — информация о статусе пайщика в кооперативе, которая относится к конкретному кооперативу, т.к. технически один аккаунт может быть пайщиков одновременно в нескольких кооперативах;
  • Private Account — персональные данные пайщика (ФИО, ИНН, и так далее)

Компоненты аккаунта разделены по структурам потому как хранятся в разных местах. BlockchainAccount, принадлежит уровню блокчейн-протокола, providerAccount и privateAccount хранятся в системе ЦК кооператива, userAccount хранится в области памяти смарт-контракта registrator и принадлежит к кооперативной экономике, а participantAccount хранится в области памяти смарт-контракта soviet и принадлежит к конкретному кооперативу.

Что такое смарт-контракты и как они работают мы рассмотрим в отдельном разделе, а здесь мы лишь предоставим разработчикам минимально-достаточную информацию о методах работы с аккаунтами и о их структурах.

Система поддерживает три типа аккаунтов:

  • individual — физическое лицо
  • entrepreneur — индивидуальный предприниматель
  • organization — юридическое лицо

Каждый тип имеет специфичные поля данных, которые хранятся и используются в фабрике документов. Процесс регистрации аккаунта, как часть потока вступления в пайщики см. в разделе Регистрация пайщика.

Получить информацию об аккаунте

🛠️ SDK: Queries.Accounts.GetAccount | 🔗 GraphQL API: Query.getAccount

import { Queries } from '@coopenomics/sdk';

const variables: Queries.Accounts.GetAccount.IInput = {
  data: {
    username: <string>; // Имя аккаунта пользователя
  };
};

const { [Queries.Accounts.GetAccount.name]: result } = await client.Query(
  Queries.Accounts.GetAccount.query,
  { variables }
);
Результат
interface IOutput {
}

Получить список аккаунтов

🛠️ SDK: Queries.Accounts.GetAccounts | 🔗 GraphQL API: Query.getAccounts

import { Queries } from '@coopenomics/sdk';

const variables: Queries.Accounts.GetAccounts.IInput = {
  data?: {
    role?: <string | null>;
  };
  options?: {
    limit: <number>; // Количество элементов на странице
    page: <number>; // Номер страницы
    sortBy?: <string | null>; // Ключ сортировки (например, "name")
    sortOrder: <string>; // Направление сортировки ("ASC" или "DESC")
  };
};

const { [Queries.Accounts.GetAccounts.name]: result } = await client.Query(
  Queries.Accounts.GetAccounts.query,
  { variables }
);
Результат
interface IOutput {
}

Поиск по приватным данным

🛠️ SDK: Queries.Accounts.SearchPrivateAccounts | 🔗 GraphQL API: Query.searchPrivateAccounts

Поиск осуществляется по полям ФИО, ИНН, ОГРН, наименованию организации и другим приватным данным.

import { Queries } from '@coopenomics/sdk';

const variables: Queries.Accounts.SearchPrivateAccounts.IInput = {
  data: {
    query: <string>; // Поисковый запрос для поиска приватных аккаунтов
  };
};

const { [Queries.Accounts.SearchPrivateAccounts.name]: result } = await client.Query(
  Queries.Accounts.SearchPrivateAccounts.query,
  { variables }
);
Результат
interface IOutput {
}