首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在现实世界中与部署的智能契约进行交互?

如何在现实世界中与部署的智能契约进行交互?
EN

Ethereum用户
提问于 2017-08-31 17:26:52
回答 3查看 3.3K关注 0票数 4

我在学稳固。现在可以使用testrpc、块菌、MetaMask和MyEtherWalet编写和测试智能合同。基本上,MyEtherWalet提供了我在智能契约中定义的函数,因此我可以使用它们并将参数传递给它们,并且可以与部署在testrpc上的智能契约进行交互。

问:如果我将我的智能合同部署到实际的Ethereum区块链中,那么是否有任何用户界面可以像在MyEtherWalet中那样访问契约函数?

问题2: Web3在这里扮演什么角色?

EN

回答 3

Ethereum用户

发布于 2018-02-15 20:25:42

问:如果我将我的智能合同部署到实际的Ethereum区块链中,那么是否有任何用户界面可以像在MyEtherWalet中那样访问契约函数?

您可以使用节点的控制台接口,如下所示:

代码语言:javascript
运行
复制
<path-to-geth>/geth attach <path-to-datadir>/geth.ipc console

Console为您提供javascript接口,您可以在其中操作节点的状态、调用api方法、查找块、帐户等。

问题2: Web3在这里扮演什么角色?

Web3是一个ethereum客户端库。它可以用不同的语言写成。最流行的(我认为)是Web3的javascript版本。实际上,使用geth的控制台,您将使用web3的所有功能。

票数 4
EN

Ethereum用户

发布于 2018-02-03 12:28:41

从技术上讲,要与已部署的合同进行交互,另一方必须知道合同的ABI,这是声明名称、返回值类型、作为合同开发人员决定可见的所有函数/字段的参数类型的正式接口。

为了简单起见,ABI是Json文档,请看下面的示例。

代码语言:javascript
运行
复制
//This contract takes your money and store your addr
//for greetings. Nothing special. Then the deployer
//can destroy all and take money. Genius!

contract Hello{
  address public greetings;
  address public owner;
  function Hello() public{
    owner = msg.sender;
  }
  function () payable public{
    greetings = msg.sender;
  }

  function takeMoneyAndDestroy() public{
    require(msg.sender == owner);
    selfdestruct(owner);
  }
}

相应的ABI将是

代码语言:javascript
运行
复制
[
    {
        "constant": true,
        "inputs": [],
        "name": "owner",
        "outputs": [
            {
                "name": "",
                "type": "address"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [],
        "name": "greetings",
        "outputs": [
            {
                "name": "",
                "type": "address"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [],
        "name": "takeMoneyAndDestroy",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "constructor"
    },
    {
        "payable": true,
        "stateMutability": "payable",
        "type": "fallback"
    }
  ]

一旦您在链上部署了这个契约,您就会得到一个合同地址,比如0x01。然后,您可以从像MyEtherWallet这样的钱包中访问这个契约,在https://www.myetherwallet.com/#contracts一节中,您可以很容易地插入地址和ABI。

下一步很简单,因为MyEtherWallet将允许您使用契约调用函数/事务。

关于Web3。这个库将浏览器中的html/js应用程序与"provider“服务(您的ETH完整节点或其他API生产者)连接起来,从而将调用转换为事务。

票数 3
EN

Ethereum用户

发布于 2018-07-01 15:40:08

问:如果我将我的智能合同部署到实际的Ethereum区块链中,那么是否有任何用户界面可以像在MyEtherWalet中那样访问契约函数?

答:您可以在remix.ethereum.org使用Remix。这也是将合同部署到主网络的好方法。要使用Remix部署您的合同,您必须:

  1. 将您的合同复制到Remix并编译它。如果你有多文件合同,那你就得把它弄平。这意味着您必须将所有合同和功能复制到一个文件中。Remix支持多文件契约,但目前还无法验证多文件契约并在稍后进行调试。
  2. 编译完之后,转到Remix的运行部分。选择注入的Web3作为环境,并确保Metamask连接到要将其部署到的网络。单击Deploy之后,您必须在Metamask中确认您的事务。一旦事务被挖掘,您将看到您的合同的功能列表,并且您将能够与它交互。

如果您已经部署了一个契约,那么遵循相同的步骤,而不是在Remix中部署契约,而是在Run部分指定地址,其中写着“从地址加载契约”,然后单击"At Address按钮“。

你必须先编译你的合同,然后才能附加到它上。

“混合”很好,因为它允许您调试您的合同,还可以使用Javascript环境快速测试您的合同。它的工作方式类似于testrpc,但允许您使用UI调试您的合同。

问题2: Web3在这里扮演什么角色?

答: Web3是一个允许您与块链节点交互的库。它也被Metamask所使用。如果您计划实现一个必须与节点通信或使用Metamask的网页,则需要使用web3。

简而言之,web3是一个库,它允许您与ethereum节点(提供者)对话。

票数 3
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/25605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档