steem-js: Чтение данных цепочки
На этой странице собраны примеры чтения через steem.api, перенесённые из документации steem-js. Установка, настройка и примеры использования — в туториале по началу работы; широковещательные операции — в разделе Широковещательные операции.
Каждый вспомогательный метод ниже оборачивает JSON-RPC-метод, задокументированный в сгенерированном Справочнике API — например,
getAccountsAsyncсоответствует condenser_api.get_accounts, аgetContentAsync— condenser_api.get_content. Демо здесь показывают клиентские приёмы работы steem-js.
Методы чтения API
Методы чтения API
Разделы ниже описывают вспомогательные методы steem.api для чтения состояния цепочки. Если не оговорено иное, вызовы маршрутизируются на узле в condenser_api.
Теги
Получение трендовых тегов
Возвращает список текущих популярных тегов по убыванию значения.
steem.api.getTrendingTagsAsync(afterTag, limit).then(function(result) {
console.log(result);
});Описание параметров:
| Параметр | Описание | Тип данных | Примечания |
|---|---|---|---|
| afterTag | Имя последнего тега, с которого начать | String | Используйте пустую строку '', чтобы начать список. В последующих вызовах можно указать имя последнего тега |
| limit | Максимальное количество возвращаемых тегов | Integer |
Пример вызова:
steem.api.getTrendingTagsAsync('', 2).then(function(result) {
console.log(result);
});Пример результата:
[
{ name: '', total_payouts: '37610793.383 SBD', net_votes: 4211122, top_posts: 411832, comments: 1344461, trending: '5549490701' },
{ name: 'life', total_payouts: '8722947.658 SBD', net_votes: 1498401, top_posts: 127103, comments: 54049, trending: '570954588' }
]Использование результата:
// Extract tag names from the result into an array
const tagNames = result.map(function(item) { return item.name; });
console.log(tagNames);
// Get the last tag for subsequent calls
const lastKnownTag = result[result.length - 1].name;
// Use the last known tag to get the next group of tags
steem.api.getTrendingTagsAsync(lastKnownTag, 2).then(function(result) {
console.log(result);
});Получение блога
Получает последние limit постов аккаунта account до поста с индексом entryId.
steem.api.getBlogAsync(account, entryId, limit).then(function(data) {
console.log(data);
});Описание параметров:
| Параметр | Тип данных | Описание |
|---|---|---|
| account | string | Имя пользователя Steem |
| entryId | number | Положительное число — индекс, с которого начинается отсчёт (индексация с нуля) |
| limit | number | Положительное число — максимальное количество возвращаемых постов |
Пример вызова:
steem.api.getBlogAsync("username", 10, 3).then(function(data) {
console.log(data);
});
// In this case we get [3] posts, the newest of which is the one with index [10]
// (that's the 11th post, because post indexes are zero-based)
// This means the results will be posts [10, 9 and 8]Получение авторов блога
Получает список всех, кто публиковал записи в чужом блоге, и сколько раз они это делали.
steem.api.getBlogAuthorsAsync(blogAccount).then(function(data) {
console.log(data);
});Пример результата:
[
['username1', 1],
['username2', 1],
['username3', 3],
['username4', 2],
['username5', 1]
]Получение записей блога
Получает последние limit постов аккаунта account до поста с индексом entryId. Очень похоже на getBlog, но объекты результата значительно проще.
steem.api.getBlogEntriesAsync(account, entryId, limit).then(function(data) {
console.log(data);
});Пример результата:
[
{ author: 'username', permlink: 'post-permlink-10', blog: 'username', reblog_on: '1970-01-01T00:00:00', entry_id: 10 },
{ author: 'username', permlink: 'post-permlink-9', blog: 'username', reblog_on: '1970-01-01T00:00:00', entry_id: 9 },
{ author: 'username', permlink: 'post-permlink-8', blog: 'username', reblog_on: '1970-01-01T00:00:00', entry_id: 8 }
]Получение обсуждений по трендам
Получает посты Steem так, как они показывались бы на вкладке trending сайта steemit.com.
steem.api.getDiscussionsByTrendingAsync(query).then(function(data) {
console.log(data);
});Пример вызова:
const query = { limit: 3, tag: "steem" };
steem.api.getDiscussionsByTrendingAsync(query).then(function(data) {
console.log(data);
});
// NOTE! The default limit is 0. Not setting a limit will get you an empty result.Другие методы запроса обсуждений
// By created time
steem.api.getDiscussionsByCreatedAsync(query);
// By activity
steem.api.getDiscussionsByActiveAsync(query);
// By cashout time
steem.api.getDiscussionsByCashoutAsync(query);
// By votes
steem.api.getDiscussionsByVotesAsync(query);
// By children
steem.api.getDiscussionsByChildrenAsync(query);
// By hot
steem.api.getDiscussionsByHotAsync(query);
// By feed
steem.api.getDiscussionsByFeedAsync(query);
// By blog
steem.api.getDiscussionsByBlogAsync(query);
// By comments
steem.api.getDiscussionsByCommentsAsync(query);Получение обсуждений по промо
Получает недавние посты, упорядоченные по сумме, потраченной на их продвижение.
steem.api.getDiscussionsByPromotedAsync(query).then(function(data) {
console.log(data);
});Пример вызова:
const query = { limit: 3, tag: "steem" };
steem.api.getDiscussionsByPromotedAsync(query).then(function(data) {
console.log(data);
});Блоки и транзакции
Получение заголовка блока
steem.api.getBlockHeaderAsync(blockNum).then(function(result) {
console.log(result);
});Получение блока
steem.api.getBlockAsync(blockNum).then(function(result) {
console.log(result);
});Получение операций в блоке
Получает все операции в заданном блоке.
steem.api.getOpsInBlockAsync(blockNum, onlyVirtual).then(function(data) {
console.log(data);
});Описание параметров:
| Параметр | Тип данных | Описание |
|---|---|---|
| blockNum | number | Положительное число |
| onlyVirtual | boolean | 'false' — получить все операции; 'true' — только виртуальные операции |
Пример вызова:
steem.api.getOpsInBlockAsync(10000001, false).then(function(data) {
console.log(data);
});Получение состояния
Получает много сведений о состоянии path.
steem.api.getStateAsync(path).then(function(data) {
console.log(data);
});Пример вызова:
// Valid call examples:
steem.api.getStateAsync("/@username");
steem.api.getStateAsync("/@username/permlink-of-post");
steem.api.getStateAsync("/@username/comments");
steem.api.getStateAsync("/@username/recent-replies");
steem.api.getStateAsync("/trending");
steem.api.getStateAsync("/trending/collorchallenge");Глобальные свойства
getConfig, getDynamicGlobalProperties, getFeedHistory и getWitnessSchedule используют на узле database_api; getChainProperties, getHardforkVersion и getNextScheduledHardfork — condenser_api.
Получение конфигурации
steem.api.getConfigAsync().then(function(result) {
console.log(result);
});Получение динамических глобальных свойств
steem.api.getDynamicGlobalPropertiesAsync().then(function(result) {
console.log(result);
});Получение свойств цепочки
steem.api.getChainPropertiesAsync().then(function(result) {
console.log(result);
});Получение записей фида
Получает посты из ленты пользователя. Лента показывает посты пользователей, на которых вы подписаны, а также то, что они репостнули (resteem).
steem.api.getFeedEntriesAsync(account, entryId, limit).then(function(data) {
console.log(data);
});Описание параметров:
| Параметр | Тип данных | Описание |
|---|---|---|
| account | string | Имя пользователя Steem |
| entryId | number | ID поста, с которого начинается отсчёт. Укажите '0', чтобы начать с самого нового поста |
| limit | number | Положительное число |
Пример результата:
[
{ author: 'otherusername', permlink: 'permlink', reblog_by: ['resteembot'], reblog_on: '2018-02-11T18:42:54', entry_id: 10260 },
{ author: 'otherusername', permlink: 'permlink', reblog_by: [], reblog_on: '2018-02-11T18:39:24', entry_id: 10259 }
]Получение истории фида
steem.api.getFeedHistoryAsync().then(function(result) {
console.log(result);
});Получение текущей медианной исторической цены
steem.api.getCurrentMedianHistoryPriceAsync().then(function(result) {
console.log(result);
});Получение тикера
Получает последние сводные данные рынка Steem.
steem.api.getTickerAsync().then(function(data) {
console.log(data);
});Пример результата:
{
latest: '0.89732142857142860',
lowest_ask: '0.89684014869888484',
highest_bid: '0.89600000000000002',
percent_change: '-14.56712923228768730',
steem_volume: '7397.697 STEEM',
sbd_volume: '6662.316 SBD'
}Получение истории сделок
Получает историю сделок за период между датами start и end.
steem.api.getTradeHistoryAsync(start, end, limit).then(function(data) {
console.log(data);
});Описание параметров:
| Параметр | Тип данных | Описание |
|---|---|---|
| start | string | Строка даты-времени в формате "2018-01-01T00:00:00" |
| end | string | Строка даты-времени в формате "2018-01-01T00:00:00" |
| limit | number | Положительное число |
Пример вызова:
const start = "2018-01-01T00:00:00";
const end = "2018-01-02T00:00:00";
steem.api.getTradeHistoryAsync(start, end, 5).then(function(data) {
console.log(data);
});Получение версии
Получает версию блокчейна Steem, к которому вы подключены.
steem.api.getVersionAsync().then(function(data) {
console.log(data);
});Пример результата:
{
blockchain_version: '0.19.2',
steem_revision: '07be64314ce9d277eb7da921b459c993c2e2412c',
fc_revision: '8dd1fd1ec0906509eb722fa7c8d280d59bcca23d'
}Получение объёма
Получает объёмы торгов по STEEM и долларам STEEM (SBD).
steem.api.getVolumeAsync().then(function(data) {
console.log(data);
});Пример результата:
{
steem_volume: '8101.888 STEEM',
sbd_volume: '7287.268 SBD'
}Получение версии хардфорка
Получает текущую версию хардфорка блокчейна STEEM.
steem.api.getHardforkVersionAsync().then(function(result) {
console.log(result); // '0.19.0'
});Получение следующего запланированного хардфорка
steem.api.getNextScheduledHardforkAsync().then(function(result) {
console.log(result);
});Получение фонда вознаграждений
steem.api.getRewardFundAsync(name).then(function(result) {
console.log(result);
});Получение делегаций вестинга
Возвращает список долей вестинга (VESTS), делегированных с одного аккаунта account. Суммы указаны в VESTS.
steem.api.getVestingDelegationsAsync(account, from, limit).then(function(result) {
console.log(result);
});Описание параметров:
| Параметр | Описание | Тип данных | Примечания |
|---|---|---|---|
| account | Аккаунт, который делегирует | String | |
| from | Имя последнего аккаунта, с которого начать | String | Используйте пустую строку '', чтобы начать список. В последующих вызовах можно указать имя последнего получателя делегирования |
| limit | Максимальное количество возвращаемых записей о делегировании | Integer |
Пример вызова:
steem.api.getVestingDelegationsAsync('ned', '', 2).then(function(result) {
console.log(result);
});Пример результата:
[
{ id: 498422, delegator: 'ned', delegatee: 'spaminator', vesting_shares: '409517519.233783 VESTS', min_delegation_time: '2018-01-16T19:30:36' },
{ id: 181809, delegator: 'ned', delegatee: 'surpassinggoogle', vesting_shares: '1029059275.000000 VESTS', min_delegation_time: '2017-08-08T15:25:15' }
]Ключи
Получение ссылок на ключи
steem.api.getKeyReferencesAsync(key).then(function(result) {
console.log(result);
});Аккаунты
Получение аккаунтов
Получает несколько аккаунтов по их именам.
steem.api.getAccountsAsync(names).then(function(result) {
console.log(result);
});Описание параметров:
| Параметр | Тип данных | Описание |
|---|---|---|
| names | array | Массив имён аккаунтов (строк) |
Пример вызова:
steem.api.getAccountsAsync(['ned', 'dan']).then(function(accounts) {
console.log(accounts);
});Примечание: чтобы получить один аккаунт, передайте массив с одним именем: getAccountsAsync(['username']) и возьмите первый элемент результата.
Получение ссылок на аккаунт
steem.api.getAccountReferencesAsync(accountId).then(function(result) {
console.log(result);
});Поиск имён аккаунтов
steem.api.lookupAccountNamesAsync(accountNames).then(function(result) {
console.log(result);
});Поиск аккаунтов
steem.api.lookupAccountsAsync(lowerBoundName, limit).then(function(result) {
console.log(result);
});Получение количества аккаунтов
steem.api.getAccountCountAsync().then(function(result) {
console.log(result);
});Получение запросов на конвертацию
steem.api.getConversionRequestsAsync(accountName).then(function(result) {
console.log(result);
});Получение истории аккаунта
steem.api.getAccountHistoryAsync(account, from, limit).then(function(result) {
console.log(result);
});Подписанная версия (для приватных данных аккаунта):
// For accessing private or authenticated account data
const privateKey = steem.auth.toWif('username', 'password', 'active');
steem.api.signedCall(
'condenser_api.get_account_history',
['username', -1, 100],
'username',
privateKey,
function(err, result) {
if (err) {
console.error('Error:', err);
} else {
console.log('Private account history:', result);
}
}
);Получение истории владельца
steem.api.getOwnerHistoryAsync(account).then(function(result) {
console.log(result);
});Получение запроса на восстановление
steem.api.getRecoveryRequestAsync(account).then(function(result) {
console.log(result);
});Получение репутации аккаунтов
Получает очки репутации limit аккаунтов, имена которых ближе всего к lowerBoundName.
steem.api.getAccountReputationsAsync(lowerBoundName, limit).then(function(data) {
console.log(data);
});Пример результата:
[
{ account: 'username', reputation: '26727073581' },
{ account: 'username-taken', reputation: 0 }
]Рынок
Получение стакана ордеров
steem.api.getOrderBookAsync(limit).then(function(result) {
console.log(result);
});Получение рыночного стакана ордеров
Берёт первые limit записей биржевого стакана (order book) и по заявкам на покупку, и по заявкам на продажу.
steem.api.getMarketOrderBookAsync(limit).then(function(data) {
console.log(data);
});Пример результата:
{
bids: [
{ price: '0.91116173120728938', steem: 2195, sbd: 2000 },
{ price: '0.91089965397923878', steem: 1156, sbd: 1053 }
],
asks: [
{ price: '0.91145625249700357', steem: 9053, sbd: 8251 },
{ price: '0.91159226975214813', steem: 16184, sbd: 14753 }
]
}Получение открытых ордеров
steem.api.getOpenOrdersAsync(owner).then(function(result) {
console.log(result);
});getOrderBook использует на узле database_api; getMarketOrderBook — market_history_api.
Получение корзин рыночной истории
steem.api.getMarketHistoryBucketsAsync().then(function(data) {
console.log(data); // [15, 60, 300, 3600, 86400]
});Авторизация / Проверка
Получение hex транзакции
steem.api.getTransactionHexAsync(trx).then(function(result) {
console.log(result);
});Получение транзакции
steem.api.getTransactionAsync(trxId).then(function(result) {
console.log(result);
});Получение необходимых подписей
steem.api.getRequiredSignaturesAsync(trx, availableKeys).then(function(result) {
console.log(result);
});Получение потенциальных подписей
steem.api.getPotentialSignaturesAsync(trx).then(function(result) {
console.log(result);
});Проверка полномочий
Использует на узле database_api.
steem.api.verifyAuthorityAsync(trx).then(function(result) {
console.log(result);
});Проверка полномочий аккаунта
Использует на узле database_api.
steem.api.verifyAccountAuthorityAsync(nameOrId, signers).then(function(result) {
console.log(result);
});Получение тегов, используемых автором
Получает теги, используемые пользователем Steem. У большинства пользователей тегов ещё нет, но у некоторых есть.
steem.api.getTagsUsedByAuthorAsync(author).then(function(data) {
console.log(data);
});Пример вызова:
steem.api.getTagsUsedByAuthorAsync("good-karma").then(function(data) {
console.log(data); // [['challenge', 0]]
});Голоса
Получение активных голосов
steem.api.getActiveVotesAsync(author, permlink).then(function(result) {
console.log(result);
});Получение голосов аккаунта
steem.api.getAccountVotesAsync(voter).then(function(result) {
console.log(result);
});Контент
Получение контента
steem.api.getContentAsync(author, permlink).then(function(result) {
console.log(result);
});Получение ответов на контент
steem.api.getContentRepliesAsync(author, permlink).then(function(result) {
console.log(result);
});Получение обсуждений автора до даты
steem.api.getDiscussionsByAuthorBeforeDateAsync(author, startPermlink, beforeDate, limit).then(function(result) {
console.log(result);
});Получение реблогов
Возвращает список пользователей, сделавших репост (resteem) данного поста.
steem.api.getRebloggedByAsync(author, permlink).then(function(data) {
console.log(data);
});Пример результата:
['author', 'user1', 'user2', 'user3', 'user4']Получение ответов по последнему обновлению
steem.api.getRepliesByLastUpdateAsync(startAuthor, startPermlink, limit).then(function(result) {
console.log(result);
});Свидетели
Получение свидетелей
steem.api.getWitnessesAsync(witnessIds).then(function(result) {
console.log(result);
});Получение свидетеля по аккаунту
Возвращает информацию о свидетеле (witness) с указанным accountName.
steem.api.getWitnessByAccountAsync(accountName).then(function(result) {
console.log(result);
});Получение свидетелей по голосам
steem.api.getWitnessesByVoteAsync(from, limit).then(function(result) {
console.log(result);
});Поиск аккаунтов свидетелей
steem.api.lookupWitnessAccountsAsync(lowerBoundName, limit).then(function(result) {
console.log(result);
});Получение количества свидетелей
steem.api.getWitnessCountAsync().then(function(result) {
console.log(result);
});Получение активных свидетелей
steem.api.getActiveWitnessesAsync().then(function(result) {
console.log(result);
});Получение расписания свидетелей
Получает общие сведения о свидетелях.
steem.api.getWitnessScheduleAsync().then(function(data) {
console.log(data);
});Пример результата:
{
id: 0,
current_virtual_time: '292589412128104496649868821',
next_shuffle_block_num: 19756485,
current_shuffled_witnesses: '31797..................00000000',
num_scheduled_witnesses: 21,
top19_weight: 1,
timeshare_weight: 5,
miner_weight: 1,
witness_pay_normalization_factor: 25,
median_props: {
account_creation_fee: '0.100 STEEM',
maximum_block_size: 65536,
sbd_interest_rate: 0
},
majority_version: '0.19.2',
max_voted_witnesses: 20,
max_miner_witnesses: 0,
max_runner_witnesses: 1,
hardfork_required_witnesses: 17
}API входа
API входа
Вход
⚠️ Использовать этот метод с вашим именем пользователя и паролем небезопасно. Метод всегда возвращает true и используется только внутри с пустыми значениями, чтобы включить широковещание.
steem.api.loginAsync('', '').then(function(result) {
console.log(result);
});Получение API по имени
steem.api.getApiByNameAsync(apiName).then(function(result) {
console.log(result);
});API подписок
API подписок (follower API) запрашивает сведения об отношениях подписки между аккаунтами. API только для чтения и не создаёт изменений в блокчейне.
Получение подписчиков
Возвращает упорядоченный по алфавиту массив аккаунтов, подписанных на данный аккаунт.
steem.api.getFollowersAsync(following, startFollower, followType, limit).then(function(result) {
console.log(result);
});Описание параметров:
| Параметр | Описание | Тип данных | Примечания |
|---|---|---|---|
| following | Подписчики какого аккаунта | String | Без начального символа @ |
| startFollower | С какого подписчика начать список? | String | Без начального символа @. Используйте пустую строку '', чтобы начать список. В последующих вызовах можно указать имя последнего подписчика |
| followType | ?? | ?? | Установите 0 или 'blog' — работает и так, и так |
| limit | Максимальное количество возвращаемых подписчиков | Integer |
Пример вызова:
steem.api.getFollowersAsync('ned', '', 'blog', 2).then(function(result) {
console.log(result);
});Пример результата:
[
{ follower: 'a-0-0', following: 'ned', what: ['blog'] },
{ follower: 'a-0-0-0-1abokina', following: 'ned', what: ['blog'] }
]Получение подписок
Возвращает упорядоченный по алфавиту массив аккаунтов, на которые подписан данный аккаунт.
steem.api.getFollowingAsync(follower, startFollowing, followType, limit).then(function(result) {
console.log(result);
});Пример результата:
[
{ follower: 'dan', following: 'dantheman', what: ['blog'] },
{ follower: 'dan', following: 'krnel', what: ['blog'] }
]Получение количества подписок
steem.api.getFollowCountAsync(account).then(function(result) {
console.log(result);
});Пример результата:
{ account: 'ned', follower_count: 16790, following_count: 913 }Аутентификация
Аутентификация
Проверка
steem.auth.verify(name, password, auths);Генерация ключей
steem.auth.generateKeys(name, password, roles);Получение приватных ключей
steem.auth.getPrivateKeys(name, password, roles);Проверка WIF
steem.auth.isWif(privWif);Преобразование в WIF
steem.auth.toWif(name, password, role);Валидность WIF
steem.auth.wifIsValid(privWif, pubWif);WIF в публичный ключ
steem.auth.wifToPublic(privWif);Подписание транзакции
Подписывает транзакцию предоставленными приватными ключами. Подпись вычисляется по дайджесту sha256(chain_id ‖ serializeTransaction(normalizedTrx)), где chain_id берётся из настроенной цепочки (по умолчанию — все нули для mainnet).
trx— объект транзакции:ref_block_num,ref_block_prefix,expiration,operations(массив пар[opType, opData]) иextensions.keys— массив WIF-приватных ключей для подписи.- Возвращает объект транзакции с добавленным массивом
signatures.
const wif = '5JLw5dgQAx6rhZEgNN5C2ds1V47RweGshynFSWFbaMohsYsBvE8';
const tx = {
ref_block_num: 123,
ref_block_prefix: 456789,
expiration: '2026-07-10T00:00:00',
operations: [['transfer', {
from: 'alice', to: 'bob', amount: '1.000 STEEM', memo: ''
}]],
extensions: [],
};
const signedTx = steem.auth.signTransaction(tx, [wif]);
console.log(signedTx.signatures); // ['1f23...'] (hex signatures)Примечание: поле
signaturesне входит в подписываемый дайджест. При подписании транзакция сериализуется до добавления подписей, поэтому дайджест покрывает только тело неподписанной транзакции.
Проверка транзакции
Проверяет, что подписи подписанной транзакции созданы данным публичным ключом. Дайджест восстанавливается точно так же, как его вычисляет signTransaction: sha256(chain_id ‖ serializeTransaction(normalizedTrx)). Возвращает true, если хотя бы одна подпись действительна для publicKey, иначе false.
transaction— объект подписанной транзакции (должен содержать массивsignatures). Перед вычислением дайджеста полеsignaturesудаляется, поэтому количество подписей не имеет значения.publicKey— публичный ключ видаSTM…для проверки.- Возвращает
boolean.
const publicKey = steem.auth.wifToPublic(wif);
// Round-trip: a correctly-signed tx verifies against its signing key
const isValid = steem.auth.verifyTransaction(signedTx, publicKey);
console.log(isValid); // true
// A different public key is rejected
const wrongPub = steem.auth.wifToPublic('5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3');
console.log(steem.auth.verifyTransaction(signedTx, wrongPub)); // falseСценарий безопасности: сервер-ретранслятор или кошелёк может вызвать
verifyTransactionдля транзакции, присланной клиентом, чтобы — до пересылки в цепочку — доказать, что она подписана ключом, принадлежащим указанному аккаунту. Это закрывает пробел эшелонированной защиты: раньше сервер мог проверить только форму транзакции, но не её криптографическую подлинность.
Сериализация транзакции
Сериализует транзакцию в двоичную форму (в стиле FC) и возвращает Buffer. Это тот же сериализатор, что используется внутри signTransaction, поэтому результат побайтово совпадает с сетевым форматом транзакций узла Steem. Приложения могут использовать его, чтобы самостоятельно восстановить подписываемый дайджест.
trx— объект транзакции (та же форма, что уtrxвsignTransaction).- Возвращает
Buffer.
import { sha256 } from '@noble/hashes/sha2';
// Build the exact digest signTransaction signs over:
const buf = steem.auth.serializeTransaction(tx); // Buffer
const chainId = Buffer.alloc(32, 0); // mainnet chain_id (all-zero)
const digest = Buffer.from(sha256(Buffer.concat([chainId, buf])));
console.log(digest.toString('hex')); // 32-byte digestФорматтер
Форматтер
Сумма
Форматирует число и валюту к корректному для отправки виду (например — обрезает дробный остаток числа до 3 знаков).
steem.formatter.amount(_amount, asset);Описание параметров:
| Параметр | Тип данных | Описание |
|---|---|---|
| _amount | number | Положительное число |
| asset | string | Имя актива Steem (steem, sbd) |
Пример вызова:
steem.formatter.amount(53.442346, "STEEM"); // "53.442 STEEM"Vesting STEEM
Преобразует вестинги (VESTS) аккаунта account в эквивалентное количество Steem.
steem.formatter.vestingSteem(account, gprops);Пример вызова:
steem.api.getAccountsAsync(["username"]).then(function(accounts) {
steem.api.getStateAsync("/@username").then(function(state) {
const vestingSteem = steem.formatter.vestingSteem(accounts[0], state.props);
console.log(vestingSteem); // 7.42431235
});
});Число с разделителями
Форматирует большое число, добавляя запятую каждые 3 цифры. Внимание — работает только со строками; числа напрямую передавать нельзя.
steem.formatter.numberWithCommas(x);Пример вызова:
steem.formatter.numberWithCommas("53304432342.432"); // "53,304,432,342.432"Оценка стоимости аккаунта
Получает оценочную стоимость активов аккаунта account в долларах.
steem.formatter.estimateAccountValue(account).then(function(data) {
console.log(data); // 32.25
});Создание предложенного пароля
const password = steem.formatter.createSuggestedPassword();
console.log(password); // 'GAz3GYFvvQvgm7t2fQmwMDuXEzDqTzn9'Пермалинк комментария
const parentAuthor = 'ned';
const parentPermlink = 'a-selfie';
const commentPermlink = steem.formatter.commentPermlink(parentAuthor, parentPermlink);
console.log(commentPermlink); // 're-ned-a-selfie-20170621t080403765z'Репутация
const reputation = steem.formatter.reputation(3512485230915);
console.log(reputation); // 56Вестинг в STEEM
const steemPower = steem.formatter.vestToSteem(vestingShares, totalVestingShares, totalVestingFundSteem);
console.log(steemPower);Утилиты
Утилиты
Проверка имени пользователя
const isValidUsername = steem.utils.validateAccountName('test1234');
console.log(isValidUsername); // null
const isValidUsername2 = steem.utils.validateAccountName('a1');
console.log(isValidUsername2); // 'Account name should be longer.'Верблюжий регистр
Форматирует строку с символами '_' в нотацию CamelCase.
steem.utils.camelCase(str);Пример вызова:
steem.utils.camelCase("example_string"); // "exampleString"Что дальше
- Чтобы изменять состояние цепочки, см. Широковещательные операции.
- Об авторизованных чтениях и проверке подписи — см. Подписанные вызовы и проверка подписи.
- Об установке и настройке — вернитесь к туториалу по началу работы.