您好,登錄后才能下訂單哦!
本篇內容主要講解“Filecoin.PHP開發包怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Filecoin.PHP開發包怎么使用”吧!
Filecoin.PHP 開發包適用于為PHP應用快速增加對Filecoin/FIL數字資產的支持能力,即支持使用自有Filecoin區塊鏈節點的應用場景,也支持基于第三方公共節點的輕量級部署場景。
Filecoin.PHP開發包主要包含以下特性:
支持離線生成Filecoin地址,方便管理維護
支持Filecoin消息的離線簽名,有利于更好地保護私鑰
自動估算Filecoin消息的GAS參數,避免手工調整
支持使用自有節點或第三方節點,例如使用Infura提供的公共節點
完善的Filecoin節點API封裝,支持全部RPC API調用,例如查詢地址地歷史消息等
Filecoin.PHP軟件包運行在 Php 7.1+ 環境下,當前版本1.0.0,主要類/接口及關系如下圖所示:
Filecoin.PHP開發包的主要代碼文件清單見官網說明:http://sc.hubwiz.com/codebag/filecoin-php-lib/
在終端進入演示代碼目錄,執行如下命令:
~$ cd ~/filecoin.php/demo ~/filecoin.php/demo$ php NewAddressDemo.php
執行結果如下:
在終端進入演示代碼目錄,執行如下命令:
~$ cd ~/filecoin.php/demo ~/filecoin.php/demo$ php RestoreAddressDemo.php
執行結果如下:
在終端進入演示代碼目錄,執行如下命令:
~$ cd ~/filecoin.php/demo ~/filecoin.php/demo$ php FilTransferDemo.php
執行結果如下:
在終端進入演示代碼目錄,執行如下命令:
~$ cd ~/filecoin.php/demo ~/filecoin.php/demo$ php demo-rpc-client.php
執行結果如下:
FilKit是開發包的入口,使用這個類可以快速實現FIL轉賬、交易確認等待和余額查詢等功能。
FilKit實例化需要傳入RpcClient
對象和Credential
對象,這兩個參數分別封裝了Filecoin節點提供的API,以及進行交易簽名的用戶身份信息。
例如,下面的代碼創建一個接入Infura的Filecoin節點的FilKit實例,并使用指定的私鑰進行交易簽名:
use Filecoin\FilKit; use Filecoin\RpcClient; use Filecoin\Credential; $client = new RpcClient( // 創建RPC客戶端實例 'https://filecoin.infura.io', // INFURA的filecoin節點URL ['PROJECT_ID', 'PROJECT_SECRET'] // INFURA分配的項目ID和密碼 ); $credential = Credential::fromKeyBase64( // 利用已有私鑰創建身份憑證 'AacNySnfq9cdInB1ZUUvJJVTeqaI7LOW9EcX3UEDFfE=' // base64編碼的私鑰 ); $kit = new FilKit($client, $credential); // 創建FilKit實例
在創建FilKit實例時指定的Credential對象,將作為默認身份憑證執行后續的轉賬交易等操作。
RpcClient / RPC客戶端
如果使用的Filecoin節點無需身份認證,那么在創建RpcClient時只需傳入RPC URL。例如使用本機的filecoin節點:
$client = new RpcClient('http://127.0.0.1/rpc/v0'); // 連接本機節點
如果使用的Filecoin節點啟用了授權TOKEN的認證機制,那么在創建RpcClient時需要傳入授權TOKEN,例如:
$client = new RpcClient( 'http://234.10.58.147/rpc/v0', // 節點RPC API URL 'Ynl0ZSBhcnJheQ==' // 節點分配的授權TOKEN );
Credential / 身份憑證
如果已有的私鑰是16進制字符串形式,那么使用Credential
類的靜態方法fromKey()
來創建實例對象,例如:
$credential = Credential::fromKey( '01a70dc929dfabd71d22707565452f2495537aa688ecb396f44717dd410315f1' // 16進制字符串格式的私鑰 );
使用FilKit的transfer()
方法進行FIL轉賬,例如發送 1.23 FIL :
$to = 'f1saxri7cpyz2cm767q77u3mqumrggljrmi5iqdty'; // 轉賬目標地址 $amount = '1230000000000000000'; // 最小單位的轉賬數量,1 FIL = 10^18 UNIT $cid = $kit->transfer($to,$amount); // 提交Trx轉賬交易 echo 'txid => ' . $cid->{'/'} . PHP_EOL; // 顯示交易ID
注意 :
轉賬數量應轉換為最小單位計量的整數字符串,1 FIL = 10^18 最小單位。
支持各種類型的接收地址,例如:
f01729
:ID地址:
f17uoq6tp427uzv7fztkbsnn64iwotfrristwpryy
:SECP256K1地址
f24vg6ut43yw2h3jqydgbg2xq7x6f4kub3bg6as6i
:ACTOR地址
f3q22fijmmlckhl56rn5nkyamkph4mcfu5ed6dheq53
:BLS地址
使用FilKit的waitForReceipt()
方法等待交易確認,例如:
$receipt = $kit->waitForReceipt($cid); // 等待消息收據 echo 'exit code => ' . $receipt->ExitCode . PHP_EOL; // 顯示消息執行結果代碼,0表示成功
默認的等待時間是60秒,在此時間內沒有等到交易收據將提示錯誤。可以傳入第二個參數修改這一默認設置。例如等待10秒鐘:
$receipt = $kit->waitForReceipt($cid, 10); // 等待10秒鐘
使用getBalance()
方法查詢指定地址的FIL余額,例如:
$addr = 'f1saxri7cpyz2cm767q77u3mqumrggljrmi5iqdty'; // 要查詢的Filecoin地址 $balance = $kit->getBlanace($addr); // 查詢FIL余額,最小單位表示 echo 'balance => ' . $balance . PHP_EOL; // 顯示FIL余額
注意 :返回的余額為最小單位表示,1 FIL = 10^18最小單位。
Filecoin節點透過其RPC API接口提供了很多有用的功能,使用Filecoin.PHP開發包的RpcClient類可以訪問所有的Filecoin RPC API。
例如查詢當前的鏈頭TipSet,對應的RPC API為Filecoin.ChainHead,使用RpcClient對象的調用代碼如下:
// $client = $kit->getClient(); // 從FilKit得到RpcClient實例 // or // 或者 // $client = new Client('http://127.0.0.1:1234/rpc/v0'); // 單獨創建一個RpcClient對象 $ret = $client->chainHead(); // 調用Filecoin.ChainHead API echo 'height => ' . $ret->Height . PHP_EOL; // 顯示Height字段的值
從上面代碼容易理解:
Filecoin的RPC API名稱去掉
Filecoin.
前綴,然后將剩余部分的首字符小寫,就得到RpcClient的方法名。
如果RPC API的params數組包含多個參數,那么依次傳入RpcClient的對應方法即可。例如用Filecoin.ChainGetBlock調用查詢指定的區塊時,需要傳入區塊的CID,使用RpcClient的調用如代碼如下:
$cid = [ // 要查詢區塊的CID '/' => 'bafy2bzacea3wsdh7y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4' ]; $block = $client->chainGetBlock($cid); // 調用 Filecoin.ChainGetBlock API echo 'miner => ' . $block->Miner . PHP_EOL; // 顯示該區塊的礦工地址
到此,相信大家對“Filecoin.PHP開發包怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。