Web3js
在發送交易之前或不發送交易的情況下從智能合約互動中獲取數據
我與 ABI 簽訂了契約,目前正在 ropsten 網路上與它進行互動。
我有這個要求元遮罩簽署交易的功能,這是一個智能合約互動,我將一個 NFT 令牌轉移到另一個地址:
async function transferToken(index) { let address = document.getElementById("inputTransferAddress").value; const account = await getCurrentAccount(); const tx = await MyContract.methods.transfertoken(address, index).send({ from: account }) } }
Metamask 要求我簽署交易,以及此智能合約互動的數據:
GAS FEE 0.000281 etc. FUNCTION TYPE:Contract Interaction HEX DATA: 68 BYTES 0x215e2325000000000000000000000000607065f59bdb0cdba95..........000078
是否可以在不將它們發送到 metamask 的情況下讀取此“十六進制數據”?
我想在 FUTURE 交易中執行此操作,因為我想使用原始交易製作可掃描的 QRCODE。
問題中的十六進制數據是
data
用於 Ethereun 智能合約的欄位。:
transfertoken(address, index)
- 4 個字節用於雜湊
transfertoken(address,index)
字元串 - 選擇呼叫哪個智能合約函式- 256 位(32 字節)
address
- 256 字節(32 字節)
index
您可以使用 Web3.js 的 ABI 編碼和解碼工具自己創建事務有效負載,這正是
methods.xxxx.send
內部所做的。但是,您對未來交易的想法很可能基於錯誤的假設,因為不了解區塊鏈交易的工作原理。製作二維碼更容易進入使用者可以使用WalletConnect 連結進行交易的網頁。沒有支持從 QR 碼簽署原始交易的錢包,您的問題聽起來像XY 問題。