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
Rippleアドレスについて
Search
Yuki Akiyama
August 29, 2017
2.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rippleアドレスについて
Yuki Akiyama
August 29, 2017
More Decks by Yuki Akiyama
See All by Yuki Akiyama
ビットコインを支えるインフラについて
you21979
3
3.8k
Bitcoinにおける手数料の考え方
you21979
1
1.2k
トレーディングボットとは
you21979
0
430
Bitcoin x Javascript
you21979
1
440
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.2k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.5k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
330
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
310
Evolving SEO for Evolving Search Engines
ryanjones
0
240
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
640
How to Ace a Technical Interview
jacobian
281
24k
How GitHub (no longer) Works
holman
316
150k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Technical Leadership for Architectural Decision Making
baasie
3
430
Transcript
Ripple アドレスについて 2017/08/29 ビットコインとか勉強会#10 Yuki Akiyama
自己紹介 ビットバンク株式会社 ビットコインエンジニア Yuki Akiyama (@you21979)
リップルのアドレスといえば? sから始まるシークレットキー(snx9HAm11LEpNVVGe4brEePcb3Bcp) rから始まるリップルアドレス(rNLUx8GJhkHstX3XtC4jLQCzWoRftbhrG5) シークレットキーからリップルアドレスが生成されます
要素技術 リップルのアドレスを求めるのに必要な技術は以下の5つ • secp256k1(楕円曲線) • sha512(ハッシュ) • sha256(ハッシュ) • ripmd160(ハッシュ)
• base58(エンコード) ここでは特にふれません
シークレットキーとリップルアドレスの関係 リップルアドレスをシークレットキーから生成する仕様を知るには アカウントファミリーという実装を知る必要があります シークレットキーから生成する場合はこの仕様を元に作られています 以下は仕様が書かれているWIKI https://wiki.ripple.com/Account_Family
用語 1.シークレットキー(シード) 2.プライベートジェネレータ、パブリックジェネレータ 3.秘密鍵、公開鍵 4.リップルアドレス
シークレットキー リップルでシークレットキーと読んでいるのは乱数のシード値のことです 16byte(128bit)のエントロピー(乱数)にFamilySeed(33=s)識別子をつけてbase58Check でエンコードされます
プライベートジェネレータ シードのハッシュから生成されます (細かい仕様はGenerateRootDeterministicKeyを参照) プライベートジェネレータからは2つのパラメータを生成できます • インデックスに対応した秘密鍵 • パブリックジェネレータ
パブリックジェネレータ プライベートジェネレータの楕円曲線から生成されます (細かい仕様はGenerateRootDeterministicKeyを参照) パブリックジェネレータからは1つのパラメータを生成できます • インデックスに対応した公開鍵
秘密鍵と公開鍵 秘密鍵から楕円曲線で公開鍵を生成できます 公開鍵からリップルアドレスを生成できます アドレスの作成方法はビットコインとほぼ同じです(P2PKH) ほとんど同じなので前の勉強会の資料を参考にするとよいです https://www.slideshare.net/tomohidemurata1/ss-76891213
アドレスのエンコード(BASE58) ビットコインと同じbase58だが変換テーブルが違う。 ビットコインの変換テーブル 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz リップルの変換テーブル rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz
工程のおさらい 以下の組み合わせで生成できます 公開鍵を生成する方法が二通りあります • シードからプライベートジェネレータを生成 • プライベートジェネレータからパブリックジェネレータを生成 • プライベートジェネレータから秘密鍵を生成 •
パブリックジェネレータから公開鍵を生成 • 秘密鍵から公開鍵を生成 • 公開鍵からリップルアドレスを生成
プライベート/パブリックジェネレータ? • ジェネレータにインデックスを与えるとインデックスに対応したキーを得られる • つまり一つのシードから複数のリップルを得られる • ビットコインにも似た仕組みがある! • 階層的決定制ウォレット(BIP32、HDウォレット) 実は以下の記事にまとめてある
http://qiita.com/you21979@github/items/ddcdd4de31fb96c26ad2
リップルでもBIP32 • 実はBIP32を実装しているウォレットがある • Ledger Nano S • ニーモニックからリッピルアドレスを作れる •
概念が変わってしまうのでシークレットキーが存在しない • 既存のシークレットキーを使ったインフラが使えない 興味があれば以下の記事にやり方を書いてます http://qiita.com/you21979@github/items/7ca77dbd6ffe8f001e9c
最後に リップルのアドレスを大量に作る方法を紹介しましたが リップルのアドレスは実はいろいろ制限されています • 20XRPいれてアクティベートしないとならない • 対応したライブラリが公式にない アドレスが無限にあるとレジャーの仕組み上都合が悪い。 1000億XRP /
20XRP = 最大50億アカウント 人類は75億人
ご静聴ありがとうございました 質問など