杭州e時(shí)代互聯(lián)網(wǎng)站建設(shè)游戲推廣員是做什么的
TRX助記詞轉(zhuǎn)地址網(wǎng)上都是Java,js或其他語(yǔ)言開發(fā)的示例,一個(gè)簡(jiǎn)單的功能需要依賴其他環(huán)境來實(shí)現(xiàn)表示不能忍,畢竟php是世界上最好的語(yǔ)言。【狗頭】
一、知識(shí)準(zhǔn)備
要實(shí)現(xiàn)助記詞轉(zhuǎn)TRX私鑰和地址,先需要知道助記詞和私鑰錢包地址之間的關(guān)系。
大概意思是,在數(shù)字貨幣里,所有的交易都是由私鑰簽名來確認(rèn)身份的,但是私鑰沒有規(guī)律,不利于記憶,于是就引入了一些便于記憶的詞組(助記詞),助記詞由私鑰根據(jù)一些規(guī)范轉(zhuǎn)換而來,這些規(guī)范實(shí)現(xiàn)了助記詞和私鑰之間相互轉(zhuǎn)換。

二、TRX助記詞轉(zhuǎn)私鑰和地址思路(其他鏈也是一個(gè)思路)
首先有網(wǎng)友寫了php 創(chuàng)建BTC、LTC、ETH助記詞、私鑰和地址 使用示例(轉(zhuǎn))的方法,我們可以根據(jù)這個(gè)思路,將助記詞轉(zhuǎn)成TRX私鑰。



通過上面三個(gè)案例,我們發(fā)現(xiàn)助記詞在轉(zhuǎn)不同的鏈時(shí)私鑰時(shí),只是需要調(diào)用不同的BIP44選項(xiàng)即可。所以理論上,我們所有符合BIP44規(guī)范的鏈,都可以按本方法將助記詞轉(zhuǎn)成私鑰。
BIP44規(guī)范不同鏈對(duì)應(yīng)編碼:Registered coin types for BIP-0044
轉(zhuǎn)錢包地址則是利用不同鏈自己的生成規(guī)則,將私鑰轉(zhuǎn)成公鑰,公鑰再生成地址。所以要實(shí)現(xiàn)轉(zhuǎn)地址,只需要去找到不同鏈的開發(fā)包即可。


三、實(shí)現(xiàn)方法
trx我這邊用的這個(gè)包
composer require fenguoz/tron-php

//const URI = 'https://api.shasta.trongrid.io'; // shasta testnetconst URI = 'https://api.trongrid.io'; // mainnetconst TRON_PRO_API_KEY = 'xxxxxxxxxx'; // mainnetconst 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;}/*** 私鑰轉(zhuǎn)地址* @throws TronErrorException*/public function privateKeyToAddress($privateKey): TronAddress{return $this->getTRX()->privateKeyToAddress($privateKey);}/*** @throws TronErrorException* @throws Exception* trc 助記詞轉(zhuǎn)地址*/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);}
開發(fā)調(diào)試時(shí),可以用這個(gè)網(wǎng)站測(cè)試對(duì)比生成結(jié)果:Mnemonic Code Converter
4、溫馨提示
助記詞和私鑰都是非常重要的敏感數(shù)據(jù),一旦泄露可能造成非常嚴(yán)重測(cè)財(cái)產(chǎn)損失,請(qǐng)謹(jǐn)慎操作使用。
5、參考資料
- Bit-Wasp/bitcoin-php 的簡(jiǎn)單使用:創(chuàng)建錢包 + 進(jìn)行交易
- php 創(chuàng)建BTC、LTC、ETH助記詞、私鑰和地址 使用示例
- Mnemonic Code Converter
- 理解開發(fā)HD 錢包涉及的 BIP32、BIP44、BIP39
排名不分先后,僅以瀏覽器關(guān)閉順序?yàn)橐罁?jù)?!拘蕖?/p>