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

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规范不同链对应编码:Registered coin types for 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);
    }

开发调试时,可以用这个网站测试对比生成结果:Mnemonic Code Converter

4、温馨提示

助记词和私钥都是非常重要的敏感数据,一旦泄露可能造成非常严重测财产损失,请谨慎操作使用。

5、参考资料

  1. Bit-Wasp/bitcoin-php 的简单使用:创建钱包 + 进行交易
  2. php 创建BTC、LTC、ETH助记词、私钥和地址 使用示例
  3. Mnemonic Code Converter
  4. 理解开发HD 钱包涉及的 BIP32、BIP44、BIP39

排名不分先后,仅以浏览器关闭顺序为依据。【笑哭】

原创文章,作者:Zeyu,如若转载,请注明出处:https://jinzhijun.cn/develop/1208

(17)
ZeyuZeyu
上一篇 2022年8月4日
下一篇 2022年9月5日

相关推荐

  • 获取宝塔搭建的Ecshop的源码和数据库的方法

    最近在虚拟机里搭了一个kali2022,想试试kali的一些工具的功能,于是想到最近在网上的源码站下载了一套ecshop二开的商城,就搭建在另一个虚拟机上,想着看自己能否攻破下来。…

    2022年5月29日
    2.3K
  • 网站防DDOS攻击思路

    最近给一个客户搭的网站,受到DDOS攻击,因为源码是在网上找的,代码质量不忍直视,一个首页就有n条sql查询。虽然服务器配置用了8核8G内存,然后也加了阿里云全站加速(过滤了一些流…

    2022年9月5日
    3.0K
  • thinkphp使用input(‘param.’)多一个url参数

    今天写代码的时候出现一个奇葩问题,用input(‘param.’)获取post数据时,请求参数中多了一个请求url参数,导致数据提交总是出现问题。 经搜索得…

    2021年12月30日
    1.8K
  • 搭建以太坊轻节点

    1. 安装 go 语言 安装 go 主要是为了去编译 go-ethereum 源码 查看go版本 2. 安装 git 安装 git 主要是为了拉取 go-ethereum 源码 查…

    2020年11月30日
    5.3K
  • vmware最小安装centos并配置固定本地固定ip

    最近公司互联网医院的接入工作差不多进入了尾声,接下来就是整理一些资料什么的,所以有些空闲时间,想着学一下swoole,然后就碰到了安装虚拟机的问题。之前也装过很多次,但是每次安装都…

    2021年8月16日
    2.0K
  • php代码批量Zend Guard解密方法

    最近找到一套源码,想着测试一下功能,顺便学习一下他们的代码思想,结果所有的php文件都是乱码的,由于没有安装说明,只能自己摸索。打开源码,发现其中有些关键词Zend Guard,初…

    2021年12月18日
    5.7K
  • PHP代码审计一条龙思路(转)

    00×0 前言 最近也是边挖src边审计代码,总结下最近的php代码审计的一些思路,我一般按照顺序往下做,限于能力水平,可能会有不对或者欠缺的地方,希望各位师傅能够指导。 00×1…

    2022年5月31日
    1.6K
  • 记一次生产环境救火-20210716

    今天起了个早,早早来到公司,本来吃完早餐,泡好咖啡,在工位上气定神闲的刷刷昨天的财经信息,准备开启今天的工作。想起昨天微信群里有人反映系统,系统加载较慢,于是打开阿里云后台,准备看…

    2021年7月16日
    1.4K
  • window配置Vue2开发环境

    最近找到一套互联网医院的源码,前端技术栈用的是vue,于是想着把vue开发环境搭起来,在网上找了一点资料,现在总结记录一下,方便以后查阅。 一、介绍 Vue (读音 /v…

    2020年10月17日
    1.7K
  • 阿里云SLB(负载均衡)访问远程端口

    最近公司在搞互联网医院三级等保的问题,然后广东卫生健康委办公室的接入通知里有一段话,说是用于互联网医院运行的服务器不少于2套(这里的单位是套),我们不知道这里的意思是指,服务器要有…

    2020年12月19日
    2.2K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注