时间锁合约地址: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/governance/TimelockController.sol
部署一个时间锁合约,minDelay为10 之后尝试使用web3js修改minDelay 第一步先调用schedule
// minDelay data
// this.timelock == timelock合约实例
const data = this.timelock.methods.updateDelay(20).encodeABI();
// schedule data
const scheduleData = this.timelock.methods.schedule(this.timelockAddress, 0, data, Web3.utils.asciiToHex("123123123123"), Web3.utils.asciiToHex("201528"), 10).encodeABI();
// 调用合约
const result = await this.conMethod(scheduleData, this.timelockAddress, this.timelockAddress);
console.log(result);
调用成功,并返回收据 10S后查看状态
const d = await this.timelock.methods.hashOperation(this.timelockAddress, 0, data, Web3.utils.asciiToHex("123123123123"), Web3.utils.asciiToHex("201528")).call();
console.log(d);
this.timelock.methods.isOperation(d).call().then(res => { console.log(res) })
this.timelock.methods.isOperationPending(d).call().then(res => { console.log(res) })
this.timelock.methods.isOperationReady(d).call().then(res => { console.log(res) })
此时查看hashOperation有返回16进制的值 isOperation 、isOperationPending 、 isOperationReady方法全部返回true
最后执行execute函数
const data = this.timelock.methods.updateDelay(20).encodeABI();
const cc = this.timelock.methods.execute(this.timelockAddress, 0, data, Web3.utils.asciiToHex("123123123123"), Web3.utils.asciiToHex("201528")).encodeABI();
const aa = await this.conMethod(cc, this.timelockAddress, this.timelockAddress);
console.log(aa);
报错为:TimelockController: missing dependency