ripplerm avatar

Steem-lib Guide [Part2]

ripplerm

Published: 24 Feb 2017 › Updated: 24 Feb 2017

Steem-lib Guide [Part2]

Previous: Steem-lib Guide [Part1]

This section is about transaction construction, signing and broadcast.


Set Keys

Set a privatekey(WIF) as signingkey for an account.

var MY_ACCOUNT = "my-account-name";
var MY_KEY = "wif*****";

remote.set_key(MY_ACCOUNT, MY_KEY)

this will cache the key into the client for later use of signing. The first argument (MY_ACCOUNT) is a label for the privatekey, could be arbitrary string but is convenient/intuitive by using just account name.

Alternate set-up, using Steemit's username + password
remote.set_auth('my-account-name', 'my-dummy-password');

this method will generate all keys from username + password, and cache them into the client.


Construct a transaction

// create a tx with MY_ACCOUNT as signer
var tx = remote.transaction(MY_ACCOUNT);

tx.add_operation('transfer', {
    from: MY_ACCOUNT,
    to: "the-recipient-account",
    amount: "1.000 STEEM",
    memo: "payment for xxx" 
});

// to manually set expiration, e.g. 30s.
tx.expiration = Math.ceil(Date.now()/1000 + 30);

For the full list of supported operations, have a look into operation.js

optional steps:

  • tx.complete() - to auto-complete the transaction with expiration = 60s later, fill the ref_block_num and ref_block_prefix fields with infos of last-irreversible-block.
  • tx.sign() - do the signing with private-key (of MY_ACCOUNT).
    in the case where set_auth() method was used instead of set_key(), the client would choose the appropriate key according to result of 'get_required_signature' API.

Broadcast transaction

There are two methods to accomplish this, both doing the similar jobs:

  • if the transaction is incompleted, perform tx.complete(); then tx.sign();
  • send the transaction out to all connected servers.

tx.broadcast() will callback immediately when the txn got into a head-block, or if there's an error.

// show immediate result whether the tx is included in a head block
tx.broadcast(function(err, res){
  // immedate result from broadcast_api.
  console.log(err, res)
})

tx.submit() will not callback until the txn was seen in an irreversible-block.

tx.submit(function(err, res){
  if (err) return console.log('Error:', err);
  if (res) console.log('Success & Final');
});

// broadcast result is still availabe by listening to 'submitted' event.
tx.once('submitted', function(err, res){
  // head-block result
  console.log(err || res)
})

More Example:

Check the examples folder of the repository.


Next: Steem-lib Guide [Part3]

Leave Steem-lib Guide [Part2] to:

Written by

Read more #steem-lib posts


Best Posts From ripplerm

We have not curated any of ripplerm's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From ripplerm