Polygon区块链PHP开发包( 三 )


可以使用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 =https://www.isolves.com/it/cxkf/yy/php/2022-04-06/> ' . $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 NFTecho 'txid => ' . $txid .PHP_EOL;//显示交易ID3.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 = https://www.isolves.com/it/cxkf/yy/php/2022-04-06/1000000;//转让数量$contractAddr = '0xafefbbab1038a4fd475d685c11b07bd697e20e38'; //ERC1155合约的部署地址$txid = $kit->erc1155($contractAddr)->safeTransferFrom($from, $to,$tokenId, $value);//转让指定的ERC1155通证echo 'txid => ' . $txid .PHP_EOL;//显示交易ID


推荐阅读