从 App 访问部署在 Ropsten 网络上的智能合约
Access a smart contract that is deployed on the Ropsten network from an App
我写了几个智能合约,并部署在本地。我写了一个 js 文件,app.js,它使用了这些智能合约和 'does stuff',它在本地使用 Ganache 和 Metamask 运行得非常好。
接下来,我的同事将这些合约部署到 Ropsten 网络。
然后我假设我只需要在 Metamask 中切换网络,重新启动我的应用程序,然后 app.js 文件就会与我在 Ropsten 上部署的合约一起工作。不幸的是,这种情况并非如此。
错误:合同尚未部署到检测到的网络(network/artifact 不匹配)是浏览器控制台显示的内容。
我正在以这种方式访问合同:
$.getJSON('SomeCoin.json', function (data) {
var CoinArtifact = data;
App.contracts.Coin = TruffleContract(CoinArtifact);
App.contracts.Coin.setProvider(App.web3Provider);
});
这段代码有什么问题吗?
或者是我没有自己部署合同的问题,因为我的 Coin.json 文件不包含 Ropsten 的 'networks' 条目?
如何正确访问合同而不必自己重新部署它们?
您只需要使用您同事部署的合约地址创建一个合约实例App.contracts.Coin.at(contract_address).then((instance) => { your logic }
我写了几个智能合约,并部署在本地。我写了一个 js 文件,app.js,它使用了这些智能合约和 'does stuff',它在本地使用 Ganache 和 Metamask 运行得非常好。
接下来,我的同事将这些合约部署到 Ropsten 网络。
然后我假设我只需要在 Metamask 中切换网络,重新启动我的应用程序,然后 app.js 文件就会与我在 Ropsten 上部署的合约一起工作。不幸的是,这种情况并非如此。
错误:合同尚未部署到检测到的网络(network/artifact 不匹配)是浏览器控制台显示的内容。
我正在以这种方式访问合同:
$.getJSON('SomeCoin.json', function (data) {
var CoinArtifact = data;
App.contracts.Coin = TruffleContract(CoinArtifact);
App.contracts.Coin.setProvider(App.web3Provider);
});
这段代码有什么问题吗?
或者是我没有自己部署合同的问题,因为我的 Coin.json 文件不包含 Ropsten 的 'networks' 条目?
如何正确访问合同而不必自己重新部署它们?
您只需要使用您同事部署的合约地址创建一个合约实例App.contracts.Coin.at(contract_address).then((instance) => { your logic }