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/
アドレスが短いことによるセキュリティリスクをまとめた記事
アドレス衝突の対策
アドレスの衝突リスクを考慮して、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で実装できる。今はまだ何もできなさそう。
最後に
最後にブロックチェーンエンジニアって何?どうやったらなれるの?という人向けに書いた下の記事も読んでみてください。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す