5. Blockchain as database
Плюсы:Плюсы:
● Надежность (тысячи копий)
● Неизменность (изменить данные не может никто)
● Отсутствие цензуры (никто не запретит положить данные)
МинусыМинусы:
● Высокая стоимость ($2000 за Мб)
● Низкая пропускная способность (50Гб в год)
● Нет гарантий хранения (SPV mining, исчезнет)
● Скорость записи и front-running
??
● Публичность (все видят все транзакции, не положить
конфиденциальные данные)
9. Problematics
● Double spending
● У Alice есть монета, она создает 2 транзакции:
Alice → Bob и Alice → Charlie.
● Кто получит монету?
● Централизованное решение – кому первому
отправлена транзакция (с т.з. банка)
● В децентрализованном мире определить кому
раньше непросто
10. Transaction life cycle
● Пользовалеть A создает транзакцию TX по
переводу 1 монету пользователю B и
рассылает ее в сеть
● Майнеры добавляют эту транзакцию в UTX
● Когда майнер получает право создать блок,
он собирает транзакции из UTX в блок и
рассылает блок его
● Каждый блок ссылается на предыдущий
блок, таким образом транзакции
упорядовачиваются по времени
11. Blockchain
● Если в блок попала транзакция от Alice к
Bob, то в него и в следующие блоки уже не
можен попасть транзакция Alice → Charlie
15. Forks
● В биткоине ~ 2% блоков в форках
● Известны случаи форков в 6 и 3 блоков из-за
ошибок в настройке софта
● Реально 1, очень редко 2 блока
● Нужно ждать подтверждение транзакций!
Чем больше сумма – тем дольше
● За блок майнеры получают награду ~ $17000
16. CAP teorem
● В любой реализации распределённых
вычислений возможно обеспечить не более
двух из трёх следующих свойств:
consistency, availability, partition tolerance
● В блокчейне – eventual consistency
17. Overview conclusion
● Блокчейн – децентрализованная база
данных с сервером времени
● Блокчейн решает проблему double spending
в децентрализованных системах
19. (De)centralized mining
● Высокий порог входа
● Объединение майнеров в пулы (делегирование
права майнить)
● 5 майнинг пулов Биткоина владеют 50+%
мощностей
20. (De)centralized supply
● Нет регуляторов – раздолье для мошенников
● Явный premine
● Неявный premine
● Нелинейная экономическая модель
● ICO с собственными вложениями
● Манипуляции рынком
21. (De)centralized governance
● Кто платит, тот и контролирует разработку (?) -
можно не принимать изменения, которые внесли
программисты (Ethereum classic)
● Культ личности – если большинство участников
сети верят в лидера проекта, он может делать все
что хочет (Ethereum)
● Мало кто может понять предложенные изменения
● Учитываются только голоса майнеров, хотя в
любом блокчейне много заинтересовынных сторон
● Теорема Эрроу
22. (De)centralized services
● Большинство пользователей не смотрят в блокчейн,
а доверяют сторонним сервисам
● Большинство пользователей используют web
кошелек или держат деньги на биржах
● Для большинства криптовалют одна и та же команда
разрабатывает софт, кошелек, обозреватель
блоков, ...
Пример STEEMIT:
● Все доверяют https://steemit.com/
● Есть цензура
● Контроль над деньгами у разработчиков
23. Centralization as a solution
● Много узлов сложно синхронизировать =>
уменьшим количество узлов
● “masternodes”, “witnesses”, “delegates”, “federations”
● В пределе – все доверяют одной ноде, которая
быстро и эффективно обрабатывает транзакции,
без задержек, форков, ...
● R3: “no blockchain because we don’t need one”
25. Problematics
● Double spending
● У Alice есть монета, она создает 2 транзакции:
Alice → Bob и Alice → Charlie.
● Кто получит монету?
● Централизованное решение – кому первому
отправлена транзакция (с т.з. банка)
● В децентрализованном мире определить кому
раньше непросто
28. Input-output transactions
● Транзакция – это связь между input и output
● ∑inputs >= ∑outputs
● Кроме coinbase транзакции
● У каждого output есть скрипт
● Чтобы потратить output, нужно подать на вход
скрипта такие данные, чтобы получить true
● Большинство скриптов требуют подпись на вход
29. Input-output transactions
● Очень гибкая модель
● Не очень понятная интуитивно
● Большой размер транзакций
● Небольшая пропускная способность
● Микро остатки
30. Account transaction
● Применяется в Ethereum, Waves, Nxt, …
● Аккаунты (публичные ключи) с изменяемым
балансом
● Транзакция – перевод N монет от одного
аккаунта другому
● Транзакции подписанны
● Нужна дополнительная защита от replay
атак
32. Consensus
● Набор транзакции – это блок
● Связанные в цепочку блоки – это блокчейн
● Косенсус определяет последовательность
блоков в блокчейне
● Какая из двух транзакций (Alice → Bob и
Alice → Charlie) раньше окажется в
блокчейне – та и была раньше
33. Hash function
Свойство идеальной хэш функции:
● Одно и то же сообщение всегда
приводит к одному и тому же хэшу
● Хэш быстро вычисляется для любого
сообщения
● Невозможно получить исходное
сообщение по его хешу (кроме как
полным перебором)
● Невозможно найти 2 разных
сообщения с одинаковым хэшем
● По 2 хэшам невозможно понять,
насколько близки исходные сообщения
35. Consensus: Proof-of-Work
● Вероятность создать блок пропорциональна
вычислительной мощности
● One-CPU-one-vote
● Распределенный timestamp
● Чтобы изменить блок, нужно проделать работу по
созданию всех блоков после него
● Безопасен
● Сжигает ресурсы
● Полезный PoW: primecoin, permacoin
36. Consensus: Proof-of-Stake
● Вероятность создать блок ~ балансу
● Не сжигаются ресурсы
● Подразумевает timestamp
● Нет случайности => griding attacks
● Дешево создавать блоки => History attack
● Nothing-at-stake attack
● Bribe attack
40. P2p: throughput
● On Scaling Decentralized Blockchains”
http://fc16.ifca.ai/bitcoin/papers/CDE+16.pdf
41. P2p: throughput
● Block size/ X% effective throughput < block interval
● Для сети биткоин (~4000 нод)
● Для маленьких блоков превалирует latency,
минимальное время между блоками для X90% - 12
секунд.
● Для 10 мин. размер блока < 4 Мб для X90% и 36
Мб. для X50%