Godfather of Ethereum

Often people asked me in the past: “What do you do with/for Ethereum?”. I always had a hard time answering this. The reason is, that I was kind of involved in Ethereum even before there was a name for it. So let me try to explain my connection to Ethereum a bit…

About a year and a half ago in autumn 2013, I was working as the lead developer with Vitalik Buterin (who later became the initiator of the Ethereum project) on another project with the name ‘Keidom’ (now called ascribe.io). The idea behind Keidom/Ascribe was to develop a custom colored-coin web-wallet for registering and transfering digital art in a secure way, based on the Bitcoin blockchain, with build-in proof-of-existence. We developed a working prototype during September and November 2013.

A little background

I met Vitalik for the first time in Berlin for the Berlin Bitcoin Summer Meetup and traveled with him and Mihai Alisie to Barcelona, to the (in)famous Calafou camp with an anarchistic touch. I met Vitalik again in Milan together with Amir Taki and then later in Vienna, together with the Mycelium guys.

Vitalik and me standing on the top of Montserrat near Calafou, near Barcelona.

During our Vienna meeting we set the goal to work together on the Keidom/Ascribe colored-coin wallet. From the beginning on, we were working in a distributed fashion. Vitalik left for Zurich and I went back to Berlin. About two weeks later there was the Amsterdam Bitcoin conference where we met again. Then Vitalik left Europe afterwards for Israel to start working on the side for the Mastercoin project and I went back to Berlin for a short time before leaving for Bulgaria for all of November.

Vitalik, who is considered ‘the father of Turing-complete financial scripts’ by the founder of Mastercoin ‘JR’, and me stayed in touch almost every day because of our colored coins wallet, so that one evening in the mid of November I asked Vitalik more about what Mastercoin actually is. I never really spend time to understand it because of the poor quality of the whitepaper, the unfortunate name “Mastercoin” (got recently rebranded to Omni), and the not-quite-right name ‘The Second Bitcoin Whitepaper’, as if Satoshi Nakamoto wrote it himself. Out of this conversation late at night Ethereum might have been born, as far as I can tell. To verify this I attach the chat log so that everyone can judge himself.

A few weeks later I read about Ethereum on reddit. I immediately knew what it was about…

In the manner of JR, I shall call myself from now on: “Godfather of Ethereum”. This is a joke, of course. Or maybe, not ;)

“Holy Grail of Decentralized Computing”

Back then we wanted to build something like Ethereum on top of Primecoin because it seemed like the most advanced and innovative crypto-currency at this time. Especially the innovation in the Proof-of-Work was significant. For the first time the work had more meaning than just securing the network and distributing coins.

In summer 2013, I had verbalized the “Holy Grail of Decentralized Computing”, inspired by Primecoin’s Proof-of-Work. I.e., to find computational problems which are hard-to-solve and which have at the same time meaningful solutions which are easy-to-prove, so that one can create a a blockchain-based crypto-currency and reward coins for solving the problems. I never really developed the idea though.

I observed the development of Vitalik’s Ethereum project for a while, took part at the first Meetup in Miami at the North American Bitcoin Conference in January 2014 but ultimately decided not to get more deeply involved because of personal reasons. Later on I spend quite some time with Ethereums CTO, Gavin Wood, in San Francisco and Berlin, where we developed an idea to solve the scalability issues of blockchain technology. I never had a job at Ethereum or received any form of compensation. Just some stories to share, and this is what I do here.

First Ethereum Meetup in Miami in January 2014 — I am the second from left in the back row.

Attached Chat Log from November 16th (US) | 17th (EU) 2013 —Uncensored. Scroll down to 01:05:01 for the more interesting part

[17.11.13 00:04:19] Yanislav: hey
[17.11.13 00:04:24] vbuterins: hey
[17.11.13 00:05:04] Yanislav: i have found this little nice program for importing ‘a block chain’ into mongodb… https://github.com/thelinuxkid/bitcoinquery
[17.11.13 00:05:13] Yanislav: should work also with primecoind or any other
[17.11.13 00:05:19] vbuterins: nice
[17.11.13 00:05:56] Yanislav: now it is just creating a nice front end
[17.11.13 00:06:08] vbuterins: not quite so easy
[17.11.13 00:06:09] Yanislav: … not sure about the reorganizations
[17.11.13 00:06:15] vbuterins: you also need to organize transactions by address
[17.11.13 00:06:39] vbuterins: well, actually, if you import into mongodb then you can just query it
[17.11.13 00:06:47] Yanislav: yes
[17.11.13 00:06:50] vbuterins: but it won’t be a nice query
[17.11.13 00:06:52] Yanislav: it is just a query
[17.11.13 00:06:59] Yanislav: why?
[17.11.13 00:07:09] vbuterins: you would need to check if any of the outputs or any of the inputs have a given address
[17.11.13 00:07:16] vbuterins: there’s no way mongo can index that
[17.11.13 00:07:23] vbuterins: so the runtime would be O(n )
[17.11.13 00:07:32] vbuterins: which is prohibitive for any scale
[17.11.13 00:07:45] Yanislav: hmm
[17.11.13 00:07:48] vbuterins: you need a tree structure by address to get O(log( n)) queries
[17.11.13 00:07:52] Yanislav: we can also use a graphdb
[17.11.13 00:07:54] vbuterins: sure
[17.11.13 00:07:58] Yanislav: which should make it easier
[17.11.13 00:08:00] Yanislav: right?
[17.11.13 00:08:25] vbuterins: I was about to suggest we make our own tree, but that would be easier
[17.11.13 00:08:47] Yanislav: https://github.com/BlueMeanie/bitcoingraphdb
[17.11.13 00:08:50] Yanislav: here it is
[17.11.13 00:09:33] Yanislav: but have not tried it out
[17.11.13 00:09:35] Yanislav: yet
[17.11.13 00:09:54] vbuterins: > with a powerful traversal framework for high-speed graph queries
[17.11.13 00:10:02] vbuterins: okay, sounds like it’s good enough
[17.11.13 00:10:39] Yanislav: where did you read this?
[17.11.13 00:10:50] vbuterins: neo4j database
[17.11.13 00:10:57] vbuterins: http://www.neo4j.org/learn/neo4j
[17.11.13 00:11:00] Yanislav: ah… sure
[17.11.13 00:11:12] Yanislav: everybody should know about graph databases :D
[17.11.13 00:12:16] Yanislav: a friend of mine in berlin build the worlds fastest graph database http://www.directededge.com
[17.11.13 00:12:27] Yanislav: they are also ycombinator alumni
[17.11.13 00:13:43] Yanislav: are you interested in helping me with building block explorers for prime coin? any maybe other coins (will be analogous and very easy)
[17.11.13 00:14:03] vbuterins: I’m a bit busy right now to be honest
[17.11.13 00:14:12] Yanislav: yep, i understand
[17.11.13 00:14:28] Yanislav: not sure why i do it actually
[17.11.13 00:14:54] vbuterins: for the glory of Sunny King?
[17.11.13 00:15:11] Yanislav: i regret having invested in prime coin :/
[17.11.13 00:15:16] Yanislav: right now at least
[17.11.13 00:15:24] vbuterins: ah, there’s a reason to do it
[17.11.13 00:15:32] vbuterins: make primecoin the first altcoin with a real blockexplorer
[17.11.13 00:15:36] vbuterins: increase the value of your investment
[17.11.13 00:15:44] vbuterins: you can even speculate around the announcement
[17.11.13 00:15:58] Yanislav: hmm
[17.11.13 00:16:07] Yanislav: is there really no alt coin with a real blockexplorer?
[17.11.13 00:16:19] vbuterins: well, ripple does
[17.11.13 00:16:22] vbuterins: and maybe msc
[17.11.13 00:16:30] vbuterins: none of them have a pushtx interface though
[17.11.13 00:16:51] Yanislav: a pushtx interface is the most simple thing
[17.11.13 00:16:56] vbuterins: I know
[17.11.13 00:17:00] vbuterins: and yet no one does it
[17.11.13 00:17:25] Yanislav: maybe because it is easy to run a own node with altcoins
[17.11.13 00:17:32] vbuterins: true
[17.11.13 00:17:43] Yanislav: what about this? http://block-explorer.com/
[17.11.13 00:17:49] vbuterins: yep, just saw that
[17.11.13 00:17:53] vbuterins: okay, ltc has one then
[17.11.13 00:18:35] Yanislav: even with charts http://block-explorer.com/charts
[17.11.13 00:20:16] Yanislav: do we still need alt block chains? i somehow missed the development of ‘the protocol layer’ on top of bit coin like msc
[17.11.13 00:20:49] vbuterins: well, coins like xpm and ppc are there to experiment with mining
[17.11.13 00:20:58] vbuterins: so they can’t pull an msc
[17.11.13 00:21:24] vbuterins: in fact, I actually think msc might benefit from moving onto xpm
[17.11.13 00:21:41] Yanislav: the tx fees in btc are so high…
[17.11.13 00:21:46] vbuterins: indeed
[17.11.13 00:23:09] Yanislav: maybe we should do a fork of mastercoin
[17.11.13 00:23:15] Yanislav: on the xpm blockchain
[17.11.13 00:23:31] Yanislav: and everybody can issue msc
[17.11.13 00:23:42] Yanislav: simply use this protocoll
[17.11.13 00:23:57] vbuterins: hmm, fork MSC without the centralized MSC
[17.11.13 00:23:59] vbuterins: maybe
[17.11.13 00:24:06] Yanislav: are there any good ‘msc 2.0’ proposals?
[17.11.13 00:24:12] Yanislav: why maybe?
[17.11.13 00:24:16] vbuterins: http://vbuterin.com/ultimatescripting.html
[17.11.13 00:24:26] vbuterins: trying to get that into msc 1 now ☺
[17.11.13 00:24:29] vbuterins: but if not, msc 2
[17.11.13 00:24:46] Yanislav: i also do not like the name of mastercoin
[17.11.13 00:24:47] vbuterins: > [6:24:00 PM] Yanislav: why maybe?

because without the centralized msc there’s not much funds to pay for development
[17.11.13 00:24:53] Yanislav: sounds like enslavement
[17.11.13 00:24:59] vbuterins: right
[17.11.13 00:25:51] Yanislav: as if there is a lack of opportunity for cryptocoindevs…
[17.11.13 00:26:15] vbuterins: well, historically, projects without funding have had a reduced amount of progress
[17.11.13 00:30:03] Yanislav: how much btc (in master coins) did the people get who gave a btc to the exodos address?
[17.11.13 00:30:20] vbuterins: exodus address collected 5000 btc
[17.11.13 00:30:26] vbuterins: investors got 100 msc per btc
[17.11.13 00:30:32] vbuterins: (1 msc == 0.2 btc now)
[17.11.13 00:30:55] Yanislav: no, i mean how much btc is a master coin? not how much it is worth
[17.11.13 00:31:10] vbuterins: a mastercoin isn’t like a colored coin
[17.11.13 00:31:18] vbuterins: you can send 100000 msc in 6000 satoshis
[17.11.13 00:31:24] vbuterins: the data is encoded in output addresses
[17.11.13 00:31:33] vbuterins: sort of like what we did with keidom
[17.11.13 00:32:04] Yanislav: ah… thanks for this explanation
[17.11.13 00:32:34] Yanislav: how does the verification of the msc transactions happen?
[17.11.13 00:32:47] vbuterins: there’s an algorithm which parses them
[17.11.13 00:32:58] vbuterins: looks through the blockchain essentially
[17.11.13 00:33:09] vbuterins: transactions which are invalid simply don’t count
[17.11.13 00:34:08] Yanislav: hmm… so it is possible to include invalid transactions in the block chain… does not sound so good
[17.11.13 00:34:29] vbuterins: nothing wrong with that
[17.11.13 00:34:40] vbuterins: mastercoin clients just pass over them and don’t care
[17.11.13 00:35:52] Yanislav: > you can send 100000 msc in 6000 satoshis how do you ‘own’ master coins if it is not like colored coins?
[17.11.13 00:36:17] vbuterins: say you get a mastercoin tx going to you
[17.11.13 00:36:29] vbuterins: mastercoin client parses it, says it gives you 20 msc
[17.11.13 00:36:37] vbuterins: then you send a msc tx of 10 msc to Bob
[17.11.13 00:36:46] vbuterins: mastercoin client parses it
[17.11.13 00:36:55] vbuterins: now says you have 10 msc and bob has 10 msc
[17.11.13 00:37:02] vbuterins: you send another msx tx of 15 msc to charlie
[17.11.13 00:37:05] vbuterins: mastercoin client parses
[17.11.13 00:37:11] vbuterins: notices that you don’t have 15 msc
[17.11.13 00:37:13] vbuterins: and passes over it
[17.11.13 00:37:19] vbuterins: you have 10 msc, charlie has 0 msc
[17.11.13 00:37:24] vbuterins: etc
[17.11.13 00:38:49] Yanislav: hmm ok. i prefer the colored coins approach very much
[17.11.13 00:39:00] vbuterins: yeah it is nicer in some ways
[17.11.13 00:39:08] vbuterins: the msc approach is much more powerful though
[17.11.13 00:39:21] vbuterins: since you can do on-chain decentralized exchange, contracts, etc
[17.11.13 00:40:27] Yanislav: i have to read more about it…
[17.11.13 00:43:10] Yanislav: i think you can do the same with colored coins but the difference is that you track the amount of ‘items’ you own directly with the amouth of satoshis you have got this specific colored address
[17.11.13 00:43:24] vbuterins: nope you can’t do decentralized exchange with colored coins
[17.11.13 00:43:26] vbuterins: you can do p2ptrade
[17.11.13 00:43:31] vbuterins: but you can’t make an order
[17.11.13 00:43:48] vbuterins: you can’t make a tx to say “anyone can take my 3 blue coins for 10 red coins”
[17.11.13 00:46:24] Yanislav: and who decides who gets the deal with msc? with colored coins you could publish somewthink like this in the block chain too but you have to send them actively after the condition is fulfilled. with msc the ‘algorithm’ does this for you, as far as i understand
[17.11.13 00:46:36] vbuterins: exactly
[17.11.13 00:46:46] vbuterins: you publish an order
[17.11.13 00:46:51] vbuterins: anyone can claim it
[17.11.13 00:46:57] vbuterins: by making a claim transaction
[17.11.13 00:47:12] Yanislav: what if there are two claims?
[17.11.13 00:47:33] vbuterins: there’s some ordering rule by which one takes precedence
[17.11.13 00:47:38] vbuterins: probably alphabetic by hash or something
[17.11.13 00:49:03] Yanislav: what if there are two competing algorithms? one which accepts a claim and another which rejects it for whatever reason?
[17.11.13 00:49:33] vbuterins: that’s like asking what if there are two different algorithms for interpreting btc
[17.11.13 00:49:43] vbuterins: the _definition_ of mastercoin is one specifiic algorithm
[17.11.13 00:51:16] Yanislav: well.. there are competing versions of btc
[17.11.13 00:51:23] Yanislav: and there where forks
[17.11.13 00:51:36] vbuterins: okay, suppose that there’s a fork of btc
[17.11.13 00:51:41] vbuterins: which does not actually change the code
[17.11.13 00:51:43] vbuterins: but
[17.11.13 00:51:58] vbuterins: says that all coins coming from DPR’s address are worth 0.1x as much
[17.11.13 00:52:02] vbuterins: that’s not a protocol change
[17.11.13 00:52:04] Yanislav: but there is no concept of ‘the longest chain’ in msc…?
[17.11.13 00:52:09] vbuterins: that’s an interpretation change
[17.11.13 00:52:11] vbuterins: no
[17.11.13 00:52:20] vbuterins: since msc just uses the bitcoin blockchain for transaction order consensus
[17.11.13 00:54:06] Yanislav: hmmm
[17.11.13 00:55:55] Yanislav: so it uses bit coin only as a distributed timestamping service for it’s own protocol. and for authorization…
[17.11.13 00:56:24] Yanislav: okay, makes sense
[17.11.13 01:00:16] Yanislav: ok… you have written meanwhile a colored coin whitepaper
[17.11.13 01:00:30] vbuterins: yep
[17.11.13 01:02:46] Yanislav: i wonder… is bit coin already scalable enough to cope with all those new transactions?
[17.11.13 01:05:01] Yanislav: if msc could encode itself in the bit coin block chain… that would be cool!!
[17.11.13 01:05:27] Yanislav: i mean: if algorithm changes are also embedded into the block chain…
[17.11.13 01:05:33] vbuterins: okay, that would be cool
[17.11.13 01:05:42] vbuterins: although I would rather exploit an altcoin for that
[17.11.13 01:05:43] Yanislav: can we do this with the xpm block chain please?
[17.11.13 01:05:45] vbuterins: xpm maybe
[17.11.13 01:05:53] Yanislav: (y)
[17.11.13 01:06:02] Yanislav: let’s work together on this
[17.11.13 01:06:25] vbuterins: so, mastercoin on xpm with superadvanced features and source code updates in chain
[17.11.13 01:06:34] vbuterins: also, proof of stake voting on source code updates in chain
[17.11.13 01:06:43] vbuterins: okay, we might have the first real DAC here
[17.11.13 01:06:46] vbuterins: well, okay, the second real DAC
[17.11.13 01:06:50] vbuterins: #1 was bitcoin
[17.11.13 01:07:35] Yanislav: mihai said the same about the micro crowd funding platform i will make out of thenewsbits… the second real dac
[17.11.13 01:07:43] vbuterins: hehe
[17.11.13 01:07:50] vbuterins: guess you’re in competition with yourself
[17.11.13 01:07:52] Yanislav: proof of stake voting looks promising
[17.11.13 01:09:31] Yanislav: yeah… this could even be the foundation of a new democratic algorithmic system
[17.11.13 01:09:35] Yanislav: demoalgorithmic
[17.11.13 01:10:46] Yanislav: if ‘the algorithm’ gets also embedded into the blockchain with all it’s future changes. the problem with msc is that it is a more or less proprietary algorithm located somewhere on centralized servers
[17.11.13 01:11:04] vbuterins: well, no, the msc algorithm is open source
[17.11.13 01:11:08] vbuterins: everyone runs it
[17.11.13 01:11:20] vbuterins: but hmm, the algorithm on the block chain

[17.11.13 01:11:26] Yanislav: but we have a master
[17.11.13 01:11:34] vbuterins: what do you mean?
[17.11.13 01:11:43] Yanislav: the inventor of mastercoin
[17.11.13 01:12:04] vbuterins: his position isn’t really more privileged than that of gavin
[17.11.13 01:12:15] vbuterins: well, now it is in practice since it’s a tightly linked community
[17.11.13 01:12:23] vbuterins: but in theory the mscorg will have roughly the same role
[17.11.13 01:12:57] Yanislav: how can we embed an algorithm into the block chain?
[17.11.13 01:13:09] vbuterins: 1. pick a programming language
[17.11.13 01:13:18] vbuterins: ideally it should be simple, but powerful
[17.11.13 01:13:23] vbuterins: and concise
[17.11.13 01:13:53] vbuterins: but it gets very problematic potentially
[17.11.13 01:14:00] vbuterins: what if someone publishes infinite loop code
[17.11.13 01:17:12] Yanislav: …or a trojan horse. but that’s not the way it will work. there needs to be also a genesis tx from which the algorithm starts and from which coins are emitted which allow changes — like diffs (in git)
[17.11.13 01:17:49] Yanislav: if accidentally an infinite loop gets published then this needs to be reversed with another tx
[17.11.13 01:18:30] vbuterins: but the other tx will get interpreted according to the new rules, which will not accept anything since they’ll just loop forever
[17.11.13 01:18:42] vbuterins: so it can get stuck
[17.11.13 01:19:06] vbuterins: otherwise, you would have to have some kind of core “constitution” that can’t be changed
[17.11.13 01:19:13] vbuterins: or maybe takes 10k blocks to change
[17.11.13 01:23:14] Yanislav: when the algorithm gets updated the execution of the old one stops and the new, updated version gets executed. in fact this can not be encoded in the blockchain but that is the only thing i think
[17.11.13 01:23:30] vbuterins: actually, that has to be editable as well
[17.11.13 01:23:38] Yanislav: this meta algorithm which starts and stops the execution

[17.11.13 01:23:39] vbuterins: what if there’s a massive discovery in crypto?
[17.11.13 01:23:55] vbuterins: so even the update process becomes insecure
[17.11.13 01:24:03] vbuterins: then it would have to be changed
[17.11.13 01:25:49] Yanislav: i assume that a massive discovery in crypto will lead to special measures which can not be foreseen today
[17.11.13 01:26:30] vbuterins: right, but it’s better to foresee as much as possible
[17.11.13 01:26:35] vbuterins: if it requires direct human intervention
[17.11.13 01:26:44] vbuterins: then it’s an opportunity for a hostile takeover
[17.11.13 01:27:38] Yanislav: any suggestions?
[17.11.13 01:27:42] Yanislav: i do not have
[17.11.13 01:28:18] vbuterins: I like the idea of having a core which requires, say, 90% consensus or 60% consensus + 10000 blocks to edit
[17.11.13 01:28:25] vbuterins: minimizes the risk
[17.11.13 01:28:35] vbuterins: most edits would not be to the core
[17.11.13 01:28:42] vbuterins: so there’s a nice separation of concerns
[17.11.13 01:29:04] Yanislav: a constitution
[17.11.13 01:29:11] vbuterins: yep
[17.11.13 01:31:39] Yanislav: hard to choose the best approach

The chat log got published with consent of Vitalik. Thank you, Vitalik! And have a good launch!