Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
BBc-1 実習 / Beyond Blockchain One : Practice
Search
Kenji Saito
PRO
August 01, 2018
Technology
1
250
BBc-1 実習 / Beyond Blockchain One : Practice
2018年8月1日(水)、ブロックチェーンハブ主催で開催されたブロックチェーンアカデミー「BBc-1 実習」(【ハンズオン】スマートコントラクトプログラミング (4)) にて使用したスライドです。
Kenji Saito
PRO
August 01, 2018
Tweet
Share
More Decks by Kenji Saito
See All by Kenji Saito
成果 / Achievements
ks91
PRO
0
6
意思決定 / Decision-Making
ks91
PRO
0
10
ファンディングとデジタル市民社会 / Funding and Digital Civil Society
ks91
PRO
0
15
生成AI による論文執筆サポート・ワークショップ 論文執筆・推敲編 / Generative AI-Assisted Paper Writing Support Workshop: Drafting and Revision Edition
ks91
PRO
0
27
私たちの前提は揺るがないのか / Are Our Premises Unshakeable?
ks91
PRO
0
22
貨幣無き世界への過程 / The Process Towards a World without Money
ks91
PRO
0
10
ファンディング / Funding
ks91
PRO
0
8
デジタル市民社会 / Digital Civil Society
ks91
PRO
0
11
発表と総括 / Presentations and Summary
ks91
PRO
0
6
Other Decks in Technology
See All in Technology
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
Kubernetes Multi-tenancy: Principles and Practices for Large Scale Internal Platforms
hhiroshell
0
120
AI-DLCを現場にインストールしてみた:プロトタイプ開発で分かったこと・やめたこと
recruitengineers
PRO
2
120
AWS CLIの新しい認証情報設定方法aws loginコマンドの実態
wkm2
6
740
OCI Oracle Database Services新機能アップデート(2025/09-2025/11)
oracle4engineer
PRO
1
180
AIと二人三脚で育てた、個人開発アプリグロース術
zozotech
PRO
1
730
コミューンのデータ分析AIエージェント「Community Sage」の紹介
fufufukakaka
0
490
Kiro Autonomous AgentとKiro Powers の紹介 / kiro-autonomous-agent-and-powers
tomoki10
0
480
5分で知るMicrosoft Ignite
taiponrock
PRO
0
360
Database イノベーショントークを振り返る/reinvent-2025-database-innovation-talk-recap
emiki
0
170
打 造 A I 驅 動 的 G i t H u b ⾃ 動 化 ⼯ 作 流 程
appleboy
0
330
[デモです] NotebookLM で作ったスライドの例
kongmingstrap
0
140
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Side Projects
sachag
455
43k
GitHub's CSS Performance
jonrohan
1032
470k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Fireside Chat
paigeccino
41
3.7k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
We Have a Design System, Now What?
morganepeng
54
7.9k
Unsuck your backbone
ammeep
671
58k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
BBc-1 (4) CSO / SFC ( https://speakerdeck.com/ks91 )
[email protected]
BBc-1
— (4) — 2018-08-01 – p.1/43
1. : 2. : 3. / BBc-1 — (4) —
2018-08-01 – p.2/43
1. BBc-1 2. BBc-1 3. 4. Ethereum ( ) BBc-1
— (4) — 2018-08-01 – p.3/43
1. BBc-1 BBc-1 BBc-1 — (4) — 2018-08-01 – p.4/43
BBc-1 BBc-1 / (1) (2) (3) BBc-1 — (4) —
2018-08-01 – p.5/43
#JUDPJO ##D$PSF ϨοδϟʔαϒγεςϜ ΞϓϦέʔγϣϯ ͦ ͷ ଞ ͞ · ͟
· ͳ Ξ ϓ Ϧ ͷ Մ ೳ ੑ ڞ௨ϥΠϒϥϦ ##D ։ൃ߲ Ҭ ௨ ՟ Ξ ϓ Ϧ ϙ Π ϯ τ Ξ ϓ Ϧ དྷ ྺ ূ ໌ Ξ ϓ Ϧ ʜ ॳظʹ͓͍ͯଘࡏূ໌Λґଘ ΞϯΧϦϯά ֤ϊʔυʹ͓͚Δهʹ ֤छσʔλϕʔεΛར༻Մೳ TRMJUF.Z42-ͦͷଞ%# BBc-1 σδλϧ௨՟ϥΠϒϥϦ ͦͷଞͷϥΠϒϥϦ Bitcoin Ethereum ( ) ( ) BBc-1 — (4) — 2018-08-01 – p.6/43
2. BBc-1 : https://github.com/beyond-blockchain/bbc1/blob/develop/docs/BBc1_core_tutorial_installation_ja.md Python BBc-1 — (4) — 2018-08-01
– 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 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – 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.0.1.tar.gz dist tar pip install BBc-1 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01
– p.12/43
file proof ( ) ( ) ( ) BBc-1 —
(4) — 2018-08-01 – p.13/43
bbc_core.py venv file_proof $ source bbcenv/bin/activate BBc-1 — (4) —
2018-08-01 – p.14/43
--help $ file_proof.py --help file_proof.py $ file_proof.py keypair $ file_proof.py
setup BBc-1 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – p.18/43
BBc-1 Core $ rm test.txt $ file_proof.py get test.txt BBc-1
— (4) — 2018-08-01 – p.19/43
BBc-1 Core $ file_proof.py verify test.txt 1 test.txt is valid
1 test.txt is invalid BBc-1 — (4) — 2018-08-01 – p.20/43
BBc-1 Core $ file_proof.py update test.txt BBc-1 Core verify $
file_proof.py verify test.txt BBc-1 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – p.27/43
file_proof BBc-1 Core BBc-1 — (4) — 2018-08-01 – p.28/43
4. Ethereum ( ) BBc-1 — (4) — 2018-08-01 –
p.29/43
Ethereum Go Ethereum Solidity BBc-1 — (4) — 2018-08-01 –
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 — (4) — 2018-08-01 – p.31/43
Solidity macOS + Homebrew $ brew install solidity Linux (Ubuntu
16.04 LTS ), Windows 10 $ sudo apt install solc BBc-1 — (4) — 2018-08-01 – p.32/43
BBc-1 Core BBc-1 — (4) — 2018-08-01 – 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.0.tar.gz BBc-1 — (4) — 2018-08-01 – p.34/43
Ethereum populus (Python Ethereum ) Genesis Ethereum BBcAnchor BBc-1 —
(4) — 2018-08-01 – 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 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – p.38/43
BBc-1 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – 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 — (4) — 2018-08-01 – p.41/43
Ethereum verify “eth_subsystem_tool.py” “subsystem_tool_lib.py” BBc-1 — (4) — 2018-08-01 –
p.42/43
BBc-1 — (4) — 2018-08-01 – p.43/43