Классы SDK
MONO SDK предоставляет набор вспомогательных классов для работы с различными аспектами системы. Все классы доступны через пространство имён Classes в SDK клиенте.
import { Classes } from '@coopenomics/sdk'
Account¶
Класс 🛠️ Account предназначен для генерации новых аккаунтов с уникальными именами и криптографическими ключами.
⚠️ Описание для Classes.Account не найдено
Основные методы¶
constructor()- создаёт новый экземпляр аккаунтаgenerateUsername()- генерирует случайное имя аккаунта (12 символов)generateKeys()- создаёт пару ключей (приватный/публичный)
Пример использования¶
import { Classes } from '@coopenomics/sdk'
// Создание нового аккаунта
const newAccount = new Classes.Account()
console.log(newAccount.username) // "abcdxyzuvwrs"
console.log(newAccount.private_key) // "5JxyzABC1234567890defGHIJKLMNopqRSTUV"
console.log(newAccount.public_key) // "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5SozEZ8i8jUBS6yX79y6"
Canvas¶
Класс 🛠️ Canvas обеспечивает создание интерактивного холста для сбора собственноручной подписи пайщика в формате, совместимом с требованиями MONO.
⚠️ Описание для Classes.Canvas не найдено
Основные методы¶
constructor(container, options)- создаёт холст в указанном контейнереclearCanvas()- очищает содержимое холстаgetSignature()- извлекает подпись в формате base64destroy()- освобождает ресурсы и удаляет обработчики событий
Пример использования¶
import { Classes } from '@coopenomics/sdk'
// Получаем контейнер для размещения холста
const container = document.getElementById('signature-container') as HTMLElement
// Создаём экземпляр Canvas для работы с подписью
const signatureCanvas = new Classes.Canvas(container, {
lineWidth: 5,
strokeStyle: '#000'
})
// Пользователь рисует подпись...
// Извлечение подписи в формате base64
const signature = signatureCanvas.getSignature()
console.log('Подпись в формате base64:', signature)
// Очистка холста при необходимости
signatureCanvas.clearCanvas()
// Освобождение ресурсов
signatureCanvas.destroy()
Document¶
Класс 🛠️ Document предоставляет инструменты для цифрового подписания документов с использованием WIF-ключей и проверки подписей.
⚠️ Описание для Classes.Document не найдено
Основные методы¶
constructor(wifKey?)- инициализация с опциональным WIF-ключомsetWif(wifKey)- установка/замена WIF-ключаsignDocument(document, account, signatureId, existingSignedDocuments?)- подписание документаstatic validateDocument(document)- валидация подписанного документаstatic finalize(document)- финализация документа для отправки в блокчейнstatic parse(document)- парсинг документа из блокчейна
Пример использования¶
import { Classes } from '@coopenomics/sdk'
const wifKey = "your-wif-private-key"
const docSigner = new Classes.Document(wifKey)
const generatedDoc = {
full_title: "Пример документа",
html: "<p>Это пример документа</p>",
hash: "hash_of_document",
meta: { author: "Автор документа" },
binary: "binary_data"
}
// Подписание документа
const signedDoc = await docSigner.signDocument(generatedDoc, "username", 1)
// Проверка валидности подписанного документа
const isValid = Classes.Document.validateDocument(signedDoc)
console.log('Документ валиден:', isValid)
Blockchain¶
Класс 🛠️ Blockchain обеспечивает взаимодействие с блокчейном COOPOS, включая выполнение транзакций и работу с таблицами смарт-контрактов.
⚠️ Описание для Classes.Blockchain не найдено
Основные методы¶
constructor(config)- инициализация с конфигурацией блокчейнаsetWif(username, wif, permission?)- установка приватного ключа для транзакцийgetInfo()- получение информации о блокчейнеtransact(actions, broadcast?)- выполнение транзакцийgetAllRows(code, scope, tableName)- получение всех строк таблицыquery(code, scope, tableName, options)- запрос строк с фильтрациейgetRow(code, scope, tableName, primaryKey, indexPosition?)- получение одной строки
Пример использования¶
import { Classes } from '@coopenomics/sdk'
const blockchain = new Classes.Blockchain({
chain_url: "https://api.coopenomics.world",
chain_id: "6e37f9ac0f0ea717bfdbf57d1dd5d7f0e2d773227d9659a63bbf86eec0326c1b"
})
// Установка ключа для подписания транзакций
blockchain.setWif("username", "your-wif-key")
// Получение информации о блокчейне
const info = await blockchain.getInfo()
console.log('Блокчейн инфо:', info)
// Выполнение транзакции
const result = await blockchain.transact({
account: 'eosio.token',
name: 'transfer',
data: {
from: 'sender',
to: 'receiver',
quantity: '1.0000 EOS',
memo: 'Перевод'
}
})
// Получение данных из таблицы
const accounts = await blockchain.getAllRows('eosio.token', 'EOS', 'accounts')
console.log('Аккаунты:', accounts)
Crypto¶
Класс 🛠️ Crypto предоставляет криптографические функции, работающие как в браузере, так и в Node.js окружении.
⚠️ Описание для Classes.Crypto не найдено
Основные методы¶
static sha256(data)- получение SHA-256 хэша от строки или числа
Пример использования¶
import { Classes } from '@coopenomics/sdk'
// Получение хэша строки
const hash1 = await Classes.Crypto.sha256("Hello World")
console.log('Хэш строки:', hash1)
// Получение хэша числа
const hash2 = await Classes.Crypto.sha256(12345)
console.log('Хэш числа:', hash2)
// Работает в браузере и Node.js
Vote¶
Класс 🛠️ Vote предназначен для создания и проверки цифровых подписей при голосовании членов совета кооператива.
⚠️ Описание для Classes.Vote не найдено
Основные методы¶
constructor(wifKey?)- инициализация с опциональным WIF-ключомsetWif(wifKey)- установка/замена WIF-ключаvoteFor(coopname, username, decision_id)- создание подписи для голоса "ЗА"voteAgainst(coopname, username, decision_id)- создание подписи для голоса "ПРОТИВ"static validateVote(data)- валидация подписи голосаstatic validateVoteWithHashCheck(data)- расширенная валидация с проверкой хэша
Пример использования¶
import { Classes } from '@coopenomics/sdk'
const wifKey = "your-wif-private-key"
const voteSigner = new Classes.Vote(wifKey)
// Голосование за решение
const voteForData = await voteSigner.voteFor("coop1", "member1", 123)
console.log('Голос ЗА:', voteForData)
// Голосование против решения
const voteAgainstData = await voteSigner.voteAgainst("coop1", "member1", 124)
console.log('Голос ПРОТИВ:', voteAgainstData)
// Проверка валидности голоса
const isValid = Classes.Vote.validateVote(voteForData)
console.log('Голос валиден:', isValid)
// Расширенная проверка с валидацией хэша
const isValidWithHash = await Classes.Vote.validateVoteWithHashCheck(voteForData)
console.log('Голос валиден (с проверкой хэша):', isValidWithHash)
Использование в SDK клиенте¶
Все классы также доступны через экземпляр SDK клиента:
import { Client } from '@coopenomics/sdk'
const client = Client.create({
api_url: "http://127.0.0.1:2998/v1/graphql",
chain_url: "https://api.coopenomics.world",
chain_id: "6e37f9ac0f0ea717bfdbf57d1dd5d7f0e2d773227d9659a63bbf86eec0326c1b"
})
// Доступ к классам через клиент
const newAccount = new client.Classes.Account()
const signature = client.Classes.Canvas(container)
const docSigner = client.Classes.Document(wifKey)