我有一份安全的合同,我正试着用它签消息并核实一下,
export async function createSafe() {
const { daoMember1, daoMember2, daoMember3, daoMember4 } = await getAccounts()
// Deploy Gnosis Safe master copy contract
const masterCopyFactory = await ethers.getContractFactory('GnosisSafe')
const masterCopy = await masterCopyFactory.deploy()
// Deploy Gnosis Safe proxy factory contract
const proxyFactoryFactory = await ethers.getContractFactory('GnosisSafeProxyFactory')
const proxyFactory = await proxyFactoryFactory.deploy()
// Create Gnosis Safe contract
const safeProxy = await proxyFactory.createProxy(masterCopy.address, '0x')
// console.log(safeProxy)
const transactionReceipt = await safeProxy.wait()
const proxyAddress = transactionReceipt.events[0].args.proxy
const safe = await ethers.getContractAt('GnosisSafe', proxyAddress)
await safe.setup(
[daoMember1.address, daoMember2.address, daoMember3.address],
2,
ethers.constants.AddressZero,
'0x',
ethers.constants.AddressZero,
ethers.constants.AddressZero,
0,
ethers.constants.AddressZero
)
return safe
}在这里,我签署了一条信息,并试图验证:
const makerMessageHashBinary = ethers.utils.arrayify(makermessageHash)
//makers signatur(Gnosis safe)
const sig1 = safe.connect(daoMember1).approveHash(makerMessageHashBinary)
const isValidSignature = await safe.isValidSignature(makerMessageHashBinary, sig1)但问题是:
Property 'isValidSignature' does not exist on type 'GnosisSafe'.发布于 2023-04-24 05:50:10
我认为您要寻找的函数是checkNSignatures(),据我所知,安全契约并不实现isValidSignature()函数,而是在一个接口中定义的,该接口用于回调到验证签名的契约。
下面是可以帮助您解决问题的代码片段
https://github.com/safe-global/safe-contracts/blob/main/contracts/Safe.sol#L274
以下是关于预先批准的散列https://docs.safe.global/learn/safe-core/safe-core-protocol/signatures#pre-validated-signatures的文档
https://ethereum.stackexchange.com/questions/149325
复制相似问题