
Liskで使用していたパスフレーズからEthereumのアドレスとか取得してみる
こんにちは万博おじです。
LiskのL2移行まで2週間切りましたね。
Liskホルダーの皆さん、MetaMaskなどのEthereumウォレットの準備できてますか?
このnoteはLiskのパスフレーズ(12ワード or 24ワード)がMetaMaskとかで使えたらいいのになーという人向けのnoteです。
新規でアドレスつくるよって人は気にしなくてもいいですw
Ethereum用のアドレスやプライベートキーを取得
お手製ツールを起動

ソースは補足1参照
パスフレーズを入力

このパスフレーズはよわよわパスフレーズです。
ググると開発関連のブログ等々がヒットするくらいよわよわなものなので、隠してませんが、パスフレーズは本来めっちゃ大事なものなので絶対に公開しないでください。
Enterを押すとアドレスなどが表示

基本的に、Ethereumウォレットではリカバリーフレーズではなくプライベートキーを使用してアカウントを追加することになります。
なので、プライベートキーはめっちゃ大事です。
誰かに教えたり公開したりしないようにしましょう。
MetaMaskの場合、初めて使う場合はリカバリーフレーズを使用します。
さらにアカウントをインポートする場合はプライベートキーを使用します。
※補足2参照
本題終わり!
使用したツール
GoogleDrive:lisknonanika - lisk2ethereum.zip
使い方
任意の場所にダウンロードしてzipファイルを展開
展開されたフォルダ内にある lisk2ethereum.bat をダブルクリック
パスフレーズの入力を求められたらパスフレーズを入力してEnter
終了確認でYと入力してEnterで終了、Nと入力してEnterで続行
MetaMaskで表示されるアドレスと同じにするためにDelivationPathをm/44'/60'/0'/0/0にしてます。
パスフレーズを盗むようなことはしてませんがなんかあっても責任は取りません。
不安な人はネットワークを切った状態で使用してください。
ネットワーク接続は一切してないので使用できます。
使う際は入力したパスフレーズを盗み見られないように周りに誰もいない時に使ってください。


補足1
ツールのソース(めっちゃ手抜き)
lisk2ethereum.bat
ECHO OFF
CD ./src/
:EXEC_PROC
node ./index.js
SET INSTR=
SET /P INSTR="終了しますか? (Y/n): "
IF "%INSTR%"=="n" GOTO :EXEC_PROC
IF "%INSTR%"=="N" GOTO :EXEC_PROC
src/index.js
const bip39 = require('bip39');
const ethereumjs = require('ethereumjs-wallet');
const readline = require('readline').createInterface({ input: process.stdin, output: process.stdout });
readline.question('パスフレーズを入力してください: ', (mnemonic) => {
try {
if (!mnemonic || !bip39.validateMnemonic(mnemonic)) {
console.log('ERROR: パスフレーズがが不正です');
return;
}
const wallet = ethereumjs.hdkey.fromMasterSeed(bip39.mnemonicToSeedSync(mnemonic)).derivePath("m/44'/60'/0'/0/0").getWallet();
console.log({
Address: `0x${wallet.getAddress().toString('hex')}`,
PrivateKey: `0x${wallet.privateKey.toString('hex')}`,
RecoveryPhrase: mnemonic
});
} finally {
readline.close();
}
});
補足2
MetaMaskにアカウントを追加 - 新規
既存のウォレットをインポートをクリック

MetaMaskの改善は協力しなくてもいい

リカバリーフレーズ(Liskのパスフレーズ)を入力

あとは画面に従って進めばOK
MetaMaskにアカウントを追加 - 追加
アカウント名(赤枠部分)をクリック

誰かが使った形跡があるwww
Add account or ~ をクリック

アカウントをインポートをクリック

秘密鍵(プライベートキー)を入力

あとは画面に従って進めばOK
おしまい
おしまい
基本的にはLiskのパスフレーズを使わずに1から新規で作るのがいいと思いますが、思い入れがある人はEthereumウォレットのリカバリーフレーズとしてLiskで使用していたパスフレーズを使ってみるのもいいかもしれません。
なお、Liskのパスフレーズと書いてますが、LiskのパスフレーズがBIP39に則ってるので使えるというだけで、Lisk限定のもんでもありません。