Signing Transactions

Transactions are a formal action on a blockchain. They can contain a simple sending of Lumen (Payment Operation) or sending tokens creating data on the blockchain network and so on.

In Rabet, use the rabet.sign method to send a transaction.

This function accepts a transaction envelope XDR and network type(mainnet or testnet), When you put an XDR string and network type inside this method and call it, Rabet decodes it and shows its details to the user, if the user confirms and signs it, you receive the signed XDR.

You should only call the sign function after calling the connect function. Otherwise, it would return the not-connected error.

// Connect before signing
const xdr = 'AAAAAL...'; // Only string
const network = 'mainnet'; // mainnet / testnet

rabet.sign(xdr, network)
    .then(result => console.log(`Signed xdr: ${result.xdr}`))
    .catch(error => console.error(`Error: ${error.message}`));

You can also use

StellarSdk.Networks.PUBLIC

or StellarSdk.Networks.TESTNET

for the netowrk parameter.

Example of the message that the user will receive when calling the sign function:

You can use StellarSdk to submit the transaction to the network. Like so:

var StellarSdk = require('stellar-sdk');
var server = new StellarSdk.Server('https://horizon-testnet.stellar.org');

const xdr = 'AAAA...';
const envelope = StellarSdk.xdr.TransactionEnvelope.fromXDR(xdr, 'base64');
var transaction = new StellarSdk.Transaction(envelope, StellarSdk.Networks.TESTNET);

server
  .submitTransaction(transaction)
  .then((result) => {
    console.log(result);
  })
  .catch((e) => {
    console.log(e.response.data);
  });

You can learn more about Stellar SDKs here.

Last updated