以太坊 - 与已部署合约交互

现在,您已准备好与已部署的合约交互。返回 MyEtherWallet 桌面并单击"与合约交互"选项卡,如下面的屏幕截图所示 −

与合约交互

将您之前复制的合约地址粘贴到"合约地址"字段中。您还需要将合约的"ABI / JSON 接口"粘贴到上述屏幕上。

要获取ABI,请转到Remix窗口并单击ABI按钮,如下面的屏幕截图所示。

ABI 按钮

ABI / JSON 接口将被复制到剪贴板。将其粘贴到您最喜欢的编辑器中以检查生成的接口,如下所示 −

ABI / JSON Interface
[
   {
      "constant": false,
      "inputs": [
         {
            "name": "newDeposit",
            "type": "uint256"
         }
      ],
      "name": "send",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
   },
   {
      "inputs": [
         {
            "name": "initialAmount",
            "type": "uint256"
         },
         {
            "name": "initialValue",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "getAmount",
      "outputs": [
         {
            "name": "",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "getBalance",
      "outputs": [
         {
            "name": "",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   }
]

将此 JSON 粘贴到 MyEtherWallet 界面后,您会注意到 JSON 界面下方的 ACCESS 按钮现已激活,如下所示 −

My Ether Wallet

单击 Access 按钮以访问合约。

单击 Access 按钮后,合约地址和功能选择下拉菜单将出现在屏幕上,就像在 Remix 编辑器中一样。这显示在下面的屏幕截图中 −

Access button

您可以像 Remix 部署一样检查合约的各种功能。请注意,该联系人现在已部署在外部 Ganache 区块链上。检查 getAmount 函数;您将获得金额值为零,并且 getBalance 将显示余额 1000。

现在尝试发送一些钱。它将向您显示一个 textedit 控件以输入金额。当您编写合同时,将使用一些"gas",并且会要求您在将其写入区块链之前确认交易。交易将在短时间内执行,具体取决于您在 Ganache 服务器上设置的挖掘时间。此后,您可以重新检查合同的 valueamount 字段,以验证这些字段确实已被修改。

您现在可以检查 Ganache 桌面以查看迄今为止执行的交易。示例输出如下所示 −

sample output

到目前为止,您既是合约创建者,又是合约执行者。这没有多大意义,因为您希望其他人使用您的合约。为此,我们将为我们的 Ganache 区块链创建另一个客户端,并从新创建的帐户 #2 向帐户 #1 的合约创建者发送一些钱。