Solidity

MetaMask 的交易數據如何工作?如何僅使用 MetaMask 與智能合約互動?

  • December 14, 2018

我有這個原始碼

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”。

  1. 我將程式碼插入 Remix IDE 並將其部署在 JS EVM 中。
  2. 我將 Teddy 轉換為字節,即5465646479
  3. 我用"0x5465646479"
  4. 我檢查了交易的細節:輸入
  5. input…然後點擊該欄位旁邊的複製圖示。

data當希望對交易執行合約功能時,這是要粘貼到元遮罩欄位中的編碼數據。

提示:您可以在這裡找到如何input data自己使用腳本生成它!:)

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