Implementing Vitalik’s vision | Ethereum Foundation Blog

The core concept was proven last summer when lead developers Vitalik Buterin, Gavin Wood, and Jeffrey Wilcke started a proof-of-concept series in Python, C++, and Go. A lot of engineering effort went into making it stronger. . We are all keen to release a stable command line client, and issues flagged by external audits are resolved as soon as they are discovered. Once this process is complete, a general release should occur soon. Meanwhile, the rest of the ecosystem continues to evolve into more sophisticated versions.

One of the challenges in a project of this scope and complexity is simply agreeing on certain things. Translating human abstractions into code is a difficult task. Even the words we choose It affects different ways to express ideas in code. As you build further around these core ideas and experience first-hand how reality and theory match, you can refine and disambiguate the underlying specifications. This all pays off because the team shares a clear and well-understood vision, which is effectively reflected to other developers from different disciplines.

Number of git commits over time

Complementing this, various test suites add an important level of confidence that different implementations comply with the specification. On the consensus side, we used a set of VM and state tests to simulate known results, and added randomization and fuzzing to increase this testing area. A series of system and networking tests are also run to ensure that clients communicate as expected and respond as expected to specific networking scenarios.

Not only are the tests designed to pass, but all kinds of error conditions are entered into the test suite so that known errors (such as running out of gas or sudden disconnection from a peer) are correctly reported. What this means is that when changes are made to client behavior, decisions are made based on data and metrics rather than theory or intuition.

Graphing node connectivity allows you to visually inspect the health of your network. Graphing node connectivity allows you to visually inspect the health of your network.

In addition to testing the core components, we implemented tests in external layers to ensure that clients respond the same way to many calls to the underlying system using readily available JSON. It has started.These specifications are linked on wiki Drive implementation and communication across diverse teams. This helps ensure that what’s in our heads is translated into code, and that all of it is tested and audited.

All of these improvements are important to the health of the ecosystem above them and help focus on very sensitive issues. In addition to improving the core virtual machine layer and serialization layer, a security audit was initiated with a third-party company experienced in decentralization and encryption technology.

A rough snapshot of development work
A rough snapshot of development work.

So how does this underlying technobabble get released to the general public? The Frontier rollout aims to release stable binaries on major operating systems (Mac, Windows, Linux). That’s what I’m aiming for. The primary interfaces primarily consist of a command-line client, an interactive JavaScript console, and JSON-RPC. go-ethereum recently renamed this client to “Geth”. This is a tribute to both. mass effect and old english.

Using a command-line client is a familiar process to many people. For example, you can create a new account as follows: get a new account, At this point the program will ask you to enter a password to protect your account. To start geth as a miner, call it with parameters as follows: Guess Mine. This is a great way to start interacting with the system, but it has its own limitations. For example, once you start mining, how do you pause it?

Using Geth's interactive JavaScript console

Using Geth’s interactive JavaScript console

For a more convenient way to control programs, Geth has JavaScript API. Start with a simple command. guess console. With Geth, this begins interactive consoleThis allows users to become familiar with JavaScript scripts to control the system from the terminal. For example, to find out a little more about your local node, run: admin.nodeInfo().

This control leverages, in part, the following functionality: ethereum.js, a JavaScript library that helps provide an easy-to-use interface for consoles as well as DApps.It relies on the well-documented JSON-RPC Interface for automated processing or integration into existing infrastructure. Work is ongoing on many of these components, as rigorous efforts are made to ensure that implementations speak the same language and are as compatible as possible.

Quick view of build status
Quick view of build status

Of course, all of this is published publicly on GitHub and includes various continuous integration aspects such as automated builds and reporting on major platforms. This is not a program that defines specifications. It is a specification that has been implemented and cross-tested between machines and humans around the world.

At the same time, work is progressing on several other components to the ecosystem, including GUI interfaces for Mist (DApp browser) and Mix (IDE). Many of the tools we use and build are new and may need to be patched upstream to ensure everything works as expected. This is a huge benefit to all open source development, and one of the many positive byproducts of all the time you actually spend engineering software. Although the wait time may seem long, progress and continued confidence in the overall system is steadily increasing.

Beyond the technical details of development, our communications team has continued to engage with the community and create public educational materials such as tutorials and videos. Additionally, our administrative staff can help you process payments and comply with various local laws, including onerous laws such as employment taxes.

Who needs sleep? Who needs sleep?

Joining the Ethereum project was an exciting and special experience.It started with just idea About a year ago, an extraordinary engineering effort was born, led by experts who implemented all the infrastructure needed to build an innovative distributed application platform.

When Netflix was introduced chaos monkeythey argued. “We’ve found that the best defense against big, unexpected failures is to fail often. By causing frequent failures, we force our services to be built in a more resilient way. .”. During the development of Ethereum, we have experienced first-hand the benefits it offers. Continuously burdening the system.

And while it’s a huge honor to be tasked with building the very platform you dream of, we build it because we want it to exist. Thank you for your patience while we think, sleep, and eat. dog food platform. We are as concerned as anyone about what DAapps will be released once mainnet goes live.

Related Article


Leave a Comment