1. 程式人生 > >以太坊助記詞PHP開發包簡介

以太坊助記詞PHP開發包簡介

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

1、開發包概述

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

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

以太坊助記詞PHP開發包執行在**Php 7.1+**環境下,當前版本1.0.0,主要程式碼檔案清單參見: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;          /*顯示層級金鑰對應的以太