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
配置选项
| 选项 | 类型 | 描述 |
|---|---|---|
chainTicker | string | 要查询的链(例如eth、matic、avax)。 |
address | string | 要调用的智能合约地址。 |
abi | string | 被调用函数的 ABI 片段。 |
condition | string | 根据合约返回值计算的比较表达式(例如> 1000)。 |
error | string | 向不满足条件的作者显示的错误消息。 |
例子
想要限制向持有超过 1,000 个特定 ERC-20 代币的作者发帖的社区所有者可以将挑战配置为:
chainTicker:"eth"address:代币合约地址abi:balanceOf(address)的 ABIcondition:"> 1000"error:"You must hold more than 1,000 tokens to post in this community."
当作者尝试发布时,挑战会使用作者的地址调用balanceOf,并检查返回的值是否满足条件。如果是,则继续发布;否则,返回配置的错误信息。
何时使用它
EVM 合约调用挑战赛非常适合:
- 令牌门禁社区限制向令牌持有者发帖。
- NFT 门控访问,需要特定 NFT 的所有权。
- DAO 治理空间,参与仅限于治理代币持有者。
对于不依赖链上身份的社区,请考虑 Spam Blocker 或 Voucher Challenge。