Skip to content

Instantly share code, notes, and snippets.

@justmoon
Last active January 30, 2017 17:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save justmoon/f9509f70404f2ace5950fe2a3df574c7 to your computer and use it in GitHub Desktop.
Save justmoon/f9509f70404f2ace5950fe2a3df574c7 to your computer and use it in GitHub Desktop.
Construct 2017 Interledger Workshop Pre-Briefing

Welcome aspiring connectors!

Explanation

What is Interledger?

Interledger is a protocol for payments across different (types of) ledgers. It is inspired by the history, architecture and philosophy of the Internet Protocol.

For those of you familiar with Lightning - it's basically like Lightning across different ledgers, even different types, e.g. from PayPal to a blockchain:

Brave human amidst two tesla coils

Interledger uses a layered architecture, where the Interledger Protocol acts as an abstraction layer, separating applications from the underlying value transfer systems:

Interledger consists of four layers, from the bottom: ledger, interledger, transport, application

The Interledger Protocol (ILP) is pretty easy to explain:

  • The receiver tells the sender their ILP address and a randomly generated shared secret

    {
      "destination_account": "us.nexus.justmoon.~recv.example",
      "shared_secret": "jxqBN72dbmkyZj77weuPTA"
    }
  • The sender sends some amount on their local ledger to their connector. They attach an ILP packet, which looks something like this:

    {
      "destination_account": "us.nexus.justmoon.~recv.example",
      "destination_amount": "0.43",
      "data": {
        "token": "AGKvODzCjXlocG1Mqo6NuQ"
      }
    }

    Your ILP module of choice will take care of most of these details. Most importantly, it'll make sure that the local transfer that it creates has a condition on it that only the receiver can fulfill. That way the sender doesn't have to trust any of the connectors along the way!

Inspiration

We've been working on Interledger for close to three years and on Interledger.js for just over two. We've integrated it into BitTorrent and made real-money payments happen. This year, it's finally time to put all the pieces together and launch a live network.

Your mission, should you choose to accept it, is to either:

  • build a value-transfer application using ILP (your app will then work with any ILP ledger!)
  • connect your favorite value transfer system (i.e. ledger) to the Interledger via a ledger plugin.

Preparation

To do this, you will need:

  • Mac OS or Linux command prompt

    Windows users: We are looking for contributors to help us make Interledger.js Windows-compatible, so please come talk to us if you're interested in helping. In the meantime, we recommend setting up a Linux prompt using Vagrant:

    vagrant init ubuntu/xenial64
    vagrant up --provider virtualbox
    vagrant ssh
  • Node.js 6.9.4

    Find the binaries and installation instructions

    Will Node 5.x.x or lower work?

    No.

    Will Node 7.x.x or higher work?

    Maybe, but we recommend enjoying the endless fun that unstable Node.js releases can give outside of the hectic workshop environment.

  • Ability to install native Node.js modules

    For this you need:

    • On Unix:
      • python (v2.7 recommended, v3.x.x is not supported)
      • make
      • A proper C/C++ compiler toolchain, like GCC
    • On Mac OS X:
      • python (v2.7 recommended, v3.x.x is not supported) (already installed on Mac OS X)
      • Xcode
        • You also need to install the Command Line Tools via Xcode. You can find this under the menu Xcode -> Preferences -> Downloads
        • This step will install gcc and the related toolchain containing make
  • Internets!

    The wifi credentials should be:

    Username: CoinDesk (not case sensitive) Password: Construct

    If it doesn't work (because we all know wifi is perfect and never fails...), please talk to us right away!

  • Your blockchain of choice (optional)

    Interledger can run on top of other blockchains or ledgers. If you want to connect Interledger to an existing blockchain, make sure you have:

    • A running instance of said blockchain (preferably locally, but a remote instance will do), e.g. Chain Core, Lightning, Ethereum
    • A JavaScript client library for said blockchain (preferred, if there is one), e.g. Chain JS SDK, Web3
  • The Spirit of Adventure!

    Rewatch your favorite Indiana Jones movie or create a home-made training montage to get yourself ready. Just don't crash your biplane into the Innovation Hangar, please!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment