Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
BBc-1 実習 / Practicing BBc-1
Search
Kenji Saito
PRO
November 07, 2018
Technology
2
120
BBc-1 実習 / Practicing BBc-1
2018年11月7日(水)、ブロックチェーンハブ主催で開催されたブロックチェーンアカデミー「【ハンズオン】スマートコントラクトプログラミング(3) BBc-1 実習」にて使用したスライドです。
Kenji Saito
PRO
November 07, 2018
Tweet
Share
More Decks by Kenji Saito
See All by Kenji Saito
コバヤシマルテスト ─ 勝ち目のないゲームに抗いながら旅する心の旅路 / Kobayashi Maru Test - a mental journey of defiance against a game that cannot be won
ks91
PRO
0
3
セキュリティ戦略・発表と総括 / Security Strategies, Presentation and Conclusions
ks91
PRO
1
31
暗号資産の経済学・イントロダクション / Economics of Cryptocurrencies (Introduction)
ks91
PRO
0
20
AI とデジタルトランスフォーメーション / AI and Digital Transformation
ks91
PRO
0
10
インシデントレスポンス演習 II / Incident Response Exercise II
ks91
PRO
0
36
A思考の自動化とX 思考の行方 / Automation of A Thinking and the Future of X Thinking
ks91
PRO
0
23
サイバー戦の現在と未来 / Present and Future of Cyber Warfare
ks91
PRO
0
69
サイバー攻撃・防御とサイバー法 / Cyber Attacks, Defenses and Cyber Law
ks91
PRO
0
50
インシデントレスポンス演習I / Incident Response Exercise I
ks91
PRO
0
63
Other Decks in Technology
See All in Technology
ギークの理想が7つ集まるエムスリーで夢を叶えよう - エムスリー株式会社
m3_engineering
1
260
地理情報とAPIのトレンド
nagix
0
160
データベース研修 分析向けSQL入門【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
110
データ分析基盤を作ってみよう~設計編~
nrinetcom
PRO
1
110
簡単に始めるSnowflakeの機械学習
nayuts
1
190
AIアシスタントの活用で品質の向上と開発ワークフローのスピードアップ
nagix
1
190
セキュリティ研修 Day1【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
150
技術負債による事業の失敗はなぜ起こるのか / Why do business failures due to technical debt occur?
i35_267
0
190
CEL(Common Expression Language)で書いた条件にマッチしたIAM Policyを見つける / iam-policy-finder
fujiwara3
0
710
Azure AI ことはじめ
tsubakimoto_s
0
130
目標設定は好きですか? アジャイルとともに目標と向き合い続ける方法 / Do you like target Management?
kakehashi
10
3k
Azure Pipelinesを使用したCICDベースラインアーキテクチャ実践
yuriemori
0
190
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
93
13k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
325
21k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
662
120k
The Pragmatic Product Professional
lauravandoore
29
6.1k
Git: the NoSQL Database
bkeepers
PRO
423
64k
Learning to Love Humans: Emotional Interface Design
aarron
269
39k
Build The Right Thing And Hit Your Dates
maggiecrowley
28
2.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
189
16k
The MySQL Ecosystem @ GitHub 2015
samlambert
248
12k
Making the Leap to Tech Lead
cromwellryan
127
8.7k
Building Effective Engineering Teams - LeadDev
addyosmani
47
2.2k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.9k
Transcript
BBc-1 (3) CSO / SFC ( https://speakerdeck.com/ks91 )
[email protected]
BBc-1
— (3) — 2018-11-07 – p.1/43
1. : ERC20 2. : 3. : BBc-1 — (3)
— 2018-11-07 – p.2/43
1. BBc-1 2. BBc-1 3. 4. Ethereum ( ) BBc-1
— (3) — 2018-11-07 – p.3/43
1. BBc-1 BBc-1 BBc-1 — (3) — 2018-11-07 – p.4/43
BBc-1 BBc-1 ( ) / (1) (2) (3) BBc-1 —
(3) — 2018-11-07 – p.5/43
#JUDPJO ##D$PSF ϨοδϟʔαϒγεςϜ ΞϓϦέʔγϣϯ ͦ ͷ ଞ ͞ · ͟
· ͳ Ξ ϓ Ϧ ͷ Մ ೳ ੑ ڞ௨ϥΠϒϥϦ ##D ։ൃ߲ Ҭ ௨ ՟ Ξ ϓ Ϧ ϙ Π ϯ τ Ξ ϓ Ϧ དྷ ྺ ূ ໌ Ξ ϓ Ϧ ʜ ॳظʹ͓͍ͯଘࡏূ໌Λґଘ ΞϯΧϦϯά ֤ϊʔυʹ͓͚Δهʹ ֤छσʔλϕʔεΛར༻Մೳ TRMJUF.Z42-ͦͷଞ%# BBc-1 σδλϧ௨՟ϥΠϒϥϦ ͦͷଞͷϥΠϒϥϦ Bitcoin Ethereum ( ) ( ) BBc-1 — (3) — 2018-11-07 – p.6/43
2. BBc-1 : https://github.com/beyond-blockchain/bbc1/blob/develop/docs/BBc1_core_tutorial_installation_ja.md Python BBc-1 — (3) — 2018-11-07
– p.7/43
Python 3.5.0 (3.6.0 ) ( + pipenv) macOS + Homebrew
$ brew install libtool automake pkg-config libffi autoconf openssl Linux (Ubuntu 16.04 LTS ) $ sudo apt install -y git tzdata openssh-server libffi-dev net-tools autoconf automake libtool libssl-dev pkg-config make Windows 10 Linux (Ubuntu 16.04 LTS ) BBc-1 — (3) — 2018-11-07 – p.8/43
Python (venv) macOS ‘python3.6’ ‘python3’ $ python3.6 -m venv bbcenv
$ source bbcenv/bin/activate (bbcenv) $ pip install -U pip (bbcenv) $ deactivate BBc-1 — (3) — 2018-11-07 – p.9/43
pip $ pip install bbc1 develop $ bbc_core.py --no_nodekey --no_nodekey
Python 3.7.0 “bad argument to internal function” $ pip install -U --force-reinstall --no-binary :all: gevent <CTRL>+C BBc-1 — (3) — 2018-11-07 – p.10/43
(develop pip ) pip install $ git clone https://github.com/beyond-blockchain/bbc1.git $
cd bbc1 $ python setup.py sdist $ pip install dist/bbc1-1.1.tar.gz dist tar pip install BBc-1 — (3) — 2018-11-07 – p.11/43
3. BBc-1 Core : https://github.com/beyond-blockchain/bbc1/blob/develop/docs/BBc1_core_tutorial_file_proof_ja.md BBc-1 — (3) — 2018-11-07
– p.12/43
file proof ( ) ( ) ( ) BBc-1 —
(3) — 2018-11-07 – p.13/43
bbc_core.py venv file_proof $ source bbcenv/bin/activate BBc-1 — (3) —
2018-11-07 – p.14/43
--help $ file_proof.py --help file_proof.py $ file_proof.py keypair $ file_proof.py
setup BBc-1 — (3) — 2018-11-07 – p.15/43
$ cat > test.txt BBC HEAVEN. <CTRL>+D $ more test.txt
BBC HEAVEN. file_proof.py BBc-1 Core $ file_proof.py store test.txt BBc-1 Core BBc-1 — (3) — 2018-11-07 – p.16/43
(1) ——- Dump of the transaction data —— * transaction_id:
b’de0af83d66170096dac81c4889bed3e1a20b6ab3eb3ae789adf8a580e25c100c’ version: 0 timestamp: 1529296860 Event[]: 0 Reference[]: 0 Relation[]: 1 [0] asset_group_id: b’45b2a200ccdcdcc3fb80cc9d423e1069f3ca726157f6492b4a70a48e4a1713ab’ Asset: asset_id: b’8bd26d0774050015181185de631c48bdfba411b64fb318f3cbfe8df2dcc80a9d’ user_id: b’e59c553504ca7a54f888eb47e61b773a221ae1311bd58ec4c0912d71c443d715’ nonce: b’83136a5fe6a76ab0’ file_size: 12 file_digest: b’7a30a5ef92e4f84287225e980c48ad3a7c29ea929a710d6b798a9bdcc41afc97’ body_size: 21 body: b’Owner is user_default’ BBc-1 — (3) — 2018-11-07 – p.17/43
(2) Witness: [0] user_id: b’e59c553504ca7a54f888eb47e61b773a221ae1311bd58ec4c0912d71c443d715’ sig_index: 0 Cross_Ref: None Signature[]:
1 [0] key_type: 1 signature: b’2a99a304311eacec015f99638584865faf5c7b5b609f0a04762ea40828baf11934df 6cc22289287362b9f9d6deb7f2c6f9528d0aab61b059292f50646942e553’ pubkey: b’04dc03d221c173fb2cf49bd4f2077fdd88babaa8234a96353b245cb3450ca665a12adb1 86695040188b366f12569b892c63f8410b9e471c4f1cf6f3ff96ddc48fc’ BBc-1 — (3) — 2018-11-07 – p.18/43
BBc-1 Core $ rm test.txt $ file_proof.py get test.txt BBc-1
— (3) — 2018-11-07 – p.19/43
BBc-1 Core $ file_proof.py verify test.txt 1 test.txt is valid
1 test.txt is invalid BBc-1 — (3) — 2018-11-07 – p.20/43
BBc-1 Core $ file_proof.py update test.txt BBc-1 Core verify $
file_proof.py verify test.txt BBc-1 — (3) — 2018-11-07 – p.21/43
(1) ——- Dump of the transaction data —— * transaction_id:
b’346cd3f414a3ed25b7180a80bde41b1b611c13a4de0018f9684356312fa3ddbf’ version: 0 timestamp: 1529297518 Event[]: 0 Reference[]: 0 Relation[]: 1 [0] asset_group_id: b’45b2a200ccdcdcc3fb80cc9d423e1069f3ca726157f6492b4a70a48e4a1713ab’ Pointers[]: 1 [0] transaction_id: b’de0af83d66170096dac81c4889bed3e1a20b6ab3eb3ae789adf8a580e25c100c’ asset_id: None Asset: asset_id: b’69e01aef0e2854aa45625036f824c8275ecfacf48090b07b21bed216f5a67b34’ user_id: b’e59c553504ca7a54f888eb47e61b773a221ae1311bd58ec4c0912d71c443d715’ nonce: b’1f0e962766009a52’ BBc-1 — (3) — 2018-11-07 – p.22/43
(2) file_size: 11 file_digest: b’d866539f224896613df91023f0a9e226085451d6adf1dc5282cbba129d553713’ body_size: 21 body: b’Owner is
user_default’ Witness: [0] user_id: b’e59c553504ca7a54f888eb47e61b773a221ae1311bd58ec4c0912d71c443d715’ sig_index: 0 Cross_Ref: None Signature[]: 1 [0] key_type: 1 signature: b’5eeb9ca0ce527c90e62a6d087e13ccc009b621974420a5f6201ad65443d0b600c4c2c0 ac6f4ba22beee8a1e265853d13fc3e147ad38c2bebc9b06869559925ff’ pubkey: b’04dc03d221c173fb2cf49bd4f2077fdd88babaa8234a96353b245cb3450ca665a12adb186 695040188b366f12569b892c63f8410b9e471c4f1cf6f3ff96ddc48fc’ BBc-1 — (3) — 2018-11-07 – p.23/43
/ ( ) $ file_proof.py keypair $ file_proof.py setup $
file_proof.py wait -o someone ID $ file_proof.py send test.txt “someone” file_proof.py get BBc-1 — (3) — 2018-11-07 – p.24/43
(1) verify ——- Dump of the transaction data —— *
transaction_id: b’8775246772587c9b35329ae39a2d6826175c2cb7ba98da80f51e818db4a144d7’ version: 0 timestamp: 1529298154 Event[]: 0 Reference[]: 0 Relation[]: 1 [0] asset_group_id: b’45b2a200ccdcdcc3fb80cc9d423e1069f3ca726157f6492b4a70a48e4a1713ab’ Pointers[]: 1 [0] transaction_id: b’346cd3f414a3ed25b7180a80bde41b1b611c13a4de0018f9684356312fa3ddbf’ asset_id: None Asset: asset_id: b’97a5023af9fcdba1fb72e12f34c9bf05ee1b24636c02f8d88f5a7f9d269115b6’ user_id: b’2a59d59e3809f827ce709d3815e3950eef4a6a93af5557a93a7fdfba71460843’ nonce: b’18607aaf24de83ee’ BBc-1 — (3) — 2018-11-07 – p.25/43
(2) file_size: 11 file_digest: b’d866539f224896613df91023f0a9e226085451d6adf1dc5282cbba129d553713’ body_size: 52 body: b’Ownership is
transfered from user_default to someone’ Witness: [0] user_id: b’e59c553504ca7a54f888eb47e61b773a221ae1311bd58ec4c0912d71c443d715’ sig_index: 0 [1] user_id: b’2a59d59e3809f827ce709d3815e3950eef4a6a93af5557a93a7fdfba71460843’ sig_index: 1 Cross_Ref: None BBc-1 — (3) — 2018-11-07 – p.26/43
(3) Signature[]: 2 [0] key_type: 1 signature: b’149b0fd48137fec9a076b9214de857da285f2bcc7e634579ac519eada35386179b9c 78e6aa20910165648d8bef62e625d449445626d9c7bcdfaf63d1279331ee’ pubkey:
b’04dc03d221c173fb2cf49bd4f2077fdd88babaa8234a96353b245cb3450ca665a12adb1 86695040188b366f12569b892c63f8410b9e471c4f1cf6f3ff96ddc48fc’ [1] key_type: 1 signature: b’51f77ef2b66bd61db125facbc478c03df5a258af8fded20501c00665594c910604e7d e5c5b75d0259cf8716acd1e99a193fc79f20173b175e1b8bfe72c530df0’ pubkey: b’045833b8045305cb4da21f17cef4c44941de6152d0cfc0c77bc638071a8b86337a59f474 fc11e924a5afe7f3fc4e43491a55193c32f9403ca574ddc088cf8d5158’ BBc-1 — (3) — 2018-11-07 – p.27/43
file_proof BBc-1 Core BBc-1 — (3) — 2018-11-07 – p.28/43
4. Ethereum ( ) BBc-1 — (3) — 2018-11-07 –
p.29/43
Ethereum Go Ethereum Solidity BBc-1 — (3) — 2018-11-07 –
p.30/43
Go Etheruem macOS + Homebrew $ brew install geth Linux
(Ubuntu 16.04 LTS ) $ sudo apt install software-properties-common $ sudo add-apt-repository -y ppa:ethereum/ethereum $ sudo apt update $ sudo apt install ethereum Windows 10 Linux (Ubuntu 16.04 LTS ) BBc-1 — (3) — 2018-11-07 – p.31/43
Solidity macOS + Homebrew $ brew install solidity Linux (Ubuntu
16.04 LTS ), Windows 10 $ sudo apt install solc BBc-1 — (3) — 2018-11-07 – p.32/43
BBc-1 Core BBc-1 — (3) — 2018-11-07 – p.33/43
git clone $ git clone https://github.com/beyond-blockchain/ledger_subsystem.git $ cd ledger_subsystem tar
pip $ python setup.py sdist $ pip install dist/ledger_subsystem-0.11.1.tar.gz BBc-1 — (3) — 2018-11-07 – p.34/43
Ethereum populus (Python Ethereum ) Genesis Ethereum BBcAnchor BBc-1 —
(3) — 2018-11-07 – p.35/43
(1) “bbc_core.py” BBc-1 Core bbc_core.py populus $ eth_subsystem_tool.py -w ∼/.bbc1
populus Genesis $ eth_subsystem_tool.py -w ∼/.bbc1 genesis Ethereum $ eth_subsystem_tool.py -w ∼/.bbc1 new_account BBc-1 — (3) — 2018-11-07 – p.36/43
(2) geth $ eth_subsystem_tool.py -w ∼/.bbc1 run_geth $ tail -f
geth.log BBcAnchor ( ) $ eth_subsystem_tool.py -w ∼/.bbc1 deploy geth $ eth_subsystem_tool.py -w ∼/.bbc1 stop_geth “run_geth” BBc-1 — (3) — 2018-11-07 – p.37/43
BBcAnchor.sol ( ) contract BBcAnchor { mapping (uint256 => uint)
public _digests; constructor () public { } function getStored(uint256 digest) public returns (uint block_no) { return (_digests[digest]); } function isStored(uint256 digest) public returns (bool isStored) { return (_digests[digest] > 0); } function store(uint256 digest) public returns (bool isAlreadyStored) { bool isRes = _digests[digest] > 0; if (!isRes) { _digests[digest] = block.number; } return (isRes); } } BBc-1 — (3) — 2018-11-07 – p.38/43
BBc-1 — (3) — 2018-11-07 – p.39/43
(“bbc_core.py” ) $ eth_subsystem_tool.py -w ∼/.bbc1 config_demo 100 30 domain_id
( ) “bbc_core.py” $ eth_subsystem_tool.py -w ∼/.bbc1 -d enable BBc-1 — (3) — 2018-11-07 – p.40/43
3 $ eth_subsystem_tool.py -w ∼/.bbc1 -d register_demo 3 transaction_id (
) $ eth_subsystem_tool.py -w ∼/.bbc1 -d verify 30 verify BBc-1 — (3) — 2018-11-07 – p.41/43
Ethereum verify “eth_subsystem_tool.py” “subsystem_tool_lib.py” BBc-1 — (3) — 2018-11-07 –
p.42/43
BBc-1 — (3) — 2018-11-07 – p.43/43