Web3js

是否可以同時呼叫智能合約的非付費功能並將乙太幣發送到合約?

  • August 30, 2022

我部署並驗證了一個智能合約,但沒有將函式聲明為應付賬款。現在我需要在呼叫非付費函式的同時發送乙太幣。

有什麼可能嗎?我不希望我的 DApp 支付兩次 gas

您可以創建一個新的智能合約,並在新部署的合約中傳遞您想要發送乙太幣的智能合約地址作為所有者合約。你可以在你的新合約上呼叫 self.destruct ,這會將所有的錢轉移到你已經部署的合約上。

這是更多內容:https ://hackernoon.com/how-to-hack-smart-contracts-self-destruct-and-solidity

首先你的合約是否有備份功能,如果有,你可以部署一個新合約並使用呼叫向它發送乙太幣

只有在以下情況下才會觸發回退功能

  1. 如果函式標識符與智能合約中的任何可用函式都不匹配
  2. 如果函式呼叫沒有提供數據。

例如:contract_addr.call{value:amt}(“func_name(“param_type”)”, param);

func_name = 函式名 value = 你要發送的乙太幣數量 contract_addr = 你要發送乙太幣的合約地址 param_type = 參數類型可以是單位、地址、字元串 param = 傳入函式的參數

如果你不這樣做,你將不得不創建一個具有自毀功能合約的新合約,將乙太幣發送到你的新合約(確保你在新合約中放置了一個撤回功能),傳入你想要的合約的地址將乙太發送到 selfdestruct 函式並呼叫它

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