Введение
в блокчейн
и алгоритмы
консенсуса
Филипп Филиппак
О чём мы сегодня не будем говорить
• выгодно ли майнить?
• стоит ли покупать Bitcoin?
Введение в блокчейн и алгоритмы консенсуса / Филипп Филиппак (Waves Platform)
• данные — у одного участника
• он сам может менять правила
• нам нужно ему доверять
В централизованных системах:
В блокчейне:
• данные — у всех участников
• данные неизменны
В блокчейне:
• правила меняются коллективно
• размер комиссии — тоже
В блокчейне:
• доверие заменяется математикой
• сложность атаки существенно возрастает
Проблемы блокчейна: сложность
• баги из-за децентрализации
Проблемы блокчейна: сложность
• баги из-за децентрализации
• уязвимости консенсуса
Проблемы блокчейна: сложность
• баги из-за децентрализации
• уязвимости консенсуса
• специфика типа смарт-контрактов
Проблемы блокчейна: объём
• десятки гигабайт в крупных блокчейнах
Проблемы блокчейна: объём
• десятки гигабайт в крупных блокчейнах
• хранятся у каждого участника сети
Проблемы блокчейна: объём
• десятки гигабайт в крупных блокчейнах
• хранятся у каждого участника сети
• в Bitcoin ~12000 активных нод
Размеры блокчейнов, GB
Bitcoin Ethereum Monero
142
165
72
127
18
31
Частичное хранение
• можно хранить только:
Частичное хранение
• можно хранить только:
• последние N блоков
Частичное хранение
• можно хранить только:
• последние N блоков
• блоки с максимальной сложностью
Проблемы блокчейна: скорость
• сетевые задержки при синхронизации
Проблемы блокчейна: скорость
• сетевые задержки при синхронизации
• ожидание подтверждения транзакций
Mempool, или UTX pool
• блок не может быть слишком большим
Mempool, или UTX pool
• блок не может быть слишком большим
• размер блока в Bitcoin ~1 MB
Mempool, или UTX pool
• блок не может быть слишком большим
• размер блока в Bitcoin ~1 MB
• транзакции ожидают своей очереди в mempool
Транзакции в mempool сети Bitcoin
Bitcoin-NG
• генерируем блок
Bitcoin-NG
• генерируем блок
• добавляем туда транзакции
Bitcoin-NG
• генерируем блок
• добавляем туда транзакции
• и так, пока не будет следующего блока
Waves-NG
• первая прикладная реализация
Waves-NG
• первая прикладная реализация
• завтра можно будет протестировать
Waves-NG
• первая прикладная реализация
• завтра можно будет протестировать
• просто погуглите “waves ng”
Транзакция
1 7 5 4 3 … 4 2 5 0 2 0 0 1 0 9 9 … 9 9
тип транзакции
адрес получателя
сумма
комиссия
метаданные
Синхронизация транзакций
Синхронизация транзакций
Синхронизация транзакций
Синхронизация транзакций
Синхронизация транзакций
Блок
• хранит в себе транзакции
Блок
• хранит в себе транзакции
• ссылается на предыдущий блок
Блок
• хранит в себе транзакции
• ссылается на предыдущий блок
• приносит прибыль тому, кто его сгенерировал
Блок
timestamp
Блок
timestamp
hash from previous block
Блок
timestamp
other metadata
hash from previous block
Блок
timestamp
other metadata
hash from previous block
Блок
timestamp
other metadata
hash from previous block
generator’s signature
Блок
timestamp nonce
other metadata
hash from previous block
generator’s signature
Цепочка блоков
timestamp nonce
other metadata
hash from previous block
generator’s signature
Цепочка блоков
timestamp nonce
other metadata
hash from previous block
generator’s signature
timestamp nonce
other metadata
hash from previous block
generator’s signature
Цепочка блоков
timestamp nonce
other metadata
hash from previous block
generator’s signature
timestamp nonce
other metadata
hash from previous block
generator’s signature
Цепочка блоков
timestamp nonce
other metadata
hash from previous block
generator’s signature
timestamp nonce
other metadata
hash from previous block
generator’s signature
timestamp
other metada
hash from previou
generator’s sign
Синхронизация блоков
• блок весит сравнительно много
Синхронизация блоков
• блок весит сравнительно много
• синхронизация не мгновенна
Синхронизация блоков
• блок весит сравнительно много
• синхронизация не мгновенна
• блоки могут появиться одновременно
Форк
22 23 24
Форк
22 23 24 25b
25a • генерация — раз в N секунд
Форк
22 23 24 25b
25a • генерация — раз в N секунд
• случайное событие
Форк
22 23 24 25b
25a • генерация — раз в N секунд
• случайное событие
• вероятность падает
Форк
22 23 24 25b
25a
26 27 …
Кто сгенерирует следующий блок?
Кто сгенерирует следующий блок?
Это решается посредством консенсуса:
Кто сгенерирует следующий блок?
Это решается посредством консенсуса:
• Proof-of-Work
• Proof-of-Stake
• Proof-of-Activity
• Proof-of-Burn
• другие экспериментальные протоколы
Proof-of-Work
• борьба со спамом
Proof-of-Work
• борьба со спамом
• Bitcoin
Proof-of-Work
• борьба со спамом
• Bitcoin
• улучшения и альткоины
Proof-of-Work: майнинг
timestamp nonce
other metadata
hash from previous block
generator’s signature
• слегка меняем блок
Proof-of-Work: майнинг
timestamp nonce
other metadata
hash from previous block
generator’s signature
• слегка меняем блок
• берём от него хэш
Proof-of-Work: майнинг
timestamp nonce
other metadata
hash from previous block
generator’s signature
• слегка меняем блок
• берём от него хэш
• проверяем на соответствие
некоему критерию
Proof-of-Work: майнинг
timestamp nonce
other metadata
hash from previous block
generator’s signature
• слегка меняем блок
• берём от него хэш
• проверяем на соответствие
некоему критерию
• N нулей в начале хэша
Proof-of-Work: майнинг
Proof-of-Work: майнинг
timestamp 1
other metadata
hash from previous block
…
000197f82d
Proof-of-Work: майнинг
timestamp 1
other metadata
hash from previous block
…
timestamp 2
other metadata
hash from previous block
…
000197f82d 002d81b533
Proof-of-Work: майнинг
timestamp 1
other metadata
hash from previous block
…
timestamp 2
other metadata
hash from previous block
…
timestamp
other m
hash from p
000197f82d 002d81b533 7305f
Proof-of-Work: майнинг
Proof-of-Work: майнинг
timestamp 1001
other metadata
hash from previous block
…
a0d58910dd
Proof-of-Work: майнинг
timestamp 1001
other metadata
hash from previous block
…
timestamp 1002
other metadata
hash from previous block
…
a0d58910dd 00001a2fb3
Майнинг в Proof-of-Work
• вероятность пропорциональна мощности железа
Майнинг в Proof-of-Work
• вероятность пропорциональна мощности железа
• больше видеокарт — больше хэшей
Майнинг в Proof-of-Work
• вероятность пропорциональна мощности железа
• больше видеокарт — больше хэшей
• и больше счета за электроэнергию
Введение в блокчейн и алгоритмы консенсуса / Филипп Филиппак (Waves Platform)
Введение в блокчейн и алгоритмы консенсуса / Филипп Филиппак (Waves Platform)
Энергопотребление растёт
~25 TWh
8 окт 14 окт 20 окт 26 окт 1 ноя
Proof-of-Stake
Proof-of-Stake
• не требует ресурсов на вычисления
Proof-of-Stake
• не требует ресурсов на вычисления
• сложнее в реализации
Proof-of-Stake
• не требует ресурсов на вычисления
• сложнее в реализации
• есть атаки на наивный алгоритм
Proof-of-Stake
• не требует ресурсов на вычисления
• сложнее в реализации
• есть атаки на наивный алгоритм
• у нас в Waves — как раз он
Отличия в структуре блока
• сложность
timestamp target
other metadata
generating signature
generator’s signature
Отличия в структуре блока
• сложность
• генерирующая подпись
timestamp target
other metadata
generating signature
generator’s signature
Майнинг в Proof-of-Stake
• сложность рассчитывается для каждого участника
Майнинг в Proof-of-Stake
• сложность рассчитывается для каждого участника
• базовая сложность
Майнинг в Proof-of-Stake
• сложность рассчитывается для каждого участника
• базовая сложность * баланс
Майнинг в Proof-of-Stake
• сложность рассчитывается для каждого участника
• базовая сложность * баланс * время с прошлого блока
Майнинг в Proof-of-Stake
• сложность рассчитывается для каждого участника
• базовая сложность * баланс * время с прошлого блока
• чем выше это значение, тем меньше сложность
Майнинг в Proof-of-Stake
• случайное значение тоже считается индивидуально
Майнинг в Proof-of-Stake
• случайное значение тоже считается индивидуально
• это хэш от:
Майнинг в Proof-of-Stake
• случайное значение тоже считается индивидуально
• это хэш от:
• генерирующей подписи прошлого блока
Майнинг в Proof-of-Stake
• случайное значение тоже считается индивидуально
• это хэш от:
• генерирующей подписи прошлого блока
• публичного ключа участника
Майнинг в Proof-of-Stake
• случайное значение тоже считается индивидуально
• это хэш от:
• генерирующей подписи прошлого блока
• публичного ключа участника
• чем меньше это значение, тем больше шансы
Майнинг в Proof-of-Stake
• каждый участник “играет в лотерею”
Майнинг в Proof-of-Stake
• каждый участник “играет в лотерею”
• если его хэш:
Майнинг в Proof-of-Stake
• каждый участник “играет в лотерею”
• если его хэш:
• попадает в сложность (меньше, чем target)
Майнинг в Proof-of-Stake
• каждый участник “играет в лотерею”
• если его хэш:
• попадает в сложность (меньше, чем target)
• раньше всех по времени
Майнинг в Proof-of-Stake
• каждый участник “играет в лотерею”
• если его хэш:
• попадает в сложность (меньше, чем target)
• раньше всех по времени
• то он генерирует блок
Майнинг в Proof-of-Stake
timestamp target
other metadata
generating signature
generator’s signature
Node 1 Node 2 Node 3
Майнинг в Proof-of-Stake
timestamp target
other metadata
generating signature
generator’s signature
50000
Node 1 Node 2 Node 3
Майнинг в Proof-of-Stake
timestamp target
other metadata
generating signature
generator’s signature
50000
Node 1
70000
Node 2 Node 3
Майнинг в Proof-of-Stake
timestamp target
other metadata
generating signature
generator’s signature
50000
Node 1
70000
Node 2
60000
Node 3
Майнинг в Proof-of-Stake
timestamp target
other metadata
generating signature
generator’s signature
50000
Node 1
70000
Node 2
60000
Node 3
Hash(s, p)
Майнинг в Proof-of-Stake
timestamp target
other metadata
generating signature
generator’s signature
50000
Node 1
70000
Node 2
60000
Node 3
Hash(s, p)
140000
Майнинг в Proof-of-Stake
timestamp target
other metadata
generating signature
generator’s signature
50000
Node 1
70000
Node 2
60000
Node 3
Hash(s, p)
90000140000
Майнинг в Proof-of-Stake
timestamp target
other metadata
generating signature
generator’s signature
50000
Node 1
70000
Node 2
60000
Node 3
Hash(s, p)
3000090000140000
Майнинг в Proof-of-Stake
timestamp target
other metadata
generating signature
generator’s signature
50000
Node 1
70000
Node 2
60000
Node 3
3000090000140000
Grinding attacks
• атакующий ищет перебором оптимальную цепочку
Grinding attacks
• атакующий ищет перебором оптимальную цепочку
• и перекидывает баланс с адреса на адрес
Grinding attacks: защита
• минимальный генерирующий баланс
Grinding attacks: защита
• минимальный генерирующий баланс
• задержка в обновлении этого баланса
Гибридные алгоритмы консенсуса
Гибридные алгоритмы консенсуса
• Proof-of-Activity
• TwinsCoin
• Ouroboros
Филипп Филиппак,
Waves Platform
github.com/xenohunter

More Related Content

PDF
Blockchain comparison
PDF
Исследовательские задачи в области блокчейна
PDF
Blockchain introduction
PDF
Blockchain: under the hood
PDF
Andrey Sobol Blockchain crowdfunding or "mommy, look, i launched ipo"
PDF
Блокчейн в компаниях • Сбербанка
PPTX
Хватит писать инфраструктурный код
PPTX
Bitcoin - криптовалюта будущего
Blockchain comparison
Исследовательские задачи в области блокчейна
Blockchain introduction
Blockchain: under the hood
Andrey Sobol Blockchain crowdfunding or "mommy, look, i launched ipo"
Блокчейн в компаниях • Сбербанка
Хватит писать инфраструктурный код
Bitcoin - криптовалюта будущего

What's hot (20)

PDF
Ликбез • Блокчейн (Level 1)
PPTX
Практическое использование средств криптографии в .NET, Java и PHP
PPTX
Егор Гришечко «У вас найдётся минутка, чтобы поговорить о блокчейне?»
PDF
#MBLTdev: Core Data: особенности использования и синхронизация в iCloud (Avia...
PDF
Bitcoin Wite paper (ru)
PDF
"Building data streams" Константин Евтеев (Avito)
PPTX
Ilia kantor паттерны серверных comet решений
PDF
Блокчейн - проблемы и потенциальные решения
PPTX
Подводные камни прикладной криптографии, I
PPTX
Взломать сайт на ASP.NET
PDF
Onchain масштабирование блокчейна. Спикер: Дмитрий Мешков
PPTX
Tyurin Alexey - NTLM. Part 1. Pass-the-Hash
PPT
Smirnov Memcached High Load 2008
PPT
Smirnov Memcached Highload 2008
PDF
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
PDF
Реактивный раздатчик ok.ru/music
PPT
Сергей Париев - "обработка дедлоков в MySql"
PDF
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
Ликбез • Блокчейн (Level 1)
Практическое использование средств криптографии в .NET, Java и PHP
Егор Гришечко «У вас найдётся минутка, чтобы поговорить о блокчейне?»
#MBLTdev: Core Data: особенности использования и синхронизация в iCloud (Avia...
Bitcoin Wite paper (ru)
"Building data streams" Константин Евтеев (Avito)
Ilia kantor паттерны серверных comet решений
Блокчейн - проблемы и потенциальные решения
Подводные камни прикладной криптографии, I
Взломать сайт на ASP.NET
Onchain масштабирование блокчейна. Спикер: Дмитрий Мешков
Tyurin Alexey - NTLM. Part 1. Pass-the-Hash
Smirnov Memcached High Load 2008
Smirnov Memcached Highload 2008
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Реактивный раздатчик ok.ru/music
Сергей Париев - "обработка дедлоков в MySql"
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
Ad

Viewers also liked (20)

PDF
Развитие баз данных в Dropbox. Путь от одной глобальной базы MySQL к 6000 шар...
PDF
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
PDF
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
PDF
Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...
PPTX
Масштабирование сети VR-аттракционов CinemaVR / Андрей Татаринов (VRTech)
PDF
Сложности performance-тестирования / Андрей Акиньшин (JetBrains)
PDF
Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...
PDF
Честное перформанс-тестирование / Дмитрий Пивоваров (ZeroTurnaround)
PPTX
Как построить хороший performance review: опыт Badoo / Алексей Рыбак (Badoo)
PDF
NoSQL Best Practices for PostgreSQL / Дмитрий Долгов (Mindojo)
PDF
Применение блокчейна в RTB. Можно ли масштабировать децентрализованную базу д...
PPTX
Как заранее соломки подстелить или путь к 99,99% uptime проекта / Игорь Мызги...
PDF
DDoS-атаки: тектонические изменения в 2016-2017 году / Артём Гавриченков (Qra...
PPTX
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
PPTX
WAMP[-proto] как основа композитных SOA-приложений и его имплементация на Lua...
PPTX
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
PPTX
Организации в бирюзовом цвете / Мария Груздева (НИУ ВШЭ)
PPTX
Искусство предсказания: как давать более точные оценки времени проекта / Андр...
PDF
Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)
PDF
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Развитие баз данных в Dropbox. Путь от одной глобальной базы MySQL к 6000 шар...
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...
Масштабирование сети VR-аттракционов CinemaVR / Андрей Татаринов (VRTech)
Сложности performance-тестирования / Андрей Акиньшин (JetBrains)
Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...
Честное перформанс-тестирование / Дмитрий Пивоваров (ZeroTurnaround)
Как построить хороший performance review: опыт Badoo / Алексей Рыбак (Badoo)
NoSQL Best Practices for PostgreSQL / Дмитрий Долгов (Mindojo)
Применение блокчейна в RTB. Можно ли масштабировать децентрализованную базу д...
Как заранее соломки подстелить или путь к 99,99% uptime проекта / Игорь Мызги...
DDoS-атаки: тектонические изменения в 2016-2017 году / Артём Гавриченков (Qra...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
WAMP[-proto] как основа композитных SOA-приложений и его имплементация на Lua...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Организации в бирюзовом цвете / Мария Груздева (НИУ ВШЭ)
Искусство предсказания: как давать более точные оценки времени проекта / Андр...
Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Ad

Similar to Введение в блокчейн и алгоритмы консенсуса / Филипп Филиппак (Waves Platform) (20)

PDF
Доклад Александра Мазалецкого на третьем митапе сообщества блокчейн-разработч...
PDF
Bitcoin: деньги будущего
PPTX
Bitcoin
PDF
деньги будущего или как технология Blockchain изменит весь мир.
PDF
Масштабирование Блокчейн Сетей
PDF
"Using Blockchain in Node.js project: JavaScript Ninja’s experience" Maksym D...
PDF
Блокчейн. Разрыв шаблона
PDF
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
PPTX
Технология Blockchain и сценарии ее использования
PPT
Ledger-based системы. Альтернатива Bitcoin?
PDF
Блокчейн, консенсус - как и зачем? #spblockchain
PDF
Блокчейн для разработчиков
PDF
"Программируемые деньги" Чепурной Александр, IOHK Research
PPTX
Что такое блокчейн и зачем он нужен
PDF
Crypto piramids27 04-2018fingenbort
PDF
Prezentatsia fork
PPTX
Криптовалюты
PPT
Как работает майнинг. Лекция 5
Доклад Александра Мазалецкого на третьем митапе сообщества блокчейн-разработч...
Bitcoin: деньги будущего
Bitcoin
деньги будущего или как технология Blockchain изменит весь мир.
Масштабирование Блокчейн Сетей
"Using Blockchain in Node.js project: JavaScript Ninja’s experience" Maksym D...
Блокчейн. Разрыв шаблона
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
Технология Blockchain и сценарии ее использования
Ledger-based системы. Альтернатива Bitcoin?
Блокчейн, консенсус - как и зачем? #spblockchain
Блокчейн для разработчиков
"Программируемые деньги" Чепурной Александр, IOHK Research
Что такое блокчейн и зачем он нужен
Crypto piramids27 04-2018fingenbort
Prezentatsia fork
Криптовалюты
Как работает майнинг. Лекция 5

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...

Введение в блокчейн и алгоритмы консенсуса / Филипп Филиппак (Waves Platform)