Ripple Gateway Project

Deploy a Ripple Gateway today with the Ripple Gateway template server software. The Ripple Gateway template is designed for organizations who want to test the waters with Ripple and begin issuing currency to users of the Ripple value network.

The software includes out of the box the ability for users to register with their email to your gateway and associate their ripple identity. For the operator of your gateway, tools are provided to make setup and configuration of your gateway as seamless and minimal as possible. The goal of the gateway tool is to launch a new gateway on Ripple in less than ten minutes after the software is installed.

A Ripple Gateway processes deposits of assets to and their corresponding withdrawals from the Ripple value network. In essence they are the holders of assets and issuers of corresponding currency to Ripple users.

A Ripple Gateway holds assets on behalf of users

sudo apt-get -y update
sudo apt-get -y install build-essential zlib1g-dev libssl-dev libreadline6-dev libyaml-dev
cd /tmp
tar -xvzf ruby-2.0.0-p353.tar.gz
cd ruby-2.0.0-p353/
./configure --prefix=/usr/local
sudo make install
View ripple_trust.js
var args = process.argv;
if (args.length != 7) {
console.log("arguments: <currency> <amount> <issuer> <account> <secret>");
var currency = args[2];
var amount = args[3];
var issuer = args[4];

Steven is an aspiring cryptographer, a technologist, polyglot and passionate entrepreneur, always open to exciting new challenges. A long-time alternative currency enthusiast and software engineer, Steven ventured from Libery Coin to Silver Bullion to Bitcoin before discovering Ripple, the digital asset and payment protocol that supports all his favorite currencies and more.

View ripple_gateway.js
var Gateway = require('ripple-gateway');
var gateway = new Gateway({
databaseUrl: 'postgres://postgres:password@localhost:5432/ripple_gateway',
hotWallet: {
address: 'someRippleAddress'
secret: 'correspondingSecret'
coldWallet: {
address: 'someRippleAddress'


  • sends payments to Ripple REST upon writing to a SQL table
  • verifies outbound payments using Ripple REST notifications
  • standard error messages for HTTP calls
  • ability to map one deposit to n outgoing ripple transactions
  • ability to map one incoming ripple transaction to n withdrawals
  • record external_transaction_id of deposit in n ripple transactions
  • record ripple_transaction_id of ripple_transaction in n withdrawals
  • query to return n outgoing ripple transactions given a deposit
  • query to return n withdrawals given incoming ripple transaction
sudo apt-get update
sudo -y apt-get upgrade
## Install Boost
sudo apt-get -y install build-essential g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev
wget -O boost_1_55_0.tar.gz
tar xzvf boost_1_55_0.tar.gz
cd boost_1_55_0/
./ --prefix=/usr/local
## Ubuntu 14.04 on AWS
sudo apt-get update
sudo -y apt-get upgrade
## Git
sudo apt-get -y install git
## Scons
sudo apt-get -y install scons
View gatewayd_training_material_requirements
Partners do not need to install rippled.
Virtual machine is a pre-built system where everything works.
Aiming for training and understanding purposes:
** First Half Hour
Rippled, Ripple REST, and Gatewayd are already running
At this point they have no idea how the gateway works, but they can already use the gateway.
View ripple-lib
var ripple=function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return t[n].call(null,i,i.exports,e),i.loaded=!0,i.exports}var r={};return e.e=function(t,r){,e)},e.modules=t,e.cache=r,e(0)}({c:"",0:function(t,e,r){function n(t){var r=e[t];Object.keys(r.prototype).forEach(function(t){var e=/([A-Z]{1})[a-z]+/g;if(e.test(t)){var n=t.replace(e,function(t){return"_"+t.toLowerCase()});r.prototype[n]=r.prototype[t]}})}e.Remote=r(1).Remote,e.Request=r(2).Request,e.Amount=r(3).Amount,e.Account=r(4).Account,e.Transaction=r(5).Transaction,e.Currency=r(6).Currency,e.Base=r(7).Base,e.UInt160=r(8).UInt160,e.UInt256=r(9).UInt256,e.Seed=r(10).Seed,e.Meta=r(11).Meta,e.SerializedObject=r(12).SerializedObject,e.RippleError=r(13).RippleError,e.binformat=r(14),e.utils=r(15),e.Server=r(16).Server,e.sjcl=r(15).sjcl,e.config=r(17),["Remote","Request","Transaction","Account","Server"].forEach(n)},1:function(t,e,r){function n(t){function e(t){"transaction_all"===t&&(!a._transaction_su