Solidity
典型的 ERC20 Transfer(from, to, value) 和相同但有字節,eq: Trasnfer(from, to, value, msg.data) 有什麼區別?
更好的問題:我可以將字節發送到缺少此定義的函式嗎?
換句話說,假設我有:
event Transfer(address,address,uint256, bytes);
進而:
function transfer(msg.sender, address _to,uint _value, msg.data) {}
在 msg.data 中,我可以僅用字節串建構整個交易消息(誰,多少……) - 但是如果我沒有這個,它只是經典的 ERC20:
function transfer(msg.sender, address _to,uint _value) {}
這是否意味著我可以使用 web3 簡單地將一串字節放在“數據”下??
例子:
// pseudo string of bytes of: function + address + amount: var send_data_as_bytes = '030300x0x0' + '0x0000000000000000000000' + 000000001'; // prepare the transaction: 'from': fromAddress, 'gasPrice': Web3js.utils.toHex(20 * 1e9), 'gasLimit': Web3js.utils.toHex(210000), 'to': tokenAddress, 'value': 0x0, 'data': send_data_as_bytes, 'nonce': Web3js.utils.toHex(count)
合約呼叫只是一個普通的交易,
to
地址是合約地址,data
欄位包含編碼的方法和參數。