3m + 1 Processor Algorithm
Proof of Work
Consensus is a process for all the nodes in a distributed system to agree on a single state or to make same decision. Consensus algorithm is a set of protocols or rules for the process.
Consensus is complex because it is basically many body problem, and even far more complex when various constraints are included. One of the most difficult constraints is Byzantine fault.
Byzantine fault says that there could be abnormal or malicious nodes which don’t follow rules or even violate intentionally to prevent consensus…
A simple Ethereum node is necessary for test or proof-of-concept purpose. Although there are well-known Ganache or Ganache CLI (formally named TestRPC), sometimes you may want Geth in test or more earlier environment.
One of the most expensive tasks with Ethereum network is to keep accounts secure(protecting private keys against compromise or exposure). But in non production environment, security requirements for the accounts are not so high, but rather using pre-defined keys which are not secure at all is preferred to make tasks for providing initial balances more simple and programmable. In these cases, the following features are favorable.
Unlike other software programs, a smart contract, if deployed once into a specific address, cannot be modified or removed. This unique constraint makes the vulnerability in smart contracts far more dangerous than others. So more exhaustive testing is required.
Currently, the most well-known unit testing tools for Solidity unit testing are the following:
OpenZeppelin test environment has recently appeared, so it doesn’t seem verified enough, although it looks promising. Remix is one of the most powerful editing tools. But unit testing is more properly done in command-line mode…
Python’s built-in container types such as
dict show well why Python is so popular. They cover all the usage in view of mutability and item ordering, and the operations and behaviors are really intuitive, expressive and concise. Especially slice notation and high-order functions on these container types are even beautiful.
In Python, these container types are generalized by abstract base classes mechanism to be extended easily. The above class diagram depicts main classes in Python’s
collections.abs module and their relationship with built-in container types.
Blockchain 의 가장 중요한 개념 중에 하나인 consensus algorithm에 대한 친절하게 설명합니다. Consensus를 어렵게 하는 가장 기본적 문제인 Byzantine fault를 먼저 살펴보고, 이를 극복하기 위해서 제시되었던 3m + 1 processor algorithm, pBFT의 주요 원리를 설명합니다. 다음으로, 전혀 다른 접근으로 Byzantine fault 극복을 시도하는 PoW의 동작 원리와 PoW에서 본질적으로 발생하는 finality 문제를 설명하고, 이 finality 문제를 획기적으로 개선하기 위해 Ethereum 2.0에 가장 먼저 적용될 것으로 계획되어 있는 Casper …