UNPKG

javalon

Version:

javascript api for the avalon blockchain

202 lines (170 loc) 4.73 kB
# Javalon ## Install #### Require style Install with `npm install --save javalon` inside your project. Then just ``` const javalon = require('javalon') ``` #### CDN style If you are working in the browser and want to load javalon from a CDN: ``` <script src="https://unpkg.com/javalon/bin/javalon.min.js"></script> ``` By default, javalon hits on the main avalon testnet (https://avalon.d.tube). You can eventually make javalon hit on your local node or any avalon node like so: ``` javalon.init({api: 'http://localhost:3001'}) ``` ## GET API ### GET single account ``` javalon.getAccount('alice', (err, account) => { console.log(err, account) }) ``` ### GET many accounts Just pass an array of usernames instead ``` javalon.getAccounts(['alice', 'bob'], (err, accounts) => { console.log(err, accounts) }) ``` ### GET account transaction history For the history, you also need to specify a block number. The api will return all blocks lower than the specified block where the user was involved in a transaction ``` javalon.getAccountHistory('alice', 0, (err, blocks) => { console.log(err, blocks) }) ``` ### GET single content ``` javalon.getContent('alice', 'pocNl2YhZdM', (err, content) => { console.log(err, content) }) ``` ### GET followers ``` javalon.getFollowers('alice', (err, followers) => { console.log(err, followers) }) ``` ### GET following ``` javalon.getFollowers('alice', (err, followers) => { console.log(err, followers) }) ``` ### GET contents by author You can pass a username and permlink (identifying a content) in the 2nd and 3rd argument to 'get more'. ``` javalon.getDiscussionsByAuthor('alice', null, null, (err, contents) => { console.log(err, contents) }) ``` ### GET contents by creation time You can pass a username and a permlink to 'get more'. ``` javalon.getNewDiscussions('alice', null, null, (err, contents) => { console.log(err, contents) }) ``` ### GET contents by popularity (hot) You can pass a username and a permlink to 'get more'. ``` javalon.getHotDiscussions(null, null, (err, contents) => { console.log(err, contents) }) ``` ### GET contents by feed This lists the contents posted by the following of the passed username. You can pass a username and a permlink in the 2nd and 3rd argument to 'get more'. ``` javalon.getFeedDiscussions('alice', null, null, (err, contents) => { console.log(err, contents) }) ``` ### GET notifications ``` javalon.getNotifications('alice', (err, contents) => { console.log(err, contents) }) ``` ### GET all votes by account ``` javalon.getVotesByAccount('alice', 0, (err, votes) => { console.log(err, votes) }) ``` ### GET pending votes by account ``` javalon.getPendingVotesByAccount('alice', 0, (err, votes) => { console.log(err, votes) }) ``` ### GET claimable votes by account ``` javalon.getClaimableVotesByAccount('alice', 0, (err, votes) => { console.log(err, votes) }) ``` ### GET claimed votes by account ``` javalon.getClaimedVotesByAccount('alice', 0, (err, votes) => { console.log(err, votes) }) ``` ### GET pending rewards by account ``` javalon.getPendingRewards('alice', (err, votes) => { console.log(err, votes) }) ``` ### GET claimed rewards by account ``` javalon.getClaimedRewards('alice', (err, votes) => { console.log(err, votes) }) ``` ### GET claimable rewards by account ``` javalon.getClaimableRewards('alice', (err, votes) => { console.log(err, votes) }) ``` ## POST API To send a transaction to the network, you will need multiple steps. First you need to define your transaction and sign it. ``` var newTx = { type: javalon.TransactionType.FOLLOW, data: { target: 'bob' } } newTx = javalon.sign(alice_key, 'alice', newTx) ``` After this step, the transaction is forged with a timestamp, hash, and signature. This transaction needs to be sent in the next 60 secs or will be forever invalid. You can send it like so ``` javalon.sendTransaction(newTx, function(err, res) { cb(err, res) }) ``` The callback will return once your transaction has been included in a new block. Alternatively, you can just want the callback as soon as the receiving node has it, you can do: ``` javalon.sendRawTransaction(newTx, function(err, res) { cb(err, res) }) ``` ## Convenience ### Generate a keypair ``` console.log(javalon.keypair()) ``` ### Growing variables Voting Power and Bandwidth are growing in time but the API will only return the latest update in the `vt` and `bw` fields of the accounts. To get the actual value, use votingPower() and bandwidth() ``` javalon.getAccount('alice', (err, account) => { console.log(javalon.votingPower(account)) console.log(javalon.bandwidth(account)) }) ```