Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
勉強会 #2
Search
titech.crypto
May 27, 2018
0
410
勉強会 #2
titech.crypto
May 27, 2018
Tweet
Share
More Decks by titech.crypto
See All by titech.crypto
Crypgeek 勉強会 #13
titechcrypto
0
300
Lightning network
titechcrypto
0
36
About Bitcoin and its cryptography
titechcrypto
0
100
第8回 CrypGeek勉強会
titechcrypto
0
70
勉強会_7ゼロ知識証明.pdf
titechcrypto
0
430
勉強会7.pdf
titechcrypto
0
310
勉強会 #6
titechcrypto
0
360
勉強会 #6
titechcrypto
0
360
勉強会 #4
titechcrypto
0
320
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
4 Signs Your Business is Dying
shpigford
187
22k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
68
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
440
Being A Developer After 40
akosma
91
590k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
GraphQLとの向き合い方2022年版
quramy
50
14k
How to Ace a Technical Interview
jacobian
281
24k
Are puppies a ranking factor?
jonoalderson
1
2.7k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
950
Transcript
東⼯⼤ブロックチェーン 勉強会 #2 1. イーサリアムとは 2. イーサリアムの秘密鍵, 公開鍵 3. アドレス
東⼯⼤ブロックチェーン研究会 • 2018年3⽉に発⾜。勉強会は今⽇で2回⽬。 • ⽬的 • ブロックチェーンの技術、実装に根ざした勉強会を開催し、ブロック チェーンエンジニア、熟知者になる。 • ブロックチェーン界隈の情報、知財を共有・集約する。
• アイディアを持ち寄り、実現する。 • 定例勉強会 • 週に⼀度、今は⼟曜⽇午前10時〜、場所は都内(渋⾕・六本⽊) • 定例:イーサリアム関連技術、暗号学 • ⾃由発表:Lightning Talk、実装に関する議論など。
• 現在アクティブメンバー 8名、FBメンバー34⼈ 東⼯⼤ブロックチェーン研究会
• 導⼊、何故イーサリアムを学ぶのか: ⼟屋 • イーサリアムの鍵とアドレス(楕円曲線含): ⼟屋 • Lightning Talk •
Gethのデモ: 川 • チューリング完全: ⼤川 2018/04/28: コンテンツ
Why Ethereum?
イーサリアムとは • 情報科学的、ステートマシン • 世界中からアクセス可能な単⼀状態を保持 • 単⼀状態に変更を加える仮想マシン • 社会的インフラ •
オープンソースかつ、分散化された計算インフラ。ブロックチェーン 上のスマートコントラクトと呼ばれるコードを実⾏する。 • 仮想通貨 • Ether(ETH)単位で数えられる仮想通貨。スマートコントラクトの実 ⾏に必要な通貨。
ビットコインとの共通点/違い どちらもコンセンサスアルゴリズムに基く公開/分散ブロック チェーン台帳を利⽤。相違点は… • イーサリアムはチューリング完全であり、スマートコントラク トの実⾏が可能。 • ビットコインは初期段階で⼤部分が採掘されている⼀⽅、イー サリアムは5年分の採掘量の半分がクラウドファンディングに よって調達されている。
• その他、データ構造、半減期の有無、ブロックタイム、⼿数料 計算法、マイニングの報酬形態などブロックチェーンの設計が 異なる。
イーサリアムの誕⽣秘話 • Mastercoin • 世界初のICOプロジェクト(2013/7) • ビットコインブロックチェーン上で動作する、2nd layerソリューショ ン。ビットコイン上に独⾃トークンを発⾏。 •
ビットコインを拡張することで、原始的なスマートコントラクトが実 ⾏可能。但しチューリング不完全。 • Vitalik Buterinの提案(2013) • ビットコインの更なる拡張、及び、Mastercoinのスマートコントラク ト⾔語の改善に関する提案。 →Awesome but too radical!!! ハードフォークの必要。 Ethereum (2013/12 whitepaper)
イーサリアムの誕⽣秘話 • A prehisotry of the Ethereum Protocol(https://vitalik.ca/general/2017/09/14/prehistory.ht ml) •
Mastercoin(https://bitcoinmagazine.com/articles/mastercoin -a-second-generation-protocol-on-the-bitcoin-blockchain- 1383603310/)
4つの開発ステージ ハードフォークを前提とする⼤規模アップデートが4回予定されている。 (但し予定外のハードフォークが⾏われたことも) • Stage1: Frontier (Block #0~) • 初期版のバグ修正など
• Stage2: Homestead (Block #1,150,000~) • 難易度調整アルゴリズムの改善 • 現在のブロックタイムに • Stage3: Metropolis • Metropolis Byzantium • PoW→PoSへのアルゴリズム変更準備 • Metropolis Constantinople • 2018年中頃を予定 • Stage4: Serenity 今ここ 各種スケーリング施策
Solidityはチューリング完全 • 計算理論において、ある計算のメカニズムが万能チューリングマシ ンと同じ計算能⼒をもつとき、その計算モデルはチューリング完全 (チューリングかんぜん、Turing-complete)あるいは計算完備で あるという(Wikipediaより) • ⼀般的なプログラミング⾔語はチューリング完全。 • 計算コスト、時間を考慮しなければ、あらゆる種類の処理を実現す
る事ができる。 • ⇔Bitcoin script: Turing Incompletenessな⾔語である。forループな どが実装されておらず、⽀払いtransactionなどのシンプルな処理の みが可能。 ◦処理に必要な計算コストが完全に予測可能。 チューリング 完全…⼤川君
Dapps • イーサリアムなどのオープンソースかつP2Pで分散されたシス テム上に実装されるwebアプリケーション。イーサリアム上の Dappsはブロックチェーン上のスマートコントラクトとして実 装され、分散された仮想マシンがこれ実⾏させることによって 動作する。 • The General
Theory of Decentralized Applications, Dapps • https://github.com/DavidJohnstonCEO/DecentralizedApplica tions
Why Ethereum? • スマートコントラクトが実⾏可能なDappsプラットフォームの 代表。(NEM、NEO(中国)、QTUMなどもあるが…) • あらゆるDappsを作るアイディアを考える⼟台になる。 • Nonfungible-token…あらゆる価値の扱いが可能。 •
事例の多さ • 既に1000弱のDappsがある。 • スキャム、ハッキングなども多々。 • スケーリング問題の解決策の最前線。 • ⽇本での開発者コミュニティ(学⽣)はまだ少ない。
イーサリアムの鍵, アドレス
公開鍵暗号⽅式 http://ascii.jp/elem/000/000/431/431308/index-2.html • 公開鍵…情報を暗号化することのみができる。鍵を公開してお くことで送信者は公開鍵で暗号化して送信。 • 暗号鍵…情報を復号化することのみできる 受信者は秘密鍵で復号化した平⽂を得る。 正当性 秘匿性
, , = 公開鍵pk, 暗号⽂cから平分の情報が得られない
楕円曲線暗号 • イーサリアムでは秘密鍵はランダムに⽣成、公開鍵は秘密鍵を 楕円曲線上で計算することで求められる。 楕円曲線 • イーサリアムの楕円: secp256k1 • p次元上に無限に広がっているが、⼆次元に
投射すると左図のような感じらしい… • ビットコインのライブラリを使⽤するため に同じ楕円を使⽤。 - = 2 + 7 = 2-67 − 22- − 29 − 2: − 2; − 27 − 2< − 1
秘密鍵/公開鍵: 楕円曲線での演算/公開鍵 加算が定義可能 楕円曲線上の点Pについて 整数kの掛け算が可能 K = k・G G: Generation
point(fix) k: 秘密鍵 K: 公開鍵 K: 0x04 + X座標 + Y座標
秘密鍵/公開鍵の⽣成 • 256bitのバイナリデータ(⼀般的には64⽂字の16進数で表現) の⼗分なエントロピー源からランダムに⽣成する • Ethereumで使⽤されるハッシュ関数: Keccak256 • イーサリアムアドレスは、公開鍵のKeccak256ハッシュの後ろ20バイ ト(40⽂字)である。
Secret key = (Ex.) f8f8a2f43c8376ccb0871305060d7b27b0554d2cc72bccf41b2705608452f315 (x,y) = (Secret key)・G Public key = 0x04 + x + y Hash = Keccak256(Public Key) Address = Hash[-40:] 公開鍵 20バイト 抽出 アドレス Keccak256 秘密鍵 pk = sk ・G
イーサリアムアドレスの表⽰形式 • 16進数は可読性が低い、またイーサリアムアドレスはチェック サムが導⼊されていない。 • これは、後からアドレスをラップアップする仕組みが考案され ていたため。 • ICAP: Inter
exchange Client Address Protocol • ENS: Ethereum Naming Service
ICAP • 銀⾏間の国際送⾦規格IBANに準拠した形式でイーサリアムアド レスを表⽰する⽅法。 IBAN Ex.) IL## AAA BBB CCCCCCCCCCCC
国名 + チェックサム + 国準拠⼝座情報 ICAP Ex.) XE##HAMICDXSV5QXVJA7TJW47Q9CHWKJDA ICAP Ex.) XE##ETHXREGKITTYCATS XE(無国籍イーサリアム) + チェックサム + アドレス XE(無国籍イーサリアム) + チェックサム + Indirectアドレス
ICAP • 銀⾏間の国際送⾦規格IBANに準拠した形式でイーサリアムアド レスを表⽰する⽅法。 IBAN Ex. IL## AAA BBB CCCCCCCCCCCC
国名 + チェックサム + 国準拠⼝座情報 ICAP Ex. XE##HAMICDXSV5QXVJA7TJW47Q9CHWKJDA ICAP Ex. XE##ETHXREGKITTYCATS XE(無国籍イーサリアム) + チェックサム + アドレス XE(無国籍イーサリアム) + チェックサム + Indirectアドレス ü 誤り訂正 ü 可読性 あまり使われていない?・・・・
誤り訂正: Capital Based Checksum • HEX表⽰でのローマ字部分を⼀定のルールに基いて⼤⽂字に置 き換えることで誤り訂正を導⼊する⽅法。(EIP -55) • ◎⾮対応実装では⽂字を識別しないで読み込める。
• ◎アドレスの誤りを99.986%の精度で検出。 • ルール • Hash = Keccak256(Address)を得る。 • AddressとHashを先頭から並べる • Hash値が16進数で8以上の場合には⼤⽂字に。 元アド レス 1 a e 8 keccak 256 b 3 9 a CBCア ドレス 1 a E 8
ENS: Ethereum Name Service • インターネットでのIPアドレス → urlのマッピングの様なもの。 イーサリアムアドレスに対して、7⽂字以上のENSを当てるこ とができる。
• ENSのマッピング対応はスマートコントラクト上に記述される。 オークション形式で開催され、Etherをロックアップすること で取得可能。 0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9 Titech-crypto.eth
Ethereum community • EIP/ERP • Ethereumに関する改善議論がERP, EIPとして改善案が纏められ、承認 されるとアップデートされる。 • https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md
• ethreser.ch • Plasma, shardingなど⼤規模アップデートに関する実装などが話合わ れている。
• EoF