Solidity

如何批量處理智能合約應付功能?

  • December 31, 2021

我知道 metamask 將為通過網路瀏覽器處理智能合約的應付功能操作提供有效的安全性。

批處理會發生什麼?

我有一個 API 服務,然後需要呼叫智能合約中的應付函式。通話中不會直接有人參與。它將全部基於機器。

是否有一種安全的方法來呼叫該函式,以便在這些條件下,私鑰不會暴露在伺服器或程式碼中?

我想知道松露是否可以解決這個問題。

如果您按計劃批量執行,您可以離線預先簽署交易,並在您想要處理它們時簡單地廣播它們。

如果沒有某處的密鑰,就無法實時簽署交易。它不一定必須在主伺服器上,但它必須在您的主伺服器可以請求籤名的某個系統上。

MetaMask 是一個需要授權的面向使用者的解決方案。它並不真正適合“批量”操作,例如在大量使用者列表中噴灑代幣。

對於後者,您通常會使用具有未鎖定帳戶的伺服器來遍歷列表、簽名和發送。私鑰會在那裡,但它可能在一個像.secret這樣被仔細保護的文件中。它當然不會向公眾展示。

事務是非同步的,nonce由發送者管理。適用於單筆交易的方法:

  • 符號
  • 發送
  • 核實
  • 重複

…不適用於高效的批處理過程,更像是:

  • 標誌,標誌,標誌,標誌…
  • 發送,發送,發送,發送……
  • 核實,核實,核實……

您必須管理nonce並了解nonce每筆交易,尤其是下一筆交易,因為區塊鏈無法可靠地告訴您您在哪裡。而且,如果單筆交易被卡住(gas 太低?),那麼它背後的一切也將無法驗證。這意味著您將不得不處理取消並重試。

在這裡查看有關選項的更多技術討論。帳戶隨機數的並發模式

一些實現使用鏈上合約,這些合約接受一系列帳戶/作業並一次性處理它們。

希望能幫助到你。

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