本文介绍了如何使用 Gelato 平台自动化智能合约的执行。用户可以通过部署一个 resolver 合约来定义执行条件,当条件满足时,Gelato 会自动调用目标合约的特定函数。文章还详细说明了如何在 Gelato Automate UI 上创建任务,配置 resolver 地址和执行参数,并存入资金。
如果你曾经尝试创建智能合约,那么你就知道无法对其进行编程,使其基于特定条件自行执行特定功能,例如在以太坊价格飙升时启动卖单。
要实现这一点,你需要 BYOB(构建你自己的机器人)来跟踪链上活动,然后相应地传输交易。但这需要大量的精力和开发者资源,这些资源可以更好地用于增强你的智能合约。你还必须在服务器上运行你的机器人并每天进行监督,这不是最有趣的体验。
幸运的是,如果你是 Gelato 的用户,那么以上所有内容都不需要你担心!
假设你已经部署了一个智能合约,并且你希望 Gelato 在特定时间调用它。你所需要做的就是部署一个解析器(resolver)合约,它会告诉 Gelato。
“嘿,每小时调用这里的这个函数”
这是一个函数 buy()
的例子,我希望 Gelato 来调用它。这个函数通过 Uniswap V2 购买 ETH。
uint256 public lastBought;
function buy(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external {
require(block.timestamp >= lastBought + 1 hours);
IERC20(path[0]).approve(address(router), amountIn);
router.swapExactTokensForETH(
amountIn,
amountOutMin,
path,
to,
deadline
);
lastBought = block.timestamp;
}
下面是一个解析器合约的例子,当超过 lastBought
至少一个小时后,checker()
返回 true。这会提示 Gelato 调用上面提到的 buy()
函数。
contract Resolver {
address public immutable owner;
ISwap public immutable swap;
address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
address USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
constructor(address _swap) public {
owner = msg.sender;
swap = ISwap(_swap);
}
function checker()
external
view
returns (bool canExec, bytes memory execPayload)
{
address[] memory path = new address[](2);
path[0] = USDT;
path[1] = WETH;
uint256 deadline = block.timestamp + 10 minutes;
uint256 lastBought = swap.lastBought();
if (lastBought >= 1 hours) {
bytes4 selector =
bytes4(keccak256(
"buy(uint256,uint256,address[],address,uint256"));
execPayload = abi.encodeWithSelector(
selector,
1000 ether,
0,
path,
owner,
deadline
);
canExec = true;
return (canExec, execPayload);
}
}
}
Gelato 在每个区块(block)离线调用此 checker()
。如果 canExec
返回 true,执行者(executor)将发送一个带有 execPayload
的交易。
点击这里获取关于如何编写解析器合约的更多信息
一旦你部署了你的解析器合约,你就已经完成了一半!现在你需要提交一个任务。Gelato 通过 Gelato Automate UI 使提交任务变得非常容易。
访问 Gelato Automate 网页
填写你的执行地址
命名你的任务
创建任务
然后你将被重定向到你的任务页面。
在这里你可以找到你的任务的详细信息。
所有的 Gelato 执行也会出现在这里。
Gelato 现在将监控你的智能合约并在满足你指定的条件时执行。
这里是每个支持的网络的合约地址,因此你可以直接开始使用!
Gelato 是一个 Web3 云平台,使开发者能够创建自动化的、无 gas 的、以及能感知链下的 Layer 2 链和智能合约。超过 400 个 web3 项目多年来依赖 Gelato 来促进 DeFi、NFT 和游戏中的数百万笔交易。
Gelato RaaS: 一键部署你自己的定制 ZK 或 OP L2 链,内置原生账户抽象和所有 Gelato 中间件。
Web3 Functions: 通过运行去中心化的云函数,将你的智能合约连接到链下数据和计算。
Automate: 通过以可靠、开发者友好和去中心化的方式自动执行交易来自动化你的智能合约。
Relay: 通过一个易于使用的 API,让你的用户可以访问可靠、强大且可扩展的无 gas 交易。
Account Abstraction SDK: Gelato 已与 Safe 合作,构建一个完善的账户抽象 SDK,结合了 Gelato 行业最佳的无 gas 交易能力和行业最安全的智能合约钱包。
订阅我们的新闻通讯并打开你的 Twitter 通知,以获取关于 Gelato 生态系统的最新更新! 如果你有兴趣成为 Gelato 团队的一员并共同构建互联网的未来,请浏览空缺职位并在此处申请 here。
- 原文链接: gelato.cloud/blog/automa...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!