主页 > imtoken怎么退出账号 > PHP实现TRX、ETH私钥和钱包地址的助记词转换
PHP实现TRX、ETH私钥和钱包地址的助记词转换
TRX助记词转账地址网上全是Java、js或其他语言开发的例子。 一个简单的功能需要依赖其他环境来实现,这就意味着不能容忍。 毕竟,PHP 是世界上最好的语言。 [狗头]
一、知识准备
将助记词转入TRX私钥和地址,首先需要知道助记词与私钥钱包地址的关系。
推荐先阅读这篇文章:理解HD钱包开发中涉及的BIP32、BIP44、BIP39(转)
大致意思是在数字货币中,所有的交易都是通过私钥签名来确认身份的以太坊助记词,但是私钥是不规则的,不利于记忆,所以一些好记的短语(助记词),助记词由私钥按照一定的规范转换而来,实现了助记词和私钥的相互转换。
钱包创建说明二、TRX助记词转私钥和地址思路(其他链也是思路)
首先,有网友写了一个php方法来创建BTC、LTC、ETH助记词、私钥和地址使用示例(转账)。 我们可以按照这个思路将助记词转化为TRX私钥。
创建助记词并生成BTC私钥
创建助记词并生成ETH私钥和地址
创建助记词并生成LTC私钥和地址
通过以上三个案例以太坊助记词,我们发现,助记词在不同链上的私钥转移时,只需要调用不同的BIP44选项即可。 所以理论上我们所有符合BIP44规范的链都可以按照这个方法将助记词转换成私钥。
BIP44规范中不同链的对应代码:BIP-0044注册币种
转移钱包地址就是利用不同链的生成规则,将私钥转换为公钥,公钥再生成一个地址。 所以要实现地址迁移,只需要找到不同链的开发包即可。
三、实现方法
trx 我这里用的这个包
composer require fenguoz/tron-php
//const URI = 'https://api.shasta.trongrid.io'; // shasta testnet
const URI = 'https://api.trongrid.io'; // mainnet
const TRON_PRO_API_KEY = 'xxxxxxxxxx'; // mainnet
const CONTRACT = [
'contract_address' => 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', // USDT TRC20
'decimals' => 6,
];
private $trx;
private $trx20;
/**
* @throws TronErrorException
*/
private function getTRX(): TRX
{
if ($this->trx==null){
$api = new Api(new Client(['base_uri' => self::URI,'headers'=>['TRON-PRO-API-KEY'=>self::TRON_PRO_API_KEY]]));
$this->trx = new Trx($api);
}
return $this->trx;
}
/**
* 私钥转地址
* @throws TronErrorException
*/
public function privateKeyToAddress($privateKey): TronAddress
{
return $this->getTRX()->privateKeyToAddress($privateKey);
}
/**
* @throws TronErrorException
* @throws Exception
* trc 助记词转地址
*/
public function trxMnemonicToAddress($mnemonic): TronAddress
{
$seedGenerator = new Bip39SeedGenerator();
// 通过助记词生成种子,传入可选加密串'hello'
$seed = $seedGenerator->getSeed($mnemonic);
$hdFactory = new HierarchicalKeyFactory();
$master = $hdFactory->fromEntropy($seed);
$hardened = $master->derivePath("44'/195'/0'/0/0");
$pri = $hardened->getPrivateKey()->getHex();
return $this->privateKeyToAddress($pri);
}
开发调试时,可以使用这个网站来测试比较生成的结果:助记词转换器
4. 小贴士
助记词和私钥是非常重要和敏感的数据。 一旦泄漏,可能造成严重的财产损失。 请谨慎使用。
5.参考资料 Bit-Wasp/bitcoin-php的简单使用:创建钱包+交易php创建BTC、LTC、ETH助记词、私钥和地址使用示例 助记词转换器理解BIP32、BIP44、BIP39
排名没有特定顺序,仅基于浏览器关闭的顺序。 [笑哭]