interledger-deprecated / Ilp Kit

Everything needed to create a ledger and connect it to the Interledger

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Ilp Kit

Nault
⚡ The most advanced Nano wallet with focus on security, speed and robustness
Stars: ✭ 228 (+216.67%)
Mutual labels:  ledger, wallet
Purser
Interact with Ethereum wallets easily
Stars: ✭ 76 (+5.56%)
Mutual labels:  wallet, ledger
conceal-desktop
Conceal Desktop (GUI)
Stars: ✭ 65 (-9.72%)
Mutual labels:  ledger, wallet
chrome-extension-wallet
Harmony Chrome Extension Wallet
Stars: ✭ 54 (-25%)
Mutual labels:  ledger, wallet
E Wallet
Wallet project based on laravel. The project is integrated with stripe for card payments and paypal APIs. It is 90% complete with features including deposits send money with cool ui. Clone the project and start your wallet system asap. cheers
Stars: ✭ 65 (-9.72%)
Mutual labels:  wallet, payments
Rfcs
Specifications for Interledger and related protocols
Stars: ✭ 345 (+379.17%)
Mutual labels:  ledger, payments
nanook
Ruby library for making and receiving payments and managing a nano currency node
Stars: ✭ 17 (-76.39%)
Mutual labels:  payments, wallet
Ledgerjs
Ledger's JavaScript libraries
Stars: ✭ 397 (+451.39%)
Mutual labels:  wallet, ledger
Nowallet
This project is a secure Bitcoin brainwallet app written in Python.
Stars: ✭ 52 (-27.78%)
Mutual labels:  wallet
Nestjs Braintree
A module for braintree reoccurring payments and transactions 💳
Stars: ✭ 62 (-13.89%)
Mutual labels:  payments
Stripy
Micro wrapper for Stripe's REST API.
Stars: ✭ 49 (-31.94%)
Mutual labels:  payments
Nanolightwallet
RaiBlocks Light Wallet written in NodeJS
Stars: ✭ 55 (-23.61%)
Mutual labels:  wallet
Qbundle
Windows Wrapper / Launcher for the BRS wallet and other burst tools
Stars: ✭ 63 (-12.5%)
Mutual labels:  wallet
Bitcoinaddress
Bitcoin Wallet Address Generator
Stars: ✭ 52 (-27.78%)
Mutual labels:  wallet
Blue App Iota
IOTA wallet application for Ledger Blue and Nano S
Stars: ✭ 67 (-6.94%)
Mutual labels:  ledger
Paymint
The Paymint Wallet is a secure and user friendly Bitcoin wallet
Stars: ✭ 48 (-33.33%)
Mutual labels:  wallet
Gxchain Light
GXChain light wallet UI(公信宝轻钱包)
Stars: ✭ 47 (-34.72%)
Mutual labels:  wallet
Shopping cart
A basic shopping cart for digital products. Made with Django
Stars: ✭ 70 (-2.78%)
Mutual labels:  payments
Cone
A ledger.
Stars: ✭ 66 (-8.33%)
Mutual labels:  ledger
Savjeecoin
A simple blockchain in Javascript. For educational purposes only.
Stars: ✭ 1,097 (+1423.61%)
Mutual labels:  wallet

Notice: ILP kit does not support the new features introduced by ILPv4. Use moneyd to try out ILPv4.


ILP Kit

ILP wallet with hosted ledger and connector instances


circle Deploy to Heroku FOSSA Status

Setup

Development

See https://github.com/interledgerjs/ilp-kit/blob/master/docs/DEV.md

Table of contents

Environment variables

Note: Most of the variables can either be set as environment variable or in a config file. The default config file is env.list. Environment variables take precedence over variables set in the config file.

Required
Name Example Description
API_HOSTNAME wallet.com API public hostname.
API_PORT 3000 API private port (used as both public and private port if API_PUBLIC_PORT is not specified).
DB_URI postgres://localhost/wallet URI for connecting to a database.
API_LEDGER_ADMIN_USER admin Ledger admin username.
API_LEDGER_ADMIN_PASS pass Ledger admin pass.
CLIENT_HOST wallet.com Publicly visible hostname.
CLIENT_PORT 4000 Client port.
LEDGER_ILP_PREFIX wallet. This is required if the API_LEDGER_URI is not specified
Optional
Name Example Description
API_CONFIG_FILE custom-env.list Specifies the path from which to load the config file. Needs to be defined as environment variable.
API_PRIVATE_HOSTNAME localhost Private API hostname.
API_PUBLIC_PORT Api public port.
API_SECRET qO2UX+fdl+tg0a1bYt Api secret. Used to generate the session, oauth and condition secrets.
API_RELOAD true Turn on/off the reload endpoint.
API_LEDGER_URI http://wallet.com:2000 Ledger URI: requests go to this uri (a ledger instance will be started by the wallet if this is not specified).
API_LEDGER_PUBLIC_URI http://wallet.com/ledger Ledger public URI (used in account URIs). Specified if different from the API_LEDGER_URI.
API_TRACK_GA UA-XXXXX-X Google Analytics Tracking ID.
API_TRACK_MIXPANEL Mixpanel Tracking ID.
API_GITHUB_CLIENT_ID Github application client id (used for github oauth).
API_GITHUB_CLIENT_SECRET Github application client secret (used for github oauth).
API_MAILGUN_API_KEY Mailgun api key (for sending emails).
API_MAILGUN_DOMAIN wallet.com One of the domains attached to the Mailgun account.
API_ANTIFRAUD_SERVICE_URL antifraud.wallet.com Anti fraud service url. This will enable an additional step in registration that asks for personal details
API_ANTIFRAUD_MAX_RISK 20 Maximum tolerable risk level for the registration
API_EMAIL_SENDER_NAME info Email sender name
API_EMAIL_SENDER_ADDRESS [email protected] Email sender address
API_REGISTRATION true Enable/Disable registration
WALLET_FORCE_HTTPS true Force all connections to use HTTPS.
WALLET_TRUST_XFP_HEADER true Trust the X-Forwarded-Proto header.
CONNECTOR_ENABLE false Run a connector instance
CLIENT_PUBLIC_PORT 80 Client public port (if different from CLIENT_PORT)
CLIENT_TITLE ILP Kit Browser title and logo
Default five-bells-ledger environment variables

(used if the API_LEDGER_URI is not specified). You can read more about these variables in the five-bells-ledger readme.

Name Default
LEDGER_DB_URI DB_URI
LEDGER_ADMIN_USER API_LEDGER_ADMIN_USER
LEDGER_ADMIN_PASS API_LEDGER_ADMIN_PASS
LEDGER_HOSTNAME API_HOSTNAME
LEDGER_PORT API_PORT + 1
LEDGER_PUBLIC_PORT CLIENT_PORT
LEDGER_PUBLIC_PATH ledger
LEDGER_CURRENCY_CODE USD
LEDGER_CURRENCY_SYMBOL $

Advanced Mode

ILP kit UI comes with an "advanced mode" for developers and advanced users. You can activate it with a hot-key: option+d on Mac or alt+d on Windows.

Architecture

ILP kit consists of:

  • a Five Bells ledger (the 'ledger' process)
  • a Node.js (developed on v7.7.1) 'api' process, containing a connector and SPSP receivers
  • html+js+css statics, built using React
  • an nginx instance for serving the html files and proxying requests to ledger and api

Backend (REST API)

The backend is responsible for communicating with the ILP ledger, creating accounts, sending payments and keeping the payment history.

API docs

How it works

The wallet implements SPSP for initiating and receiving payments.

This means it announces an SPSP address of the form [email protected], and links this to two things:

  • an ILP address (roughly of the form g.us.usd.host.user, but this is not enforced, and your ILP address is not a unique string)
  • a cryptographic key pair, used indirectly to generate and fulfill crypto conditions.

The connector component can peer with other connectors on the Interledger, and basically acts as a router.

The ledger can handle payments that are conditional on a cryptographic condition, and that's where the power of ILP lies. When you send money to an account on another ledger, your connector conditionally pays the next connector, all the way to the receiving connector. The receiving connector adds a conditional payment to the receiving ledger, and the receiver (which lives in the API component) fulfills the crypto condition, using (a key which from) the receiver's public key.

Only the receiver of an Interledger payment can fulfill the crypto condition, and that's why you can be sure that the intermediate hops will all roll back if the money cannot be safely delivered.

Webfinger

Webfinger is used to lookup account/user identifiers.

Example request

curl -X GET
https://wallet.example/.well-known/webfinger?resource=acct:[email protected]

Example response

HTTP/1.1 200 OK
{
  "subject": "acct:[email protected]",
  "links": [
    {
      "rel": "https://interledger.org/rel/ledgerUri",
      "href": "https://red.ilpdemo.org/ledger"
    },
    {
      "rel": "https://interledger.org/rel/socketIOUri",
      "href": "https://red.ilpdemo.org/api/socket.io"
    },
    {
      "rel": "https://interledger.org/rel/ledgerAccount",
      "href": "https://red.ilpdemo.org/ledger/accounts/alice"
    },
    {
      "rel": "https://interledger.org/rel/sender/payment",
      "href": "https://red.ilpdemo.org/api/payments"
    },
    {
      "rel": "https://interledger.org/rel/sender/pathfind",
      "href": "https://red.ilpdemo.org/api/payments/findPath"
    },
    {
      "rel": "https://interledger.org/rel/spsp/v2",
      "href": "https://red.ilpdemo.org/api/spsp/alice"
    }
  ]
}

Client

The client is a web app built on React that implements user signup/signin, sending payments and payment history.

Client state management is handled by Redux.

Theme Customization

npm install generates a src/theme/variables.scss which contains the theme colors. You can manually edit it.

Database has two tables: Users and Payments.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].