Ethereum

Ethereum JS Ecosystem Update | Ethereum Foundation Blog

Ethereum JavaScript work has been quite busy over the past few months. First of all, there was a really great hackathon using IPFS. You can read this great article by Dan Finlay. here.

Also during this period, Aaron Davis (to the devil) We’ve made great progress on JS light clients leveraging IPFS. libp2p Build an in-browser mesh network IPLD Provides a merclization layer. This will be an important task for building pure in-browser clients in the future. also Casey Detrio I worked on the standard json RPC test suite, you can see the results. here.

After the Seattle meetup we (liquid and wanderer) Attending a week-long hackathon in Budapest Ewasm. Elsewhere in the JS world, Fabian is working on a major refactoring of Web3.js for its 1.0 release, and Nick Dodson has been busy working on: etc.. In the remainder of this post, we’ll chart the different predictions this technology can deliver and go into detail about each individual project. All of these projects are open source and encourage community participation. If you’re interested, check it out, say hello, and send me a PR if you have time!

EWASM

of Ewasm The goal is to study EVM and WebAssembly Second, implement a client for your current system that can JIT efficiently (or Transcompiled) into WebAssembly.

A key part of evaluating WebAssembly for blockchain use is creating a test network, and the Ewasm team’s focus this year will be activating that test network. Testnet operations include:

  • Enabling hands-on work with ewasm for a wider audience
  • It provides a flexible experiment platform so you can perform related tasks, such as experiments using Casper.

The ewasm track is dedicated to ewasm research and development, and the client integration track is dedicated to developing the network and implementing a complete, lightweight client. But these two tracks have a lot of shared components. The Ewasm project is broken down into two main components: kernel layer, handles IPC and manages state and core VMs. This allows the same framework to be used for different VM implementations.

In summary, the main tasks of ewasm are:

  • Building an ewasm test network
  • Creating reusable “kernel” modules
  • ethereumjs-vm improvements

    • Use ewasm-kernel for message passing
    • Latest EIP implementation

  • Ewasm Integration Tool
  • Solidity-Ewasm integration (Solidity hackathon efforts coming soon!)

Please join us in our implementation efforts! We have a weekly meeting every Tuesday. Our communication channels are located in Matrix. Prima:matrix.org (or #ewasm on IRC or grid)

networking

There are several reasons to implement Ethereum networking in JS. First of all, you can implement a complete and lightweight Ethereum JS node. These light clients run in both node.js environments and browsers. A prerequisite for an in-browser light client is a “bridge” node. These nodes can also: signal server for WebRTC This is the network that browser light clients use to pass messages from the RLPx network to the webrtc network. This work is being led by Metamask using libp2p on IPFS. also RLPx The implementation has recently been revamped. crazy.

IPLD

Ethereum’s blockchain and on-chain state can be understood as a graph of data linked by hashes. IPFS/IPLD It has been proposed as a general system for describing and distributing hash-linked data. Therefore, we can describe Ethereum as an application layer on top of a hash-linked data availability platform. As a proof of concept, to the devil avatar IPLD resolver For Ethereum data formats that define where hash links are encoded within standard Ethereum formats (e.g. block and state tree nodes). This can be combined with other generic features of libp2p (a generic p2p networking stack on IPFS) to create a minimal Ethereum client focused on the consensus protocol and state transition mechanism. One advantage of this approach is that the networking layer is transport agnostic and can be used in environments that do not have access to the tcp/udp (e.g. browser) required by standard Ethereum clients. This project is still in the research phase. MetaMask hopes to use this approach to implement a browser-compatible Ethereum light client with a secondary network connecting to hybrid nodes.

Web3.js 1.0 released!

A new version of web3.js is in production. This is the largest codebase refactoring of the popular Ethereum library since its inception. that There are many convenience features such as confirm and receive events for transactions, a nice subscription API, and checksum verification for address inputs.

The API isn’t complete yet, but if you’d like to see it, check out the documentation. here.

The new version also has some breaking changes, but these updates are necessary to use the new API correctly and remove some deprecated methods, such as synchronous calls. In 1.0 promise Some events use “PromiseEvents” to better reflect multiple events on transaction execution. For those looking to transition their apps to the new web3, a migration guide will be available at launch to help make the transition from 0.xx as easy as possible.

Mist no longer exposes web3 by default. This will bring about major changes to dapps by encouraging bad habits of relying on web3 provided by Mist. Instead, there is an “ethereumProvider” that libraries like web3 can use to communicate with the underlying node. Web3.js automatically detects a given provider and exposes it to an API for easy instantiation.

If you can’t wait and want to try it out right now, check out the 1.0 branch: web3.js repository. Be careful, there may be a dragon!

S

S A new highly optimized lightweight JS utility. Ethereum Similar to web3.js, but lighter and suitable for asynchronous-only json RPC operations. bn.js. Current ongoing activities include:

  • Added ABI method for log decoding in ethjs-abi
  • Fixed small decoding bug in ethjs-abi (handling 0x addresses)
  • Merged new schema for private recovery and signed ethjs-schema.
  • Looking for help making ethjs-filter stateless (infura ready).
  • Bug fix in ethjs-contract
  • Update all documents
  • Upcoming ethjs version 0.2.7 release!

TestRPC

We’re working on a 4.0.0 release! This release includes:

  • Database persistence. You can now create test chains and store their data just like any other private chain!
  • It significantly reduces memory issues by organizing how data is stored in memory. There is a small cost to some performance, most of the time unnoticed unless you are doing thousands of transactions, but it does provide a significant increase in reliability.
  • Bundling for browsers (vendors only)
  • Easier to install on Windows and other platforms.

We will move TestRPC to: Truffle github organization This is mainly because it is maintained by Truffle developers. Important new TestRPC additions are coming soon. And we’re investing significant energy in documentation and branding that we’re integrating into the Truffle brand. I would appreciate any feedback on this move. Finally, TestRPC needs a new name to capture all the functions it can perform. If you have any ideas, please let me know!

The Ethereum JS community is interesting and amazing. There are many great projects underway. If you’re interested in the plugin, we have meetings every Friday at 3:00 EST / 10:00 PST / 18:00 UTC. see our grid channel For chat links. Also, we Upcoming Hackathon. Please let me know if you are interested.


Appendix (March 22, 2017): Some projects in this post are not directly supported by the Ethereum Foundation, but are included because they are relevant to the author’s updates to the overall Ethereum JS ecosystem.

Related Articles

Back to top button