Build, Scale, Operate
Building a robust bitcoin ecosystem
Eric Lombrozo & Meltem Demirors
Scaling Bitcoin Phase III

Our Goals Today●

Share our perspective on challenges in the bitcoin ecosystemand how they evolved●

Offer constructive ideas to begin growing our ecosystem andsolicit input●

Leave with some shared goals for our community

Share anonymous comments, ideas,
feedback at bit.ly/ScalingIdeas

The Bitcoin Ecosystem is Fragmented

Key Stakeholders
BUILD●●●●●Core developers andcontributors
CTOs / engineers
Academics
Business people
Product leads

SCALE●●●●●●Visionaries andinfluencers
Product UI / UXBusiness Development
Marketing and Sales
PR / Communications
Designers

OPERATE●●●●●Miners
Exchanges
Bitcoin 2.0 companies
Industry collaboration
projects / coalitions
Foundations and othercommunity groups

We need coordination among stakeholders
to keep bitcoin development moving forwardChallenges in the Bitcoin Today
Inherent Complexities

Native to the bitcoin protocol and the dependencies within it features can’t be solved for by other implementations

Accidental Complexities

Limitations arising from the manner in which bitcoin has
developed over time and the techniques used - real issue ismaintaining compatibility and not breaking consensus

Inadequate Methods &Techniques

Method of development is challenging - hard to gain experience,
meaningful contribution requires extremely skilled developers,
and many nuances and complexities in dev process

Continuous Re-invention
and Re-discovery

Re-creating incompatible or sub-par solutions to problems thathave already been solved, building different products toimplement the same services and features

A Quick Outline●●●●

15 min | Eric - Contributing in Bitcoin - Perspectives andSuggestions for Scalable Development
15 min | Meltem - Operating in Bitcoin - Connecting the Dotsin the Ecosystem
5 min | Review of Suggested Projects to Pursue
10 min | Q&A / Discussion

Contributing in Bitcoin
Scalable Development

First Dive into Bitcoin Developmenthttps://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

Getting More Advanced

https://en.bitcoin.it/wiki/Protocol_documentation

https://en.bitcoin.it/wiki/Protocol_documentation

https://en.bitcoin.it/wiki/Protocol_documentation

Developmental Bottlenecks

Developmental Bottlenecks

Developmental Bottlenecks

Developmental Bottlenecks

Developmental Bottlenecks

Layered Protocols

Layered Protocols

Layered Protocols

Layered Protocols

BIP 123

Layered Protocols

Layered Protocols

Layered Protocols

Layered Protocols

Layered Protocols

Consensus Rule Changes

Satoshi’s Vision

Source: Bitcoin talk circa June 2010. https://bitcointalk.org/index.php?topic=195.msg1611#msg1611

Source: Bitcoin talk circa June 2010. https://bitcointalk.org/index.php?topic=195.msg1617#msg1617

Hard Forks: convergence not guaranteedSoft Forks: convergence guaranteedBootstrapping a Global Network

Key Issues with Building Bitcoin

Key Issues with Building Bitcoin●

Developmental Bottlenecks

Key Issues with Building Bitcoin●●

Developmental Bottlenecks
Modularization & Layers

Key Issues with Building Bitcoin●●●

Developmental Bottlenecks
Modularization & Layers
Consensus Rule Changes

Key Issues with Building Bitcoin

●
●
●
●

Developmental Bottlenecks
Modularization & Layers
Consensus Rule Changes
Bootstrapping a Global Network

Node Architecture

Operating in Bitcoin
Reducing entropy

Bitcoin Today

Slow adoption
in othercommunities orecosystems●Bitcoin companies sellingto one another●●●●

Early adopters andspeculators
VC and institutional
investment
Entrepreneurs
Opportunists
Intellectuallycurious people

Who is Bitcoin for?
2.5%

Innovators

13.5%

34%

Early Adopters Early Majority

34%

Late Majority

16%

Laggards

Stakeholders in Bitcoin Today
Ability to Influence
Bitcoin Core / Dev
MinersIndustry / Exchanges
Industry / Wallets & Secuity
CorporatesAcademics
Policymakers
HOLDERS / observers
General Public

Level of InterestTarget market% adoption

Why it Matters
Penetration ofTarget Markett = timeWhy it Matters
Target market% adoption~100% adoption
BUILDOPERATESCALE
Target Market 1
3“Make it easier”

2 “Make it better”“Make it work”

1
2010

2015

?

t = timeTarget Market 1&2% adoption

Why it Matters
Target Market 2

Target Market 1

New technology
emergest = time

Stakeholders in Bitcoin Tomorrow
Ability to Influence
Bitcoin Core / Dev
MinersIndustry / Exchanges
Industry / Wallets & Secuity
CorporatesAcademics
Policymakers
HOLDERS / observers
General Public

Level of Interest

Total Population% adoption

Why it Matters

Bitcoin technology is going to continue
to change and evolve So how do we keep technology
development and “adoption” (usage)connected?

t = time

The Bitcoin Ecosystem is Fragmented

Are we Our Own Worst Enemy?
Bitcoin is inherently social software - how do groups work?
1.

Paradox of Groups - “This is good and must be protected”

2.

External enemies as a unifying cause - group cohesion in common cause

3.

Religious veneration - nomination and worship of an icon●

We built the system, assumed certain user behaviors●

Users came on and exhibit different behaviors●People running the system realize technological and social issues can’t in fact be uncoupled●But the conversational context of bitcoin development doesn’t scale

So how could bitcoin scale beyond the “group within the group”?

Beyond “the group within the group”
Knowledge

Exposure to or awareness of - knowledge is typically distributed
through both formal and informal channels

Attitudes

The way people view bitcoin has been fairly negative, primarily due tothe lack of knowledge and adoption

Adoption

The decision about whether or not to adopt bitcoin - here features,design, and user experience are key factors

Implementation

The ability to actually “implement” bitcoin and build bitcoin into othersystems or products

Confirmation

Comparing and evaluating bitcoin against other technologies anddetermining if it is actually an elegant or efficient solution

Attitudes●

Misunderstanding of actual features of bitcoin - misinformation●

Limited body of knowledge around non-technical areas of bitcoin●

Datasets to enable economic modeling / impact assessment for bitcoin adoptiondifficult to find, limited data available●

Contributing to bitcoin knowledge isn’t required to participate

Adoption●

Feature set of bitcoin as implemented today limits use cases●Bitcoin core development efforts working to resolve these challenges but limited
resources and many dependencies●Limited feedback loops on feature set

Implementation●Implementing bitcoin or building with bitcoin is really difficult●

Hard to find talent who can actually build because implementing requires you to “getunder the hood”●

Difficulty understanding how components of bitcoin infrastructure interact with one
another and what it means for building bitcoin applications

What Next?
Community Project Ideas

Project Ideas
Bitcoin Core1.

Separate dependencies like consensus, database, networking, etc and de-couple into separate units

2.

Design interfaces to decouple them into separate units

3.

Refactor / reimplement units

Bitcoin Applications
4.

Expanding research and body of knowledge around non-technical bitcoin issues and opportunities

5.

Semi-annual infrastructure workshops for exchanges, wallets, etc. to manage technical projects
more broadly across community

6.

Build reference architecture for how bitcoin fits into enterprise / app infrastructure to ease“adoption” pains

Share anonymous comments, ideas, feedback at bit.ly/ScalingIdeas

Technical Challenges●Points

Process and Workflow●Points

Suggestions●Points

Validation Engine (libconsensus)
Bitcoin Core Validation Logic
Commit: 2a0836f6d5e7c1d7e97bedb0e0ea33dcaf981f77
main.cpp:3732 ProcessNewBlock
L main.cpp:3665 AcceptBlock|
L main.cpp:3617 AcceptBlockHeader||
L main.cpp:3359 CheckBlockHeader|||
L pow.cpp:77 CheckProofOfWork
|
|
|
|
|
L Check that we have previous block and it is valid||
L main.cpp:3431 CheckIndexAgainstCheckpoint||
L main.cpp:3510 ContextualCheckBlockHeader|||
L Check nBits, timestamp, and block version|||||
L main.cpp:3188 AddToBlockIndex||

Validation Engine|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|

L main.cpp:3368 CheckBlock|
L main.cpp:3359 CheckBlockHeader (again)||
L pow.cpp:77 CheckProofOfWork|||
L Check merkle root and that merkle tree is not mutated|
L Check size limits|
L Check first and only first transaction is coinbase|
L FOREACH transaction||
L main.cpp:1046 CheckTransaction||
L Check vin is not empty||
L Check vout is not empty||
L Check tx size limit without witness||
L Check for negative or overflow output values||
L Check for duplicate inputs||
L IF is coinbase?
||
L THEN: Check coinbase script length||
L ELSE: Check that input prevouts are not null