blockchain introduction
TRANSCRIPT
Часть 1Введение в блокчейн
Мешков Дмитрий
Structure
Часть 1● Зачем нужен блокчейн● Беглый взгляд● Идеологические проблемы
Часть 2● Транзакции● Блоки● P2P● Технические проблемы
WHY?
Why?
Blockchain as databaseПлюсы:Плюсы:
● Надежность (тысячи копий)● Неизменность (изменить данные не может никто)● Отсутствие цензуры (никто не запретит положить данные)
МинусыМинусы:● Высокая стоимость ($2000 за Мб)● Низкая пропускная способность (50Гб в год)● Нет гарантий хранения (SPV mining, исчезнет)● Скорость записи и front-running
??● Публичность (все видят все транзакции, не положить
конфиденциальные данные)
Decentralization
● Блокчейн – децентрализованная система
Benefits
Плюсы:Плюсы:● Администрирование● Модернизация● Масштабирование
МинусыМинусы:● Уязвимость для атак на
центральный узел
● ??Политическая централизация
Плюсы:Плюсы:● Отсутствия единой точки
отказа● Открытость
МинусыМинусы:● Синхронизация● Масштабирование
● ??Политическая децентрализация
Overview
Problematics
● Double spending● У Alice есть монета, она создает 2 транзакции:
Alice → Bob и Alice → Charlie. ● Кто получит монету?● Централизованное решение – кому первому
отправлена транзакция (с т.з. банка)● В децентрализованном мире определить кому
раньше непросто
Transaction life cycle
● Пользовалеть A создает транзакцию TX по переводу 1 монету пользователю B и рассылает ее в сеть
● Майнеры добавляют эту транзакцию в UTX● Когда майнер получает право создать блок,
он собирает транзакции из UTX в блок и рассылает блок его
● Каждый блок ссылается на предыдущий блок, таким образом транзакции упорядовачиваются по времени
Blockchain
● Если в блок попала транзакция от Alice к Bob, то в него и в следующие блоки уже не можен попасть транзакция Alice → Charlie
Blocktree
● Создание блока – случайный процесс● Могут возникать форки
54 (A→B)Block 53
55 (A→C)
Blocktree
● Создание блока – случайный процесс● Могут возникать форки● Правильная цепочка – самая длинная
Block N54 (A→B) Block 56 Block 59Block 53
55 (A→C) Block 57
Block 58 Block NBlock 60
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
Forks
● В биткоине ~ 2% блоков в форках● Известны случаи форков в 6 и 3 блоков из-за
ошибок в настройке софта● Реально 1, очень редко 2 блока● Нужно ждать подтверждение транзакций!
Чем больше сумма – тем дольше● За блок майнеры получают награду ~ $17000
CAP teorem
● В любой реализации распределённых вычислений возможно обеспечить не более двух из трёх следующих свойств: consistency, availability, partition tolerance
● В блокчейне – eventual consistency
Overview conclusion
● Блокчейн – децентрализованная база данных с сервером времени
● Блокчейн решает проблему double spending в децентрализованных системах
Decentralization problems
(De)centralized mining
● Высокий порог входа
● Объединение майнеров в пулы (делегирование права майнить)
● 5 майнинг пулов Биткоина владеют 50+% мощностей
(De)centralized supply
● Нет регуляторов – раздолье для мошенников
● Явный premine
● Неявный premine
● Нелинейная экономическая модель
● ICO с собственными вложениями
● Манипуляции рынком
(De)centralized governance
● Кто платит, тот и контролирует разработку (?) - можно не принимать изменения, которые внесли программисты (Ethereum classic)
● Культ личности – если большинство участников сети верят в лидера проекта, он может делать все что хочет (Ethereum)
● Мало кто может понять предложенные изменения
● Учитываются только голоса майнеров, хотя в любом блокчейне много заинтересовынных сторон
● Теорема Эрроу
(De)centralized services
● Большинство пользователей не смотрят в блокчейн, а доверяют сторонним сервисам
● Большинство пользователей используют web кошелек или держат деньги на биржах
● Для большинства криптовалют одна и та же команда разрабатывает софт, кошелек, обозреватель блоков, ...
Пример STEEMIT:
● Все доверяют https://steemit.com/
● Есть цензура
● Контроль над деньгами у разработчиков
Centralization as a solution
● Много узлов сложно синхронизировать => уменьшим количество узлов
● “masternodes”, “witnesses”, “delegates”, “federations”
● В пределе – все доверяют одной ноде, которая быстро и эффективно обрабатывает транзакции, без задержек, форков, ...
● R3: “no blockchain because we don’t need one”
Часть 2Под капотом
Мешков Дмитрий
Problematics
● Double spending● У Alice есть монета, она создает 2 транзакции:
Alice → Bob и Alice → Charlie. ● Кто получит монету?● Централизованное решение – кому первому
отправлена транзакция (с т.з. банка)● В децентрализованном мире определить кому
раньше непросто
Transactions
Input-output transactions
● Применяется в Bitcoin, Litecoin, Monero, Dash, ...
● Есть только input и output
● Output можно потратить только полностью
Input-output transactions
● Транзакция – это связь между input и output
● ∑inputs >= ∑outputs
● Кроме coinbase транзакции
● У каждого output есть скрипт
● Чтобы потратить output, нужно подать на вход скрипта такие данные, чтобы получить true
● Большинство скриптов требуют подпись на вход
Input-output transactions
● Очень гибкая модель
● Не очень понятная интуитивно
● Большой размер транзакций
● Небольшая пропускная способность
● Микро остатки
Account transaction
● Применяется в Ethereum, Waves, Nxt, …● Аккаунты (публичные ключи) с изменяемым
балансом● Транзакция – перевод N монет от одного
аккаунта другому● Транзакции подписанны
● Нужна дополнительная защита от replay атак
Consensus
Consensus
● Набор транзакции – это блок● Связанные в цепочку блоки – это блокчейн● Косенсус определяет последовательность
блоков в блокчейне● Какая из двух транзакций (Alice → Bob и
Alice → Charlie) раньше окажется в блокчейне – та и была раньше
Hash function
Свойство идеальной хэш функции:● Одно и то же сообщение всегда
приводит к одному и тому же хэшу● Хэш быстро вычисляется для любого
сообщения● Невозможно получить исходное
сообщение по его хешу (кроме как полным перебором)
● Невозможно найти 2 разных сообщения с одинаковым хэшем
● По 2 хэшам невозможно понять, насколько близки исходные сообщения
Consensus: Proof-of-Work
Row 1 Row 2 Row 3 Row 40
2
4
6
8
10
12
Column 1
Column 2
Column 3
Consensus: Proof-of-Work
● Вероятность создать блок пропорциональна вычислительной мощности
● One-CPU-one-vote
● Распределенный timestamp
● Чтобы изменить блок, нужно проделать работу по созданию всех блоков после него
● Безопасен
● Сжигает ресурсы
● Полезный PoW: primecoin, permacoin
Consensus: Proof-of-Stake
● Вероятность создать блок ~ балансу● Не сжигаются ресурсы
● Подразумевает timestamp● Нет случайности => griding attacks
● Дешево создавать блоки => History attack● Nothing-at-stake attack
● Bribe attack
Consensus
● Proof-of-Work● Proof-of-Stake
● Proof-of-Burn● Proof-of-Space
● Proof-of-Retrievability● ….
● Hybrid
Network layer
P2p: eclipse attacks
● Bitcoin: http://ia.cr/2015/263
● Ethereum: https://goo.gl/mQv58v
P2p: throughput
● On Scaling Decentralized Blockchains” http://fc16.ifca.ai/bitcoin/papers/CDE+16.pdf
P2p: throughput
● Block size/ X% effective throughput < block interval
● Для сети биткоин (~4000 нод)
● Для маленьких блоков превалирует latency, минимальное время между блоками для X90% - 12 секунд.
● Для 10 мин. размер блока < 4 Мб для X90% и 36 Мб. для X50%
Technical problems
Throughput
● Onchain: Bitcoin-NG, Byzcoin, Unlimited● Уменьшение размера транзакций● Offchain: Lightning, Sprites● Sidechains● Частично централизованные схемы
(DPoS, Byteball, Dash, Sidechains 2)
Confirmation delay
● Более частые блоки – больше форков● GHOST – используем блоки форков● Bitcoin-NG, Byzcoin● Частично централизованные схемы
Privacy
● Bitcoin псевдоанонимен ● Есть анонимные форки – monero, zcache● Ring signatures, composite signatures,
zk-snark
Smart money
● Язык смарт контрактов (Solidity, Tezos, ia.cr/2016/1156)
● Продвинутый язык аутентификации
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)
Controllable
● Для внутренней валюты нужен контроль● RsCoin - криптоваюта с центробанком● Изменяемые блокчейны
Contacts
● https://www.slideshare.net/DmitryMeshkov● https://twitter.com/DmitryMeshkov● [email protected]