Solidity

如何“添加數據”到 Solidity 中的發送交易

  • June 6, 2017

在 myetherwallet 中,有一個 +Advanced:添加數據部分,我可以在其中向交易添加數據。

如何在我在 Solidity 中進行的交易中添加相同的數據?

在此處輸入圖像描述

您首先需要使用http://string-functions.com/string-hex.aspx之類的線上轉換器將字元串轉換為十六進制形式。

然後將其放入數據欄位(開頭為0x)

例如,我已將 StackExchange 轉換為0x 537461636b45786368616e6765

在此處輸入圖像描述

把它放在數據欄位中,然後我就成功發送了我的交易。你可以在這裡查看交易。

在此處輸入圖像描述

您可以按底部的轉換為 asci 按鈕來取回編碼的發送字元串。

您可以使用 Solidity 的低級call,但要注意call.value 是什麼意思,它是如何允許對 The DAO 的攻擊的?

例子:

bytes calldata = 0xabcdef;
address to = 0x...
if (to.call(calldata)) {  // checks the return value
   ....
} else {
   ....
}

如果你想發送 2 ETH,語法是:

to.call.value(2 * 10**18)(calldata);  // should check the return value

Solidity文件常見問題解答中的一些資訊。

每當您使用call時,契約中的程式碼to都可以執行,並且由於它可以以您可能意想不到的方式(例如TheDAO)回調您,因此應該遵循指南,例如首先更新狀態變數並進行call最後一步(例如這表明狀態變數首先設置為零,然後呼叫 msg.sender)。

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