Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
スマートコントラクトプログラミング (4) イーサリアム実習 II / Ethereum Pr...
Search
Kenji Saito
PRO
May 31, 2017
Technology
290
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スマートコントラクトプログラミング (4) イーサリアム実習 II / Ethereum Practice II
ブロックチェーンハブ主催で開催している (第2期) スマートコントラクトプログラミング講義 (4) 「イーサリアム実習 II」のスライドです。2017年5月31日(水) に使用しました。
Kenji Saito
PRO
May 31, 2017
More Decks by Kenji Saito
See All by Kenji Saito
アカデミーキャンプ 2026秋「位置ゲーに秀でよ!ウチらとヤツらのゲーム・デザイン」DAY 4 / Academy Camp 2026 Fall - Excel at Location-Based Games! Our and Their Game Design DAY 4
ks91
PRO
0
6
アカデミーキャンプ 2026秋「位置ゲーに秀でよ!ウチらとヤツらのゲーム・デザイン」DAY 3 / Academy Camp 2026 Fall - Excel at Location-Based Games! Our and Their Game Design DAY 3
ks91
PRO
0
37
アカデミーキャンプ 2026秋「位置ゲーに秀でよ!ウチらとヤツらのゲーム・デザイン」DAY 2 / Academy Camp 2026 Fall - Excel at Location-Based Games! Our and Their Game Design DAY 2
ks91
PRO
0
83
アカデミーキャンプ 2026秋「位置ゲーに秀でよ!ウチらとヤツらのゲーム・デザイン」DAY 1 / Academy Camp 2026 Fall - Excel at Location-Based Games! Our and Their Game Design DAY 1
ks91
PRO
0
33
責任2.0/3.0 ∼ 知的創造過程の脱領土化 / Responsibility 2.0 and 3.0: The Deterritorialization of the Intellectual Creative Process
ks91
PRO
0
37
国と地域のマネジメントと AGI / National and Regional Management and AGI
ks91
PRO
0
26
2026 年度「AI による研究・教育サポート」ワークショップ (教員向け) / AY 2026 “AI-Based Research and Education Support” Workshop (For Faculty)
ks91
PRO
0
54
エージェント化するAI:現在地とその先に起きる変化 / AI as Agents: The Current State and the Changes Ahead
ks91
PRO
0
220
文化的ループ (推論, エージェント) と思考プロセスの検証可能性 / Cultural Loops (Inference, Agents) and the Verifiability of Thought Processes
ks91
PRO
0
50
Other Decks in Technology
See All in Technology
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
160
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
3
820
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.4k
映像変換サーバーなしで端末内でHLSを生成してライブ配信
hikarusato
0
130
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
460
品質と信頼性を地続きにする
grimoh
2
810
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
120
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
130
Goodbye ShellScript, Hello File-based App
shunsock
0
290
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
340
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
32
28k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.8k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
YesSQL, Process and Tooling at Scale
rocio
174
15k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
Game over? The fight for quality and originality in the time of robots
wayneb77
1
280
Designing for Timeless Needs
cassininazir
1
480
Fireside Chat
paigeccino
43
4k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Paper Plane (Part 1)
katiecoart
PRO
2
11k
Transcript
II (4) CSO / SFC
[email protected]
II – (4) –
2017-05-31 – p.1/45
1. : 2. ∼ ∼ II – (4) – 2017-05-31
– p.2/45
1. : 2. : 3. / II – (4) –
2017-05-31 – p.3/45
1. II – (4) – 2017-05-31 – p.4/45
(m2 ) 1 1 II – (4) – 2017-05-31 –
p.5/45
IndivisibleAsset string public _name; string public _symbol; uint256 public _quantity;
address public _owner; _name ( ) _symbol _quantity (m2 ) _owner _ Solidity . . . II – (4) – 2017-05-31 – p.6/45
IndivisibleAsset event Transfer(address indexed from, address indexed to); from to
II – (4) – 2017-05-31 – p.7/45
IndivisibleAsset function IndivisibleAsset(string name, string symbol, uint256 quantity) { _name
= name; _symbol = symbol; _quantity = quantity; _owner = msg.sender; } II – (4) – 2017-05-31 – p.8/45
IndivisibleAsset getOwner() function getOwner() returns (address owner) { return (_owner);
} II – (4) – 2017-05-31 – p.9/45
IndivisibleAsset transfer() function transfer(address to) { if (_owner != msg.sender)
{ throw; } _owner = to; Transfer(msg.sender, to); } ( / ) $ populus compile II – (4) – 2017-05-31 – p.10/45
(1) import pytest @pytest.fixture() def asset_contract(chain): AssetFactory = chain.get_contract_factory(’IndivisibleAsset’) deploy_txid
= AssetFactory.deploy(args=[ "5322 Endo, Fujisawa", "mˆ2", 300, ]) contract_address = chain.wait.for_contract_address(deploy_txid) return AssetFactory(address=contract_address) SFC (300m2 ) II – (4) – 2017-05-31 – p.11/45
(2) def test_indivisible_assset(asset_contract, chain): account0 = chain.web3.eth.accounts[0] account1 = chain.web3.eth.accounts[1]
assert asset_contract.call().getOwner() == account0 txid = asset_contract.transact().transfer(account1) chain.wait.for_receipt(txid) assert asset_contract.call().getOwner() == account1 account0 account1 II – (4) – 2017-05-31 – p.12/45
$ py.test tests/test_indivisible_asset.py II – (4) – 2017-05-31 – p.13/45
2. II – (4) – 2017-05-31 – p.14/45
transfer settle, retrieve asset, retrieve token 3 II – (4)
– 2017-05-31 – p.15/45
1. ( ) 2. ( ) 3. ( ) II
– (4) – 2017-05-31 – p.16/45
OneTimeEscrow settle() function settle() { address addr = this; /*
this */ if (_token.getBalanceOf(this) < _price || _asset.getOwner() != addr) { throw; } _token.transfer(_seller , _price); _asset.transfer(_buyer); Settled(); /* */ } settle() transfer ( / ) $ populus compile II – (4) – 2017-05-31 – p.17/45
(1) import pytest @pytest.fixture() def token_contract(chain): . . . @pytest.fixture()
def asset_contract(chain): . . . II – (4) – 2017-05-31 – p.18/45
(2) def test_one_time_escrow(token_contract, asset_contract, chain): account0 = chain.web3.eth.accounts[0] account1 =
chain.web3.eth.accounts[1] txid = chain.web3.eth.sendTransaction({ ’from’: account0, ’to’: account1, ’value’: chain.web3.toWei(1, "ether") }) chain.wait.for_receipt(txid) txid = token_contract.transact().transfer(account1, 300) chain.wait.for_receipt(txid) account0 account1 1Ether 300BcH 300BcH TX II – (4) – 2017-05-31 – p.19/45
(3) EscrowFactory = chain.get_contract_factory(’OneTimeEscrow’) txid = EscrowFactory.deploy(args=[ token_contract.address, account1, asset_contract.address,
account0, 300, ]) contract_address = chain.wait.for_contract_address(txid) EscrowFactory.address = contract_address; account1 account0 300BcH II – (4) – 2017-05-31 – p.20/45
(4) txid = token_contract.transact({ ’from’: account1 }).transfer(contract_address, 300) chain.wait.for_receipt(txid) txid
= asset_contract.transact().transfer(contract_address) chain.wait.for_receipt(txid) assert token_contract.call().getBalanceOf(account0) == 999700 assert token_contract.call().getBalanceOf(account1) == 0 assert token_contract.call().getBalanceOf(contract_address) == 300 assert asset_contract.call().getOwner() == contract_address account1 300BcH account0 II – (4) – 2017-05-31 – p.21/45
(5) txid = EscrowFactory.transact().settle(); chain.wait.for_receipt(txid) assert token_contract.call().getBalanceOf(account0) == 1000000 assert
token_contract.call().getBalanceOf(account1) == 0 assert token_contract.call().getBalanceOf(contract_address) == 0 assert asset_contract.call().getOwner() == account1 settle() II – (4) – 2017-05-31 – p.22/45
$ py.test tests/test_one_time_escrow.py : settle() II – (4) – 2017-05-31
– p.23/45
3. / Hyperledger (Fabric, Sawtooth, Iroha, Burrow) R3 Corda Enterprise
Ethereum Alliance II – (4) – 2017-05-31 – p.24/45
(Hyperledger ) ( ) ( ) ( ) IoT /
/ II – (4) – 2017-05-31 – p.25/45
( ) ( ) ← II – (4) – 2017-05-31
– p.26/45
(Linux Foundation) https://www.hyperledger.org Apache License, Version 2.0 II – (4)
– 2017-05-31 – p.27/45
/ : Proposal → Incubation → Active → Deprecated →
End of Life II – (4) – 2017-05-31 – p.28/45
: https://www.hyperledger.org/about/members II – (4) – 2017-05-31 – p.29/45
Fabric (IBM) IBM Digital Asset Holdings http://hyperledger-fabric.readthedocs.io/en/latest/ State : Active
II – (4) – 2017-05-31 – p.30/45
( ) II – (4) – 2017-05-31 – p.31/45
II – (4) – 2017-05-31 – p.32/45
(Docker) (chaincode) PBFT (Practical BFT) RocksDB CA PKI v1.0 DB
CA II – (4) – 2017-05-31 – p.33/45
Sawtooth (Intel) https://github.com/hyperledger/sawtooth-core State : Active II – (4) –
2017-05-31 – p.34/45
( ) (permissioned) (permissionless) Proof of Elapsed Time (PoET) Proof
of Work ( ) (Intel ) Transaction Families II – (4) – 2017-05-31 – p.35/45
(transaction families) (PoET ) PoET ( ) (transaction families) II
– (4) – 2017-05-31 – p.36/45
Iroha ( ) https://github.com/hyperledger/iroha State : Active II – (4)
– 2017-05-31 – p.37/45
( ) DLT : C++ Sumeragi Whitepaper : https://github.com/hyperledger/iroha/blob/master/docs/iroha_whitepaper.md II
– (4) – 2017-05-31 – p.38/45
JVM (chaincode) Sumeragi (BFT) II – (4) – 2017-05-31 –
p.39/45
Corda (R3) R3 https://github.com/corda/corda II – (4) – 2017-05-31 –
p.40/45
R3 R3CEV 77 (2017 2 ) 3 SBI , R3Net(
) Corda II – (4) – 2017-05-31 – p.41/45
Corda Corda : : II – (4) – 2017-05-31 –
p.42/45
+ CAP II – (4) – 2017-05-31 – p.43/45
JVM ( ) (Uniqueness Services) UTXO X.509 PKI ( )
II – (4) – 2017-05-31 – p.44/45
⇒ ⇒ II – (4) – 2017-05-31 – p.45/45