【问题标题】:How does Etherenum get my deployed contract info?以太坊如何获取我部署的合约信息?
【发布时间】:2018-01-24 10:04:12
【问题描述】:

我正在练习 Truffle 来建立我的合同。

当我完成合同后,打开 testrpc。

并使用这个命令行来部署我的合约。

truffle migrate

如果我在 app.js 中编写一些代码作为打击,Etherenum 可以获取我部署的合约信息:

    if (typeof web3 !== 'undefined') {
      App.web3Provider = web3.currentProvider;
      web3 = new Web3(web3.currentProvider);
    } else {
      // set the provider you want from Web3.providers
      App.web3Provider = new 
      Web3.providers.HttpProvider('http://localhost:8545');
      web3 = new Web3(App.web3Provider);
    }
     $.when(
        //load my contract json file
        $.getJSON('Crowdsale.json', function(data) 
        {
          var CrowdsaleTokenArtifact = data;
          App.contracts.Crowdsale = 
          TruffleContract(CrowdsaleTokenArtifact);

          // Set the provider for our contract.
          App.contracts.Crowdsale.setProvider(App.web3Provider);
        ).then(function(){
          // start do something
       });
  })

Ethereum 如何获取我的合约信息?

因为我没有告诉以太坊哪一个是我在以太坊网络上的合约。

我只是加载我的合同 json 文件,Ethereum 可以获取我的合同信息。

这是否意味着,如果有人有我的合同 json 文件。他们可以做和我在合同中可以做的事情一样的事情吗?

如果有另一个部署的合约与我的名称或代码结构相同。

以太坊如何识别它?

【问题讨论】:

  • 我假设您的意思是 Ethereum 而不是 Etherenum。我不会说什么,但是您在问题的任何地方都使用带有n 的版本。

标签: ethernet ethereum contract truffle go-ethereum


【解决方案1】:

你需要 ABI 和合约字节码来部署你的合约。

  • ABI 只是对所有函数签名、数据类型、事件等的 JSON 描述。将其视为合同的存根。
  • 字节码是在部署期间执行的返回合约字节码的内容。

部署合约后,您需要 ABI 和已部署合约的地址才能与之交互。同一合约的多个部署将具有不同的地址。

ABI 不会透露有关您的合同如何运作的所有信息。只是界面。但是,公开发布您的合约代码是一种常见的做法,以便其他人可以查看它的安全问题并与想要使用您的合约的人建立信任。你的代码透明并不意味着任何人都可以使用你的合约。您仍然可以控制谁可以访问您的合约以及以何种方式(通常通过修饰符)。

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 2018-08-27
    • 2016-02-28
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 2018-03-15
    • 2018-08-09
    相关资源
    最近更新 更多