事件监听

由于Relation Protocol中定义的事件完全继承自EIP6239,因此我们需要监听所有符合EIP6239规范的事件:

/**
 * @title Semantic Soulbound Token
 * Note: the EIP-165 identifier for this interface is 0xfbafb698
 */
interface ISemanticSBT {
    /**
     * @dev This emits when minting a Semantic Soulbound Token.
     * @param tokenId The identifier for the Semantic Soulbound Token.
     * @param rdfStatements The RDF statements for the Semantic Soulbound Token. An RDF statement is the statement made by an RDF triple.
     */
    event CreateRDF (
        uint256 indexed tokenId,
        string rdfStatements
    );
    /**
     * @dev This emits when updating the RDF data of Semantic Soulbound Token. RDF data is a collection of RDF statements that are used to represent information about resources.
     * @param tokenId The identifier for the Semantic Soulbound Token.
     * @param rdfStatements The RDF statements for the semantic soulbound token. An RDF statement is the statement made by an RDF triple.
     */
    event UpdateRDF (
        uint256 indexed tokenId,
        string rdfStatements
    );
    /**
     * @dev This emits when burning or revoking Semantic Soulbound Token.
     * @param tokenId The identifier for the Semantic Soulbound Token.
     * @param rdfStatements The RDF statements for the Semantic Soulbound Token. An RDF statement is the statement made by an RDF triple.
     */
    event RemoveRDF (
        uint256 indexed tokenId,
        string rdfStatements
    );
    /**
     * @dev Returns the RDF statements of the Semantic Soulbound Token. An RDF statement is the statement made by an RDF triple.
     * @param tokenId The identifier for the Semantic Soulbound Token.
     */
    function rdfOf(uint256 tokenId) external view returns (string memory);
}
  • CreateRDF:当一个包含RDF语义的SBT被创建的时候会发出此事件。

  • UpdateRDF:当一个包含RDF语义的SBT被更新的时候会发出此事件。

  • RemoveRDF:当一个包含RDF语义的SBT被销毁的时候会发出此事件。

通过监听链上的这些事件,将会得到一条条包含语义的RDF数据(例如:代码块7-1),这些就是包含用户行为数据的数据。

使用The Graph索引

通过The Graph可以方便的将用户在区块链上产生的行为数据索引出来,具体请参照The Graph文档

下面是我们监听到Polygon网络上的行为数据,项目地址:

https://thegraph.com/hosted-service/subgraph/relationlabs/semantic-sbt

  • 通过The Graph提供的playground进行查询

图 7-2 使用playground进行查询
  • 通过The Graph提供的GraphQL Api进行查询:

eg: 查询最近两条token的信息

查询结果

使用ethers.js索引

ethers.js是一个与以太坊及其生态进行交互的JavaScript库。

例如:

Last updated