Solidity

典型的 ERC20 Transfer(from, to, value) 和相同但有字節,eq: Trasnfer(from, to, value, msg.data) 有什麼區別?

  • November 5, 2019

更好的問題:我可以將字節發送到缺少此定義的函式嗎?

換句話說,假設我有:

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欄位包含編碼的方法和參數。

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