Web3js
我可以使用 eth_sendTransaction 儲存隨機數據嗎?
根據文件
web3.eth.sendTransaction
和文件eth_sendTransaction
:事務對象可以包含一個可選
data
參數,該參數應該是一個String
,包括:包含合約函式呼叫數據的 ABI 字節字元串,或者在合約創建交易的情況下是初始化程式碼。
我想知道以下內容:
- 我可以
data
用來儲存一個String
我喜歡的值嗎?如:web3.eth.sendTransaction({ from, to, gas, gasPrice, data: 'I love lamp' }, (error, transactionHash) => { web3.eth.getTransaction(transactionHash, (error, { input }){ console.log(input) // should log 'I love lamp' }) })
- 如果答案是肯定的,這個字元串可以有多大(以字節為單位),如果gas費用根據 的大小增加
data
,我可以提前計算嗎?感謝您的幫助
您可以儲存字元串,但編碼為十六進製字元串。要儲存“我愛燈”,您需要設置
data: '0x49206c6f7665206c616d70'
.使用utf8ToHex將字元串轉換為十六進製字節 -
web3.utils.utf8ToHex('I have 100€'); > "0x49206861766520313030e282ac"
要知道它的成本是多少,請使用estimateGas,無論是在契約的方法上,還是在沒有的情況下。
web3.eth.estimateGas({ to: "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", data: "0xc6888fa10000000000000000000000000000000000000000000000000000000000000003" }) .then(console.log);
重新交易規模 -
在撰寫本文時,交易大小限制約為 780kB(約 300 萬天然氣)。
從這個答案中獲取的資訊。