php 建立BTC、LTC、ETH助记词、私钥和地址 使用示例

项目依赖:php

bitcoin-php bitcoin的php实现库,用于建立助记词和生成私钥 (此第三库须要运行在64位的php7.0+上git

ethereum-util 以太坊经常使用函数php实现库github

composer require bitwasp/bitcoin
composer require web3p/ethereum-util

  

建立助记词并生成BTC私钥(WIF格式,可用于导入其余钱包)、地址:web

<?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; // 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); $hardened = $master->derivePath("49'/0'/0'/0/0"); echo 'WIF: ' . $hardened->getPrivateKey()->toWif(); echo PHP_EOL; $address = new PayToPubKeyHashAddress($hardened->getPublicKey()->getPubKeyHash()); echo 'address: ' . $address->getAddress(); echo PHP_EOL;

 

建立助记词并生成ETH私钥、地址:网络

<?php require_once './vendor/autoload.php'; 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 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私钥、地址:php7

<?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;

 

注:尚未想到PHP如何实现生成以太坊的V3版本keystore,如有大佬实现过,恳请但愿能留下足迹感激涕零composer

相关文章
相关标签/搜索