This has been fairly busy for a few months for Ethereum Javascriptors. To start, there was a very good hackathon with IPF. You can read the excellent writing of Dan Finlay here.
In addition, during this period Aaron Davis (Kumavis) has made excellent progress to a JS light client using IPF LIBP2P To build an in-naval network and IPLD To provide the Merklization layer. It will be an important work in the future to build customers purely between the browser. Also Casey Detrio worked on a standard JSON RPC test series, whose results you can see here.
After the meeting of Seattle, we (us (we (Axic And Vagabond) Sitted for a week -long hackathon in Budapest to chop certain details of get a boost. Elsewhere in JS World, Fabian makes a huge refactor of web3.js for version 1.0, while Nick Dodson was occupied with ethj. The rest of this article will trace the different projections that this technology could provide as well as in certain details on each individual project. All these projects are all open source and encourage the participation of the community, so if you are interested, please consult them, say hello and send an RP if you have time!
Get a boost
Ewasm The objective is to search and replace the EVM with Weba researches And secondarily, implement a customer for the current system which can be effectively jité (or transomplied) to Weba SOUND.
A major element of the evaluation of Weba Vismas for the use of blockchain will be to create a test network and this year, the objective of the EWASM team will give life to this test network. The Testnet work will be:
- Activate practical work with Ewasm for a wider audience
- Activate related work, such as experiences with Casper to do by providing a flexible platform for experimentation
The EWASM track is dedicated to the research and development of Ewasm, while the customer integration track will be devoted to the development of the network and existed complete and light customers. But there are many components shared on these two tracks. The Ewasm project is divided into two main components: the Nucleuswhich manages the IPC and manages the state and the main virtual machine. This should allow us to use the same framework for various VM implementations.
So, to summarize, the major tasks for the Ewasm are:
- Build an Ewasm test network
- Creation of a reusable “nucleus” module
- Famper Ethereumjs-VM
- Use Ewasm-Kernel for the message passing
- Implement the latest EIP
- Ewasm integration tools
- Integration Solidity-Ewasm (upcoming effort for the Hackathon of Solidey!)
Come and join the implementation effort! We have semi-hebdomedary meetings on Tuesday. Our communication channel is on the matrix at Prima: Matrix.org (or #ewasm on IRC or frosty))
Networking
There are several reasons to have an implementation of Ethereum networking in JS. On the one hand, this would allow us to implement a complete and light Ethereum JS node. These light clients would work both in a node.js environment and in a browser. A prerequisite for a light customer in the browser is the “bridge” nodes. These nodes could also act as signaling servers For webrtc Network that light browser customers would use to relay messages from the RLPX network to the webbrtc network. This work is led by Metamask using IPFS libp2p. Also the RLPX The implementation has recently been reorganized by fanatide.
IPLD
The blockchain and the state on Ethereum can be included as a graphic of hash data. IPFS / IPLD is offered as a generic system to describe and distribute data related to hash. Therefore, we can describe Ethereum as an application layer above the data availability platform linked to hash. As proof of concept, Kumavis implemented IPLD Resolvers For Ethereum data formats which define where the hash bonds are coded inside canonical Ethereum formats (for example, Bloc and node of state trie). This, combined with other generic features of LibP2P (generic P2P networking battery), allows the creation of minimum Ethereum customers which focus on the consensual protocol and the state transition mechanism. One of the advantages of this approach is that the networking layer is indigenous and can be used in environments that do not have access to TCP / UDP (such as the browser) whose standard Ethereum customers need. This project is still in the research phase. Metamask hopes to use this approach to implement an Ethereum Light Customer Compatible with the browser via a secondary network, bridged by hybrid nodes.
Web3.js 1.0 entering!
A new version of web3.js is in preparation. It is the largest refactor of the code base since the creation of the popular Ethereum Library. He will have many convenience features such as the confirmation and reception event on transactions, a beautiful subscription API and check -in checks on address entries.
The API is still not yet finalized, but if you can’t wait to take a look, you can consult the documents here.
The new version will also have a lot of rupture changes, but these updates are necessary to obtain the right API and delete certain obsolete methods along the way, such as synchronous calls. 1.0 will only have promises And in certain events, “promised” to better reflect several events to the execution of a transaction. For those who plan to transmit their applications to the new web3, there will be a migration guide when launching to help make the transition of 0.xx as simple as possible.
In Mist, there will be no more web3 exposed by default, as it encourages the bad habit of relying on the web3 supplied by Mistovided, which makes changes in disastrous rupture for DAPPs. Instead, there will be an “EthereUmprovider”, which libraries like Web3 can use to speak to the underlying node. Web3.j will automatically detect any given supplier and expose it to its API for easy instantiation.
For those who cannot wait and want to try it now, see branch 1.0 in the Repo web3.js. Know that there could be dragons!
Ethj
Ethj is a new highly optimized and light JS utility for Ethereum Designed to work with the JSON RPC, a bit like web3.js but lighter, asynchronous only and using Bn.js. The current activity current includes:
- Addition of ABI methods for the decoding of newspapers in ethjs-aab
- After correcting a small decoding bug in ethjs-abbi (manipulation of 0x addresses)
- Fusion of new scheme for personal recovery and sign ethjs-schema
- Looking for help to make state -free statements (infura ready)
- Fixing bugs in ethjs-contract
- Documentation updates everywhere
- Version of version 0.2.7 of the next version 0.2.7!
Testrpc
Work on version 4.0.0! This version will include:
- Persistence of the database. You can now create a test chain and save this data, like any other private channel!
- Clean how data is stored in memory, which should considerably reduce memory problems. Although there is a slight cost in certain performance, which will be mainly imperceptible unless you do thousands of transactions, this will result in a huge increase in stability.
- Grouping for the browser (supplier only).
- Install easier on Windows and possibly other platforms.
We will move the testrpc to the Organization of GitHub Truffle Because it is mainly maintained by truffle developers. There are new, which is to come to come to come. And we invest an important energy in the documentation and the brand image that unifies them under the brand of truffles. Any comment on this decision is appreciated. Finally, the TestRPC needs a new name that gives off everything it can do. If you have an idea, let us know!
The Ethereum JS community is an exciting and wonderful thing to be part. There are many major projects. If you are interested in connecting, we have weekly meetings from Friday at 3:00 am HNE / 10:00 PST / 18:00 UTC. Watch Our Gitter canal For the cat link. In addition, we organize a Upcoming hackathon. Let us know if you are interested.
ADDENDUM (March 22, 2017): Note that some of the projects of this article are not directly supported by the Ethereum Foundation, but have been included because they are relevant for the overall update of the Ethereum JS ecosystem by the author.