blockapps-web3 v1.1.8
BlockApps + Web3
This package provides a web3 provider for the BlockApps backend, built on top of the Hooked Web3 Provider. It allows you to use BlockApps easily in a primarily web3-based project.
This is not a wrapper around web3, so when using BlockApps + Web3, you must still include web3 in your project.
A couple considerations before using this library:
BlockApps is currently in active development. Because of this, the web3 provider doesn't currently point to a server synced with the actual Ethereum network. This will change very soon.
In the same vein as the above, all
eth_callrequests cost Ether, and are treated just like transactions sent viaeth_sendTransaction.
Install
Node:
$ npm install blockapps-web3var BlockAppsWeb3Provider = require("blockapps-web3");Browser:
<script type="text/javascript" src="bignumber.js"></script>
<script type="text/javascript" src="ethereumjs-tx.js"></script> <!-- dist version -->
<script type="text/javascript" src="web3.js"></script>
<script type="text/javsacript" src="./build/blockapps-web3.js"></script>Note that to avoid dependency coupling, you must include BigNumber, ethereumjs-tx, and web3 on your own when using BlockApps-Web3 in the browser. Those three dependencies must be included in the browser before including the blockapps-web3.js script.
Note: ethereumjs-tx will eventually be removed as a dependency once BlockApps is able to process raw transactions server side.
To Use:
// See below for options passed to the constructor.
var provider = new BlockAppsWeb3Provider({ ... });
web3.setProvider(provider);Then use web3 like normal!
Options
The BlockAppsWeb3Provider constructor takes a single parameter with the following keys:
transaction_signer: See Hooked Web3 Provider.BlockAppsWeb3Provideris an extension of the HookedWeb3Provider, using a separate service for signing transactions.coinbase:string- the coinbase address associated witheth_coinbase. You only need to specify this value if your app will calleth_coinbasevia web3.accounts:array- the addresses associated with this provider. You only need to specify this value if your app will calleth_accountsvia web3.host:string- location of the BlockApps server this provider will point to. Defaults tohttp://hacknet.blockapps.net(for now)
Implemented Methods
The following lists the currently implemented methods. Some methods have restrictions: For instance, any method that takes a block number of "latest", "earliest" or "pending" will default to "latest" regardless of what's passed to web3. Some of these restrictions are because they haven't been implemented; other restrictions are due to functionality not yet implemented by BlockApps.
eth_coinbaseeth_accountseth_blockNumbereth_getBlockByNumber(does not support "pending"; partially implemented, needs work)eth_calleth_sendTransactioneth_sendRawTransactioneth_getCompilerseth_compileSolidityeth_getCode(does not support "pending")eth_getBalanceeth_getTransactionCount(does not support "pending")eth_getTransactionByHasheth_getTransactionReceipteth_newBlockFiltereth_getFilterChanges(only supports block filters)eth_uninstallFilterweb3_clientVersion
Developing & Contributing
BlockApps + Web3 uses truffle to manage all parts of the project. First install truffle if you haven't already:
$ npm install -g truffleTo build the distributable files in ./build:
$ truffle buildTo have truffle automatically build the distributable files during development on every save:
$ truffle watchTo run the automated tests:
$ truffle test