Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/interledgerjs/ilp-plugin-btp
This has been moved to the monorepo https://github.com/interledgerjs/interledgerjs
https://github.com/interledgerjs/ilp-plugin-btp
Last synced: 2 months ago
JSON representation
This has been moved to the monorepo https://github.com/interledgerjs/interledgerjs
- Host: GitHub
- URL: https://github.com/interledgerjs/ilp-plugin-btp
- Owner: interledgerjs
- Archived: true
- Created: 2017-12-28T21:09:23.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-27T06:39:28.000Z (over 1 year ago)
- Last Synced: 2024-07-22T20:05:54.339Z (2 months ago)
- Language: JavaScript
- Homepage:
- Size: 1010 KB
- Stars: 8
- Watchers: 6
- Forks: 7
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ILP Plugin BTP
> One plugin to rule them all[![NPM Package](https://img.shields.io/npm/v/ilp-plugin-btp.svg?style=flat)](https://npmjs.org/package/ilp-plugin-btp)
[![CircleCI](https://circleci.com/gh/interledgerjs/ilp-plugin-btp.svg?style=shield)](https://circleci.com/gh/interledgerjs/ilp-plugin-btp)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
[![Known Vulnerabilities](https://snyk.io/test/github/interledgerjs/ilp-plugin-btp/badge.svg)](https://snyk.io/test/github/interledgerjs/ilp-plugin-btp) [![Greenkeeper badge](https://badges.greenkeeper.io/interledgerjs/ilp-plugin-btp.svg)](https://greenkeeper.io/)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`](https://github.com/interledgerjs/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
```js
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.
* `sendMoney (amount: string) -> Promise`: sends `amount` of units to the peer. This should be done via a BTP `TRANSFER` call.
* `_handleMoney (from: string, btpPacket: BtpPacket) -> Promise>`: This function is called on an incoming BTP `TRANSFER`.BtpSubProtocol is made up of:
* `protocolName: string`: The name of this side protocol. ILP-level information must be named `ilp`.
* `contentType: number`: The content type. 0 is `application/octet-stream`, 1 is `text/plain-utf8`, and 2 is `application/json`. Mainly used for logging and smart deserializing.
* `data: buffer`: The actual protocol data.