我有一个函数transferWithData(address to, uint256 amount, bytes data)
,它基本上传输ERC20令牌,但它有一个额外的"数据"字段,以便注入由颁发者链下生成的证书。
证书包含:
- 确保证书不能用于其他函数的函数ID
- 确保输入参数已由发布者验证的参数
- 有效期,确保证书不能在有效期之后使用
- 确保证书不能被使用两次的nonce
最后,证书由颁发者签名,并作为参数传递到transferWithData函数中。
我的问题是如何在链上验证这个证书。我能够使用CCD_ 2来恢复颁发者地址。但是我还需要验证证书内容。我正在关注此回购https://github.com/NDAXlO/ERC1400/blob/master/contracts/mocks/CertificateControllerMock.sol感谢
您提供的repo似乎没有实现前面提到的修饰符isValidCertificate
。如果您想进行证书验证,您应该实现自己的修饰符来实现这一点。
modifier isValidCertificate(bytes data) {
require(something);
// go verify with data here
_;
}