php實現以太坊助記詞

以太坊助記詞PHP開發包用來爲PHP以太坊應用增加助記詞和層級確定密鑰支持能力。下載地址:以太坊助記詞php開發包

1、開發包概述

以太坊助記詞PHP開發包主要包括以下特性:

  • 生成符合BIP39標準的助記詞
  • 將BIP39助記詞轉換爲符合BIP32標準的層級確定密鑰
  • 支持BIP44多幣種層級確定性錢包規範
  • 兼容imtoken、metamask等常見錢包的助記詞與密鑰/地址轉換

以太坊助記詞PHP開發包運行在Php 7.1+環境下,當前版本1.0.0,主要代碼文件清單如下:

<table class="table table-striped">
<thead>
<tr><th>代碼文件</th><th>說明</th></tr>
</thead>
<tbody>
<tr><td>ethtool/src/Mnemonic.php</td><td>助記詞實現類</td></tr>
<tr><td>ethtool/src/WordListInterface.php</td><td>助記詞典接口</td></tr>
<tr><td>ethtool/src/EnglishWordList.php</td><td>英語助記詞典實現類</td></tr>
<tr><td>ethtool/src/HDKey.php</td><td>層級確定密鑰實現類</td></tr>
<tr><td>ethtool/src/Utils.php</td><td>輔助工具類</td></tr>
<tr><td>demo/demo-mnemonic.php</td><td>助記詞生成與導入演示代碼</td></tr>
<tr><td>demo/demo-hkey.php</td><td>助記詞結合層級確定密鑰演示代碼</td></tr>
<tr><td>vendor</td><td>第三方依賴包目錄</td></tr>
<tr><td>composer.json</td><td>composer配置文件</td></tr>
</tbody>
</table>

軟件包下載地址:http://sc.hubwiz.com/codebag/eth-mnemonic-lib/

2、核心類使用說明

Mnemonic類是以太坊助記詞PHP開發包的入口類,用於生成符合BIP39標準的助記詞,或者將已有的助記詞轉化爲對應的隨機熵值,以便用於私鑰的生成。

Mnemonic類提供以下靜態方法來進行實例化:

  • new():創建新的Mnemonic對象
  • fromWords():使用已有的助記詞實例化Mnemonic對象
  • fromEntropy():使用已有的隨機熵實例化Mnemonic對象

Mnemonic實例提供以下方法獲取其表徵的隨機熵和助記詞:

  • getEntropy():獲取隨機熵
  • getWords():獲取助記詞

HDKey類用來創建支持BIP32/BIP44標準的層級確定密鑰,提供以下靜態方法實例化:

  • fromMnemonic():使用助記詞創建層級確定主密鑰
  • fromSeed():使用種子數據創建層級確定主密鑰

HDKey實例對象提供以下方法派生後代HDKey:

  • deriveChild():派生指定序號的子密鑰
  • derivePath():派生指定層級路徑的後代密鑰

3、示例代碼:生成新的助記詞

下面的代碼使用Mnemonic類的靜態方法new()生成新的助記詞,然後輸出顯示所生成的助記詞及其對應的隨機熵:

use EthTool\Mnemonic;

$mnemonic = Mnemonic::new();                            /*創建新的助記詞*/
echo 'mnemonic => ' . $mnemonic->getWords() . PHP_EOL;  /*顯示助記詞*/
echo 'entropy => ' . $mnemonic->getEntropy() . PHP_EOL; /*顯示對應的隨機熵*/

使用助記詞生成層級主密鑰並按照BIP44約定生成層級確定錢包的第一個以太坊密鑰及地址:

$master = HDKey::fromMnemonic($mnemonic->getWords());   /*利用助記詞生成BIP32層級主密鑰*/
$key0 = $master->derive("m/44'/60'/0'/0/0");            /*生成BIP44約定的第一個以太坊密鑰路徑對應的層級密鑰*/
echo 'private key => ' . $key0->privateKey . PHP_EOL;   /*顯示層級密鑰對應的私鑰,16進制字符串*/
echo 'address => ' . $key0->address . PHP_EOL;          /*顯示層級密鑰對應的以太坊地址*/

4、示例代碼:導入已有的助記詞

下面的代碼使用Menmonic類的靜態方法fromWords()導入已有的助記詞,然後利用助記詞生成對應的層級密鑰及BIP44以太坊錢包地址:

use EthTool\HDKey;

//助記詞
$words = 'moral predict wash pledge hybrid box virtual length clap volcano shadow notice';

$master = HDKey::fromMnemonic($words);                  /*利用助記詞生成BIP32層級主密鑰*/
$key0 = $master->derive("m/44'/60'/0'/0/0");            /*生成BIP44約定的第一個以太坊密鑰路徑對應的層級密鑰*/
echo 'private key => ' . $key0->privateKey . PHP_EOL;   /*顯示層級密鑰對應的私鑰,16進制字符串*/
echo 'address => ' . $key0->address . PHP_EOL;          /*顯示層級密鑰對應的以太坊地址*/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章