多鏈token去中心化錢包系統開發應用(原始碼分析)

v_ch3nguang發表於2023-04-21

儘管區塊鏈技術尚未應用於當前的數字人民幣,但 無法阻止越來越多的人熱切期待其未來在數字貨幣和數字錢包中的應用。 當下的去中心化錢包大多應用於虛擬貨幣,如EpiK 官方錢包就是其中一例。

 

去中心化錢包是區塊鏈世界的基礎設施,其誕生可以追溯到比特幣。區塊鏈,也被稱為價值網際網路, 去中心化錢包是實現價值的關鍵。

 

在實際應用中,使用去中心化錢包,使用者可以在進入資產頁面後直接檢視其數字資產以及轉賬和收款功能。我們可以輕鬆地執行轉賬、收款和查詢 操作。

 

目前市場上的數字資產的幣種越來越多,隨著使用者參與的專案越來越多,不管是投資的專案,還是參與使用的專案,最後都會涉及到資產的管理。DApp 往往管理的是自己的錢包,這裡需要一個真正的統一資產管理的地方。錢包是最好的方式,不僅有以太坊、比特幣,還可以有 EOS NEO QTUM 等的 token

 

<?php

require_once "vendor/autoload.php";

use Sop\CryptoTypes\Asymmetric\EC\ECPublicKey;

use Sop\CryptoTypes\Asymmetric\EC\ECPrivateKey;

use Sop\CryptoEncoding\PEM;

use kornrunner\keccak;

$config = [

     'private_key_type' => OPENSSL_KEYTYPE_EC,

     'curve_name' => 'secp256k1'

];

$res = openssl_pkey_new($config);

if (!$res) {

     echo 'ERROR: Fail to generate private key. -> ' . openssl_error_string();

     exit;

}

// 生成私鑰

openssl_pkey_export($res, $priv_key);

// 獲取公鑰

$key_detail = openssl_pkey_get_details($res);

$pub_key = $key_detail["key"];

$priv_pem = PEM::fromString($priv_key);

// 轉換為橢圓曲線私鑰格式

$ec_priv_key = ECPrivateKey::fromPEM($priv_pem);

// 然後將其轉換為 ASN1 結構

$ec_priv_seq = $ec_priv_key->toASN1();

// HEX 中的私鑰和公鑰

$priv_key_hex = bin2hex($ec_priv_seq->at(1)->asOctetString()->string());

$priv_key_len = strlen($priv_key_hex) / 2;

$pub_key_hex = bin2hex($ec_priv_seq->at(3)->asTagged()->asExplicit()->asBitString()->string());

$pub_key_len = strlen($pub_key_hex) / 2;

// 從公鑰匯出以太坊地址

// 每個 EC 公鑰始終以 0x04 開頭,

// 我們需要刪除前導 0x04 才能正確 hash

$pub_key_hex_2 = substr($pub_key_hex, 2);

$pub_key_len_2 = strlen($pub_key_hex_2) / 2;

// Hash

$hash = Keccak::hash(hex2bin($pub_key_hex_2), 256);

// 以太坊地址長度為 20 個位元組。 ( 40 個十六進位制字元長)

// 我們只需要最後 20 個位元組作為以太坊地址

$wallet_address = '0x' . substr($hash, -40);

$wallet_private_key = '0x' . $priv_key_hex;

echo "\r\n   ETH Wallet Address: " . $wallet_address;

echo "\r\n   Private Key: " . $wallet_private_key;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70028290/viewspace-2947499/,如需轉載,請註明出處,否則將追究法律責任。

相關文章