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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
FinTech 9-10 : Smart Contracts and Decentralized Finance
ks91
PRO
0
48
FinTech 7-8 : Blockchain
ks91
PRO
0
59
Fall 2026: A Guide & Workshop on Using AI for Academic Paper Writing
ks91
PRO
0
74
FinTech 5-6 : The World of Apps
ks91
PRO
0
64
終わらない幼年期とそのための下部構造・社会資本 / The Never-Ending Childhood and the Infrastructure and Social Capital Needed to Support It
ks91
PRO
0
38
FinTech 3-4 : Internet Technology and Governance
ks91
PRO
0
79
2026 秋 生成AI を活用した論文執筆ガイド/ワークショップ / Fall 2026: Guide and Workshop on Writing Papers Using Generative AI
ks91
PRO
0
160
AIとビジネス・メガトレンド 〜 サイバネティクス的経営観 / AI and Business Megatrends: A Cybernetic Perspective on Management
ks91
PRO
0
51
FinTech 1-2 : Overview of FinTech
ks91
PRO
0
170
Other Decks in Technology
See All in Technology
AIに任せられるFlutterコードベースを作る 〜仕様をコードで表し、ハーネスで守る〜
myohei
1
370
[FECONF-2026] 신대륙을 향한 카카오페이증권 프론트엔드 항해기 (이주승)
l1ghthouse
0
260
(swiftc) NonCopyableとライフタイム修飾子
teamhimeh
0
150
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
480
Flutter Widget Previewerで始めるUIプレビューとVRTの自動化
sakusaku3939
0
160
AI秘書と毎日働くのはもう当たり前。開発以外の業務に足りない機能をどう埋める?
minorun365
PRO
4
1.9k
Agent 活用環境の構築・運用のための AWS サービスのご紹介/agentcore-for-building-and-operating-agents
ren8k
1
220
書き手が人でもAIでも正しくなる道、SREを埋め込んだDeveloper Platform / tech drivers day8
chmikata
4
810
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
590
DevelopersIO 2026 Tokyo 現時点の衛星通信サービスの現状を整理してみる
maroon1st
0
330
AI駆動開発における開発環境のセキュリティの考え方
yamahiro
2
660
Lint の層を組み直した話
bengo4com
1
140
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
310
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
580
Paper Plane (Part 1)
katiecoart
PRO
2
12k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
820
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Crafting Experiences
bethany
1
390
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Documentation Writing (for coders)
carmenintech
77
5.6k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
440
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
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