Solidity
我可以將多個事務合併為一個嗎?
我想知道是否可以將多個事務滾動到一個事務中並將其發佈到鏈上,類似於 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 汽油。
不僅如此,您還可以創建另一個智能合約,該合約已經部署以使用我剛才展示的聯合執行。
告訴我這是否是你要找的。