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
Fall 2026: A Guide & Workshop on Using AI for Academic Paper Writing
ks91
PRO
0
34
FinTech 5-6 : The World of Apps
ks91
PRO
0
54
終わらない幼年期とそのための下部構造・社会資本 / The Never-Ending Childhood and the Infrastructure and Social Capital Needed to Support It
ks91
PRO
0
28
FinTech 3-4 : Internet Technology and Governance
ks91
PRO
0
72
2026 秋 生成AI を活用した論文執筆ガイド/ワークショップ / Fall 2026: Guide and Workshop on Writing Papers Using Generative AI
ks91
PRO
0
140
AIとビジネス・メガトレンド 〜 サイバネティクス的経営観 / AI and Business Megatrends: A Cybernetic Perspective on Management
ks91
PRO
0
43
FinTech 1-2 : Overview of FinTech
ks91
PRO
0
160
アカデミーキャンプ 2026秋「位置ゲーに秀でよ!ウチらとヤツらのゲーム・デザイン」DAY 4 / Academy Camp 2026 Fall - Excel at Location-Based Games! Our and Their Game Design DAY 4
ks91
PRO
0
65
アカデミーキャンプ 2026秋「位置ゲーに秀でよ!ウチらとヤツらのゲーム・デザイン」DAY 3 / Academy Camp 2026 Fall - Excel at Location-Based Games! Our and Their Game Design DAY 3
ks91
PRO
0
75
Other Decks in Technology
See All in Technology
分析AIエージェントを育てる、動く環境を育てる
codatum
1
1.1k
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
170
Classmethod Company Deck
satoshi7
1
680
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
4
1k
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
3
490
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
160
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
440
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
110
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
170
Local CI × GitHub Actions
gogutan
2
190
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
860
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
470
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Mobile First: as difficult as doing things right
swwweet
225
10k
Unsuck your backbone
ammeep
672
58k
Music & Morning Musume
bryan
48
7.4k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
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