如何使用PHP获取NFT交易日志
#php #ethereum #nft #nftlogs

您可能经历了进入NFT市场的经历,并希望找出转移特定NFT的人数。一些市场将每个NFT的交易历史记录信息都放在网站上,但有些则没有。也许原因之一是每个智能合约上进行的交易大量。

如果是这种情况,那么您面前的第二个选项是Etherscan.io网站。该网站使我们更容易跟踪NFT智能合约。这是一个非常强大的工具,但还不够。当您想检查具有特定ID的NFT时,您将遇到问题,尽管它提供了基于特定事件标志(例如转移或批准)过滤交易的可能性,但没有更详细的过滤!尤其是如果您在网络开发空间中需要非图形工具。

第三种方法是使用Web3库。不幸的是,大多数web3 php库都不稳定,并且没有Web3J的功能。

根据您的选择,您肯定正在寻找一种更轻松地获取以太坊日志并更详细地过滤其信息的方法。 Nft History Logs库允许您在端点,例如Alchemy,Infura或任何您想根据事件签名的特定智能合约地址的日志。

等端点。

您可能会问为什么我们不应该使用SDK炼金术而不是此库这样的SDK。有几个特定原因:

  1. 这些SDK中的大多数是由JavaScript编写的
  2. 这些SDK仅与他们自己的专用网络一起使用;例如,Alchemy SDK仅与炼金术网络一起使用,这可能不是您的选择,并且实际上夺走了您的自由意志。
  3. 大多数Web3 PHP库都不稳定,并且有很多问题!

要开始使用此库,请键入以下命令以安装它:

composer require nfthistory/nfthistorylogs dev-master

现在导入库并创建一个新实例:

<?php

require 'vendor/autoload.php'

use Nft\History\nftHistory;

$contractAdress = '0x7F0159D3A639a035797e92861d9F414246735568'

$provider = 'https://cloudflare-eth.com'

$NftHistory = new nftHistory($contractAdress, $provider);

您可以看到,该类必须在施工期间收到两个默认变量:一个是您想要的NFT智能合约的地址,另一个是您要使用的提供商或端点。两者都必须是字符串类型。

在这里,我使用了Kouddle Koala智能合约#6466。它的智能合同地址是0x7F0159D3A639A035797E92861D9F414246735568,其令牌ID为6466。

Kuddle Koala smart contract #6466

这个令牌实际上是在两个人之间转移的(两个地址),而这种转移的含义无非是向他人出售NFT。我们知道NFT是独特的实体,因此我们有一个具有ID 6466的Koala代币。其余的NFT具有不同的ID。

通过使用我们的实例,我们调用TransferTrxById()函数:

$res = $NftHistory->transferTrxById('6466', '0x0', 'latest');

var_dump($res);

//output:
Array
(
[0] => Array

        (

            [address] => 0x7f0159d3a639a035797e92861d9f414246735568

           [topics] => Array

                (

                  [0] => 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

                   [1] => 0x0000000000000000000000000000000000000000000000000000000000000000

                  [2] => 0x0000000000000000000000005b436b7cc93d246d3a62fc7a95339f6fac7d2a4a

                    [3] => 0x0000000000000000000000000000000000000000000000000000000000001942
                )
            [data] => 0x
           [blockNumber] => 0xcd2b8e

            [transactionHash] =>
0xc95b6b17a8453526eba78592bf93b272f75e49b33487b986e81d19a1682eded6        

           [transactionIndex] => 0x1d

         [blockHash] =>
0x69b72ae82a6e6f2de0750e23e30855cc727605b4c7b3c69814cbc0b3a51b19af

            [logIndex] => 0x23

            [removed] =>
        )

    [1] => Array

        (

            [address] => 0x7f0159d3a639a035797e92861d9f414246735568

            [topics] => Array

                (

                    [0] => 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

                    [1] => 0x0000000000000000000000005b436b7cc93d246d3a62fc7a95339f6fac7d2a4a

                    [2] => 0x000000000000000000000000cf0b56dfefa3e0051a1772fc585b076a06487c53

                    [3] => 0x000000000000000000000000000000000000000000000000000000000000194
                )

            [data] => 0x

            [blockNumber] => 0xcd3716

            [transactionHash] => 0x62f59782cc17e5156fda51e27b121d5e9562b4f0d5455c5f04720aeb0a79eb07        

          [transactionIndex] => 0x10b

            [blockHash] => 0x8313bae0ff42ba4065bfb1524efb691a5c4c31cfe56defca4c095c803d4bbc3e

            [logIndex] => 0x210

            [removed] =>

       )

    [2] => Array

       (

            [address] => 0x7f0159d3a639a035797e92861d9f414246735568

            [topics] => Array

                (

                    [0] => 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

                    [1] => 0x000000000000000000000000cf0b56dfefa3e0051a1772fc585b076a06487c53

                   [2] => 0x0000000000000000000000002e6469c5d4256c098ac51b9655dfb27d6f996a0c

                   [3] => 0x0000000000000000000000000000000000000000000000000000000000001942

               )

          [data] => 0x

           [blockNumber] => 0xe703b0
            [transactionHash] => 0x7b913e65751d493dc46746120e5c50587d183677a7e275535137995d017a438b        

            [transactionIndex] => 0x16

            [blockHash] => 0x4837a2daf412be2deebcae9b5c3ecb8a639f0b6e221193b56fe7f42ac79389a3

            [logIndex] => 0x58

            [removed] =>
        )
)

好吧,如您所见,此实例的输出是一个具有3个交易的多维阵列,包括NFT薄荷交易和我们NFT传输的接下来的两笔交易,它们在3人之间转移。

您可以访问这些交易的任何属性并分析它们。例如,数据部分包含在NFT传输期间两个地址之间转移的醚量,即0x,这意味着零,这意味着没有转移以太的转移。请注意,此数字为WEI格式,您需要将其转换为Ether。当然,还有其他功能是为了方便地接收转移的以太量,例如:

$transactionHash = '0x62f59782cc17e5156fda51e27b121d5e9562b4f0d5455c5f04720aeb0a79eb07';

$eventName = 'OrdersMatched';

$etherAmount = $NftHistory->nftTrxWei($transactionHash, $eventName);

var_dump($etherAmount);

//output
array(1) {

  ['value']=>

  array(1) {

    [0]=>

    array(3) {

      ['buyHash']=>

      string(66) '0x0000000000000000000000000000000000000000000000000000000000000000'

      ['sellHash']=>

      string(66) '0243b8854fe6a9b124e13caed266c59d3cacc1ca4c3246a3cad5a094c53f6d0900'

      ['price']=>

      string(62) '0000000000000000000000000000000000000000000000009869529cdd4000'
    }
 }
}

好吧,如上所述,根据交易的哈希值,我们获得了此NFT的销售信息。请注意,$ eventname变量是可选的。实际上,我们仅返回其销售价值信息,而不是收到所有以太价值。

同样,您可以使用其余功能来更轻松地实现所需的结果。

您可以访问NFT历史记录库here的其他功能。

如果您有任何疑问,请随时在评论部分中问我 ^__ ^