Первый старт
После установки программного обеспечения MONO
его необходимо инициализировать, предоставим информацию о кооперативе, который будет обслуживаться системой. Для инициализации потребуется приватный ключ доступа, который выдаётся оператором платформы Кооперативной Экономики. Для получения ключа перейдите в раздел Подключение и действуйте по инструкциям.
В целях тестирования
В целях тестирования вы можете воспользоваться тестовым (общедоступным) кооперативом по адресу https://testnet.coopenomics.world, воспользовавшись электронной почтой: chairman.voskhod@gmail.com
и ключом 5Hs46kBWGMKnsqntqLCinp6QSCuuWkc39DLMzaNaUjv3TFLif2U
для входа. Также, эти данные могут использоваться для подключения SDK к GraphQL-API по адресу https://testnet.coopenomics.world/backend/v1/graphql
Инициализация¶
Для начала работы вашему приложению MONO
необходимо сообщить информацию о том кооперативе, для которого он будет работать. Для этого используйте мутацию initSystem
:
🛠️ SDK: Mutations.System.InitSystem | 🔗 GraphQL API: Mutation.initSystem
Пример вызова:
import { Mutations, OrganizationType } from "@coopenomics/sdk";
const variables: Mutations.System.InitSystem.IInput = {
data: {
organization_data: {
bank_account: {
account_number: "40703810338000220228",
bank_name: "АО Альфа-Банк",
currency: "RUB",
details: {
bik: "044525593",
corr: "30101810200000000593",
kpp: "770801001"
}
},
city: "Санкт-Петербург",
country: "Russia",
details: {
inn: "7826012345",
kpp: "782601001",
ogrn: "1234567890123"
},
fact_address: "190000, г. Санкт-Петербург, ул. Ленина, д. 5, офис 12",
full_address: "190000, г. Санкт-Петербург, ул. Ленина, д. 5, офис 12",
full_name: 'Потребительский Кооператив "Ромашка"',
phone: "+78121234567",
represented_by: {
based_on: "Решение общего собрания №2",
first_name: "Иван",
last_name: "Петров",
middle_name: "Сергеевич",
position: "Председатель"
},
short_name: "ПК Ромашка",
type: OrganizationType.COOP
},
vars: {
confidential_email: "privacy@romashka-coop.ru",
confidential_link: "romashka-coop.ru/privacy",
contact_email: "contact@romashka-coop.ru",
coopname: "romashka",
full_abbr: "потребительский кооператив",
full_abbr_dative: "потребительскому кооперативу",
full_abbr_genitive: "потребительского кооператива",
name: "Ромашка",
participant_application: {
protocol_day_month_year: "15 мая 2024 г.",
protocol_number: "15-05-2024"
},
passport_request: "yes",
privacy_agreement: {
protocol_day_month_year: "15 мая 2024 г.",
protocol_number: "15-05-2024"
},
short_abbr: "ПК",
signature_agreement: {
protocol_day_month_year: "15 мая 2024 г.",
protocol_number: "15-05-2024"
},
user_agreement: {
protocol_day_month_year: "15 мая 2024 г.",
protocol_number: "15-05-2024"
},
wallet_agreement: {
protocol_day_month_year: "15 мая 2024 г.",
protocol_number: "15-05-2024"
},
website: "ромашка-кооп.рф"
}
}
};
// вызываем метод SDK для инициализации и передаём объект с переменными
const { [Mutations.System.InitSystem.name]: result } = await client.Mutation(
Mutations.System.InitSystem.mutation, { variables }
);
В результате успешного выполнения мутации, в хранилище приватных данных кооператива будет добавлена запись об организации, пайщиками которой будут становиться пользователи.
Установка ключа¶
Бэкенд приложения MONO
хранит приватный ключ кооператива, которым он подписывает транзакции в блокчейне. Ключ хранится в зашифрованном виде в базе данных, извлекается оттуда и расшифровывается для использования только когда это необходимо. Работа системы без приватного ключа невозможна. Чтобы предоставить ключ бэкенду MONO, необходимо выполнить мутацию setWif
:
🛠️ SDK: Mutations.System.SetWif | 🔗 GraphQL API: Mutation.setWif
import { Mutations } from "@coopenomics/sdk";
const variables: Mutations.System.InstallSystem.IInput = {
data: {
permission: "active",
username: "имя_аккаунта_кооператива",
wif: "приватный_ключ"
}
}
Ключ будет зашифрован и сохранён в базе данных кооператива для дальнейшего использования системой по мере необходимости.
Установка совета¶
После успешного выполнения инициализации необходимо установить членов совета с указанием их приватных данных. Для этого используем метод installSystem:
🛠️ SDK: Mutations.System.InstallSystem | 🔗 GraphQL API: Mutation.installSystem
import { Mutations } from "@coopenomics/sdk";
// Формируем объект для добавления в систему chairman (председатель) и member (член совета)
const variables: Mutations.System.InstallSystem.IInput = {
data: {
soviet: [
{
individual_data: {
birthdate: "1980-05-15",
first_name: "Иван",
last_name: "Петров",
middle_name: "Алексеевич",
full_address: "Москва, ул. Тверская, д. 10, кв. 5",
phone: "+79161234567",
email: 'ivan-petrov@romashka.com'
},
role: "chairman"
},
{
individual_data: {
birthdate: "1992-09-23",
first_name: "Алексей",
last_name: "Смирнов",
middle_name: "Владимирович",
full_address: "Санкт-Петербург, пр. Невский, д. 45, кв. 12",
phone: "+79217654321"
email: "aleksei-smirnov@yandex.ru"
},
role: "member"
}
//... продолжить столько раз, сколько членов в совете кооператива
]
}
}
const { [Mutations.System.InstallSystem.name]: result } = await client.Mutation(
Mutations.System.InstallSystem.mutation,
{
variables,
}
);
Важно!
Один из членов совета обязательно должен обладать ролью 'chairman' (председатель).
Всем указанным физическим лицам будут зарегистрированы имена аккаунтов в блокчейне, а MONO сохранит данные физических лиц в своей базе и отправит приглашения для членов совета на указанные электронные почтовые адреса.
При регистрации аккаунтов в блокчейне с аккаунта кооператива списываются AXON. Поэтому, убедитесь, что у вас есть AXON в достаточном количестве. Стоимость регистрации одного аккаунта ~1 AXON, или ~10 рублей. Токены AXON
выдаются оператором системы при подключении и оплате членского взноса.
Выпуск ключей¶
После того, как все члены совета будут добавлены методом installSystem, каждый из них получит оповещение на электронную почту с приглашением получить приватный ключ доступа к системе своего кооператива. Срок действия ссылки для выпуска ключа - 24 часа.
Если по истечению 24 часов ссылка не будет использована, то члену совета для входа будет необходимо воспользоваться методом сброса приватного ключа к его аккаунту. Для этого в терминале ему необходимо нажать кнопку "потяряли ключ?" и следовать инструкциям (см. подробнее здесь.
Выпуск ключа осуществляется на стороне пользователя в браузерне, и для этого ему необходимо перейти по ссылке, которую он получит. После чего, отправить его публичную часть в MONO для установки в блокчейне методом resetKey.
🛠️ SDK: Mutations.System.InstallSystem | 🔗 GraphQL API: Mutation.installSystem
import { Mutations } from "@coopenomics/sdk";
const variables: Mutations.Auth.ResetKey.IInput = {
data: {
public_key: "EOS....публичный_ключ",
token: "токен,_полученный_на_email"
}
}
const { [Mutations.Auth.ResetKey.name]: result } = await client.Mutation(
Mutations.Auth.ResetKey.mutation,
{
variables,
}
);
После выпуска ключа и установки его в блокчейне методом ResetKey, пайщик может воспользоваться входом.