Blockchain: криптовалюты и не только

Содержание

Слайд 2

Банки, транзакции, … Потребность в изменениях Блокчейн. История развития Криптовалюта. Биткоин.

Банки, транзакции, … Потребность в изменениях
Блокчейн. История развития
Криптовалюта. Биткоин. Хеш-функция
Структура

блока. Растущая сложность вычислений
Майнинг. Как зарабатывать на криптовалюте?
Proof-of-Work (Доказательство работы)
Форк
Проект Ethereum
Умные контракты как новое применение blockchain
Что дальше?.. Интернет вещей, распределенные хранилища, …
P.S…

Содержание

2

Слайд 3

Банки, транзакции. Существующие проблемы и пути их решения 3 Как сейчас

Банки, транзакции. Существующие проблемы и пути их решения

3

Как сейчас производятся денежные

операции?

Централизованная система
Есть 3-и лица, выступающие гарантом выполнения операций
Центробанк хранит всю информацию о транзакциях
Постоянно растущая сложность в обеспечении безопасности такой системы
Транзакции могут быть отменены
Наличие комиссии за проведение операций (даже незначительных)
Время выполнения транзакций достигает нескольких дней
Комиссия за конвертацию валют

Слайд 4

Банки, транзакции. Существующие проблемы и пути их решения 4 Альтернатива… Децентрализованная

Банки, транзакции. Существующие проблемы и пути их решения

4

Альтернатива…

Децентрализованная система
Все транзакции авторизованы
Информация

о транзакциях доступна всем узлам сети
Незначительное время выполнения транзакций (~10 минут)
Транзакции необратимы (двойная трата денег невозможна)
Отсутствие комиссии за конвертацию валют
Высокая безопасность (каждый участник сети выступает в роли гаранта)
Слайд 5

Немного истории 5 31 октября 2008 – Публикация статьи Сатоши Накамото

Немного истории

5

31 октября 2008 – Публикация статьи Сатоши Накамото о биткоинах

и блокчейне
3 января 2009 – Первый созданный блок «Genesis block»
22 мая 2010 – Первая покупка посредством биткоинов (2 пиццы за 10000 биткоинов) в размере 25$ (да-да, тогда он стоил столько☺)
Декабрь 2013 – Виталик Бутерин запускает Ethereum и появляются умные контракты (smart contract)
Май 2016 – Создание Децентрализованной Автономной Организации (ДАО) – рекорд краудфандинга в 150 млн.$
Декабрь 2016 – Анонсирование программы Dubai Blockchain Strategy
Апрель 2017 – Криптовалюты официально признаны в Японии
Январь 2018 – Швейцария начинает сбор налогов посредством биткоинов
Слайд 6

Что такое блокчейн? 6 Связанный посредством хеш-значений список Допускается только добавление

Что такое блокчейн?

6

Связанный посредством хеш-значений список
Допускается только добавление блоков
Новые блоки добавляются

в конец списка
Для изменения блока в цепи потребовалось бы изменить все последующие блоки
Неэффективен в сравнении с реляционными СУБД

Не столько технология (алгоритм), сколько новая парадигма информационного обмена

Слайд 7

Криптовалюта. Биткоин. Основы 7 На перекрестке: Теории игр Криптографии Сетевого взаимодействия и распределенной передачи данных Экономики

Криптовалюта. Биткоин. Основы

7

На перекрестке:
Теории игр
Криптографии
Сетевого взаимодействия и распределенной передачи данных
Экономики

Слайд 8

Блокчейн как распределенное хранилище транзакций. Криптовалюты 8 Блок содержит список транзакций

Блокчейн как распределенное хранилище транзакций. Криптовалюты

8

Блок содержит список транзакций
Информация о блоках

распространяется по всей сети
Распространение производится по P2P протоколу (пиринговая сеть)
Майнер – участник сети, создающий блоки
Майнеры добавляют транзакции в новые блоки
Майнеры выполняют дополнительный объём работ
Все узлы сети могут проверить корректность блоков и транзакций
Достижение консенсуса в сети является одной из важнейших задач
Слайд 9

Выполнение транзакции «на пальцах» 9

Выполнение транзакции «на пальцах»

9

Слайд 10

Хеш-функция – основа блокчейн и биткоин 10 SHA-256 (Secure Hash Algorithm)

Хеш-функция – основа блокчейн и биткоин

10

SHA-256 (Secure Hash Algorithm)
дайджесты сообщений
эмиссия криптовалюты
цифровая

подпись

Хеш-функция — однонаправленная функция, преобразующая входные данные любой длины в массив байтов фиксированной длины

Асимметричное шифрование
публичный ключ (public key) – ДЛЯ ВСЕХ
приватный ключ (private key) – ДЛЯ СЕБЯ

Слайд 11

Структура блока 11 version – версия блока bits — характеристика сложности

Структура блока

11

version – версия блока
bits — характеристика сложности создания блока
nonce —

значение, необходимое для создания блока
prev_block — хеш предыдущего блока
timestamp — дата и время создания блока
merkle_root — хеш всех транзакций в блоке
txn_count, txns — число транзакций в блоке и их список
Слайд 12

Структура блока. Genesis block 12

Структура блока. Genesis block

12

Слайд 13

Структура блока. Дерево Меркла 13 Дерево Меркла — бинарное дерево хешей

Структура блока. Дерево Меркла

13

Дерево Меркла — бинарное дерево хешей

Сначала считаются

хеши всех транзакций в блоке  H_A = SHA256(SHA256(A))
считаются хэши от суммы хешей транзакций  H_AB = SHA256(SHA256(H_A + H_B))
Точно также считаем хэши от суммы получившихся хешей  H_ABCD = SHA256(SHA256(H_AB + H_CD)) 
Слайд 14

Майнинг 14 Задача майнера – быстрее других подобрать nonce путем перебора

Майнинг

14

Задача майнера – быстрее других подобрать nonce путем перебора всех значений,

пока hash максимально не приблизится к target

Награда за блок + fees от транзакций

Слайд 15

Структура блока. Difficulty, bits, target,… 15 Рассмотрим блок #414793 Bits =

Структура блока. Difficulty, bits, target,…

15

Рассмотрим блок #414793

Bits = 403014710 = 0x18058436
0x18

– экспонента
0x058436 – мантисса
target = 0x058436 * 2^(8 * 0x18 - 3)

difficulty = max_target / target,
max_target = 0x1d00ffff (в формате bits)

target

difficulty

Слайд 16

Структура блока. Difficulty, bits, target,… 16 Рассмотрим блок #414793 difficulty =

Структура блока. Difficulty, bits, target,…

16

Рассмотрим блок #414793

difficulty = 199,312,067,531.24
или
log2(199,312,067,531) + 32

= 69.53 бит

Hash = 0000 0000 0000 0000 0530 216a 17ab 1e11 5027 20c7 8497 5dc7 618f 8408 df6f 7c77
17 нулей * 4 бита = 68 бит, 5 = 0101 => +1 бит = 69 бит

Сложность создания блока в GH/s:
2^69.53 / 10 min = 1,420,000,000

Слайд 17

Майнинг. Пример создания нового блока 17 Вход: хеш всех транзакций (корень

Майнинг. Пример создания нового блока

17

Вход: хеш всех транзакций (корень Меркла) +

хеш прошлого блока
Процесс майнинга – подбор nonce:
Difficulty = 1 – ищем такой хеш, чтобы в начале был «0» (nonce=20)
Difficulty = 2 – ищем такой хеш, чтобы в начале был «00» (nonce=120)
Difficulty = 4 – ищем такой хеш, чтобы в начале был «0000» (nonce=69817)

Корень Меркла
+
Хеш прошлого блока
nonce
+
Корень Меркла
+
Хеш прошлого блока
Слайд 18

Сложность в наши дни и ее регуляция 18 Зависимость сложности создания

Сложность в наши дни и ее регуляция

18

Зависимость сложности создания блока
от

времени (2016-2018 г.г.) https://blockchain.info/
Слайд 19

Алгоритм достижения консенсуса. Проблема Византийских генералов 19 Координированная атака ПОБЕДА Некоординированная атака ПОРАЖЕНИЕ

Алгоритм достижения консенсуса. Проблема Византийских генералов

19

Координированная атака ПОБЕДА

Некоординированная атака ПОРАЖЕНИЕ

Слайд 20

Алгоритм достижения консенсуса. Proof-of-Work 20 Proof-of-Work — алгоритм защиты распределенных систем

Алгоритм достижения консенсуса. Proof-of-Work

20

Proof-of-Work — алгоритм защиты распределенных систем от угроз

(DoS-атаки, спам-рассылки и т.д.), суть которого сводится к двум основным пунктам:
необходимость выполнения определенной достаточно сложной и длительной задачи;
возможность быстро и легко проверить результат.
C. Dwork, M. Naor «Pricing via Processing, Or, Combatting Junk Mail, Advances in Cryptology», 1992
В 1997 году Адам Бэк запустил проект Hashcash (защита от спама). Задача формулировалась следующим образом: «Найти такое значение x, что хеш SHA(x) содержал бы N старших нулевых бит».
Цель – обеспечить способность узла сети проверить, что блок в цепи создан корректно. По сути – проверка вычисленного Hash
Слайд 21

Алгоритм достижения консенсуса. Proof-of-Stake 21 Альтернатива – появилась в криптовалюте PPCoin

Алгоритм достижения консенсуса. Proof-of-Stake

21

Альтернатива – появилась в криптовалюте PPCoin (PeerCoin) в

2012 г.
Идея – использовать «долю» (stake) в качестве ресурса, который определяет, какой именно узел получает право создания следующего блока.
Поиск хеша аналогичен Proof-of-Work
Сложность распределяется между узлами пропорционально их балансу
Больше шансов создать следующий блок имеет узел с большим балансом
Итого:
небольшие требования к вычислительным ресурсам
не стоит вопрос «потраченных впустую» мощностей
Слайд 22

Алгоритм достижения консенсуса. Proof-of-Stake 22 Плюсы: Для проведения атаки требуются значительные

Алгоритм достижения консенсуса. Proof-of-Stake

22

Плюсы:
Для проведения атаки требуются значительные средства, что делает

ее нецелесообразной с финансовой точки зрения
Если в распоряжении атакующего имеется большое количество денег, он сам пострадает от атаки, поскольку это нарушит устойчивость криптовалюты.
Минусы (опасения):
Дает дополнительную мотивацию к накоплению средств в одних руках, что может негативно сказаться на децентрализации сети.
Если образуется небольшая группа, которая соберет у себя достаточно большие средства, она сможет навязывать свои правила работы сети остальным участникам.
Слайд 23

И другие … 23 Proof-of-Activity — гибридная схема, совмещающая PoW и

И другие …

23

Proof-of-Activity — гибридная схема, совмещающая PoW и PoS
Proof-of-Burn —

«сжигание» происходит путем отправки монет на такой адрес, с которого гарантированно нельзя их потратить
Proof-of-Capacity — реализация популярной идеи «мегабайты как ресурсы»
Proof-of-Storage – выделенное место используется всеми участниками как совместное облачное хранилище

Слайд 24

Майнинг 24 NVIDIA GeForce GTX 1080 Ti http://jkcrypto.com/coin-to-mine-with-nvidia-gtx-1080-ti/ https://whattomine.com/coins/ AMD Radeon

Майнинг

24

NVIDIA GeForce GTX 1080 Ti

http://jkcrypto.com/coin-to-mine-with-nvidia-gtx-1080-ti/

https://whattomine.com/coins/

AMD Radeon R9 390X 8Gb

ПО

для майнера:
Bitcoin Mine, BTCMiner, CGMiner, BFGMiner, …
Слайд 25

Форк в сети 25 Форк (англ. fork — ответвление) — использование

Форк в сети

25

Форк (англ. fork — ответвление) — использование исходного кода программного

проекта в качестве старта для другого

Цель
увеличение размера блока
увеличение пропускной способности
снижение комиссии

Приводит к появлению новых валют
Ethereum, Litecoin, Zcoin, …

На форке можно заработать!

Слайд 26

Другие криптовалюты… 26 https://www.rbc.ru/money/11/12/2017/5a212a1e9a79473b35558cb4

Другие криптовалюты…

26

https://www.rbc.ru/money/11/12/2017/5a212a1e9a79473b35558cb4

Слайд 27

Проект Ethereum 27 2013 – зарождение идеи Ethereum Ethereum не только

Проект Ethereum

27

2013 – зарождение идеи Ethereum

Ethereum не только валюта!
Платформа для построения

систем на основе блокчейна:
уникальные сервисы
прозрачны для проведения транзакций любого рода
смарт-контракты
пользователи сами могут создавать свою валюту
гибкость платформы
оперативное выполнение операций (20-30 секунд)
высокая продуктивность майнинга

2016 – форк Ethereum, появление Ethereum Classic

Слайд 28

Ethereum vs Bitcoin 28 Время генерации блока 10 минут 15 секунд

Ethereum vs Bitcoin

28

Время генерации блока

10 минут

15 секунд

Доход за блок

в 3

раза каждые 4 года

Неизменен

Майнинг

Большие вычислительные ресурсы (нужен пул)

Можно добывать самостоятельно (пул не нужен)

Распределение средств

Большая часть у создателей

Половина будет добыта через 5 лет

Код системы


Математическая модель системы

Слайд 29

Смарт-контракт. Что это? 29 Смарт-контракт — компьютерный алгоритм, предназначенный для заключения

Смарт-контракт. Что это?

29

Смарт-контракт — компьютерный алгоритм, предназначенный для заключения и поддержания

коммерческих контрактов в технологии блокчейн.

Смарт-контракты содержат:
информацию об обязательствах сторон
информацию о санкциях за их нарушение
автоматически обеспечивают выполнение всех условий договора

Слайд 30

Смарт-контракт. Пример 30 Создается исполняемый фрагмент кода Фрагмент кода подписывается приватным

Смарт-контракт. Пример

30

Создается исполняемый фрагмент кода
Фрагмент кода подписывается приватным ключом
Подписанный фрагмент помещается

в блок
У контракта появляется внешний адрес
Пользователь может обратиться по адресу к контракту и вызвать его метод
Контракт исполняется при соблюдении заложенных в него условий

pragma solidity ^0.4.0;
contract Counter {
int private count = 0;
function incrementCounter() public {
count += 1;
}
function decrementCounter() public {
count -= 1;
}
function getCount() public constant returns (int) {
return count;
}
}

Слайд 31

Применение смарт-контрактов. Бизнес-идеи 31 Страхование

Применение смарт-контрактов. Бизнес-идеи

31

Страхование

Слайд 32

Применение смарт-контрактов. Бизнес-идеи 32 Операции с недвижимостью (slock.it)

Применение смарт-контрактов. Бизнес-идеи

32

Операции с недвижимостью (slock.it)

Слайд 33

Применение смарт-контрактов. Бизнес-идеи 33 Интернет вещей

Применение смарт-контрактов. Бизнес-идеи

33

Интернет вещей

Слайд 34

Применение смарт-контрактов. Реалии 34

Применение смарт-контрактов. Реалии

34

Слайд 35

P.S. Кафедра геоинформатики и информационной безопасности Самарского университета 35

P.S.

Кафедра геоинформатики и информационной безопасности Самарского университета

35