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;          /*显示层级密钥对应的以太坊地址*/

原文地址:https://blog.51cto.com/13692892/2410227

时间: 2024-07-30 08:59:43

php实现以太坊助记词的相关文章

如何开发一款以太坊(安卓)钱包系列1 - 通过助记词创建账号

上周我开源了一款钱包,反映很好,一周时间不到已经快到100 Star.接下来我会几篇系列文章把开发以太坊钱包的核心要点写出来,也算是对代码的一个解读. 写在前面 钱包是使用Android安卓平台编写,使用的是原生代码Java 语言编写, 是基于Java 1.8 版本,也使用了Java 1.8 中一些较新的语言特性,如 Lambda表达式等:另外还较多使用了ReactiveX/RxAndroid响应式编程用法. 在本系列文章中,重点是介绍以太坊钱包账号.交易等逻辑,有时可能会假定读者已经了解And

1.16. BIP39协议:使用助记词生成确定性钱包

以太坊系统学习教程: https://www.netkiller.cn/blockchain/bip39.html BIP:39 层:应用层 标题:使用助记词生成确定性钱包秘钥 作者:Marek Palatinus [email protected] Pavol Rusnak [email protected] Aaron Voisine [email protected] Sean Bowe [email protected] 状态:已经被提议 类型:标准化跟踪 创建日期:2013-09-10

[转]简单科普私钥、地址、助记词、Keystore的区别

本文转自:https://www.jianshu.com/p/d0a4a44685d3 很多人保管不好自己的虚拟财产,发生丢币的情况,很多都是因为不清楚私钥的概念. 私钥(Private Key) 比特币的私钥是由64位十六进制的字符组成,长得像这样,比如:5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss. 私钥的生成方式是完全随机的,随机生成这样的字符串就会有16的64次方种可能,即:2的256次方,这个数字已经超过了宇宙中原子的个数,用“

Bytomd 助记词恢复密钥体验指南

比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 背景知识 Bytom 使用的 密钥类型为基于 ed25519 的 chainkd.XPub 代码见 bytom/crypto/ed25519/chainkd 文档见 https://chain.com/docs/1.2/protocol/specifications/chainkd` 预备 代码修改 首先适

助记词是什么,有什么用?

玩加密货币的朋友相信对助记词都不陌生,我们在使用钱包之前,会让你备份12个单词,在备份期间不允许截图操作,并且不断强调这12个单词非常重要,最好用物理方式备份,备份时身边不要有任何人. 对于普通用户来说,如果只是一味的向他们强调助记词重要性的结论,而不告诉背后的原因的话,是很难调动起人的底层动力的,很可能过几天就忘了助记词的重要性(小编已经看过不少在群里呼唤自己因为助记词丢失而导致破产的杯具). 助记词的英文是Mnemonic,在大部分人的印象中,助记词=私钥,是导入钱包的工具,其实准确的说,助

[币严BIZZAN区块链]Java生成ETH钱包助记词、私钥、地址

本文主要介绍在Java工程中如何生成ETH钱包的助记词.私钥.地址. 一.在之前创建的spring boot 项目中的 pom.xml文件中加入需要的依赖 <dependency> <groupId>org.bitcoinj</groupId> <artifactId>bitcoinj-core</artifactId> <version>0.14.7</version> </dependency> <d

BIP39助记词生成简单流程

其实,bip39之前有过一些了解,但是都没有过深入的探索,最近具体学习下,顺便记录下: 1.首先,随机生成一个长度为32倍数的128-256位的二进制类型,我们把它称之为熵: 2.对这个生成的熵做sha256计算,取结果的前8位:(这里说明下,虽然取了8位,但是不一定全部用上,具体使用的位数计算:n = 熵的位数/32) 3.用熵与上一步中前n位进行拼接(熵放前),获得一个大整型(我们一般称这n位为校验位): 这里也说明下,之前我看到网上有人说是将熵以32位分割,然后每段末尾插入1个校验位,于是

《C++运算符优先结合助记词》

===================================== (新手上路一原创,共20 +1句) 作用类名全: 点箭标调构: 后增减运明转: 前增减非位反,正负解尺址换,新删数组无异常: 成员指针解引用: 乘除模: 加和减: 左移右移: 小于大于: 等于不等: 位与: 位异: 位或: 逻与: 逻或: 条件: 赋值: 复赋值: 抛出异常: 逗. (注:)一三赋值复赋值,抛出异常右.

(转)以太坊 钱包 创建 导入 Keystore

最近闲来无事 研究了下以太坊钱包 下边分享下 准备工作 : 需要用到的加密:BIP32 BIP39 BIP44 SCRYPT 加密算法 githab地址 https://github.com/NovaCrypto/BIP32 https://github.com/NovaCrypto/BIP39 https://github.com/NovaCrypto/BIP44 https://github.com/wg/scrypt/ 官方依赖 https://github.com/web3j/web3j