ジェラートを使用してスマート契約の実行を自動化する方法🍦


あなたがスマート契約を書いたことがあるならば、あなたは特定の条件の下でスマート契約が特定の機能を自分自身で実行するのが不可能であるということを知っています.まあ、それを達成するためには、チェーンの活動を監視し、トランザクションを送信して独自のボットを構築する必要があります.しかし、あなたのためにこれらの機能を実行するボットを構築する代わりに、あなたのスマート契約を最適化するか、スーパー影の地下室からの散歩のために外出するために割り当てることができる多くの仕事と開発者リソースが必要です🙊 それとは別に、サーバー上でボットを実行するには、毎日それを監視する.
だからここでは解決策です-あなたが失敗の中心点になるために影響を受ける残し基盤のインフラを実行することなく素晴らしいスマート契約を構築する上でフォーカスを優先し続ける.レットGelato その仕事をやりなさい.

🏃‍♂️ 出発


あなたはすでにスマート契約を展開しているとしましょう.そして、ジェラートは特定の時間にスマート契約を呼び出す必要があります.あなたがする必要があるのは、ジェラートを教えてくれるレゾルバ契約を展開することです.
「毎時この機能をここで呼んでください
以下に関数の例を示しますbuy() ジェラートが呼んで欲しいもの.この関数は、uniswap v 2を介して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;
  }
以下はリゾルバ契約の例です.checker() それが少なくとも1時間の過去であったとき、trueを返しますlastBought . これはジェラートに電話をかけるよう促す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);
    }
  }
}
ジェラートコールchecker() すべてのブロックでオフチェーン.If canExec trueを返します.execPayload .
リゾルバ契約を書く方法についての情報を得るには、docs

👷‍♂️ タスクの作成


一旦レゾルバ契約が展開されれば、すでに途中で行われます.今、あなたはタスクを提出する必要があります.ジェラートはPOKEME UIでタスクを超簡単に提出することができます.

1 . Pokemeウェブページをご覧ください



ここでは、現在のタスクとバランスを見ることができます.

2 . Submitタスクをクリックする



ここで手動で記入する2つのフィールドがあります.
  • 実行アドレス-あなたが呼び出すジェラートをする関数のアドレス.
  • リゾルバのアドレス-以前に展開したリゾルバのアドレス.

  • 実行アドレスを入力すると、関数の一覧が表示されます.

    3 .ジェラートを呼び出したい関数を選択する


    EtherScan/PolygonScanであなたの契約を確認してくださいmanually .

    リゾルバのアドレスにも同様です.
  • ジェラートは、ボットが実行するかどうかを確認するチェーンを呼び出します関数を選択します.
  • あなたのタスクを提出!

  • あなたのdashboard , あなたが提出したすべてのタスクを見ることができます.

    タスクをクリックすると、より詳細とタスクのすべての以前の実行を見ることができます.

    🤑 預金資金


    一旦あなたがあなたの仕事を提出したならば、最終ステップはあなたの取引を実行するために執行者を払うために使われる若干の資金を預けることです.

    スマート契約のネットワークに応じてETHかMaticを預けます.

    あなたのバランスは、ダッシュボードに表示されます.

    🎊 万丈


    あなたはすべての設定です!ジェラートはあなたのスマート契約を監視し、指定された条件が満たされたときに実行されます!
    ジェラートPokemeは、Ethereum mainnet、ropstenと多角形で利用できます
    ここではcontract addresses !