Etherenum如何获得我部署的合同信息?

时间:2018-01-24 10:04:12

标签: ethernet ethereum contract truffle go-ethereum

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

当我完成合同时,打开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
       });
  })

Etherenum如何获得我的合同信息?

因为我不告诉Etherenum哪一个是我在Etherenum网上的合同。

我只是加载我的合约json文件,Etherenum可以获得我的合同信息。

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

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

Etherenum如何识别它?

1 个答案:

答案 0 :(得分:0)

您需要ABI和合同字节码来部署合同。

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

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

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