Blockchain — Begin

Exonum

Installation Guide — общий

https://exonum.com/doc/get-started/install/

Проверка что все хорошо:

export ROCKSDB_LIB_DIR=/usr/lib/x86_64-linux-gnu
export SNAPPY_LIB_DIR=/usr/lib/x86_64-linux-gnu

You can verify that you installed dependencies and the Rust toolchain correctly by cloning the exonum repository and running its built-in unit test suite:git clone https://github.com/exonum/exonum.git
cd exonum
cargo test —manifest-path exonum/Cargo.toml

Руководство по Cargo: https://rurust.github.io/cargo-docs-ru/guide.html

 

RocksDB — нужно для Exonum

установить и скомпилировать RocksDB

https://github.com/facebook/rocksdb

Инструкция

https://github.com/facebook/rocksdb/blob/master/INSTALL.md

Дополнение к инструкции: How to install RocksDB into ubuntu?

https://stackoverflow.com/questions/47928827/how-to-install-rocksdb-into-ubuntu

Инфа:

RocksDB сервер – быстрое key-value хранилище для SSD накопителей

https://habr.com/post/234173/

The Sodium crypto library — нужно для Exonum

https://download.libsodium.org/doc/

GitHub

https://github.com/jedisct1/libsodium

Установка

https://download.libsodium.org/doc/installation/

./configure
make && make check
sudo make install

Services

Cryptocurrency Tutorial: How to Create Services

https://exonum.com/doc/get-started/create-service/

Оно же, но более свежее на хабре:

Как создать блокчейн-проект на Exonum: краткое руководство

https://habr.com/company/bitfury/blog/342208/

Пример cryptocurrency

https://github.com/exonum/exonum/tree/master/examples/cryptocurrency

Запускаем пример

cd ~/exonum/examples/cryptocurrency

cargo run —example demo

Создаем кошель N1

curl -H «Content-Type: application/json» -X POST -d @create-wallet-1.json http://127.0.0.1:8000/api/services/cryptocurrency/v1/wallets

Где create-wallet-1.json это

~/exonum/examples/cryptocurrency/examples$ cat create-wallet-1.json
{
«body»: {
«pub_key»: «6ce29b2d3ecadc434107ce52c287001c968a1b6eca3e5a1eb62a2419e2924b85»,
«name»: «Alice»
},
«protocol_version»: 0,
«service_id»: 1,
«message_id»: 0,
«signature»:»9f684227f1de663775848b3db656bca685e085391e2b00b0e115679fd45443ef58a5abeb555ab3d5f7a3cd27955a2079e5fd486743f36515c8e5bea07992100b»
}

Получаем инфу из кошелька

curl http://127.0.0.1:8000/api/services/cryptocurrency/v1/wallets

[{«balance»:»100″,»name»:»Alice»,»pub_key»:»6ce29b2d3ecadc434107ce52c287001c968a1b6eca3e5a1eb62a2419e2924b85″}]alex@alex-SVZ1311V9RX:~/exonum/examples/cryptocurrency/examples$

Создаем кошель N2

curl -H «Content-Type: application/json» -X POST -d @create-wallet-2.json http://127.0.0.1:8000/api/services/cryptocurrency/v1/wallets

Переводим бабло

curl -H «Content-Type: application/json» -X POST -d @transfer-funds.json http://127.0.0.1:8000/api/services/cryptocurrency/v1/wallets/transfer

Пример cryptocurrency-advanced

This project demonstrates how to bootstrap own cryptocurrency with Exonum blockchain. Exonum blockchain keeps balances of users and handles secure transactions between them. It implements most basic operations:

Create a new user
Add funds to the user’s balance
Transfer funds between users

https://github.com/exonum/exonum/tree/master/examples/cryptocurrency-advanced

C Docker ошибки:

Status: Downloaded newer image for serhiioryshych/exonum-cryptocurrency-advanced-example:latest
./launch.sh: line 11: 10 Illegal instruction (core dumped) $path_to_app generate-config common.toml pub_$((i + 1)).toml sec_$((i + 1)).toml —peer-address 127.0.0.1:${peer_port}
./launch.sh: line 11: 11 Illegal instruction (core dumped) $path_to_app generate-config common.toml pub_$((i + 1)).toml sec_$((i + 1)).toml —peer-address 127.0.0.1:${peer_port}
./launch.sh: line 11: 12 Illegal instruction (core dumped) $path_to_app generate-config common.toml pub_$((i + 1)).toml sec_$((i + 1)).toml —peer-address 127.0.0.1:${peer_port}
./launch.sh: line 11: 13 Illegal instruction (core dumped) $path_to_app generate-config common.toml pub_$((i + 1)).toml sec_$((i + 1)).toml —peer-address 127.0.0.1:${peer_port}
error: Failed to load key config.: Os { code: 2, kind: NotFound, message: «No such file or directory» }

loading config from sec_1.toml
error: Failed to load key config.: Os { code: 2, kind: NotFound, message: «No such file or directory» }

Без Docker:

Запустилось но не работает, при регистрации из GUI:

Error: Unexpected format of transaction explorer response.

Cryptocurrency frontend tutorial

https://github.com/exonum/exonum/blob/master/examples/cryptocurrency-advanced/tutorial/frontend.md

 

Пример timestamping

This project demonstrates how to create simple timestamping service using Exonum blockchain.

+ к инструкции:

  • Установить npm
  • Установить Node.js

https://github.com/exonum/exonum/tree/master/examples/timestamping

запускаем

cd ~/exonum/examples/timestamping/backend

или в зависимости от примера

cd ~/exonum/examples/cryptocurrency-advanced/backend

exonum-timestamping run —node-config example/node_1_cfg.toml —db-path example/db1 —public-api-address 0.0.0.0:8200

exonum-timestamping run —node-config example/node_2_cfg.toml —db-path example/db2 —public-api-address 0.0.0.0:8201

exonum-timestamping run —node-config example/node_3_cfg.toml —db-path example/db3 —public-api-address 0.0.0.0:8202

exonum-timestamping run —node-config example/node_4_cfg.toml —db-path example/db4 —public-api-address 0.0.0.0:8203

 

 

Результат ошибки 🙁
Sun, 1 Jul 2018 13:20:01 +0300 ERROR exonum::node Consensus is enabled but current node is auditor

Sun, 1 Jul 2018 13:20:01 +0300 ERROR exonum::node::basic Received connect message from PublicKey(EE432550) peer which not in ConnectList.

Sun, 1 Jul 2018 13:18:39 +0300 ERROR exonum::node::consensus Received block has another height, msg=BlockResponse { from: PublicKey(4D8E0E30), to: PublicKey(9508AA8F), block: Block { schema_version: 0, proposer_id: ValidatorId(0), height: Height(139), tx_count: 3, prev_hash: Hash(454291E7), tx_hash: Hash(76E9580F), state_hash: Hash(DCD4A229) }, precommits: [Precommit { validator: ValidatorId(0), height: Height(139), round: Round(1), propose_hash: Hash(E93A9393), block_hash: Hash(2CD5642C), time: 2018-06-30T13:52:09.755932294Z }, Precommit { validator: ValidatorId(2), height: Height(139), round: Round(1), propose_hash: Hash(E93A9393), block_hash: Hash(2CD5642C), time: 2018-06-30T13:52:09.755720372Z }, Precommit { validator: ValidatorId(1), height: Height(139), round: Round(1), propose_hash: Hash(E93A9393), block_hash: Hash(2CD5642C), time: 2018-06-30T13:52:09.756483261Z }], transactions: [Hash(079C2D17), Hash(970679AE), Hash(FCA124A8)] }

По адресу пусто: http://127.0.0.1:2268/

 

 

Java Binding

https://exonum.com/doc/get-started/java-binding/

https://github.com/exonum/exonum-java-binding/blob/master/exonum-java-binding-core/rust/ejb-app/TUTORIAL.md

Тестируем сеть

https://exonum.com/doc/get-started/test-service/

TBD

Линки для изучения технические

Математические основы биткойн-блокчейна

https://habr.com/company/bitfury/blog/340378/

Построение blockchain на Python

https://hackernoon.com/learn-blockchains-by-building-one-117428612f46

«Алгоритмы консенсуса»: Подтверждение доли и доказательство работы

https://habr.com/company/bitfury/blog/327468/

Линки для изучения общие

Иное применение блокчейнов: Смарт-контракты

https://habr.com/company/bitfury/blog/330316/

ТОП 10 ошибок при организации блокчейн-проектов от Gartner

https://habr.com/post/324670/

Blockchains for Artificial Intelligence

https://blog.bigchaindb.com/blockchains-for-artificial-intelligence-ec63b0284984

Линки UseCases

30 things you can do with a blockchain

https://medium.com/yope-chain/30-things-you-can-do-with-a-blockchain-b23b2ab39664

17 Blockchain Disruptive Use Cases

https://everisnext.com/2016/05/31/blockchain-disruptive-use-cases/

Banking Is Only The Beginning: 42 Big Industries Blockchain Could Transform

https://www.cbinsights.com/research/industries-disrupted-blockchain/

Кладбище blockchain проектов

https://magoo.github.io/Blockchain-Graveyard/

Подборки линков

https://habr.com/company/bitfury/blog/332438/

https://habr.com/company/bitfury/blog/344602/

Доклады с HL++ 2017

Применение блокчейна в RTB

https://www.youtube.com/watch?v=5UmXWNg1E4o&list=WL&t=2590s&index=3

Key transparency: Blockchain meets NoiseSocket

https://www.youtube.com/watch?v=hQZ9tSF6g1Y&list=WL&t=470s&index=4

Hyperledger

Home

Использование kubernetes для разработки блокчейн проектов на Hyperledger Fabric

https://habr.com/company/ibm/blog/351808/

Introduction to Hyperledger Fabric for Developers

https://academy.b9lab.com/courses/course-v1:B9lab+HLF-101+2017-11/about

Certified Hyperledger Fabric Developer Course

https://academy.b9lab.com/courses/course-v1:B9lab+HLF-11+2018-06/about

Amazon & Hyperledger

https://aws.amazon.com/marketplace/pp/B0797GK9YY

Вопросы

Есть ли админка? Ответ: Есть Java API

Percistent хранилка? Как вместо MemoryDB использовать RocksDB ? Ответ: см. пример

Произвольный IP для запросов?

Что нужно для прома? Сколько blockchain нод? Как сконфогурить RocksDB?

Пока вижу только валюту, нам нужны смарт контракты? Ответ: Смартконтракты есть.

Как тестируем производительность? И чего производительность?

Кейс: Запихиваем в блокчейн CDR + натравливаем ML

Делаем CloudReady решение?

Это что и как относится с Exonum? An alternative full node bitcoin implementation written in Go

https://github.com/btcsuite/btcd/blob/master/docs/README.md

https://github.com/btcsuite/btcd

Exonum что платно?

Is use of Exonum payable?
Exonum provides an anchoring service which makes it impossible to revise the transaction history. The essence of the service is that a hash of the entire blockchain state is periodically included («anchored») to the public source (Bitcoin Blockchain). Enclosure of a new transaction into the Bitcoin Blockchain requires payment of a fee. Said fee is paid in bitcoins.

Tokio — это что?

Tokio — это обработчик цикла событий, который специально заточен под асинхронное программирование. Он базируется на асинхронном вводе/выводе (I/O)

Ответhttps://tokio.rs/ A platform for writing fast networking code with Rust.