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
イーサリアム実習 II / Practicing Ethereum II
Search
Kenji Saito
PRO
November 08, 2017
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
イーサリアム実習 II / Practicing Ethereum II
2017年11月8日(水)、ブロックチェーンアカデミー「スマートコントラクトプログラミング講座(4)」にて使用のスライドです。
Kenji Saito
PRO
November 08, 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
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
150
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
140
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
360
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
150
Goodbye ShellScript, Hello File-based App
shunsock
0
280
AI時代、データエンジニアが一番おもろい
genshun9
0
670
Claude Code本って、 読む必要あるの?
oikon48
2
480
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.3k
What the customer really needed
kawaguti
PRO
3
210
安心して変更できるWebフロントエンドの作り方
pirosikick
5
2.8k
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.2k
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
528
40k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Statistics for Hackers
jakevdp
799
230k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
360
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
30 Presentation Tips
portentint
PRO
1
400
Optimizing for Happiness
mojombo
378
71k
Product Roadmaps are Hard
iamctodd
55
13k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
500
We Have a Design System, Now What?
morganepeng
55
8.3k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
510
Transcript
II (4) CSO / SFC
[email protected]
II – (4) –
2017-05-31 – p.1/54
1. : 2. ∼ ∼ II – (4) – 2017-05-31
– p.2/54
1. : 2. : 3. / II – (4) –
2017-05-31 – p.3/54
1. II – (4) – 2017-05-31 – p.4/54
(m2 ) 1 1 II – (4) – 2017-05-31 –
p.5/54
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/54
IndivisibleAsset event Transfer(address indexed from, address indexed to); from to
II – (4) – 2017-05-31 – p.7/54
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/54
IndivisibleAsset getOwner() function getOwner() returns (address owner) { return (_owner);
} II – (4) – 2017-05-31 – p.9/54
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/54
(1) import pytest @pytest.fixture() def asset_contract(chain): AssetFactory = chain.provider.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/54
(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/54
$ py.test -k test_indivisible_asset.py II – (4) – 2017-05-31 –
p.13/54
2. II – (4) – 2017-05-31 – p.14/54
transfer settle, retrieve asset, retrieve token 3 II – (4)
– 2017-05-31 – p.15/54
1. ( ) 2. ( ) 3. ( ) II
– (4) – 2017-05-31 – p.16/54
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/54
(1) import pytest @pytest.fixture() def token_contract(chain): . . . @pytest.fixture()
def asset_contract(chain): . . . II – (4) – 2017-05-31 – p.18/54
(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/54
(3) EscrowFactory = chain.provider.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/54
(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/54
(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/54
$ py.test -k test_one_time_escrow.py : settle() II – (4) –
2017-05-31 – p.23/54
3. / Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Indy) R3 Corda
Enterprise Ethereum Alliance Tangle (IOTA) BBc-1 II – (4) – 2017-05-31 – p.24/54
( ) ( ) ( ) IoT / / (
) II – (4) – 2017-05-31 – p.25/54
( = ) ( ) ( ) ↑ II –
(4) – 2017-05-31 – p.26/54
(Linux Foundation) https://www.hyperledger.org Apache License, Version 2.0 II – (4)
– 2017-05-31 – p.27/54
/ : Proposal → Incubation → Active → Deprecated →
End of Life II – (4) – 2017-05-31 – p.28/54
( https://www.hyperledger.org/about/members ) II – (4) – 2017-05-31 – p.29/54
Fabric (IBM) IBM Digital Asset Holdings http://hyperledger-fabric.readthedocs.io/en/latest/ State : Active
II – (4) – 2017-05-31 – p.30/54
( ) ( ) II – (4) – 2017-05-31 –
p.31/54
(Docker) (chaincode) PBFT (Practical BFT) RocksDB CA PKI v1.0 DB
CA BFT : Byzantine Fault Tolerance ( ) CA : Certificate Authority ( ) PKI : Public Key Infrastructure ( ) II – (4) – 2017-05-31 – p.32/54
Sawtooth (Intel) https://github.com/hyperledger/sawtooth-core State : Active II – (4) –
2017-05-31 – p.33/54
( ) (permissioned) (permissionless) Proof of Elapsed Time (PoET) Proof
of Work ( ) (Intel ) / Transaction Families II – (4) – 2017-05-31 – p.34/54
(transaction families) (PoET ) PoET ( ) (transaction families) II
– (4) – 2017-05-31 – p.35/54
Iroha ( ) https://github.com/hyperledger/iroha State : Active II – (4)
– 2017-05-31 – p.36/54
( ) DLT : C++ Sumeragi Whitepaper : https://github.com/hyperledger/iroha/blob/master/docs/iroha_whitepaper.md II
– (4) – 2017-05-31 – p.37/54
JVM (chaincode) Sumeragi (BFT) JVM : Java Virtual Machine (Java
) II – (4) – 2017-05-31 – p.38/54
Corda (R3) Tangle (IOTA) II – (4) – 2017-05-31 –
p.39/54
Corda (R3) R3 https://github.com/corda/corda II – (4) – 2017-05-31 –
p.40/54
R3 R3CEV 77 (2017 2 ) 3 SBI R3Net( )
Corda II – (4) – 2017-05-31 – p.41/54
Corda Corda : : II – (4) – 2017-05-31 –
p.42/54
( ) + CAP ( DLT ) II – (4)
– 2017-05-31 – p.43/54
JVM ( ) (Uniqueness Services) UTXO X.509 PKI ( )
UTXO : Unspent TX (transaction) Output ( ) X.509 : PKI II – (4) – 2017-05-31 – p.44/54
Tangle (IOTA) IoT IOTA https://iota.readme.io II – (4) – 2017-05-31
– p.45/54
IoT TX TX (DAG) ( ) TX Tangle II –
(4) – 2017-05-31 – p.46/54
IoT (IOTA) DAG ( ) DAG II – (4) –
2017-05-31 – p.47/54
BBc-1 (Beyond Blockchain One) https://github.com/beyond-blockchain/bbc1 II – (4) – 2017-05-31
– p.48/54
Proof of Work Bitcoin ( ) BBc Trust ( )
https://beyond-blockchain.org/public/bbc-trust.pdf ( ) https://beyond-blockchain.org/public/bbc-trust_ja.pdf ( ) Design Paper (white paper) https://beyond-blockchain.org/public/bbc1-design-paper.pdf II – (4) – 2017-05-31 – p.49/54
( Python) ( DAG) ( ) UTXO II – (4)
– 2017-05-31 – p.50/54
DLT DLT II – (4) – 2017-05-31 – p.51/54
( ) (by ) (since 1984) ( ) ( )
( ) . . . ( ) ⇒ . . . II – (4) – 2017-05-31 – p.52/54
( ) ( ) ( ) ( ) ( )
( ) (by ) ⇒ DLT II – (4) – 2017-05-31 – p.53/54
⇒ ⇒ II – (4) – 2017-05-31 – p.54/54