Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CodeFest 2018. Александр Демидко (Fluence.ai) —...

CodeFest 2018. Александр Демидко (Fluence.ai) — Подход к созданию децентрализованной базы данных

Посмотрите выступление Александра: https://2018.codefest.ru/lecture/1342/

Какие проблемы необходимо решить при создании децентрализованной базы данных? Раскрываем подход Fluence.ai и рассказываем, как:
— Избежать полной репликации данных à-la blockchain, ограничившись подмножеством узлов сети;
— Найти данные в децентрализованной сети;
— Подтвердить целостность и неизменность сохранённых данных;
— Прочитать или записать отдельную строчку, контролируя целостность данных;
— Сделать выборку данных по зашифрованному ключу.

Уровень
Backend-разработчики: middle+ Желательно понимание общих идей блокчейна – о нём рассказано не будет.

CodeFest

April 05, 2018
Tweet

More Decks by CodeFest

Other Decks in Programming

Transcript

  1. – хранить много данных – делать к ним запросы (select,

    insert, update, delete) – не возить кучу данных по сети – децентрализация: все еще нет доверия Blockchain?
  2. Ethereum 15 tx/sec ~$5.5M 2.5 days 20k gas per 32

    byte 100kB per block 40 bytes per OP_RETURN 100 sat/byte Speed Cost per 1GB Time to upload Bitcoin 7 tx/sec ~$7.5M 44 days Blockchain scalability and costs
  3. Idea – децентрализованная сеть: роутинг – частичная репликация на группы

    узлов (кластеры) – индексы + поиск на стороне сервера – верификация запросов – экономическая мотивация
  4. Routing: Kademlia – пространство ключей: ноды и контракт на хранение

    – контракт указывает на узлы, хранящие данные – контракт хранится на ближайших узлах
  5. Routing: Kademlia – каждый узел хранит (неполный) список адресов других

    узлов, которые удалены от него на [2k, 2k+1) – при поиске итеративно приближаемся – каждый узел хранит таблицу ближайших контрактов Kademlia: A Peer-to-Peer Information System Based on the XOR Metric
 (Maymounkov et al)
  6. Queries verification – не доверяем узлам сети – get(key) =

    ∅ ??? SortedMap[K, V] 
 get(key: K): Option[V] put(key: K, value: V): Unit delete(key: K): Unit range(from: K, to: K): List[(K,V)]
  7. Merkle Root Blues храните Merkle Root на клиенте! – а

    если несколько клиентов? – как доказать, кто врет – клиент или сервер?
  8. Merkle Root Blues – client keypair: (kpriv, kpub) – клиент

    подписывает новый Merkle Root: sign(MRn, kpriv) – MRn и подпись хранятся на сервере – подпись можно проверить: verify(signature, kpub)

  9. Blockchain TrueBit: scalable verifiable computations 
 – Верим Ethereum смарт-контрактам

    – Посчитать сложную операцию в смарт-контрактах дорого – Solver – делает вычисления – Verifiers/Challengers – проверяют их и оспаривают – Judges – выносят вердикт (смарт-контракт) Итеративная verification game: находим бинарным поиском, где вычисления пошли не так
  10. Blockchain: source of truth – naïve: Merkle Root от каждой

    операции записи сохранять в блокчейн. Дорого. – optimized: делать периодические чекпойнты – чтение: проверка чекпойнтов
  11. Clusters – кластер: группа узлов, хранящая одинаковые данные – Merkle

    Root – одна таблица одного кластера
 
 – в сети много разных кластеров – у каждого кластера свой дочерний чейн, который периодически синхронизуется с основным блокчейном – идея не нова: Polkadot, Plasma
  12. States Global State – участники: все узлы сети – хранит:

    контракты, балансы Cluster Meta State – участники: узлы кластера + доп узлы (арбитры) – хранит: Merkle Roots, временные балансы Cluster State – участники: узлы кластера – хранит: собственно данные
  13. Economics – Вся сеть: много узлов; верим, что большинство хорошие

    – Кластер: мало узлов; может быть так, что все плохие
  14. Economics Арбитры – способ расширить число узлов в блокчейне кластера,

    не увеличивая replication factor самих данных Арбитры принуждают узлы кластера, которые хранят данные, работать корректно Кластер: 7 узлов с данными + 100 арбитров
  15. Recap Хранилище индексированных данных в децентрализованной сети без доверия. –

    Блокчейн выступает как source of truth + платежная система – Данные хранятся на независимых группах узлов сети – Пруфы на чтение и запись – Экономика: узлы сети получают вознаграждение за работу, штрафы за неисполнение обязательств
  16. References Kademlia: A Peer-to-Peer Information System Based on the XOR

    Metric (Petar Maymounkov and David Mazieres) S/Kademlia: A Practicable Approach Towards Secure Key-based Routing (Ingmar Baumgart and Sebastian Mies) An Ideal-Security Protocol for Order-Preserving Encoding (Raluca Ada Popa et al) Inference Attacks on Property-Preserving Encrypted Databases (Muhammad Naveed et al) Arx: A Strongly Encrypted Database System (Rishabh Poddar et al) Verifiable Data Structures (Adam Eijdenberg et al) Cryptographic Data Structures (Brendan McMillion) Balloon: A Forward-Secure Append-Only Persistent Authenticated Data Structure (Tobias Pulls and Roel Peeters) The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments (Joseph Poon and Thaddeus Dryja) Plasma: Scalable Autonomous Smart Contracts (Joseph Poon and Vitalik Buterin) Proof of Violation for Availability in Cloud Systems (Gwan-Hwan Hwang and Shang-Yu Yeh) Proof of Violation for Response Time Auditing in Cloud Systems (Gwan-Hwan Hwang and Yi-Ling Yuan) A scalable verification solution for blockchains (Teutsch and Reitwießner)