4. Что, если хочется сложной логики?
Например, дать ребенку деньги, которые
можно потратить лишь в школьной
столовой, и не больше N за день.
5. Что, если хочется сложной логики?
Например, создать крипто-монету,
которая уйдет семье или на резервный
адрес, если ее не трогать N лет
(цифровое наследство или защита от
потери ключа).
6. Что, если хочется сложной логики?
Сделать “краудфандинг” без посредника,
то есть выпустить монету, которую проект
может потратить лишь собрав
определенное количество денег до
указанного срока (после этого монету
может потратить лишь жертвующий).
9. Bitcoin Script: Пример P2PKH
Монета защищена программой на стековом языке,
тратится программой на том же языке. Тратящий
скрипт склеивается с защищающим, исполняется,
результат true или false
Output script (proposition):
OP_DUP
OP_HASH160
<pubKeyHash>
OP_EQUALVERIFY
OP_CHECKSIG
Input script (proof):
<sig>
<pubkey>
17. Исполнение:
Программа принимает на вход несколько
переменных контекста (байты тратящей
транзакции, и “текущее время” в виде
номера блока и времени текущего блока,
указанного майнером).
18. Исполнение:
Ограничено по времени конструкцией
языка(нет циклов) и лимитом на размер
программы (10 000 байт)
Очень много инструкций были
отключены после DoS атак.
19. Исполнение:
Должно быть завершено за
фиксированное время.
В блоке 2000-3000 транзакций (~5000
выходов), если их валидация будет
занимать много времени, начнутся
проблемы на уровне консенсуса.
21. Ethereum:
● Вместо монет – долгоживущие аккаунты
● Аккаунт может быть под контролем
человека или кода(контракта)
● Простая валидация транзакций(проверка
ECDSA подписи)
● Транзакция может создать новый
контракт или отправить сообщение +
деньги из одного аккаунта в другой
23. Ethereum:
Можно исполнять произвольной сложности
код, пока на это есть деньги (“газ”, оплата за
каждую исполненную операцию).
Но есть установленный майнером лимит
стоимости!
26. Проблемы Ethereum:
● Ошибки в контрактах: DAO (~$150M) и другие
● DoS-атаки (из-за неправильной стоимости
инструкций)
● Атаки со стороны майнеров: можно включать
сложный код забесплатно, тормозя
соперников(или вынуждая их пропускать
валидацию блока)
● Невозможность работы контракта, если
установленный майнером потолок сложности
слишком низкий (пример: Ambisafe осенью 2016)
27. Replicated Virtual Machine vs
Programmable Money
У обоих подходов много ограничений и проблем. Как
мы можем иметь более мощный язык для
программируемых денег с гарантиями исполнения за
фиксированное время?
28. Authenticated Languages
• BitAuth2017
• DEX (Bitcoin Script в виде языка подобного Lisp)
• W3C
https://www.w3.org/2016/04/blockchain-workshop/interest/allen-todd-shea.
html
• Smarter Signatures (positional paper from Rebooting Web of Trust 2016)
29. Дверь
Если идет дождь, то дверь может открыть и Петя, иначе
только я.
(is_rain / dlog_g xPetya
) / dlog_g xmine
is_rain = true: dlog_g xPetya
/ dlog_g xmine
is_rain = false: dlog_g xmine
30. Язык Σ–State
Гибридный язык логических предикатов, состоящий из
двух подъязыков:
● предикаты над общим контекстом (“дождь идет”, h > 3)
● утверждения о публичный отображениях секретной
информации (“криптоязык”)
36. ∧ ∧
∨
h < 5 dlogg
x1
h ≥ 5 dlogg
x2
h=4
dlogg
x1
Пример
37. “Bitcoin on Steroids”: Легкий Способ
Bitcoin: общим контекстом являются
байты тратящей транзакции, также
номер блока и его время
Расширим: включим в него саму
программу и номер блока, в котором
была создана монета, также
создаваемые тратящей транзакцией
монеты.
38. Краудфандинг
• (height >= 100 / dlog_g x1) / (height < 100 /
tx.has_output(amount >= 100000, proposition
= dlog_g x2)
“output could be spent by a crowdfunding
transaction if it pays at least 100000 tokens to
x2 public key holder raising funds before block
#100, or getting back to backer key x1 after
that”
39. Расширяемость
Можно расширять криптоязык на лету, описывая
блоки криптоязыка на более низкоуровневом
языке, например, ZKPDL (Meiklejohn et al. USENIX
SECURITY’2010)
41. Что есть:
● Построение и трансформация
деревьев из логических утверждений
● Редукция в крипто-дерево (в 7 фаз)
● Генерация и проверка доказательств
для dlog_g и /
● Примеры краудфандинга и демереджа
44. Выводы:
● У нас есть защищенные программной логикой
монеты и умные контракты
● В обоих направлениях большой фронт работ!
● Хорошо бы понять, как они соотносятся между
собой