Подключение
Для работы с MONO вам необходимо обладать ключом доступа к аккаунту кооператива, который заключил соглашение с оператором платформы на подключение к "Кооперативной Экономике".
Получить ключ доступа можно пройдя регистрацию на testnet.coopenomics.world в качестве потребительского кооператива. Перейдите на сайт testnet.coopenomics.world и пройдите регистрацию, используя произвольные данные.
После прохождения регистрации, на этапе оплаты, дождитесь подтверждения от оператора о приёме вашего кооператива в качестве пайщика. После этого, вы попадете в личный кабинет оператора, и увидите кнопку "Подключить Кооператив".
Нажмите на кнопку "Подключить Кооператив", прочитайте соглашение и примите его своей цифровой подписью. После вашей подписи соглашения на подключение, оператору платформы необходимо подтвердить ваше подключение. Для ускорения процесса подтверждения напишите на почту: coopenomics@yandex.ru.
После получения подтверждения вы можете использовать полученный приватный ключ кооператива для инициализации вашего MONO-приложения следуя инструкциям ниже.
Инициализация¶
Для начала работы вашему приложению 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 для функционирования необходим приватный активный ключ от аккаунта кооператива, которым сможет выполнять основные операции в блокчейне. Чтобы предоставить ключ бэкенду 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,
}
);
Всем указанным физическим лицам будут зарегистрированы имена аккаунтов в блокчейне, а MONO сохранит данные физических лиц в своей базе и отправит приглашения для членов совета на указанные электронные почтовые адреса.
При регистрации аккаунтов в блокчейне с аккаунта кооператива списываются AXON. Поэтому, убедитесь, что у вас есть AXON в достаточном количестве. Стоимость регистрации одного аккаунта ~1 AXON, или ~10 рублей.
Выпуск ключей¶
После того, как все члены совета будут добавлены методом 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, пайщик может воспользоваться входом.