interledgerjs / ilp-plugin-btp

This has been moved to the monorepo https://github.com/interledgerjs/interledgerjs
8 stars 7 forks source link

ILP Plugin BTP

One plugin to rule them all

NPM Package CircleCI JavaScript Style Guide Known Vulnerabilities Greenkeeper badge

Used right out of the box, this plugin is capable of representing a data channel with no money involved. It will send BTP messages with no knowledge of the data within, so it can be used for ILP packets. The sendMoney function is a no-op, because there is no system involved handling money.

The main use of this plugin, however, is as a building block for plugins that do have an underlying ledger. In this way, it's the successor of ilp-plugin-payment-channel-framework

Plugins that sub-class the AbstractBtpPlugin should override sendMoney and _handleMoney at least.

Use as a Data Channel for ILP

const server = new BtpPlugin({
  listener: {
    port: 9000,
    secret: 'shh_its_a_secret'
  }
})

await server.connect()

const client = new BtpPlugin({
  server: 'btp+ws://:shh_its_a_secret@localhost:9000'
})

await client.connect()

server.registerDataHandler(serverHandler)
client.registerDataHandler(clientHandler)

await client.sendData(IlpPacket.serializeIlpPrepare({
  // ...
})

Use as a Base Class for a New Plugin

Two functions must be defined in order for the plugin to handle money.

BtpSubProtocol is made up of: