Embark 2.6.0 - web3.js 1.0, any version of web3.js & solc. Whisper 5 & much more

To Update to 2.6.0

important

Embark’s npm package has changed from embark-framework to embark, this sometimes can create conflicts. To update, first uninstall embark-framework 1 to avoid any conflicts with npm uninstall -g embark-framework followed by npm install -g embark

to update from 2.5.2:

npm install -g [email protected]

afterwards make sure embark version returns 2.6.0.

In this release

You no longer need to wait for new releases of embark when a new version of web3.js or solc comes out as this can be now configured. Embark will take care of downloading and using the new versions. You can specify a list of nodes the dapp should attempt to connect to (instead of being limited 1). Whisper 5 is now supported.

Support for web3.js 1.0 and (nearly) ANY web3.js version

Embark now supports web3.js 1.0 by default, however you can now also specify exactly which version of web3.js you want to use so you can still use 0.19.0 or newer versions of 1.0.

in config/contracts.json

{
"default": {
....
"versions": {
"web3.js": "1.0.0-beta"
}
...
}

If ,for example, you wish to use 0.19.0 you can specify it in the config as "web3.js": "0.19.0"

Support for ANY solc version

You can also configure the solc compiler you wish to use and it should work, so long that solc release does not contain breaking API changes.

config/contracts.json

{
"default": {
....
"versions": {
"solc": "0.4.17"
}
...
}

Specify nodes DApp should attempt to connect to

You can specify which nodes your dapp should try to connect in each enviroment. “$WEB3” is a special keyword to specify the existing web3 object.
The following config would attempt to use the existing web3 object and if unavailable attempt to connect to localhost:8545

config/contracts.json

{
"development": {
...
"dappConnection": [
"$WEB3",
"http://localhost:8545"
],
...
}

Specify node to deploy to

Before Embark would assume this would be the same as the one configured in blockchain.json which could lead to some ackward configs for some devs, this has now been changed so you can specify it in the contracts config.

config/contracts.json

{
"development": {
...
"deployment": {
"host": "localhost",
"port": 8545,
"type": "rpc"
},
...
}

Specify node to connect whisper to

config/communication.json

{
"default": {
"enabled": true,
"provider": "whisper",
"available_providers": ["whisper", "orbit"],
"connection": {
"host": "localhost",
"port": 8546,
"type": "ws"
}
}
}

Specify url to get assets

You can specify for each environment what IPFS node to get the assets from

config/storage.json

{
...
"development": {
....
"getUrl": "http://localhost:8080/ipfs/"
},
...
"livenet": {
....
"getUrl": "https://gateway.ipfs.io/ipfs/"
}
}

Plugin API changes

plugin

The following events are deprecated: abi-vanila, abi, abi-contracts-vanila, abi-vanila-deployment and have been renamed to code-vanila, code, code-contracts-vanila, code-vanila-deployment

plugins that use these events will get deprecation warnings, the deprecated events will be removed in 2.7.0

New Blockchain options

geth

The following fields are now available at config/blockchain.json to enhance embark blockchain:

  • “wsHost” - to specify the websocket host (default: localhost)
  • “wsPort” - to specify the websocket port (default: 8546)
  • “wsOrigins”- to specify the allowed origin of the websocket requests (default: FALSE), must be specified to something like http://localhost:8000 for the websocket connection to work.
  • “wsApi” - to specify the apis available through websockets (default: [‘eth’, ‘web3’, ‘net’, ‘shh’])

Misc Bugfixes and Improvements

bug fixes

  • tests no longer need the requires and initialization and can be run directly with embark. however you can still use these requires to run it yourself with mocha or your own preferred test framework
  • embark and mocha are no longer dependencies in the created dapp
  • you can specify a test file with embark test <filename>
  • tests no longer need testrpc to be installed first
  • EmbarkJS.isNewWeb3() to detect if web3 1.0 is available
  • demo app updated to use web3.js 1.0 and solc 0.4.17
  • warn user when websocket or http CORS is not set
  • tolerate solc compiler warnings, which could cause a crash sometimes

Thank you

A big thanks to all that contributed to this release including Todd Baur and Jacob Beauchamp.

Chatroom

To discuss about Embark or Dapp development, please join us at the gitter channel