Solidity
MetaMask 的交易數據如何工作?如何僅使用 MetaMask 與智能合約互動?
我有這個原始碼
pragma solidity ^0.4.21; // Relevant part of the CaptureTheEther contract. contract CaptureTheEther { mapping (address => bytes32) public nicknameOf; function setNickname(bytes32 nickname) public { nicknameOf[msg.sender] = nickname; } } // Challenge contract. You don't need to do anything with this; it just verifies // that you set a nickname for yourself. contract NicknameChallenge { CaptureTheEther cte = CaptureTheEther(msg.sender); address player; // Your address gets passed in as a constructor parameter. function NicknameChallenge(address _player) public { player = _player; } // Check that the first character is not null. function isComplete() public view returns (bool) { return cte.nicknameOf(player)[0] != 0; } }
那麼是否可以
setNickname(bytes32 nickname)
使用事務數據欄位呼叫 MetaMask?此外,如果我設置了暱稱 - 我如何
mapping (address => bytes32) public nicknameOf;
使用 MetaMask 使用 Transaction Data 欄位呼叫接收我的暱稱?
那麼是否可以使用事務數據欄位使用 MetaMask 呼叫 setNickname(bytes32 暱稱)?
您可以通過函式的標識符呼叫函式並提供相應的數據來做到這一點。
範例:我想呼叫您的函式
setNickname(bytes32 nickname)
並將名稱設置為“Teddy”。
- 我將程式碼插入 Remix IDE 並將其部署在 JS EVM 中。
- 我將 Teddy 轉換為字節,即
5465646479
- 我用
"0x5465646479"
- 我檢查了交易的細節:
input
…然後點擊該欄位旁邊的複製圖示。
data
當希望對交易執行合約功能時,這是要粘貼到元遮罩欄位中的編碼數據。提示:您可以在這裡找到如何
input data
自己使用腳本生成它!:)