Cyber-Client - library for communication between CyberWay Blockchain and Golos dApp
Добавления своего ключа для формирования транзакций:
cyber.initProvider(privateKey); // Где privateKey это ваш приватный ключ
import cyber from 'cyber-client';
const key = 'MY_PRIVATE_KEY';
cyber.initProvider(key);
Работа с транзакциями:
Все транзакции сгруппированны по контрактам, общий вид вызова транзакции:
cyber.CONTRACT.METHOD({ actor }, params, options);
- CONTRACT - Имя контакта (basic, ctrl, publish, ...). Полный список можно посмотреть тут
- METHOD - Имя метода в контракте (смотреть внутри контакта)
- actor {string} - Имя аккаунта подписывающего транзакцию
- params {Object} - Объект параметров которые будут переданы один к одному в блокчейн
- options {Object} - Опции для самой библиотеки cyber-client
Список доступных опций:
- provideBandwidthFor {string} - аккаунт для которого надо предоставить bandwidth (пропускную способность БЧ).
- broadcast {boolean} (default: true) - при значении false транзакция не будет автоматически отослана в сеть. Нужно например в тех случаях когда нужно передать транзакцию в сыров виде для дальнейшей подписи другими лицами.
В дальшей документации будут описаны только структура параметров (аргумент params), так как остальные параметры везде одинаковы.
Так же в дальнейшей документации используется тип MessageId, это объект с полями:
@param {string} author - Username автора поста/комментария
@param {string} permlink - Permlink поста/комментария
@param {string} ref_block_num - Номер последнего созданного блока на момент создания транзакции
publish:
Транзакции контрактаcreatemssg - Создании поста/комментария
@param {Object} message_id
@param {string} message_id.author - Username автора поста
@param {string} message_id.permlink - Строка в урле по которой будет доступен пост, обычно генерируется из заголовка с помощью библиотек аналогичных https://www.npmjs.com/package/speakingurl
@param {Object} parent_id - Если создается комментарий, то этот объект является ссылкой на пост или родительский комментарий
@param {string} parent_id.author - Username автора поста
@param {string} parent_id.permlink - Permlink поста
@param {string} parent_id.ref_block_num - ref block number
@param {string} headermssg - Заголовок поста
@param {string} bodymssg - Заголовок поста
@param {string} languagemssg - Язык на котором написан пост в формате en, ru, fr и тд.
@param {{ tag: string }[]} tags - Массив тэгов
@param {Array} tags[]
@param {string} jsonmetadata - JSON строка с метаданными о посте
@param {string[]} beneficiaries - Список бенефициаров
@param {number} tokenprop - ???
@param {boolean} vestpayment - ???
const result = await createmssg({
message_id: {
author: 'my-account-name',
permlink: 'some-link-like-string',
},
headermssg: 'Hello world',
bodymssg: 'Lorem ipsum',
beneficiaries: [],
tokenprop: 0,
vestpayment: true,
languagemssg: 'ru',
tags: [{ tag: 'test' }],
jsonmetadata: JSON.stringify({ type: 'plain-text' }),
});
upvote - Проголосовать за пост/комментарий
@param {string} voter - Голосующий
@param {MessageId} message_id - Ссылка на пост/комментарий
@param {number} weight - Вес, значение может принимать значения от 1 (0.01%) до 10000 (100%)
cyber.publish.upvote(
{ actor },
{
voter: actor,
message_id: {
author: '...',
permlink: '...',
ref_block_num: 123,
},
weight: 10000,
}
);
downvote - Проголосовать против поста/комментария
@param {string} voter - Голосующий
@param {MessageId} message_id - Ссылка на пост/комментарий
@param {number} weight - Вес, значение может принимать значения от 1 (0.01%) до 10000 (100%)
unvote - Отменить голос на посте/комментарие
@param {string} voter - Голосующий
@param {MessageId} message_id - ссылка на пост/комментарий
social:
Транзакции контрактаpin - Подписаться на сообщество
@param {string} pinner - Кто подписывается
@param {string} pinning - Имя сообщества
unpin - Подписаться на сообщество
@param {string} pinner - Кто подписывается
@param {string} pinning - Имя сообщества
block - Заблокировать пользователя
@param {string} blocker - Кто блокирует
@param {string} blocking - Кого блокируют
unblock - Разблокировать пользователя
@param {string} blocker - Кто блокирует
@param {string} blocking - Кого блокируют
updatemeta - Обновить данные профиля
@param {string} account - Username
@param {Object} meta
@param {string} meta.bio - О себе
@param {string} meta.facebook - Facebook аккаунт
@param {string} meta.wechat - WeChat аккаунт
@param {string} meta.telegram - Telegram аккаунт
... Это неполный список. Список всё ещё обновляется в текущее время.
await cyber.social.updatemeta({ actor }, {
account: actor,
meta: {
facebook: 'my-facebook-account',
...
},
})