跳到主要内容

EVM Contract Call Challenge

遗留命名

该软件包最初是在 @plebbit 范围下发布的。它已重命名为@bitsocial/evm-contract-challenge。对旧名称的引用可能仍出现在旧文档或代码库中。

EVM 合约调用挑战是一种反垃圾邮件机制,可在允许发布之前验证链上条件。它最初是从 plebbit-js 作为独立包提取的,它允许社区所有者要求作者满足智能合约定义的标准(例如,持有最低代币余额)才能发帖。

源代码: github.com/bitsocialnet/evm-contract-call

要求

  • Node.js >= 22
  • 仅限 ESM——此软件包不提供 CommonJS 版本。
  • 运行时对等依赖关系: @plebbit/plebbit-js(迁移到@pkc/pkc-js

安装

npm install @bitsocial/evm-contract-challenge

配置选项

选项类型描述
chainTickerstring要查询的链(例如ethmaticavax)。
addressstring要调用的智能合约地址。
abistring被调用函数的 ABI 片段。
conditionstring根据合约返回值计算的比较表达式(例如> 1000)。
errorstring向不满足条件的作者显示的错误消息。

例子

想要限制向持有超过 1,000 个特定 ERC-20 代币的作者发帖的社区所有者可以将挑战配置为:

  • chainTicker: "eth"
  • address:代币合约地址
  • abibalanceOf(address) 的 ABI
  • condition: "> 1000"
  • error: "You must hold more than 1,000 tokens to post in this community."

当作者尝试发布时,挑战会使用作者的地址调用balanceOf,并检查返回的值是否满足条件。如果是,则继续发布;否则,返回配置的错误信息。

何时使用它

EVM 合约调用挑战赛非常适合:

  • 令牌门禁社区限制向令牌持有者发帖。
  • NFT 门控访问,需要特定 NFT 的所有权。
  • DAO 治理空间,参与仅限于治理代币持有者。

对于不依赖链上身份的社区,请考虑 Spam BlockerVoucher Challenge