I started reading a pull-request to ethereum/EIPs repository as an EIP editor. The PR soon became a storm, and out I am not an EIP editor anymore.

During these two weeks, I never doubted good intention of everybody, for cheaper/expensive coordination, for full/partial/zero recoveries, irritated/questioning/angry. I was learning while running and changing colors of the pull-request, as a result confusing people, until I figured out I don’t have the capacity to act there.

I don’t regret having made a splash. I believe the issue deserved attention from the Ethereum community. However, I also felt the pain of people who were…

There is an attempt to institutionalize requests to recover lost funds in Ethereum. Before these requests arrive, I should prepare for them by setting guidelines for myself. Others can do what they please.

I am not going to move a finger for a protocol change affecting particular accounts. In the rest of this post, I describe more precisely “not moving a finger for” and “affecting particular accounts.”

“Not moving a finger for” means, I am not going to make an active, favorable contribution while the change is getting accepted. For those changes, I’m not going to take the tiniest bureaucratic…

It has been reported that many instances of a multisig wallet got stuck and the contained funds are not accessible. I have not checked this. Given the history, I have to keep watch on the possibility of another bug in the same code that defies the currently common story.

If anything is lost, similar things will happen again and again. Coding is not easy. Reading code is even harder. Ethereum is an environment with various adversaries.

My preference: after anything, I’m happy if EVM is still simple enough. …

I write about what I’m doing currently for Ethereum, and why.

Yellow Paper

Yellow Paper is the specification of Ethereum. It’s notoriously terse, but still one of the most precise descriptions of valid Ethereum blocks and the Ethereum Virtual Machine. The contents are getting older with lots of issues and pull-requests. Since it is not licensed, the author has the control over it. What I can do is to submit certain delta’s between protocol versions or certain small fixes. I got some of my previous pull-requests merged, but there is still a lot to be done.

I’m currently syncing the mainnet using…

Tokens are blockchains’ way of controlling people. Bitcoin and Eth make people mine. When Casper comes in, Eth will make people vote on blocks. Moreover, if you misstep, your deposit will disappear. Tokens can facilitate rewards and punishments without identifying people. Tokens are like wages and employee badges.

Before you buy tokens, ask yourself:

  • Is there a way to earn the tokens by providing some critical service for the application to survive?
  • Do you lose the tokens when you are lazy, careless or malicious?

If your answers are no and no, perhaps the application does not need you. The application…

I saw vault.sol. It’s about protecting ETH against a stolen private key. A vault key and a recover key are involved. When the vault key is stolen, you can reach your recover key and disable the vault key. For this to work, the vault key can only perform delayed withdrawals, allowing you to notice the theft and use the recovery key. When both keys are stolen, you can even destroy the vault so that nobody can withdraw ETH. That’s supposed to discourage thieves (of course, this doesn’t chase thieves away if they purely want to harm you).

The contract can…

I stumbled upon an interesting document by the KEVM project. The KEVM project is an attempt at defining the Ethereum Virtual Machine, whose goal overlaps with eth-isabelle project. The nature of these projects involves typing in some of the contents of the yellow paper. I’ve done that to some extent. It’s nice finding somebody down the same road.

In section 9.4.2, exceptions are described as if they are all catchable before an opcode is executed

In one of the coredev calls, I heard about the history. The idea was to separate gas calculation and actual execution. Moreover, the gas calculation…

I have been developing Bamboo, a programming language for Ethereum contracts. It is super-immature. Every time I write a new contract, I find a bug in the compiler. So, please help me find bugs in the Bamboo compiler by emptying this Ethereum contract on the Ropsten test network.

Warning: it’s Ropsten. If you don’t know Ropsten, it is not the Ethereum network you know about. Do not send ETH to the mentioned address. It would be lost.

Warning: anything you send to this account will be probably permanently lost to no avail. Do not send anything you would miss.


It’s been nine months since I started working on the Bamboo compiler. There was a long dormant period, but this week the compiler started emitting some bytecode. Some of the compiled code even work as intended. So, have a look at the GitHub repo or join the Gitter room (especially if you write OCaml; the compiler is written in OCaml).

Bamboo is my answer for designing a reasonable programming language for Ethereum contracts. By reasonable I mean easy to reason about. Especially I chose to make it explicit what can be called when.

In all existing programming languages for Ethereum…

Sometimes I’m asked about the Metropolis release. The list of Metropolis EIPs looks stable already. I’m sharing how I read them, but I’m just rambling. For the precise understanding, please go to the EIP texts.

EIP-86 Abstraction of transaction origin and signature

Probably the deepest change in the Metropolis release is this “account abstraction”. Currently, every Ethereum transaction is signed by a private key holder of a single account. This EIP changes that. A special address 0xffffff..ff (called NULL_SENDER) will be a publicly-available transaction sender, and anybody can send a transaction from this special address without using a private key, although it’s up to miners whether they…

Yoichi Hirai

a convenience logician

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store