ledgerloops v0.9.2
LedgerLoops
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