Аккаунты
Аккаунты представляют собой многоуровневую структуру, которая связывает пользователей платформы с блокчейном. Каждый аккаунт содержит информацию о пользователе в различных контекстах: как пользователя блокчейна и участника кооперативной экономики, как пользователя системы ЦК, и как потенциального или действующего пайщика кооператива.
Данный раздел, в основном, презначен для разработчиков, однако получить общее представление о структуре аккаунта будет полезно каждому.
Структура аккаунта¶
Аккаунт в ЦК состоит из нескольких компонентов:
- 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 {
}