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
0
2.1k
Rippleアドレスについて
Yuki Akiyama
August 29, 2017
Tweet
Share
More Decks by Yuki Akiyama
See All by Yuki Akiyama
ビットコインを支えるインフラについて
you21979
3
3.7k
Bitcoinにおける手数料の考え方
you21979
1
1.2k
トレーディングボットとは
you21979
0
410
Bitcoin x Javascript
you21979
1
410
Featured
See All Featured
For a Future-Friendly Web
brad_frost
179
9.8k
A designer walks into a library…
pauljervisheath
207
24k
Designing for humans not robots
tammielis
253
25k
The Cult of Friendly URLs
andyhume
79
6.5k
The Pragmatic Product Professional
lauravandoore
35
6.8k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
Embracing the Ebb and Flow
colly
86
4.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
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億人
ご静聴ありがとうございました 質問など