Solidity
如何“添加數據”到 Solidity 中的發送交易
在 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
每當您使用
call
時,契約中的程式碼to
都可以執行,並且由於它可以以您可能意想不到的方式(例如TheDAO)回調您,因此應該遵循指南,例如首先更新狀態變數並進行call
最後一步(例如這表明狀態變數首先設置為零,然後呼叫 msg.sender)。