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日

相关推荐

  • 互联网医院_三级等保_存储型跨脚本执行漏洞

    最近公司在做三级等保备案,安全测试方反馈过来一份漏洞测试报告,其中有一条定义为高危的漏洞:存储型跨脚本执行。 造成这个漏洞的原因,是因为没有对客户端提交的内容进行安全过滤。系统用的…

    2021年2月5日
    40.7K
  • fiddler修改请求信息重新执行

    最近在做一个仿制功能开发时,碰到了这样一个场景:开发的系统需要在三方app里运行,并且在app里执行完后会产生一些数据,然后需要将这些数据保存起来。因为开发是在本地,本地的环境无法…

    2022年7月1日
    3.3K
  • 使用 Laravel 开发 API 时的前置准备(转)

    一、前言 使用 Laravel 有一段时间了,虽然公司项目使用的都是 Thinkphp 框架,但我个人还是比较偏好 Laravel,今天来总结我平时进行开发前的一些准备工作,如果有…

    2022年7月15日
    3.5K
  • VMware中CentOS 7设置文件夹共享的方法

    下午把虚拟机安装好了,但是还有一个不太给力的地方,就是本地代码每次编辑完总是要上传到服务器,之前windows的虚拟机是可以和物理机共享文件夹的,所以就尝试了一下通过文件夹共享来解…

    2021年8月16日
    2.0K
  • centos7下宝塔安装DocHub记录

    最近看到一篇利用文库上传文档作副业的文章,然后把网盘里的各种文档试着上传了一下,结果上传了80多个文档,就成功了2个文档,这成功率,简直不能忍。 趁着周末在家两天,在网上搜了一天的…

    2021年7月26日
    3.0K
  • PHP解密:zym加密 带乱码调试过程(转)

    欢迎阅读我的另一篇文章:PHP解密:魔方1代 PHP加密中的VMProtect分析,文中对 本贴 73# 层 提供的文件进行了分析 案例 1 实验样本 http…

    2021年12月18日
    2.4K
  • JS定时触发—–新订单提醒展示效果并提示音效(转)

    展示效果 php代码 版权声明:本文为lixing1359199697原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链…

    前端 2022年6月28日
    1.8K
  • 广东省互联网医院接入——远程确认

    今天公司互联网医院接入终于走到了远程确认这一步了,因为一直是摸着石头过河,中间做了不少弯路,这里做个记录,希望也在摸索的同行如果看到能有一个参考。当然写这个的时候,还只是远程演示了…

    技术开发 2021年8月18日
    1.4K
  • 打破壁垒:使用 PHP 和 Nginx 在本地开发 OpenAI API

    最近在开发一个OpenAI的产品,但是由于众所周知的原因, OpenAI API 有 IP 限制,使得在本地开发变得困难。开始我的想法是,把代码放服务器上去跑,可是这样一来,要修改…

    2023年4月10日
    4.7K
  • 获取宝塔搭建的Ecshop的源码和数据库的方法

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

    2022年5月29日
    2.3K

发表回复

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