zsl-web3.js v0.21.14
Quorum JavaScript API, middleware to talk with a Quorum node over RPC with ZSL functions
This is a forked version of the web3 API form ethereum which provides extensions for quorum and the zsl library.
You will need to run Quorum with the ZSL precompiles installed to get full functionality.
This is the Ethereum compatible JavaScript API which implements the Generic JSON RPC spec. It's available on npm as a node module, for bower and component as an embeddable js and as a meteor.js package.
You need to run a local Ethereum node to use this library.
Installation
Node.js
npm install web3
Yarn
yarn add web3
Meteor.js
meteor add ethereum:web3
As Browser module
Bower
bower install web3
Component
component install ethereum/web3.js
- Include
web3.min.js
in your html file. (not required for the meteor package)
Usage
Use the web3
object directly from global namespace:
console.log(web3); // {eth: .., shh: ...} // it's here!
Set a provider (HttpProvider)
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}
Set a provider (HttpProvider using HTTP Basic Authentication)
web3.setProvider(new web3.providers.HttpProvider('http://host.url', 0, BasicAuthUsername, BasicAuthPassword));
There you go, now you can use it:
var coinbase = web3.eth.coinbase;
var balance = web3.eth.getBalance(coinbase);
You can find more examples in example
directory.
Contribute!
Requirements
- Node.js
- npm
sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm
sudo apt-get install nodejs-legacy
Building (gulp)
npm run-script build
Testing (mocha)
npm test
Quorum functions
'privateSendTransaction' for sending privateFor
transactions:
web3.eth.privateSendTransaction({"from": "0xed9d02e382b34818e88b88a309c7fe71e65f419d", "to": "0xed9d02e382b34818e88b88a309c7fe71e65f419d", "data":
"0x00", "privateFor" : ["QfeDAys9MPDs2XHExtc84jKGHxZg/aj52DTh0vtA3Xc="]})
Commands for dynamic-raft branch of Quorum:
from web3-quorum
web3.quorum.nodeInfo
web3.quorum.isBlockMaker(address)
web3.quorum.isVoter(address)
web3.quorum.canonicalHash(blockHash)
web3.quorum.makeBlock()
web3.quorum.vote()
web3.quorum.pauseBlockMaker()
web3.quorum.resumeBlockMaker()
Istanbul functions
web3.istanbul.getSnapshot(blockHashOrBlockNumber) returns [object]
web3.istanbul.getSnapshotAtHash(blockHash) returns [object]
web3.istanbul.getValidators(blockHashOrBlockNumber) returns []string
web3.istanbul.getValidatorsAtHash(blockHash) returns []string
web3.istanbul.propose(address, auth)
web3.istanbul.discard(address)
web3.istanbul.candidates returns map[string] boolean
ZSL functions
web3.zsl.loadTracker(filename) returns JSON
web3.zsl.saveTracker(filename, JSON) returns bool
web3.zsl.getCommitment(rho, pk, value) returns hash
web3.zsl.getSendNullifier(rho) returns hash
web3.zsl.createShielding(rho, pk, value) returns proof
web3.zsl.createUnshielding(rho, sk, value, treeIndex, authPath) returns proof
web3.zsl.createShieldedTransfer(rho1, sk1, value1, treeIndex1, authPath1, rho2, sk2, value2, treeIndex2, authPath2, outrho1, outpk1, outvalue1, outrho2, outpk2, outvalue2) returns proof
web3.zsl.verifyShieldedTransfer(proof, anchor, spend_nf1, spend_nf2, send_nf1, send_nf2, commitment1, commitment2) returns bool
web3.zsl.verifyShielding(proof, send_nf, commitment, value) returns bool
web3.zsl.verifyUnshielding(proof, spend_nf, root, value) returns bool
web3.zsl.getNewAddress() returns keypair
web3.zsl.getRandomness() returns buffer
web3.zsl.debugShielding() returns bool
web3.zsl.debugUnshielding() returns bool
web3.zsl.debugShieldedTransfer() returns bool
Migration 0.13.0 -> 0.14.0
web3.js version 0.14.0 supports multiple instances of web3 object. To migrate to this version, please follow the guide:
-var web3 = require('web3');
+var Web3 = require('web3');
+var web3 = new Web3();
Community
Other implementations
- Python Web3.py
- Haskell hs-web3
- Java web3j
- Scala web3j-scala
- Purescript purescript-web3
- PHP web3.php