Alert Source Discuss
⚠️ Draft Standards Track: ERC

ERC-7580: 广告追踪接口

用于广告客户端追踪用户行为和检查成比例奖励的接口。

Authors wart (@wartstone)
Created 2023-12-13
Discussion Link https://ethereum-magicians.org/t/erc-7580-inter-dapp-tracking-inferface/17653

摘要

该 ERC 提出了一种标准接口,供广告客户端在合约中追踪用户行为,并检查来自广告协议的相应奖励。实现该接口的合约使用事件来定义交易中的关注区域。Dapp 可以实现此接口以加入广告协议,从而使项目能够为合约中的特定行为资助用户。虽然用户可以从项目资金中受益,但 Dapp 一旦加入该协议,也将获得成比例的奖励。

动机

由于大规模采用,Dapp 将会繁荣发展,并且对链上广告的需求激增。与 web2 中的广告相比,web3 在交付和许多其他领域都具有巨大的优势。我们确实需要一套标准的追踪接口来促进广告相关的发展,这可以在链上创造新的经济周期,进一步促进 dapp 的繁荣,并最终使链上用户受益。

追踪接口标准的设计应包含对追踪用户行为的基本和通用支持,以及最小的限制,这可以为空投(或广告)协议留下最大的创新空间。一般流程如下:

  1. 项目从推广方获得一个种子 id (hash)
  2. 在目标推广行为开始之前,项目合约调用接口 onTrackStart(id, contract_address, function_hash)
  3. 在目标推广行为结束后,项目合约调用接口 onTrackEnd(id, contract_address, function_hash)
  4. 推广合约收集项目行为信息并将奖励分配回项目

例如,我们有两个实体持有各自的合约:合约 A 和合约 B。合约 A 的目标用户是在合约 B 中执行了特定关键操作(例如,提交特定函数)的用户,并且会向这些用户发放奖金/空投。当然,B 同时也会获得激励。为了连接所有这些点,B 需要识别这些用户,验证他们是为了 A 的奖金而来。因此,我们需要一种追踪机制来促进此类业务。

规范

本文档中的关键词“MUST”,“MUST NOT”,“REQUIRED”,“SHALL”,“SHALL NOT”,“SHOULD”,“SHOULD NOT”,“RECOMMENDED”,“MAY”和“OPTIONAL”应按照 RFC 2119 中的描述进行解释。

接口

该协议标准化了如何追踪 inter-dapp 操作,最初提供 2 个主要方法 onTrackStartonTrackEnd

// SPDX-License-Identifier: CC0-1.0
pragma solidity ^0.8.10;

interface IERCXXX {
    // Events

    /// @dev 当追踪开始时发出。
    /// @param track_id 追踪 id
    /// @param contract_address 追踪合约的地址
    /// @param function_hash 带有参数的追踪函数的哈希值
    event onTrackStartRecorded(uint256 track_id, address contract_address, bytes32 function_hash);

    /// @dev 当追踪开始时发出。
    /// @param track_id 追踪 id
    /// @param contract_address 追踪合约的地址
    /// @param function_hash 带有参数的追踪函数的哈希值
    event onTrackEndRecorded(uint256 track_id, address contract_address, bytes32 function_hash);

    // Functions

    /// @dev 追踪指定的合约函数开始移动。
    /// @param track_id 追踪 id
    /// @param contract_address 追踪合约的地址
    /// @param function_hash 带有参数的追踪函数的哈希值
    function onTrackStart(uint256 track_id, address contract_address, bytes32 function_hash) external;

    /// @dev 追踪指定的合约函数结束移动。
    /// @param track_id 追踪 id
    /// @param contract_address 追踪合约的地址
    /// @param function_hash 带有参数的追踪函数的哈希值
    function onTrackEnd(uint256 track_id, address contract_address, bytes32 function_hash);
}

原理

该提案的核心机制是为 inter-dapp 操作提供共享的追踪接口,以提高效率并满足所需的追踪业务。我们提供两个接口函数 onTrackStartonTrackEnd 来填充基本所需信息并连接必要的点。当然,对更多函数的需求更多,并且稍后会更新。

向后兼容性

此标准不会引入向后兼容性问题。

安全考虑

版权

CC0 下放弃版权及相关权利。

Citation

Please cite this document as:

wart (@wartstone), "ERC-7580: 广告追踪接口 [DRAFT]," Ethereum Improvement Proposals, no. 7580, December 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7580.