Solidity

我可以將多個事務合併為一個嗎?

  • September 17, 2022

我想知道是否可以將多個事務滾動到一個事務中並將其發佈到鏈上,類似於 L2 鏈的行為。

我將有一個智能合約,其中可能有高流量,交易將從我自己的錢包送出。所以我想知道,也許我可以做一些事情,比如在數據庫中收集所有簽名的交易,然後將它們整合到一個交易中(使用 merkle 樹等)。

交易可以呼叫智能合約上的任何非視圖函式。

這可以實現嗎?如果是怎麼辦?

https://furucombo.app/https://defisaver.com/ 兩者都有交易建構器,可以使用乙太坊貨幣樂高積木並從網路 dapp 製作組合交易!

例如,他們使用樂觀匯總或 Zksnarks;其中多個事務以快照的形式匯總並以塊的形式發布。

但是,如果您想將多個事務匯總到單個事務中,您所要做的就是編寫另一個呼叫多個函式的函式。

比如說,

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;

contract A {

   uint public s_sum;
   uint public s_mul;

   function sum(uint a, uint b) public{
       s_sum =  a + b;
   }

   function mul(uint a, uint b) public {
       s_mul =  a * b;
   }

   function jointExec(uint a, uint b) public {
       sum(a,b);
       mul(a,b);
   }
}

如果您單獨呼叫,sum 需要大約 28,000 個 gas,而 mul 需要 28,000 個 gas。

但是,如果使用 joinExec 函式,則交易成本約為 38,000。所以你節省了 20,000 汽油。

不僅如此,您還可以創建另一個智能合約,該合約已經部署以使用我剛才展示的聯合執行。

告訴我這是否是你要找的。

引用自:https://ethereum.stackexchange.com/questions/135782