What is Ripple for people in business and finance?
Ripple is a currency exchange and payment settlement platform built using blockchain technology. Unlike Ethereum that is a more universal distributed application platform, Ripple solves a more narrow set of problems such as sending payments (similar to Bitcoin), currency remittance, payments for invoices, as well as number of other use cases related to payment in different currencies between parties that may or may not trust each other. Ripple is fast, scalable, and provides number of functions needed to support different payment scenarios. XPR is a native Ripple currency with a fixed and limited supply coins. 100 Billion XPR cryptocoins are in circulation today and the same number will be in circulation tomorrow.
What is Ripple for a software engineer?
For a software developer, Ripple is distributed ledger platform accessible trough API. There are number of libraries to accommodate different developers's preferences and application needs. Scalability is not really an issue for Ripple at this point as the network can easily handle 1,500 transaction per second. Similar to Ethereum, developers can use test network to create and debug applications.
Getting started. Software installation and configuration
While number of different languages and operating systems can be used to create a development environment, I will focus on JavaScript/NodeJS approach on a computer running Red Hat Linux distribution.
Step 1. Install Yarn dependency manager
sudo npm install yarn -g
Step 2. Install NodeJS
Step 3. Install Ripple library for JavaScript
yarn add ripple-lib
How to Send Digital Currency?
To send a payment over the Ripple network, application should prepare, sign, and request the platform to send the payment. Code (payments.js) below illustrates these steps:
'use strict';
const RippleAPI = require('ripple-lib').RippleAPI;
//will use testnet at https://developers.ripple.com/xrp-test-net-faucet.html
const addressFrom = 'rJpr9nKV7aikyFdUtPvuumAHYXvNJady1e';
const secret = 'shiMavwRGuf2DhCbzVzaSKRSCMHkV';
const prodServer = 'wss://s1.ripple.com:443';
const testServer = 'wss://s.altnet.rippletest.net:51233';
const addressTo = 'rDDFfub1aJaqsrztpHcoaJPBYg1eQZxKzs';//(secret: shaQdo3WKSobVbqCCWwEagViALWXz)
const api = new RippleAPI({server: testServer});
const instructions = {maxLedgerVersionOffset: 5};
const payment = {
source: {
address: addressFrom,
maxAmount: {
value: '0.01',
currency: 'XRP'
}
},
destination:{
address: addressTo,
amount: {
value: '0.01',
currency: 'XRP'
}
}
};
function quit(message) {
console.log(message);
process.exit(0);
}
function fail(message) {
console.error(message);
process.exit(1);
}
api.connect().then(() => {
console.log('Connected...');
return api.preparePayment(addressFrom, payment, instructions).then(prepared => {
console.log('Payment transaction prepared...');
const {signedTransaction} = api.sign(prepared.txJSON, secret);
console.log('Payment transaction signed...');
api.submit(signedTransaction).then(quit, fail);
});
}).catch(fail);
While I do not mind my readers to use account in the code, my recommendation is to create your own test credentials for the addressFrom and addressTo that can be easily created on https://developers.ripple.com/xrp-test-net-faucet.html
To check the result, Ripple explorer can be found at at http://ripplerm.github.io/ripple-wallet/. Do not forget to switch the explorer to the test network!
How to Check Account Balance?
'use strict';
const RippleAPI = require('ripple-lib').RippleAPI;
//will use testnet at https://developers.ripple.com/xrp-test-net-faucet.html
const addressFrom = 'rJpr9nKV7aikyFdUtPvuumAHYXvNJady1e';
const prodServer = 'wss://s1.ripple.com:443';
const testServer = 'wss://s.altnet.rippletest.net:51233';
const api = new RippleAPI({server: testServer});
const instructions = {maxLedgerVersionOffset: 5};
function fail(message) {
console.error(message);
process.exit(1);
}
api.connect().then(() => {
console.log('Connected...');
api.connect().then(() => {
api.getBalances(addressFrom).then(balances => {
console.log(JSON.stringify(balances, null, 2));
process.exit();
});
});
}).catch(fail);
Comments