主页 > imtoken testflight下载 > PHP实现TRX、ETH私钥和钱包地址的助记词转换

PHP实现TRX、ETH私钥和钱包地址的助记词转换

imtoken testflight下载 2023-05-31 07:09:45

TRX助记词转账地址网上全是Java、js或其他语言开发的例子。 一个简单的功能需要依赖其他环境来实现,这就意味着不能容忍。 毕竟,PHP 是世界上最好的语言。 [狗头]

一、知识准备

将助记词转入TRX私钥和地址,首先需要知道助记词与私钥钱包地址的关系。

推荐先阅读这篇文章:理解HD钱包开发中涉及的BIP32、BIP44、BIP39(转)

大致意思是在数字货币中,所有的交易都是通过私钥签名来确认身份的以太坊助记词,但是私钥是不规则的,不利于记忆,所以一些好记的短语(助记词),助记词由私钥按照一定的规范转换而来,实现了助记词和私钥的相互转换。

php实现助记词转TRX,ETH 私钥和钱包地址

钱包创建说明二、TRX助记词转私钥和地址思路(其他链也是思路)

首先,有网友写了一个php方法来创建BTC、LTC、ETH助记词、私钥和地址使用示例(转账)。 我们可以按照这个思路将助记词转化为TRX私钥。

php实现助记词转TRX,ETH 私钥和钱包地址

创建助记词并生成BTC私钥

php实现助记词转TRX,ETH 私钥和钱包地址

创建助记词并生成ETH私钥和地址

php实现助记词转TRX,ETH 私钥和钱包地址

创建助记词并生成LTC私钥和地址

通过以上三个案例以太坊助记词,我们发现,助记词在不同链上的私钥转移时,只需要调用不同的BIP44选项即可。 所以理论上我们所有符合BIP44规范的链都可以按照这个方法将助记词转换成私钥。

BIP44规范中不同链的对应代码:BIP-0044注册币种

转移钱包地址就是利用不同链的生成规则,将私钥转换为公钥,公钥再生成一个地址。 所以要实现地址迁移,只需要找到不同链的开发包即可。

私钥和公钥及地址的关系

三、实现方法

trx 我这里用的这个包

composer require fenguoz/tron-php

php实现助记词转TRX,ETH 私钥和钱包地址

    //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

排名没有特定顺序,仅基于浏览器关闭的顺序。 [笑哭]