ledgerloops

0.9.2 • Public • Published

LedgerLoops

Deploy

Examples:

  • in-browser: shows a graph of friends, you can tell friends to give each other money, and they will cooperate to find and resolve ledger loops. See the README in that folder for instructions.

  • client-server: example where Marsellus lives server-side, while Mia and Vincent live client-side. Shows and tests how WebSockets are used. See the README in that folder for instructions.

  • monetized-blog: static page, combined with a WebSocket server, that will accrue money when a user with the LedgerLoops browser extension visits this page. This demo is still under construction. See https://github.com/ledgerloops/ledgerloops/issues/21.

  • monetized-blog-heroku: Same as the previous demo, but running on Heroku instead of on localhost, and with the statics server rolled into the LedgerLoops agent server.

  • API

  • LedgerLoops.Agent constructor (myName, mySecret, credsHandler)

    • myName and mySecret are used when connecting to a server
    • credsHandler ({ peerName, peerSecret}) => Boolean is called when someone else connects as a client
  • Agent#addClient: function(options) { return this.hubbie.addClient(Object.assign({ myName: this._myName, mySecret: this._mySecret, protocols: [ LEDGERLOOPS_PROTOCOL_VERSION ] }, options)); }

  • Agent#listen: function (options) { return this.hubbie.listen(Object.assign({ protocolName: LEDGERLOOPS_PROTOCOL_VERSION }, options)); }

  • Agent#addTransaction: function (peerName, amount) return this._propose(peerName, amount); }

  • Agent#getBalance ()

    • returns a hash with the bank's current, payable, receivable balances.

* Agent#payIntoNetwork(peerName, value)

* instruct the Loops engine to use your balance from the account with that peer to pay into the network

* Agent#receiveFromNetwork(peerName, value)

* instruct the Loops engine to use the account with that peer to receive balance from the network

Messages and their fields when on the wire:

  • ADD

    • protocol: 'ledgerloops-0.8'
    • msgType: 'ADD'
    • msgId: integer
    • beneficiary: 'you' or 'me'
    • amount: integer
    • unit: 'UCR'
    • note: String (optional)
  • ACK

    • protocol: 'ledgerloops-0.8'
    • msgType: 'ACK'
    • msgId: integer
  • REJECT

    • protocol: 'ledgerloops-0.8'
    • msgType: 'REJECT'
    • msgId: integer
    • reason: String (optional)
  • COND

    • protocol: 'ledgerloops-0.8'
    • msgType: 'COND'
    • msgId: integer
    • condition: <256 bits in a lower-case hex string>
    • beneficiary: 'you' or 'me'
    • amount: integer
    • unit: 'UCR'
    • routeId: String (from probes)
    • note: String (optional)
  • FULFILL

    • protocol: 'ledgerloops-0.8'
    • msgType: 'FULFILL'
    • msgId: integer
    • preimage: <256 bits in lower-case hex format>
  • PLEASE-FINALIZE

    • protocol: 'ledgerloops-0.8'
    • msgType: 'PLEASE-FINALIZE'
    • msgId: integer
  • PROBES

    • protocol: 'ledgerloops-0.8'
    • msgType: 'PROBES'
    • cwise: Array of 64-bit lower-case hex strings
    • fwise: Array of 64-bit lower-case hex strings

Readme

Keywords

none

Package Sidebar

Install

npm i ledgerloops

Weekly Downloads

0

Version

0.9.2

License

MIT

Unpacked Size

3.45 MB

Total Files

40

Last publish

Collaborators

  • michielbdejong