blockchain introduction

49
Часть 1 Введение в блокчейн Мешков Дмитрий

Upload: dmitry-meshkov

Post on 12-Apr-2017

19 views

Category:

Economy & Finance


0 download

TRANSCRIPT

Page 1: Blockchain introduction

Часть 1Введение в блокчейн

Мешков Дмитрий

Page 2: Blockchain introduction

Structure

Часть 1● Зачем нужен блокчейн● Беглый взгляд● Идеологические проблемы

Часть 2● Транзакции● Блоки● P2P● Технические проблемы

Page 3: Blockchain introduction

WHY?

Page 4: Blockchain introduction

Why?

Page 5: Blockchain introduction

Blockchain as databaseПлюсы:Плюсы:

● Надежность (тысячи копий)● Неизменность (изменить данные не может никто)● Отсутствие цензуры (никто не запретит положить данные)

МинусыМинусы:● Высокая стоимость ($2000 за Мб)● Низкая пропускная способность (50Гб в год)● Нет гарантий хранения (SPV mining, исчезнет)● Скорость записи и front-running

??● Публичность (все видят все транзакции, не положить

конфиденциальные данные)

Page 6: Blockchain introduction

Decentralization

● Блокчейн – децентрализованная система

Page 7: Blockchain introduction

Benefits

Плюсы:Плюсы:● Администрирование● Модернизация● Масштабирование

МинусыМинусы:● Уязвимость для атак на

центральный узел

● ??Политическая централизация

Плюсы:Плюсы:● Отсутствия единой точки

отказа● Открытость

МинусыМинусы:● Синхронизация● Масштабирование

● ??Политическая децентрализация

Page 8: Blockchain introduction

Overview

Page 9: Blockchain introduction

Problematics

● Double spending● У Alice есть монета, она создает 2 транзакции:

Alice → Bob и Alice → Charlie. ● Кто получит монету?● Централизованное решение – кому первому

отправлена транзакция (с т.з. банка)● В децентрализованном мире определить кому

раньше непросто

Page 10: Blockchain introduction

Transaction life cycle

● Пользовалеть A создает транзакцию TX по переводу 1 монету пользователю B и рассылает ее в сеть

● Майнеры добавляют эту транзакцию в UTX● Когда майнер получает право создать блок,

он собирает транзакции из UTX в блок и рассылает блок его

● Каждый блок ссылается на предыдущий блок, таким образом транзакции упорядовачиваются по времени

Page 11: Blockchain introduction

Blockchain

● Если в блок попала транзакция от Alice к Bob, то в него и в следующие блоки уже не можен попасть транзакция Alice → Charlie

Page 12: Blockchain introduction

Blocktree

● Создание блока – случайный процесс● Могут возникать форки

54 (A→B)Block 53

55 (A→C)

Page 13: Blockchain introduction

Blocktree

● Создание блока – случайный процесс● Могут возникать форки● Правильная цепочка – самая длинная

Block N54 (A→B) Block 56 Block 59Block 53

55 (A→C) Block 57

Block 58 Block NBlock 60

Page 14: Blockchain introduction

Blocktree

● Eventual consistency● Вероятность форков экспоненциально

убывает с длиной

Block N54 (A→B) Block 56 Block 59Block 53

55 (A→C) Block 57

Block 58 Block NBlock 60

Block NBlock 61

Page 15: Blockchain introduction

Forks

● В биткоине ~ 2% блоков в форках● Известны случаи форков в 6 и 3 блоков из-за

ошибок в настройке софта● Реально 1, очень редко 2 блока● Нужно ждать подтверждение транзакций!

Чем больше сумма – тем дольше● За блок майнеры получают награду ~ $17000

Page 16: Blockchain introduction

CAP teorem

● В любой реализации распределённых вычислений возможно обеспечить не более двух из трёх следующих свойств: consistency, availability, partition tolerance

● В блокчейне – eventual consistency

Page 17: Blockchain introduction

Overview conclusion

● Блокчейн – децентрализованная база данных с сервером времени

● Блокчейн решает проблему double spending в децентрализованных системах

Page 18: Blockchain introduction

Decentralization problems

Page 19: Blockchain introduction

(De)centralized mining

● Высокий порог входа

● Объединение майнеров в пулы (делегирование права майнить)

● 5 майнинг пулов Биткоина владеют 50+% мощностей

Page 20: Blockchain introduction

(De)centralized supply

● Нет регуляторов – раздолье для мошенников

● Явный premine

● Неявный premine

● Нелинейная экономическая модель

● ICO с собственными вложениями

● Манипуляции рынком

Page 21: Blockchain introduction

(De)centralized governance

● Кто платит, тот и контролирует разработку (?) - можно не принимать изменения, которые внесли программисты (Ethereum classic)

● Культ личности – если большинство участников сети верят в лидера проекта, он может делать все что хочет (Ethereum)

● Мало кто может понять предложенные изменения

● Учитываются только голоса майнеров, хотя в любом блокчейне много заинтересовынных сторон

● Теорема Эрроу

Page 22: Blockchain introduction

(De)centralized services

● Большинство пользователей не смотрят в блокчейн, а доверяют сторонним сервисам

● Большинство пользователей используют web кошелек или держат деньги на биржах

● Для большинства криптовалют одна и та же команда разрабатывает софт, кошелек, обозреватель блоков, ...

Пример STEEMIT:

● Все доверяют https://steemit.com/

● Есть цензура

● Контроль над деньгами у разработчиков

Page 23: Blockchain introduction

Centralization as a solution

● Много узлов сложно синхронизировать => уменьшим количество узлов

● “masternodes”, “witnesses”, “delegates”, “federations”

● В пределе – все доверяют одной ноде, которая быстро и эффективно обрабатывает транзакции, без задержек, форков, ...

● R3: “no blockchain because we don’t need one”

Page 24: Blockchain introduction

Часть 2Под капотом

Мешков Дмитрий

Page 25: Blockchain introduction

Problematics

● Double spending● У Alice есть монета, она создает 2 транзакции:

Alice → Bob и Alice → Charlie. ● Кто получит монету?● Централизованное решение – кому первому

отправлена транзакция (с т.з. банка)● В децентрализованном мире определить кому

раньше непросто

Page 26: Blockchain introduction

Transactions

Page 27: Blockchain introduction

Input-output transactions

● Применяется в Bitcoin, Litecoin, Monero, Dash, ...

● Есть только input и output

● Output можно потратить только полностью

Page 28: Blockchain introduction

Input-output transactions

● Транзакция – это связь между input и output

● ∑inputs >= ∑outputs

● Кроме coinbase транзакции

● У каждого output есть скрипт

● Чтобы потратить output, нужно подать на вход скрипта такие данные, чтобы получить true

● Большинство скриптов требуют подпись на вход

Page 29: Blockchain introduction

Input-output transactions

● Очень гибкая модель

● Не очень понятная интуитивно

● Большой размер транзакций

● Небольшая пропускная способность

● Микро остатки

Page 30: Blockchain introduction

Account transaction

● Применяется в Ethereum, Waves, Nxt, …● Аккаунты (публичные ключи) с изменяемым

балансом● Транзакция – перевод N монет от одного

аккаунта другому● Транзакции подписанны

● Нужна дополнительная защита от replay атак

Page 31: Blockchain introduction

Consensus

Page 32: Blockchain introduction

Consensus

● Набор транзакции – это блок● Связанные в цепочку блоки – это блокчейн● Косенсус определяет последовательность

блоков в блокчейне● Какая из двух транзакций (Alice → Bob и

Alice → Charlie) раньше окажется в блокчейне – та и была раньше

Page 33: Blockchain introduction

Hash function

Свойство идеальной хэш функции:● Одно и то же сообщение всегда

приводит к одному и тому же хэшу● Хэш быстро вычисляется для любого

сообщения● Невозможно получить исходное

сообщение по его хешу (кроме как полным перебором)

● Невозможно найти 2 разных сообщения с одинаковым хэшем

● По 2 хэшам невозможно понять, насколько близки исходные сообщения

Page 34: Blockchain introduction

Consensus: Proof-of-Work

Row 1 Row 2 Row 3 Row 40

2

4

6

8

10

12

Column 1

Column 2

Column 3

Page 35: Blockchain introduction

Consensus: Proof-of-Work

● Вероятность создать блок пропорциональна вычислительной мощности

● One-CPU-one-vote

● Распределенный timestamp

● Чтобы изменить блок, нужно проделать работу по созданию всех блоков после него

● Безопасен

● Сжигает ресурсы

● Полезный PoW: primecoin, permacoin

Page 36: Blockchain introduction

Consensus: Proof-of-Stake

● Вероятность создать блок ~ балансу● Не сжигаются ресурсы

● Подразумевает timestamp● Нет случайности => griding attacks

● Дешево создавать блоки => History attack● Nothing-at-stake attack

● Bribe attack

Page 37: Blockchain introduction

Consensus

● Proof-of-Work● Proof-of-Stake

● Proof-of-Burn● Proof-of-Space

● Proof-of-Retrievability● ….

● Hybrid

Page 38: Blockchain introduction

Network layer

Page 39: Blockchain introduction

P2p: eclipse attacks

● Bitcoin: http://ia.cr/2015/263

● Ethereum: https://goo.gl/mQv58v

Page 40: Blockchain introduction

P2p: throughput

● On Scaling Decentralized Blockchains” http://fc16.ifca.ai/bitcoin/papers/CDE+16.pdf

Page 41: Blockchain introduction

P2p: throughput

● Block size/ X% effective throughput < block interval

● Для сети биткоин (~4000 нод)

● Для маленьких блоков превалирует latency, минимальное время между блоками для X90% - 12 секунд.

● Для 10 мин. размер блока < 4 Мб для X90% и 36 Мб. для X50%

Page 42: Blockchain introduction

Technical problems

Page 43: Blockchain introduction

Throughput

● Onchain: Bitcoin-NG, Byzcoin, Unlimited● Уменьшение размера транзакций● Offchain: Lightning, Sprites● Sidechains● Частично централизованные схемы

(DPoS, Byteball, Dash, Sidechains 2)

Page 44: Blockchain introduction

Confirmation delay

● Более частые блоки – больше форков● GHOST – используем блоки форков● Bitcoin-NG, Byzcoin● Частично централизованные схемы

Page 45: Blockchain introduction

Privacy

● Bitcoin псевдоанонимен ● Есть анонимные форки – monero, zcache● Ring signatures, composite signatures,

zk-snark

Page 46: Blockchain introduction

Smart money

● Язык смарт контрактов (Solidity, Tezos, ia.cr/2016/1156)

● Продвинутый язык аутентификации

Page 47: Blockchain introduction

Light validation

● SPV nodes● Rollerchain

(https://arxiv.org/pdf/1603.07926.pdf)● Authenticated data structures

(ia.cr/2016/994)● PoPoW

(http://fc16.ifca.ai/bitcoin/papers/KLS16.pdf)

Page 48: Blockchain introduction

Controllable

● Для внутренней валюты нужен контроль● RsCoin - криптоваюта с центробанком● Изменяемые блокчейны

Page 49: Blockchain introduction

Contacts

● https://www.slideshare.net/DmitryMeshkov● https://twitter.com/DmitryMeshkov● [email protected]