Blockchain economy

Содержание

Слайд 2

Транзакции: input, ouput

Транзакции: input, ouput

Слайд 3

Транзакции

Транзакции

Слайд 4

Транзакции

Транзакции

Слайд 5

Жизненный цикл транзакции

Жизненный цикл транзакции:
Соседние ноды с Alice получают информацию о транзакции
Распространение

Жизненный цикл транзакции Жизненный цикл транзакции: Соседние ноды с Alice получают информацию
по сети неподтвержденной транзакции
Подтверждение транзакции при создании блока
Распространение блока по сети
Боб получает биткоин
Когда Боб может тратить деньги?

Слайд 6

Понятие высоты и глубины блока

Высота блока – порядковый номер выбранного блока начиная

Понятие высоты и глубины блока Высота блока – порядковый номер выбранного блока
с блока генезиса
Глубина блока – количество блоков в цепочке блокчейна после выбранного блока

Слайд 7

Приватный, публичный ключ, адрес кошелька

Приватный, публичный ключ, адрес кошелька

Слайд 8

Base58

приватный ключ может быть любым числом между 1 и n - 1,

Base58 приватный ключ может быть любым числом между 1 и n -
где n константа (n = 1.158 * 10^77, немного меньше, чем 2^256)
Алгоритм генерации приватного ключа:
Выбираем случайное число
Применяем алгоритм SHA256
Публичный ключ вычисляется из приватного ключа с помощью необратимого умножения на эллиптических кривых (алгоритм secp256k1, принятий NIST)

Слайд 9

Base58Check Encoding Key

Base58Check Encoding Key

Слайд 10

Кошелек

Кошелек — это контейнер для приватных ключей

Кошелек Кошелек — это контейнер для приватных ключей

Слайд 11

Кошелек

Кошелек — это контейнер для приватных ключей
Простейший способ генерации ключей: детерминистическая генерация

Кошелек Кошелек — это контейнер для приватных ключей Простейший способ генерации ключей: детерминистическая генерация ключей
ключей

Слайд 12

Недетерминированные кошельки

Кошелек — это контейнер для приватных ключей
Генерация ключей:
Детерминистическая: каждый

Недетерминированные кошельки Кошелек — это контейнер для приватных ключей Генерация ключей: Детерминистическая:
новый приватный ключ получается использованием односторонней хэш-функции от предыдущего закрытого ключа, связывая их в последовательности
Недетерминистическая: случайная генерация ключей

Слайд 13

Детерминированные (с зерном) кошельки

приватные ключи происходят от общего зерна через использование

Детерминированные (с зерном) кошельки приватные ключи происходят от общего зерна через использование
односторонней хэш-функции.
Зерно — это случайное число, которое в сочетании с другими данными, такими как номер индекса, позволяет получить приватные ключи

Слайд 14

Мнемонические кодовые слова

Мнемонические коды — это последовательности английских слов, которые представляют

Мнемонические кодовые слова Мнемонические коды — это последовательности английских слов, которые представляют
собой (кодируют) случайное число, которое используется в качестве зерна для детерминированного кошелька
BIP0039 (создание мнемонического кода и зерна):
Создать случайную последовательность (энтропию) длиной от 128 до 256 бит.
Создать контрольную сумму случайной последовательности, взяв первые несколько битов из ее SHA256 хэша.
Добавить контрольную сумму в конец случайной последовательности.
Разделить последовательность на части длиной в 11 бит, и использовать их в качестве индекса по словарю из 2048 предопределенных слов.
Получить от 12 до 24 слов, представляющих собой мнемонический код.

Слайд 15

Иерархические детерминированные кошельки (BIP0032/BIP0044)

Иерархические детерминистические кошельки содержат ключи в виде древовидной

Иерархические детерминированные кошельки (BIP0032/BIP0044) Иерархические детерминистические кошельки содержат ключи в виде древовидной
структуры, так что из родительского ключа можно вывести последовательность производных ключей, от каждого из которых, в свою очередь, также получается последовательность производных ключей и так далее без ограничения глубины вложенности

Слайд 16

Структура транзакции

Структура транзакции

Слайд 17

Выход транзакции

Выход транзакции

Слайд 18

Подписть транзакции

Подписть транзакции

Слайд 19

Язык сценариев

2+7-3+1 == 7
2 7 OP_ADD 3 OP_SUB 1 OP_ADD 7 OP_EQUAL
Пример:
Скрипт

Язык сценариев 2+7-3+1 == 7 2 7 OP_ADD 3 OP_SUB 1 OP_ADD
проверки: 3 OP_ADD 5 OP_EQUAL
Сценарий со входом 2 – разблокирует скрипт

Слайд 20

Полнота/неполнота по Тьюрингу

Язык Bitcoin:
неполный по Тьюрингу
stateless
Язык Ethereum – Тьюринг-полный
Тьюринг-полнота: означает возможность реализовать

Полнота/неполнота по Тьюрингу Язык Bitcoin: неполный по Тьюрингу stateless Язык Ethereum –
на нём любую вычислимую функцию (т.е. можно написать алгоритм, вычисляющий значение функции)

Слайд 21

Виды отпирающих скриптов

Pay-to-Public-Key-Hash (P2PKH)
Pay-to-Public-Key
multi- signature
pay-to-script-hash (P2SH)
выход данных (OP_RETURN)

Виды отпирающих скриптов Pay-to-Public-Key-Hash (P2PKH) Pay-to-Public-Key multi- signature pay-to-script-hash (P2SH) выход данных (OP_RETURN)

Слайд 22

Pay-to-Public-Key-Hash (P2PKH)

запирающий сценарий, который обременяет выход хешем публичного ключа (адрес Bitcoin)
OP_DUP OP_HASH160

Pay-to-Public-Key-Hash (P2PKH) запирающий сценарий, который обременяет выход хешем публичного ключа (адрес Bitcoin)
OP_EQUAL OP_CHECKSIG
Отпирающий скрипт:

Слайд 23

Pay-to-Public-Key-Hash (P2PKH)

Pay-to-Public-Key-Hash (P2PKH)

Слайд 24

Pay-to-Public-Key

запирающий сценарий - публичный ключ
OP_CHECKSIG
Отпирающий скрипт:

Pay-to-Public-Key запирающий сценарий - публичный ключ OP_CHECKSIG Отпирающий скрипт: Зачем нужен P2KH, если есть P2PK?
from Private Key A>
Зачем нужен P2KH, если есть P2PK?

Слайд 25

Multisig

запирающий сценарий - публичный ключ M-из-N
M

Multisig запирающий сценарий - публичный ключ M-из-N M ... N OP_CHECKMULTISIG Пример:
... N OP_CHECKMULTISIG
Пример:
2 3 OP_CHECKMULTISIG
Отпирающий скрипт: OP_0

Слайд 26

Вывод данных (OP_RETURN)

Добавляется 80 байт к данным транзакции
OP_RETURN
OP_RETURN явно

Вывод данных (OP_RETURN) Добавляется 80 байт к данным транзакции OP_RETURN OP_RETURN явно
создает доказуемо неспособный быть потраченным выход
Для чего это нужно:
Цифровой нотариус

Слайд 27

Pay-to-Script-Hash (P2SH)

Pay-to-Script-Hash (P2SH)

Слайд 28

Преимущества P2SH

Сложные сценарии заменяются на более хеши на выходе транзакции, что делает

Преимущества P2SH Сложные сценарии заменяются на более хеши на выходе транзакции, что
размер транзакций меньше.
Сценарии могут быть закодированы в виде адреса, так что отправителю и кошельку отправителя не требуется сложной реализации P2SH.
P2SH перекладывает бремя построения сценария на получателя, а не отправителя.
P2SH перекладывает бремя хранения данных для длинного сценария с выхода (который находится во множестве UTXO) на вход (который хранится в blockchain).
P2SH перекладывает бремя хранения данных для длинного сценария с настоящего времени (момента платежа) на будущее (момент распоряжения средствами).
P2SH переносит оплату комисионных за длинный сценарий с отправителя на получателя, который должен будет включить длинный погашающий сценарий.

Слайд 29

Сеть биткоин

Децентрализованная Сетевая Архитектура

Сеть биткоин Децентрализованная Сетевая Архитектура

Слайд 30

Типы и роли узлов

Функции биткоин узла:
маршрутизация
базы данных blockchain
майнинг
кошелек

Типы и роли узлов Функции биткоин узла: маршрутизация базы данных blockchain майнинг кошелек

Слайд 31

Типы и роли узлов

Типы и роли узлов

Слайд 32

Подключение к сети Bitcoin

Подключение к сети Bitcoin

Слайд 33

Узлы упрощенного подтверждения оплаты (SPV)

SPV-узлы загружают только заголовки блоков и не

Узлы упрощенного подтверждения оплаты (SPV) SPV-узлы загружают только заголовки блоков и не
загружают транзакции, включенные в каждый блок.
Полный узел будет полностью проверяет всю цепочку блоков и транзакций вниз по blockchain (во времени) вплоть до блока генезиса
SPV-узел будет проверять цепь всех блоков и связывать эту цепь с интересующей транзакцией (с помощью Merkle root)