steem-js: Lecture des données de la chaîne
Cette page regroupe les exemples de lecture de steem.api, issus de la documentation steem-js. Installation, configuration et exemples d'utilisation : le tutoriel de démarrage ; la diffusion : Diffusion des opérations.
Chaque helper ci-dessous encapsule une méthode JSON-RPC documentée dans la Référence API générée — par exemple
getAccountsAsynccorrespond à condenser_api.get_accounts etgetContentAsyncà condenser_api.get_content. Les démonstrations montrent les patterns côté client de steem-js.
Méthodes de lecture de l'API
Méthodes de lecture de l'API
Les sections ci-dessous documentent les helpers steem.api pour lire l'état de la chaîne. Sauf mention contraire, les appels sont routés vers condenser_api sur le nœud.
Tags
Obtenir les tags tendance
Renvoie la liste des tags actuellement en tendance, par valeur décroissante.
steem.api.getTrendingTagsAsync(afterTag, limit).then(function(result) {
console.log(result);
});Description des paramètres :
| Paramètre | Description | Type de données | Remarques |
|---|---|---|---|
| afterTag | Le nom du dernier tag à partir duquel commencer | String | Utilisez la chaîne vide '' pour commencer la liste. Les appels suivants peuvent utiliser le nom du dernier tag |
| limit | Le nombre maximal de tags à renvoyer | Integer |
Exemple d'appel :
steem.api.getTrendingTagsAsync('', 2).then(function(result) {
console.log(result);
});Exemple de résultat :
[
{ 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' }
]Exploiter le résultat :
// 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);
});Obtenir le blog
Récupère les limit derniers posts de account avant le post d'indice entryId.
steem.api.getBlogAsync(account, entryId, limit).then(function(data) {
console.log(data);
});Description des paramètres :
| Paramètre | Type de données | Description |
|---|---|---|
| account | string | Un nom d'utilisateur Steem |
| entryId | number | Un nombre positif — l'indice à partir duquel commencer le décompte (indice à partir de zéro) |
| limit | number | Un nombre positif — le nombre maximal de posts renvoyés |
Exemple d'appel :
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]Obtenir les auteurs du blog
Récupère la liste de tous les auteurs qui ont publié dans le blog de quelqu'un, avec le nombre de publications dans ce blog.
steem.api.getBlogAuthorsAsync(blogAccount).then(function(data) {
console.log(data);
});Exemple de résultat :
[
['username1', 1],
['username2', 1],
['username3', 3],
['username4', 2],
['username5', 1]
]Obtenir les entrées du blog
Récupère les limit derniers posts de account avant le post d'indice entryId. Très semblable à getBlog, mais avec des objets résultat bien plus simples.
steem.api.getBlogEntriesAsync(account, entryId, limit).then(function(data) {
console.log(data);
});Exemple de résultat :
[
{ 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 }
]Obtenir les discussions tendance
Récupère les posts Steem tels qu'ils seraient affichés dans l'onglet trending de steemit.com.
steem.api.getDiscussionsByTrendingAsync(query).then(function(data) {
console.log(data);
});Exemple d'appel :
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.Autres méthodes de requête de discussions
// 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);Obtenir les discussions par promotion
Récupère les posts récents, classés selon la somme dépensée pour leur promotion.
steem.api.getDiscussionsByPromotedAsync(query).then(function(data) {
console.log(data);
});Exemple d'appel :
const query = { limit: 3, tag: "steem" };
steem.api.getDiscussionsByPromotedAsync(query).then(function(data) {
console.log(data);
});Blocs et transactions
Obtenir l'en-tête d'un bloc
steem.api.getBlockHeaderAsync(blockNum).then(function(result) {
console.log(result);
});Obtenir un bloc
steem.api.getBlockAsync(blockNum).then(function(result) {
console.log(result);
});Obtenir les opérations d'un bloc
Récupère toutes les opérations d'un bloc donné.
steem.api.getOpsInBlockAsync(blockNum, onlyVirtual).then(function(data) {
console.log(data);
});Description des paramètres :
| Paramètre | Type de données | Description |
|---|---|---|
| blockNum | number | Un nombre positif |
| onlyVirtual | boolean | 'false' pour obtenir toutes les opérations ; 'true' pour obtenir uniquement les opérations virtuelles |
Exemple d'appel :
steem.api.getOpsInBlockAsync(10000001, false).then(function(data) {
console.log(data);
});Obtenir l'état
Récupère de nombreuses informations sur l'état de path.
steem.api.getStateAsync(path).then(function(data) {
console.log(data);
});Exemple d'appel :
// 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");Propriétés globales
getConfig, getDynamicGlobalProperties, getFeedHistory et getWitnessSchedule utilisent database_api sur le nœud ; getChainProperties, getHardforkVersion et getNextScheduledHardfork utilisent condenser_api.
Obtenir la configuration
steem.api.getConfigAsync().then(function(result) {
console.log(result);
});Obtenir les propriétés globales dynamiques
steem.api.getDynamicGlobalPropertiesAsync().then(function(result) {
console.log(result);
});Obtenir les propriétés de la chaîne
steem.api.getChainPropertiesAsync().then(function(result) {
console.log(result);
});Obtenir les entrées de flux
Récupère les posts du flux (feed) d'un utilisateur. Le flux affiche les posts des utilisateurs suivis, ainsi que ce qu'ils ont repartagé (resteem).
steem.api.getFeedEntriesAsync(account, entryId, limit).then(function(data) {
console.log(data);
});Description des paramètres :
| Paramètre | Type de données | Description |
|---|---|---|
| account | string | Un nom d'utilisateur Steem |
| entryId | number | L'ID du post à partir duquel commencer le décompte. Écrivez '0' pour partir du post le plus récent |
| limit | number | Un nombre positif |
Exemple de résultat :
[
{ 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 }
]Obtenir l'historique du flux
steem.api.getFeedHistoryAsync().then(function(result) {
console.log(result);
});Obtenir le prix médian historique actuel
steem.api.getCurrentMedianHistoryPriceAsync().then(function(result) {
console.log(result);
});Obtenir le ticker
Récupère les dernières données résumées du marché Steem.
steem.api.getTickerAsync().then(function(data) {
console.log(data);
});Exemple de résultat :
{
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'
}Obtenir l'historique des échanges
Récupère l'historique des échanges sur une période donnée, entre une date start et une date end.
steem.api.getTradeHistoryAsync(start, end, limit).then(function(data) {
console.log(data);
});Description des paramètres :
| Paramètre | Type de données | Description |
|---|---|---|
| start | string | Chaîne date-heure au format "2018-01-01T00:00:00" |
| end | string | Chaîne date-heure au format "2018-01-01T00:00:00" |
| limit | number | Un nombre positif |
Exemple d'appel :
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);
});Obtenir la version
Récupère la version de la blockchain Steem à laquelle vous êtes connecté.
steem.api.getVersionAsync().then(function(data) {
console.log(data);
});Exemple de résultat :
{
blockchain_version: '0.19.2',
steem_revision: '07be64314ce9d277eb7da921b459c993c2e2412c',
fc_revision: '8dd1fd1ec0906509eb722fa7c8d280d59bcca23d'
}Obtenir le volume
Récupère les volumes de STEEM et de dollars STEEM (SBD).
steem.api.getVolumeAsync().then(function(data) {
console.log(data);
});Exemple de résultat :
{
steem_volume: '8101.888 STEEM',
sbd_volume: '7287.268 SBD'
}Obtenir la version de hard fork
Récupère la version de hard fork actuelle de la blockchain STEEM.
steem.api.getHardforkVersionAsync().then(function(result) {
console.log(result); // '0.19.0'
});Obtenir le prochain hard fork planifié
steem.api.getNextScheduledHardforkAsync().then(function(result) {
console.log(result);
});Obtenir le fonds de récompenses
steem.api.getRewardFundAsync(name).then(function(result) {
console.log(result);
});Obtenir les délégations de vesting
Renvoie la liste des délégations effectuées depuis un account. Exprimées en parts de vesting (VESTS).
steem.api.getVestingDelegationsAsync(account, from, limit).then(function(result) {
console.log(result);
});Description des paramètres :
| Paramètre | Description | Type de données | Remarques |
|---|---|---|---|
| account | Le compte qui effectue les délégations | String | |
| from | Le nom du dernier compte à partir duquel commencer | String | Utilisez la chaîne vide '' pour commencer la liste. Les appels suivants peuvent utiliser le nom de compte du dernier délégataire |
| limit | Le nombre maximal d'enregistrements de délégation à renvoyer | Integer |
Exemple d'appel :
steem.api.getVestingDelegationsAsync('ned', '', 2).then(function(result) {
console.log(result);
});Exemple de résultat :
[
{ 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' }
]Clés
Obtenir les références de clés
steem.api.getKeyReferencesAsync(key).then(function(result) {
console.log(result);
});Comptes
Obtenir les comptes
Récupère plusieurs comptes à partir de leurs noms.
steem.api.getAccountsAsync(names).then(function(result) {
console.log(result);
});Description des paramètres :
| Paramètre | Type de données | Description |
|---|---|---|
| names | array | Tableau de noms de comptes (chaînes) |
Exemple d'appel :
steem.api.getAccountsAsync(['ned', 'dan']).then(function(accounts) {
console.log(accounts);
});Remarque : pour obtenir un seul compte, passez un tableau d'un seul nom : getAccountsAsync(['username']), puis accédez au premier élément du résultat.
Obtenir les références de compte
steem.api.getAccountReferencesAsync(accountId).then(function(result) {
console.log(result);
});Rechercher des noms de comptes
steem.api.lookupAccountNamesAsync(accountNames).then(function(result) {
console.log(result);
});Rechercher des comptes
steem.api.lookupAccountsAsync(lowerBoundName, limit).then(function(result) {
console.log(result);
});Obtenir le nombre de comptes
steem.api.getAccountCountAsync().then(function(result) {
console.log(result);
});Obtenir les demandes de conversion
steem.api.getConversionRequestsAsync(accountName).then(function(result) {
console.log(result);
});Obtenir l'historique de compte
steem.api.getAccountHistoryAsync(account, from, limit).then(function(result) {
console.log(result);
});Version signée (pour les données privées du compte) :
// 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);
}
}
);Obtenir l'historique du propriétaire
steem.api.getOwnerHistoryAsync(account).then(function(result) {
console.log(result);
});Obtenir la demande de récupération
steem.api.getRecoveryRequestAsync(account).then(function(result) {
console.log(result);
});Obtenir les réputations de comptes
Récupère les points de réputation des limit comptes dont les noms ressemblent le plus à lowerBoundName.
steem.api.getAccountReputationsAsync(lowerBoundName, limit).then(function(data) {
console.log(data);
});Exemple de résultat :
[
{ account: 'username', reputation: '26727073581' },
{ account: 'username-taken', reputation: 0 }
]Marché
Obtenir le carnet d'ordres
steem.api.getOrderBookAsync(limit).then(function(result) {
console.log(result);
});Obtenir le carnet d'ordres du marché
Prend les limit premières entrées du carnet d'ordres du marché, tant côté achats que côté ventes.
steem.api.getMarketOrderBookAsync(limit).then(function(data) {
console.log(data);
});Exemple de résultat :
{
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 }
]
}Obtenir les ordres ouverts
steem.api.getOpenOrdersAsync(owner).then(function(result) {
console.log(result);
});getOrderBook utilise database_api sur le nœud ; getMarketOrderBook utilise market_history_api.
Obtenir les buckets d'historique du marché
steem.api.getMarketHistoryBucketsAsync().then(function(data) {
console.log(data); // [15, 60, 300, 3600, 86400]
});Autorité / Validation
Obtenir l'hex de la transaction
steem.api.getTransactionHexAsync(trx).then(function(result) {
console.log(result);
});Obtenir la transaction
steem.api.getTransactionAsync(trxId).then(function(result) {
console.log(result);
});Obtenir les signatures requises
steem.api.getRequiredSignaturesAsync(trx, availableKeys).then(function(result) {
console.log(result);
});Obtenir les signatures potentielles
steem.api.getPotentialSignaturesAsync(trx).then(function(result) {
console.log(result);
});Vérifier l'autorité
Utilise database_api sur le nœud.
steem.api.verifyAuthorityAsync(trx).then(function(result) {
console.log(result);
});Vérifier l'autorité du compte
Utilise database_api sur le nœud.
steem.api.verifyAccountAuthorityAsync(nameOrId, signers).then(function(result) {
console.log(result);
});Obtenir les tags utilisés par un auteur
Récupère les tags utilisés par un utilisateur Steem. La plupart des utilisateurs n'ont pas encore de tags, mais certains en ont.
steem.api.getTagsUsedByAuthorAsync(author).then(function(data) {
console.log(data);
});Exemple d'appel :
steem.api.getTagsUsedByAuthorAsync("good-karma").then(function(data) {
console.log(data); // [['challenge', 0]]
});Votes
Obtenir les votes actifs
steem.api.getActiveVotesAsync(author, permlink).then(function(result) {
console.log(result);
});Obtenir les votes du compte
steem.api.getAccountVotesAsync(voter).then(function(result) {
console.log(result);
});Contenu
Obtenir le contenu
steem.api.getContentAsync(author, permlink).then(function(result) {
console.log(result);
});Obtenir les réponses au contenu
steem.api.getContentRepliesAsync(author, permlink).then(function(result) {
console.log(result);
});Obtenir les discussions d'un auteur avant une date
steem.api.getDiscussionsByAuthorBeforeDateAsync(author, startPermlink, beforeDate, limit).then(function(result) {
console.log(result);
});Obtenir les reblogs
Donne la liste des utilisateurs qui ont repartagé (resteem) un post donné.
steem.api.getRebloggedByAsync(author, permlink).then(function(data) {
console.log(data);
});Exemple de résultat :
['author', 'user1', 'user2', 'user3', 'user4']Obtenir les réponses par dernière mise à jour
steem.api.getRepliesByLastUpdateAsync(startAuthor, startPermlink, limit).then(function(result) {
console.log(result);
});Witness
Obtenir les witness
steem.api.getWitnessesAsync(witnessIds).then(function(result) {
console.log(result);
});Obtenir un witness par compte
Renvoie les informations sur le witness ayant le accountName donné.
steem.api.getWitnessByAccountAsync(accountName).then(function(result) {
console.log(result);
});Obtenir les witness par votes
steem.api.getWitnessesByVoteAsync(from, limit).then(function(result) {
console.log(result);
});Rechercher les comptes witness
steem.api.lookupWitnessAccountsAsync(lowerBoundName, limit).then(function(result) {
console.log(result);
});Obtenir le nombre de witness
steem.api.getWitnessCountAsync().then(function(result) {
console.log(result);
});Obtenir les witness actifs
steem.api.getActiveWitnessesAsync().then(function(result) {
console.log(result);
});Obtenir le planning des witness
Récupère quelques informations générales sur les witness.
steem.api.getWitnessScheduleAsync().then(function(data) {
console.log(data);
});Exemple de résultat :
{
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 de connexion
API de connexion
Connexion
⚠️ Il n'est pas sûr d'utiliser cette méthode avec votre nom d'utilisateur et votre mot de passe. Cette méthode renvoie toujours true et n'est utilisée qu'en interne avec des valeurs vides pour activer la diffusion.
steem.api.loginAsync('', '').then(function(result) {
console.log(result);
});Obtenir l'API par nom
steem.api.getApiByNameAsync(apiName).then(function(result) {
console.log(result);
});API de suivi
L'API des follows interroge les relations de suivi entre comptes. Cette API est en lecture seule et ne crée aucun changement sur la blockchain.
Obtenir les abonnés
Renvoie un tableau trié par ordre alphabétique des comptes qui suivent un compte donné.
steem.api.getFollowersAsync(following, startFollower, followType, limit).then(function(result) {
console.log(result);
});Description des paramètres :
| Paramètre | Description | Type de données | Remarques |
|---|---|---|---|
| following | Les followers de quel compte | String | Sans symbole @ initial |
| startFollower | À partir de quel follower commencer la liste ? | String | Sans symbole @ initial. Utilisez la chaîne vide '' pour commencer la liste. Les appels suivants peuvent utiliser le nom du dernier follower |
| followType | ?? | ?? | Définissez 0 ou 'blog' — les deux fonctionnent |
| limit | Le nombre maximal de followers à renvoyer | Integer |
Exemple d'appel :
steem.api.getFollowersAsync('ned', '', 'blog', 2).then(function(result) {
console.log(result);
});Exemple de résultat :
[
{ follower: 'a-0-0', following: 'ned', what: ['blog'] },
{ follower: 'a-0-0-0-1abokina', following: 'ned', what: ['blog'] }
]Obtenir les abonnements
Renvoie un tableau trié par ordre alphabétique des comptes suivis par un compte donné.
steem.api.getFollowingAsync(follower, startFollowing, followType, limit).then(function(result) {
console.log(result);
});Exemple de résultat :
[
{ follower: 'dan', following: 'dantheman', what: ['blog'] },
{ follower: 'dan', following: 'krnel', what: ['blog'] }
]Obtenir le nombre d'abonnements
steem.api.getFollowCountAsync(account).then(function(result) {
console.log(result);
});Exemple de résultat :
{ account: 'ned', follower_count: 16790, following_count: 913 }Authentification
Authentification
Vérifier
steem.auth.verify(name, password, auths);Générer des clés
steem.auth.generateKeys(name, password, roles);Obtenir les clés privées
steem.auth.getPrivateKeys(name, password, roles);Est-ce un WIF
steem.auth.isWif(privWif);Conversion en WIF
steem.auth.toWif(name, password, role);Validité du WIF
steem.auth.wifIsValid(privWif, pubWif);WIF vers clé publique
steem.auth.wifToPublic(privWif);Signer une transaction
Signe une transaction avec les clés privées fournies. La signature est calculée sur le condensat sha256(chain_id ‖ serializeTransaction(normalizedTrx)), où chain_id provient de la chaîne configurée (par défaut, que des zéros pour le réseau principal).
trx— objet transaction :ref_block_num,ref_block_prefix,expiration,operations(tableau de[opType, opData]) etextensions.keys— tableau de clés privées WIF utilisées pour signer.- Renvoie un objet transaction auquel un tableau
signaturesa été ajouté.
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)Remarque : le champ
signaturesne fait pas partie du condensat signé. La signature sérialise la transaction avant d'attacher les signatures, si bien que le condensat ne couvre que le corps non signé de la transaction.
Vérifier une transaction
Vérifie que les signatures d'une transaction signée ont bien été produites par la clé publique donnée. Le condensat est reconstruit exactement comme le calcule signTransaction : sha256(chain_id ‖ serializeTransaction(normalizedTrx)). Renvoie true si au moins une signature est valide pour publicKey, sinon false.
transaction— objet transaction signée (doit contenir un tableausignatures). Le champsignaturesest retiré avant le calcul du condensat : le nombre de signatures présentes n'a donc pas d'importance.publicKey— la clé publiqueSTM…à vérifier.- Renvoie un
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)); // falseCas d'usage sécurité : un serveur relais/portefeuille peut appeler
verifyTransactionsur une transaction soumise par un client afin de prouver — avant de la transmettre à la chaîne — qu'elle a été signée par une clé appartenant au compte revendiqué. Cela comble une faille de défense en profondeur : auparavant, le serveur ne pouvait vérifier que la forme de la transaction, pas son authenticité cryptographique.
Sérialiser une transaction
Sérialise une transaction sous sa forme binaire (style FC) et renvoie un Buffer. C'est le même sérialiseur que celui utilisé en interne par signTransaction, si bien que la sortie correspond octet pour octet au format réseau des transactions du nœud Steem. Les applications en aval peuvent l'utiliser pour reconstituer elles-mêmes le condensat de signature.
trx— objet transaction (même forme que letrxdesignTransaction).- Renvoie un
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 digestFormateur
Formateur
Montant
Formate un nombre et une devise de façon valide pour l'envoi (par exemple — il rogne la partie décimale du nombre à 3 chiffres seulement).
steem.formatter.amount(_amount, asset);Description des paramètres :
| Paramètre | Type de données | Description |
|---|---|---|
| _amount | number | Un nombre positif |
| asset | string | Le nom d'un actif Steem (steem, sbd) |
Exemple d'appel :
steem.formatter.amount(53.442346, "STEEM"); // "53.442 STEEM"Vesting STEEM
Convertit les parts de vesting (VESTS) de account en quantité de Steem correspondante.
steem.formatter.vestingSteem(account, gprops);Exemple d'appel :
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
});
});Nombre avec séparateurs de milliers
Formate un grand nombre en ajoutant une virgule tous les 3 chiffres. Attention — ne fonctionne que sur des chaînes ; aucun nombre ne peut être passé directement.
steem.formatter.numberWithCommas(x);Exemple d'appel :
steem.formatter.numberWithCommas("53304432342.432"); // "53,304,432,342.432"Estimer la valeur d'un compte
Récupère la valeur estimée en dollars des actifs de account.
steem.formatter.estimateAccountValue(account).then(function(data) {
console.log(data); // 32.25
});Créer un mot de passe suggéré
const password = steem.formatter.createSuggestedPassword();
console.log(password); // 'GAz3GYFvvQvgm7t2fQmwMDuXEzDqTzn9'Permlink de commentaire
const parentAuthor = 'ned';
const parentPermlink = 'a-selfie';
const commentPermlink = steem.formatter.commentPermlink(parentAuthor, parentPermlink);
console.log(commentPermlink); // 're-ned-a-selfie-20170621t080403765z'Réputation
const reputation = steem.formatter.reputation(3512485230915);
console.log(reputation); // 56Vesting en STEEM
const steemPower = steem.formatter.vestToSteem(vestingShares, totalVestingShares, totalVestingFundSteem);
console.log(steemPower);Utilitaires
Utilitaires
Valider un nom d'utilisateur
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
Formate une chaîne contenant des '_' pour la mettre en notation CamelCase.
steem.utils.camelCase(str);Exemple d'appel :
steem.utils.camelCase("example_string"); // "exampleString"Pour aller plus loin
- Pour modifier l'état de la chaîne, voir Diffusion des opérations.
- Pour les lectures authentifiées et la vérification de signature, voir Appels signés et vérification de signature.
- Pour l'installation et la configuration, retournez au tutoriel de démarrage.