$30 off During Our Annual Pro Sale. View Details »
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
420
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
0
29k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
980
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.3k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
286
14k
The Language of Interfaces
destraynor
162
25k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Optimizing for Happiness
mojombo
379
70k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
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億人
ご静聴ありがとうございました 質問など