ment when I started a Bitcoin brokerage in Israel some years ago, since I was
very much a low-level assembler and
crypto kind of guy at the time. But then
it took only three weeks for me to learn
enough Ruby on Rails and Heroku to
push out the first version of a management system for that brokerage. And
that’s because I had to think only about
the models, the views, and the controllers—which is to say only the business
processes. The hardest part, of course,
had to do with building a secure wallet,
but that was my expertise.
Anyway, moving on to today’s
banking world, if we look at all the
networks of financial institutions that
currently have mutualized workflows,
you won’t find any frameworks, abstraction layers, or mutualization of
infrastructure. There’s nothing that
people with good ideas can use to rapidly roll out new systems and then iterate on them or upgrade them. That
means if someone comes up with
financial innovations that might be
used, for example, in the health-care
domain to reduce payment counterparty risk, there’s just no easy way
right now to deploy that.
But should we find ourselves in a
world where every large enterprise is
part of one of these distributed networks that does mutualize infrastructure, then people would be able to
iterate very quickly on these sorts of
ideas. Basically, they would be able
to propose new products and deploy
them as smart contracts. The impact
of that could prove especially significant in some of the large industries
that so far have been slow to adopt innovations. I think the potential there
could be huge.
Bitcoin’s Academic Pedigree
Arvind Narayanan and Jeremy Clark
Research for Practice: Cryptocurrencies,
Blockchains, and Smart Contracts
Arvind Narayanan and Andrew Miller
Bitcoin’s Underlying Incentives
Yonatan Sompolinsky and Aviv Zohar
Copyright held by authors/owners.
Publication rights licensed to ACM.
(Amazon Web Services), GCP (Google
Cloud Platform), and Microsoft Azure.
FOURNIER: That’s impressive! Anything else?
KFIR: We also have an SDK, which
isn’t part of the platform architecture itself, but it does come with an
embedded distributed-ledger simulator, as well as a testing language that
provides a full semantic model of a
distributed ledger—meaning that if it
will run on your local machine, it will
run on the platform as well. That includes analysis tools that leverage the
structure of the language to check for
common mistakes and entitlement
logic. From the contracts you write, it
derives who, from among all the different participants on the network,
should be entitled to see this particular data. All the entitlement logic is
driven by the workflows, so that you,
the developer, don’t have to specify
any of that yourself.
FOURNIER: How did you manage that?
KFIR: That actually comes from the
structure of the language. As you specify your business logic, you specify the
workflows. Then, with reference to the
function signature, you can see all the
network participants that will be affected by this contract or might come
to be affected later on. This then allows
you to analyze that for all future evolutions of the contract.
FOURNIER: Cool! It sounds like you
ended up with something that could
prove to be quite powerful. Now tell
me about some of the more interesting engineering lessons you learned
along the way.
KFIR: From an engineering-man-agement perspective, there has been a
lot for me to learn. I came to this from
being a cryptographer who was working on cutting-edge zero-knowledge
proofs and SNARKs (succinct noninteractive arguments of knowledge),
so my intent was just to keep on using
all those cool tools when we founded
the company. Well, just as the token
model fell short of our expectations,
cutting-edge crypto also wasn’t such a
great fit. That was one lesson.
Another lesson is that, while I’d
never written in a functional pro-
gramming language before, I’m now
a complete convert to both functional
programming and strongly typed lan-
guages. I’ve come to believe that the
industry as a whole needs to evolve
toward defensive programming tech-
niques. Functional programming and
strong types are among the best tools
available for that.
I also learned that you can never be
wedded to the tools you have or the
code you’ve built. A year after launching this company, we had already
completely scrapped all the code we
had written and left behind most of
the tools we had been using. Maybe
we should have noticed earlier that we
could manage all states on the ledger
itself, but the important thing is that
we ultimately did discover that. And
that was largely because we listened
to our customers to find out what
their real problems were. This is how
we found we were going in the wrong
direction. Mind you, we didn’t do
exactly what the customers told us we
should do to resolve those problems,
since that would have put us completely off track as well.
I’ve also learned that you need to
put careful consideration into every
single trade-off. I’ll give you an example: Immutability of a blockchain
makes resolution and recovery from
data corruption a nontrivial problem.
Accenture came out with a paper promoting mutable blockchains and was
ridiculed for it. Having come from the
blockchain community, I understand
the reasons for the ridicule, but the
paper itself was actually pretty balanced. It’s just that the blockchain
true believers weren’t really capable
of reading it in an unbiased way. I’ve
learned you can’t afford to be doctrinaire like that, since you need to be
free to take an analytical approach to
every single significant tradeoff that
comes your way.
FOURNIER: If this model you’ve built
for distributed ledgers and the formal methods you use to define them
prove to be widely adopted, what sorts
of changes do you expect will follow? I
ask since one of the things you said you
hope to accomplish is to open up innovation throughout the industry.
KFIR: I think we will see the same
kind of Cambrian explosion we witnessed in the web world once we started using mutualized infrastructure
in public clouds and frameworks. An
example I often cite is that I had absolutely no knowledge of web develop-