日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Polygon php開發包適用于為PHP應用快速增加對Polygon區塊鏈數字資產的支持能力, 即支持使用自有Polygon區塊鏈節點的應用場景,也支持基于Polygon區塊鏈官方節點API服務的 輕量級部署場景。官方下載地址:
http://sc.hubwiz.com/codebag/polygon-php/

Polygon PHP開發包主要包含以下特性:

  • 支持Polygon區塊鏈原生PHP轉賬交易及余額查詢
  • 支持Polygon鏈上智能合約的部署與交互,支持ERC20/ERC721/ERC1155轉賬交易及到賬跟蹤
  • 支持Polygon鏈上交易的離線簽名,避免泄露私鑰
  • 支持使用自有節點或第三方節點,例如Polygon官方提供的公共節點

Polygon PHP軟件包運行在 Php 7.1+ 環境下,當前版本1.0.0,主要類/接口及關系如下圖所示:

Polygon區塊鏈PHP開發包

 

Polygon PHP開發包的主要代碼文件清單如下:

代碼文件

說明

polygon.php/src/Kit.php

Polygon PHP開發包入口類

polygon.php/src/Erc20.php

ERC20智能合約封裝類

polygon.php/src/Erc721.php

ERC721智能合約封裝類

polygon.php/src/Erc1155.php

ERC1155智能合約封裝類

polygon.php/src/SmartContract.php

Polygon智能合約封裝類

polygon.php/src/Credential.php

Polygon區鏈上身份標識類,用于交易簽名

polygon.php/src/NodeClient.php

Polygon節點協議封裝類

polygon.php/src/Callback.php

Php回調輔助類

polygon.php/src/Helper.php

雜項輔助函數集

contracts/WizToken.sol

示例ERC20合約

contracts/WizNFT.sol

示例ERC721合約

contracts/WizMT.sol

示例ERC1155合約

bin/build-contracts.sh

合約編譯腳本工具

demo/credential-demo.php

演示如何創建新的Polygon賬號或導入已有私鑰

demo/matic-demo.php

演示MATIC轉賬及查詢

demo/erc20-demo.php

演示ERC20轉賬及查詢

demo/erc20-event-demo.php

演示ERC20到賬監聽

demo/erc721-demo.php

演示ERC721轉賬及查詢

demo/erc721-event-demo.php

演示ERC721到賬監聽

demo/erc1155-demo.php

演示ERC1155轉賬及查詢

demo/erc1155-event-demo.php

演示ERC1155到賬監聽

demo/deploy-contracts-demo.php

演示代碼,智能合約的部署

vendor

第三方依賴包目錄

composer.json

composer配置文件

2、使用示例代碼

在使用示例代碼之前,請按照實際情況設置demo/config.php中的以下配置信息:

  • NETWORK:要接入的區塊鏈網絡,可選:mainNet - Polygon主鏈, testNet - Polygon測試鏈
  • ALICE_ADDR:demo程序使用的主測試賬號,該賬號將用于部署代幣合約、執行MATIC及ERC20/ERC721/ERC1155轉賬交易等操作,因此 需要有一定數量的MATIC余額。
  • ALICE_SK:主測試賬號對應的私鑰

2.1 Polygon鏈上地址創建與回復

demo/credential-demo.php演示了如何使用Polygon PHP開發包創建新的Polygon鏈上地址,或者導入已有私鑰重建賬號。

在終端進入演示代碼目錄,執行如下命令:

~$ cd ~/polygon-php/demo
~/polygon-php/demo$ php credential-demo.php

執行結果如下:

Polygon區塊鏈PHP開發包

 

2.2 MATIC轉賬及余額查詢

demo/matic-demo.php演示了如何使用Polygon PHP開發包實現MATIC轉賬和余額查詢。

在終端進入演示代碼目錄,執行如下命令:

~$ cd ~/polygon-php/demo
~/polygon-php/demo$ php matic-demo.php

執行結果如下:

Polygon區塊鏈PHP開發包

 

2.3 Polygon智能合約部署


demo/deploy-contracts-demo.php演示了如何使用Polygon PHP開發包部署ERC20/ERC721/ERC1155智能合約。

在終端進入演示代碼目錄,執行如下命令:

~$ cd ~/polygon-php/demo
~/polygon-php/demo$ php deploy-contracts-demo.php

執行結果如下:

Polygon區塊鏈PHP開發包

 

2.4 ERC20轉賬及查詢

demo/erc20-demo.php演示了如何使用Polygon PHP開發包實現ERC20轉賬和余額查詢等操作。

在終端進入演示代碼目錄,執行如下命令:

~$ cd ~/polygon-php/demo
~/polygon-php/demo$ php erc20-demo.php

執行結果如下:

Polygon區塊鏈PHP開發包

 

2.5 ERC20到賬跟蹤

demo/erc20-event-demo.php演示了如何使用Polygon PHP開發包的合約事件查詢功能 實現ERC20通證的到賬跟蹤。

在終端進入演示代碼目錄,執行如下命令:

~$ cd ~/polygon-php/demo
~/polygon-php/demo$ php erc20-event-demo.php

執行結果如下:

Polygon區塊鏈PHP開發包

 

2.6 ERC721 NFT轉讓及查詢

demo/erc721-demo.php演示了如何使用Polygon PHP開發包實現ERC721 NFT轉讓和查詢等操作。

在終端進入演示代碼目錄,執行如下命令:

~$ cd ~/polygon-php/demo
~/polygon-php/demo$ php erc721-demo.php

執行結果如下:

Polygon區塊鏈PHP開發包

 

2.7 ERC721 NFT到賬跟蹤


demo/erc721-event-demo.php演示了如何使用Polygon PHP開發包的合約事件查詢功能 實現ERC721 NFT的到賬跟蹤。

在終端進入演示代碼目錄,執行如下命令:

~$ cd ~/polygon-php/demo
~/polygon-php/demo$ php erc721-event-demo.php

執行結果如下:

Polygon區塊鏈PHP開發包

 

2.8 ERC1155轉讓及查詢

demo/erc1155-demo.php演示了如何使用Polygon PHP開發包實現ERC1155轉讓和查詢等操作。

在終端進入演示代碼目錄,執行如下命令:

~$ cd ~/polygon-php/demo
~/polygon-php/demo$ php erc1155-demo.php

執行結果如下:

Polygon區塊鏈PHP開發包

 

2.8 ERC1155到賬跟蹤


demo/erc1155-event-demo.php演示了如何使用Polygon PHP開發包的合約事件查詢功能 實現ERC1155的到賬跟蹤。

在終端進入演示代碼目錄,執行如下命令:

~$ cd ~/polygon-php/demo
~/polygon-php/demo$ php erc1155-event-demo.php

執行結果如下:

Polygon區塊鏈PHP開發包

 

3、使用Polygon PHP開發包

Kit類是Polygon PHP開發包的入口,使用這個類可以快速實現如下功能:

  • MATIC轉賬與余額查詢
  • ERC20代幣轉賬、授權、余額查詢等

3.1 Kit的實例化

Kit實例化需要傳入NodeClient對象和Credential對象,這兩個 參數分別封裝了Polygon節點提供的API、以及進行交易簽名的用戶身份信息。

例如,下面的代碼創建一個接入Polygon主鏈的Kit實例,并使用 指定的私鑰進行交易簽名:

//use polygonKit;
//use polygonNodeClient;
//use polygonCredential;

$kit = new Kit(
  NodeClient::mainNet(),                                    //接入主鏈
  Credential::fromKey('0x87c12d....d435')                   //使用指定私鑰
);

3.2 MATIC轉賬及余額查詢

使用Kit對象的transfer()方法進行MATIC轉賬,例如發送0.1 MATIC:

//use polygonKit;

$to = '0x90F8bf6...0e7944Ea8c9C1';                          //轉賬目標地址
$amount = bn('100000000000000000');                         //轉賬金額,按最小單位
$txid = $kit->transfer($to,$amount);                        //提交MATIC轉賬交易
echo 'txid => ' . $txid .  PHP_EOL;                         //顯示交易ID

注意:需要將金額轉換為最小單位,由于MATIC的小數位數是18, 因此 0.1 MATIC = 100000000000000000 最小單位。

使用balanceOf()方法查詢指定地址的MATIC余額,例如:

$addr = '0x90F8bf6...0e7944Ea8c9C1';                  //要查詢的Polygon鏈上地址
$balance = $kit->balanceOf($addr);                    //查詢MATIC余額,按最小單位
echo 'balance => ' . $balance . PHP_EOL;              //顯示MATIC余額

3.3 ERC20轉賬

使用Kit對象的erc20()方法獲取指定ERC20合約實例,然后調用合約 的transfer()方法進行ERC20轉賬。例如,下面的代碼 指定地址間轉賬123.4567 USDT(合約地址:
0xc2132D05D31c914a87C6611C10748AEb04B58e8F):

//use polygonKit;

$to = '0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1';           //轉賬目標地址
$amount = bn('123456700');                                    //轉賬ERC20數量
$contractAddr = '0xc2132D05D31c914a87C6611C10748AEb04B58e8F'  //USDT合約的部署地址
$txid = $kit->erc20($contractAddr)
            ->transfer($to,$amount);                          //轉賬ERC20
echo 'txid => ' . $txid .  PHP_EOL;                           //顯示轉賬交易ID

3.4 ERC20余額查詢

使用erc20()方法獲取指定的ERC20合約實例,然后調用合約 的balanceOf()方法查詢ERC20余額。例如,下面的代碼查詢指定地址 的USDT余額:

//use polygonKit;

$contractAddr = '0xc2132D05D31c914a87C6611C10748AEb04B58e8F'  //USDT合約的部署地址
$balance = $kit->erc20($contractAddr)
               ->balanceOf('0x90F8bf6...0e7944Ea8c9C1');      //查詢地址0x90F8...的USDT余額
echo 'balance => ' . $balance . PHP_EOL;                      //顯示余額

3.5 ERC20到賬跟蹤

使用erc20()方法獲取指定ERC20合約實例,然后調用 合約實例的getTransferEvents()方法查詢指定條件的轉賬事件。

可以使用getTransferEvents()方法跟蹤指定地址的到賬狀態。 例如查詢地址0x90F8...在最近1000個區塊的USDT代幣到賬事件:

//use polygonKit;

$height = $kit->getBlockHeight();
$contractAddr = '0xc2132D05D31c914a87C6611C10748AEb04B58e8F'  //USDT合約的部署地址
$events = $kit->erc20($contractAddr)
              ->getTransferEvents(                           //查詢到賬事件
                [],                                          //轉出賬號,空數組表示不要求特定的轉出賬號 
                ['0x90F8bf6...0e7944Ea8c9C1'],               //接收賬號,僅查詢地址0x90F8...的到賬事件
                $height-1000,                                //查詢起始區塊號
                $height                                      //查詢結束區塊號
              );                              

foreach($events as $event){                                   
  echo 'block => ' . $event->blockNumber . PHP_EOL;            //事件發生區塊號
  echo 'from => ' . $event->params['from'] . PHP_EOL;          //轉出賬號
  echo 'to => ' . $event->params['to'] . PHP_EOL;              //轉入賬號
  echo 'value => ' . $event->params['value'] . PHP_EOL;        //轉賬金額
}

getTransferEvents()方法返回的結果是一個事件對象數組,每個成員對象的主要字段 說明如下:

  • blockHash:事件觸發的區塊哈希
  • blockNumber:事件觸發的區塊號
  • transactionHash:觸發事件的交易ID
  • address:事件觸發的合約地址
  • name:事件名稱,例如轉賬事件的名稱為:Transfer
  • params:事件參數數組,例如轉賬事件包含以下三個參數:from:轉出賬號to:轉入賬號value:轉賬數量

3.6 ERC721 NFT轉讓

使用Kit對象的erc721()方法獲取指定ERC721合約實例,然后調用合約 的transferFrom()方法進行ERC721 NFT轉賬。例如,下面的代碼 指定地址間轉讓編號為1278的ERC721 NFT(合約地址:
0xc2132D05D31c914a87C6611C10748AEb04B58e8F):

//use polygonKit;

$to = '0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1';           //目標地址
$tokenId = 1278;                                              //轉讓的NFT編號
$contractAddr = '0xcc739b569624f82f9d7a4f614e47133f37482fed'; //ERC721合約的部署地址
$txid = $kit->erc721($contractAddr)
            ->transfer($to,$tokenId);                         //轉讓指定的ERC721 NFT
echo 'txid => ' . $txid .  PHP_EOL;                           //顯示交易ID

3.7 ERC721 NFT查詢

使用Kit對象的erc721()方法獲取指定的ERC721合約實例后,可以調用合約的方法查詢NFT的 基本信息以及特定編號的NFT的持有人信息等。例如:

//use PolygonKit;

$contractAddr = '0xcc739b569624f82f9d7a4f614e47133f37482fed'; //ERC721合約的部署地址
$nft = $kit->erc721($contractAddr);                           //返回ERC721合約實例

echo 'name => ' . $nft->name() . PHP_EOL;
echo 'symbol => ' . $nft->symbol() . PHP_EOL;
echo 'total supply =>' . $nft->totalSupply() . PHP_EOL;

$tokenId = 1278;                                              //NFT編號
echo 'owner => ' . $nft->ownerOf($tokenId);                   //返回指定NFT的持有人
echo 'token uri => ' . $nft->tokenURI($tokenId) . PHP_EOL;    //返回指定NFT的元信息URI

$user = '0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1';         //用戶地址
echo 'total nfts => ' . $nft->balanceOf($user) . PHP_EOL;     //用戶持有的NFT總數

3.8 ERC721 NFT到賬跟蹤

使用erc721()方法獲取指定ERC721合約實例,然后調用 合約實例的getTransferEvents()方法查詢指定條件的轉賬事件。

可以使用getTransferEvents()方法跟蹤指定地址的到賬狀態。 例如查詢地址0x90F8...在最近1000個區塊的指定NFT合約到賬事件:

//use polygonKit;

$height = $kit->getBlockHeight();
$contractAddr = '0xcc739b569624f82f9d7a4f614e47133f37482fed';  //ERC721合約的部署地址
$events = $kit->erc721($contractAddr)
              ->getTransferEvents(                           //查詢到賬事件
                [],                                          //轉出賬號,空數組表示不要求特定的轉出賬號 
                ['0x90F8bf6...0e7944Ea8c9C1'],               //接收賬號,僅查詢地址0x90F8...的到賬事件
                $height-1000,                                //查詢起始區塊號
                $height                                      //查詢結束區塊號
              );                              

foreach($events as $event){                                   
  echo 'block => ' . $event->blockNumber . PHP_EOL;            //事件發生區塊號
  echo 'from => ' . $event->params['from'] . PHP_EOL;          //轉出賬號
  echo 'to => ' . $event->params['to'] . PHP_EOL;              //轉入賬號
  echo 'tokenId => ' . $event->params['tokenId'] . PHP_EOL;    //轉讓的NFT編號
}

3.9 ERC1155轉帳

使用Kit對象的erc1155()方法獲取指定ERC1155合約實例,然后調用合約 的safeTransferFrom()方法進行ERC1155轉賬。例如,下面的代碼 指定地址間轉帳編號為1的ERC1155 NFT(合約地址:
0xafefbbab1038a4fd475d685c11b07bd697e20e38):

//use polygonKit;

$from = $kit->getSender();                                    //轉出地址                                    
$to = '0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1';           //目標地址
$tokenId = 1;                                                 //轉讓的通證編號
$value = 1000000;                                             //轉讓數量
$contractAddr = '0xafefbbab1038a4fd475d685c11b07bd697e20e38'; //ERC1155合約的部署地址
$txid = $kit->erc1155($contractAddr)
            ->safeTransferFrom($from, $to,$tokenId, $value);  //轉讓指定的ERC1155通證
echo 'txid => ' . $txid .  PHP_EOL;                           //顯示交易ID

3.10 ERC1155查詢

使用Kit對象的erc1155()方法獲取指定ERC1155合約實例后,可以調用合約的balanceOf()方法 查詢用戶持有的ERC1155通證數量。例如:

//use PolygonKit;

$contractAddr = '0xafefbbab1038a4fd475d685c11b07bd697e20e38';  //ERC1155合約的部署地址
$mt = $kit->erc1155($contractAddr);                            //返回合約實例 

$user = '0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1';          //用戶地址
$tokenId = 1;                                                  //通證編號
echo 'banalce => ' . $mt->balanceOf($user, $tokenId);          //用戶持有的指定編號通證的數量

3.11 ERC1155到賬跟蹤

使用Kit對象的erc1155()方法獲取指定的ERC1155合約實例,然后調用 合約實例的getTransferEvents()方法查詢指定條件的轉賬事件。

可以使用getTransferEvents()方法跟蹤指定地址的到賬狀態。 例如查詢地址0x90F8...在最近1000個區塊的指定ERC1155通證到賬事件:

//use polygonKit;

$height = $kit->getBlockHeight();
$contractAddr = '0xafefbbab1038a4fd475d685c11b07bd697e20e38';  //ERC1155合約的部署地址
$events = $kit->erc1155($contractAddr)
              ->getTransferEvents(                           //查詢到賬事件
                [],                                          //轉出賬號,空數組表示不要求特定的轉出賬號 
                ['0x90F8bf6...0e7944Ea8c9C1'],               //接收賬號,僅查詢地址0x90F8...的到賬事件
                $height-1000,                                //查詢起始區塊號
                $height                                      //查詢結束區塊號
              );                              

foreach($events as $event){                                   
  echo 'block => ' . $event->blockNumber . PHP_EOL;            //事件發生區塊號
  echo 'from => ' . $event->params['from'] . PHP_EOL;          //轉出賬號
  echo 'to => ' . $event->params['to'] . PHP_EOL;              //轉入賬號
  echo 'id => ' . $event->params['id'] . PHP_EOL;              //轉讓的通證編號
  echo 'value => ' . $event->params['value'] . PHP_EOL;        //轉讓的通證數量
}

4、Polygon區塊鏈身份與地址表示

在Polygon PHP開發包中,使用Credential對象表征區塊鏈上的一個用戶身份,使用普通的 字符串表征區塊鏈上的一個地址,這兩者的區別在于Credential包含了用戶 的私鑰信息,可以用來簽名交易,因此需要保護。

使用Credential類的靜態方法create()創建新賬戶。例如,下面的代碼創建一個 新的賬戶并顯示其私鑰、公鑰和地址:

//use polygonCredential;

$credential = Credential::create();                              //創建新賬號
echo 'private key => ' . $credential->getPrivateKey() . PHP_EOL; //顯示私鑰
echo 'public key => ' . $credential->getPublicKey() . PHP_EOL;   //顯示公鑰
echo 'address => ' . $credential->getAddress() . PHP_EOL;        //顯示地址

可以使用靜態方法fromKey()導入已有的私鑰來實例化Credential。 例如下面的代碼導入已有私鑰并顯示地址:

//use polygonCredential;

$credential = Credential::fromKey('0x7889...023a');           //導入已有私鑰
echo 'address => ' . $credential->getAddress() . PHP_EOL;        //顯示相應地址

5、使用NodeClient

NodeClient類封裝了Polygon節點的RPC訪問協議。實例化NodeClient時,需要指定要連接 的節點URL,例如使用本地的全節點:

//use polygonNodeClient;

$client = new NodeClient('http://localhost:8545');

當使用Polygon官方節點時,NodeClient類也提供列兩個靜態函數mainNet()和testNet(),分別 用于接入官方提供的主鏈節點和測試鏈節點。

例如,下面的代碼是等效的:

//use polygonNodeClient;

$client = new NodeClient('https://rpc-mainnet.maticvigil.com');
$tc = NodeClient::mainNet();                       //與上面等效

$tc = new NodeClient('https://rpc-mumbai.maticvigil.com');
$tc = NodeClient::testNet();                       //與上面等效

原文鏈接:
http://sc.hubwiz.com/codebag/polygon-php/

分享到:
標簽:開發包 PHP
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定