我正在练习松露来建立我的合同。
当我完成合同时,打开testrpc。
并使用此命令行作为部署我的合约的打击。
truffle migrate
如果我在我的应用程序中编写一些代码,Etherenum 可以获取我部署的合约信息.js作为打击:
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网络上的合同。
我只需加载我的合约json文件,以太坊就可以获取我的合约信息。
这是否意味着,如果有人有我的合同 json 文件。他们可以做和我在合同中做同样的事情吗?
如果有另一个部署的合约具有与我相同的名称或相同的代码结构。
以太坊是如何识别它的?
您需要 ABI 和合约字节码来部署合约。
- ABI 只是所有函数签名、数据类型、事件等的 JSON 描述,可以将其视为合约的存根。 字节码
- 是在部署期间执行的,返回协定的字节码。
部署合约后,需要 ABI 和已部署合约的地址才能与之交互。同一协定的多个部署将具有不同的地址。
ABI 不会透露有关您的合同如何运作的所有信息。只是界面。但是,通常的做法是公开发布您的合约代码,以便其他人可以出于安全问题对其进行审查,并与想要使用您的合约的人建立信任。代码的透明度并不意味着任何人都可以使用您的合同。您仍然可以控制谁可以访问您的合约以及以何种方式访问您的合约(通常通过修饰符(。