PHP生成助记词和BTC、ETH、LTC地址
本文作者:陈进坚
个人博客:https://jian1098.github.io
CSDN博客:https://blog.csdn.net/c_jian
简书:https://www.jianshu.com/u/8ba9ac5706b6
联系方式:jian1098@qq.com
安装扩展
composer require bitwasp/bitcoin # BTC库,需要运行在64位的php7.0+上
composer require web3p/ethereum-util # ETH库
注意:使用bitwasp
库需要安装PHP
的gmp
扩展,不然会报错Call to undefined function gmp_init()
,LNMP
环境安装gmp扩展可以看我的另一篇文章《LNMP1.6安装gmp扩展》
生成助记词
<?php
require_once './vendor/autoload.php';use BitWasp\Bitcoin\Address\PayToPubKeyHashAddress;
use BitWasp\Bitcoin\Crypto\Random\Random;
use BitWasp\Bitcoin\Key\Factory\HierarchicalKeyFactory;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39Mnemonic;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39SeedGenerator;
use BitWasp\Bitcoin\Mnemonic\MnemonicFactory;//生成助记词
function createMnemonicWord(){// Bip39//$math = Bitcoin::getMath();//$network = Bitcoin::getNetwork();$random = new Random();// 生成随机数(initial entropy)$entropy = $random->bytes(Bip39Mnemonic::MIN_ENTROPY_BYTE_LEN);$bip39 = MnemonicFactory::bip39();// 通过随机数生成助记词$mnemonic = $bip39->entropyToMnemonic($entropy);// 输出助记词echo $mnemonic;}
创建BTC
地址
function createBtcAddress($mnemonicWord,$offset){$seedGenerator = new Bip39SeedGenerator();// 通过助记词生成种子,传入可选加密串'hello'$seed = $seedGenerator->getSeed($mnemonicWord);echo "seed: " . $seed->getHex() . PHP_EOL; //种子$hdFactory = new HierarchicalKeyFactory();$master = $hdFactory->fromEntropy($seed);$hardened = $master->derivePath("44/0'/0'/0/".$offset); //44的含义:https://github.com/bitcoin/bipsecho 'WIF: ' . $hardened->getPrivateKey()->toWif(); //私钥$address = new PayToPubKeyHashAddress($hardened->getPublicKey()->getPubKeyHash());return $address->getAddress();}
参数说明:mnemonicWord
(带空格的字符串)是上一步生成的助记词;offset
(整数)是同一个助记词生成的第几个地址,相同助记词传入相同数字会得到同一个地址
创建ETH
地址
use Web3p\EthereumUtil\Util; //头部要额外引入这个类// Bip39
$math = Bitcoin::getMath();
$network = Bitcoin::getNetwork();
$random = new Random();
// 生成随机数(initial entropy)
$entropy = $random->bytes(Bip39Mnemonic::MIN_ENTROPY_BYTE_LEN);
$bip39 = MnemonicFactory::bip39();
// 通过随机数生成助记词
$mnemonic = $bip39->entropyToMnemonic($entropy);
echo "mnemonic: " . $mnemonic.PHP_EOL.PHP_EOL;// 助记词$seedGenerator = new Bip39SeedGenerator();
// 通过助记词生成种子,传入可选加密串'hello'
$seed = $seedGenerator->getSeed($mnemonic);
echo "seed: " . $seed->getHex() . PHP_EOL;
$hdFactory = new HierarchicalKeyFactory();
$master = $hdFactory->fromEntropy($seed);$util = new Util();
// 设置路径account
$hardened = $master->derivePath("44'/60'/0'/0/0");
echo " - m/44'/60'/0'/0/0 " .PHP_EOL;
echo " public key: " . $hardened->getPublicKey()->getHex().PHP_EOL;
echo " private key: " . $hardened->getPrivateKey()->getHex().PHP_EOL;// 可以导入到imtoken使用的私钥
echo " address: " . $util->publicKeyToAddress($util->privateKeyToPublicKey($hardened->getPrivateKey()->getHex())) . PHP_EOL;// 私钥导入imtoken后一样的地址
创建LTC
地址
<?php
require_once './vendor/autoload.php';use BitWasp\Bitcoin\Address\PayToPubKeyHashAddress;
use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Crypto\Random\Random;
use BitWasp\Bitcoin\Key\Factory\HierarchicalKeyFactory;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39Mnemonic;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39SeedGenerator;
use BitWasp\Bitcoin\Mnemonic\MnemonicFactory;
use BitWasp\Bitcoin\Network\NetworkFactory;// Bip39
$math = Bitcoin::getMath();
// 设置莱特币网络
$network = NetworkFactory::litecoin();
$random = new Random();
// 生成随机数(initial entropy)
$entropy = $random->bytes(Bip39Mnemonic::MIN_ENTROPY_BYTE_LEN);
$bip39 = MnemonicFactory::bip39();
// 通过随机数生成助记词
$mnemonic = $bip39->entropyToMnemonic($entropy);
//$mnemonic = 'security hurdle lift acoustic skate recall hotel elegant amateur hidden escape slow';
echo "mnemonic: " . $mnemonic.PHP_EOL.PHP_EOL;// 助记词$seedGenerator = new Bip39SeedGenerator();
// 通过助记词生成种子,传入可选加密串'hello'
$seed = $seedGenerator->getSeed($mnemonic);
echo "seed: " . $seed->getHex() . PHP_EOL;
$hdFactory = new HierarchicalKeyFactory();
$master = $hdFactory->fromEntropy($seed);$hardened = $master->derivePath("44'/2'/0'/0/0");
echo 'WIF ' . $hardened->getPrivateKey()->toWif($network);
echo PHP_EOL;
$address = new PayToPubKeyHashAddress($hardened->getPublicKey()->getPubKeyHash());
echo 'address ' . $address->getAddress($network);
echo PHP_EOL;
参考文章
- https://www.cnblogs.com/ygcool/p/11714335.html
- https://iancoleman.io/bip39/
- https://github.com/bitcoin/bips
PHP生成助记词和BTC、ETH、LTC地址相关推荐
- java助记词反向_GitHub - gangan1345/mnemonic-sdk: Mnemonic bip39 bip32 bip44 生成助记词 私钥...
mnemonic-sdk Mnemonic bip39 bip32 bip44 支持 BIP39 助记词 支持 BIP32 子私钥 支持 BIP44 多币种管理 Install Gradle: Add ...
- (一)区块链钱包之生成助记词
(一)区块链钱包之生成助记词 (二)区块链钱包之创建钱包地址 (三)区块链钱包之加密算法简介 (四)区块链钱包之创建比特离线交易(BTC交易) (五)区块链钱包之创建以太坊交易(ETH交易) 助记词 ...
- 基于Java的Android区块链开发之生成助记词(位数可选)
基于Java的Android区块链开发之生成助记词 位数可选 具体实现代码 这里使用bitcoinj库,来实现生成bip39的12个助记词,引用库 implementation 'org.bitcoi ...
- vue+vite项目当中:介绍一种生成助记词新方法,兼容以太坊
在上一篇文章 当中我介绍了使用bip39生成助记词,在vue3不同的框架vite.vue-cli当中引入配置的方法.虽然可以生成助记词但是,需要进行大量的配置,尤其是在vite+ES6+vue3项目当 ...
- Android(以太坊)生成助记词
Android(以太坊)生成助记词 之前都是看别人的文章,很少自己写,有时即使是自己摸索出的解决方案(无法直接搜到)的也没有记录下来, 说白了其实就是懒. 先从小的写起,一点一点把还没忘记的记录一下吧 ...
- bip39:使用bip39生成助记词
助记词 从HD钱包的创建方式可知,要创建一个HD钱包,我们必须首先有一个确定的512bit(64字节)的随机数种子. 如果用电脑生成一个64字节的随机数作为种子当然是可以的,但是恐怕谁也记不住. 如果 ...
- 关于区块链的助记词以及BTC地址,私钥,公钥,ETH地址获取的方法
VUE项目中的获取助记词的方式 安装需要的依赖环境 如果你安装了国内的淘宝镜像了 ,建议你用cnpm bip39:npm install bip39 bip32:npm install bip32 e ...
- 手把手教你使用Java生成助记词、私钥、地址|Java区块链钱包生成助记词、地址
一.引入依赖 在spring boot 项目中的 pom.xml文件中加入需要的依赖 <dependency><groupId>org.bitcoinj</groupId ...
- php实现助记词转TRX,ETH 私钥和钱包地址
TRX助记词转地址网上都是Java,js或其他语言开发的示例,一个简单的功能需要依赖其他环境来实现表示不能忍,毕竟php是世界上最好的语言.[狗头] 一.知识准备 要实现助记词转TRX私钥和地址,先需 ...
最新文章
- 剑指offer_第20题_包含min函数的栈_Python
- 演讲实录 | DevOps五大理念及其落地实践
- POJ 3784.Running Median
- 刚从阿里、头条面试回来,尚硅谷java数据结构与算法百度云
- 中国象棋程序的设计与实现(四)-- 一次“流产”的写书计划
- OSI网络体系结构各层协议:
- poj 3352 Road Construction(边-双连通分量)
- mongodb的delete_大数据技术之MongoDB数据删除
- 谈谈感想,8元体会易生信培训
- STM32系列 STM32F4xx 独立看门狗(IWDG)
- 斐讯k2路由器刷PandoraBox一宽带多人用
- 计算机建筑制图实践报告,工程建筑实习报告范文(精选5篇)
- 基于Python的Web开发
- 【风险管理】信贷生命周期之风险管理
- 360系统急救箱用在服务器上,360系统急救箱打开失败的处理操作
- Step3:获得单应矩阵(每张图片需要m个棋盘格角点,m≥4)
- 开机provision应用
- ubuntu安装pr_[原创]Dapr入门教程之二:Dapr的安装
- 支持同步的Todo软件
- 电子邮件地址怎么注册填写?手机怎么注册邮箱地址?