LISKのデジタル署名、アドレス生成などの技術情報まとめ




どうも高妻です。Twitterでプログラミングのことや暗号通貨のことをつぶやいているのでよかったらフォローしてください。  

LISKの技術情報

LISKはbitFlyerが取り扱っているので投資に関することは情報が多いのですが、技術的情報が少なかったので個人的に調べたことをまとめておきます。

デジタル署名アルゴリズム

LISKのデジタル署名にはエドワーズ曲線デジタル署名アルゴリズムというものが使われています。詳細は下記のQiita記事がわかりやすいかと思うので参照してください。

https://qiita.com/angel_p_57/items/a1dc4e9c0b18a23c5242

LISKではエドワーズ曲線デジタル署名アルゴリズムを実装したed25529が使われています。ちなみにBitcoinとEthereumで使用しているデジタル署名はsecp256k1というものになります。

秘密鍵と公開鍵の生成方法

秘密鍵と公開鍵のキーペア生成にもed25529は使われています。BIP39のシード値をsha256でハッシュ化し、その結果をed25519に渡して秘密鍵と公開鍵が生成されます。

アドレスの生成方法

アドレスは公開鍵をsha256でハッシュ化した最初の8バイトを取って、それを前後反転して数値にし、最後に“L”をつけたもの

アドレスについて

残高管理

残高はUTXOではなくEthereumと同じようにアカウントベースで管理されている。

種類とフォーマット

LISKのアドレス下記のような形式の1つしかりません。BitcoinやBitcoinCashみたいにたくさんないのでシンプルです。

LISK : 18395341822806851551L

Bitcin : 1GRh1yKNhxjfKmPATYdYAC7xwUHvv6doVN

BitcoinCash : bitcoincash:qqs35fza7k0pdls5th0gn6g5ct5sgvrp6qz2etn50e

しかし、アドレスサイズが他の仮想通貨よりも小さくなっているので、アドレスの衝突が起こる可能性が高くなるセキュリティリスクを負っています。対策方法は後述します。

LISKのアドレスが短い理由を議論しているredditの記事

https://www.reddit.com/r/Lisk/comments/7nn7y4/reason_for_lisks_short_address/

アドレスが短いことによるセキュリティリスクをまとめた記事

https://research.kudelskisecurity.com/2018/01/16/blockchains-how-to-steal-millions-in-264-operations/

アドレス衝突の対策

アドレスの衝突リスクを考慮して、LISKは自分のアドレスと公開鍵を紐づけることを推奨しています。そのため、自分に送金トランザクションを発行して、公開鍵とアドレスを紐づける。手数料は通常の送金と同じで0.1LSKかかる。受け取りしかしていないアカウントはアドレスと公開鍵が紐付いていない。

上の記事でも議論されていますが、LISKの開発者はアドレスを短くすることで読みやすく、書き起こしがしやすくするために短くしていると投稿しています。しかし、そもそもこのようなリスクが有るのであればアドレスを短くする必要がないといった反論もありますね。

トランザクションを発行して、公開鍵をネットワークにブロードキャストしないとセキュリティが担保できないのはユーザフレンドリーであるとは言えない気もします。

ブロックとトランザクション

ブロック生成

コンセンサスアルゴリズムはDPoSで101人のデリゲータによって承認され、10秒に1回ブロックが生成される。101人のデリゲータに承認されるとそのブロックのトランザクションはconfirmedとなる。

トランザクション

トランザクションへの署名はed25519を使う。2018年6月時点で送金手数料は0.1LSKで固定されていますが、今後変更されるとのこと。

LISKは送金時に2段階認証の仕組みをアドレスごとに追加することができる。この機能を使うには5LSK払う必要があり、追加すると、12単語のパスフレーズをかけれることができる。

トランザクションにはType 0~7まで8種類あり、5,6,7は今後なくなるので非推奨となっている。

通常の送金はType 0のトランザクションを使うだけでいい。

スマートコントラクト

Javascriptで実装できる。今はまだ何もできなさそう。

The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です