我回顾了其他有类似错误的问题,但它们并没有帮助解决我的问题。
在我的主网络合同中,当我的MetaMask在主网络上时,我在处理事务时会得到这个错误。我试图向我的代管合同发送资金,而dapp只使用DAI。是说主网上没有DAI合同吗??
错误:
Uncaught in promise error: DAI has not been deployed to detected network, network artifact mismatch
下面是我的迁移部署契约js文件。我用的是松露:
const Escrow = artifacts.require("./Escrow.sol");
const DAI = artifacts.require("./DAI.sol");
const DAI_COIN_ADDRESS = "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359";
const ARBITRATOR = "0x000000000000etc...";
module.exports = (deployer, network, accounts) => {
console.log(accounts[0]);
deployer.deploy(Escrow, DAI_COIN_ADDRESS, ARBITRATOR, {from: accounts[0]});
};发布于 2018-10-13 21:09:30
在按上述程序运行truffle networks之后,我确实看到我的主网络部署没有与其关联的DAI协议。但我的其他电视台也这么做了,就像Ropsten一样。
为了解决这个问题,我更新了我的DAI.json文件的主干网DAI地址,并将网络从3改为1。由于一些奇怪的原因,生成的构建文件夹确实用正确的网络更新了dai.json,但仍然成功地部署到主网络。
发布于 2018-10-12 15:45:13
这通常是松露与部署历史(./contracts/build)和设置解释(truffle.js)之间的混淆。
确认合同是部署在主干网和松露知道它。
$ truffle networks
contract ... address如果是这样的话(您可以清楚地看到),那么您的dapp应该使用
var contract;
Contract.deployed().then(function(instance) { contract = instance; }如果没有,但是你知道主板上的地址,你可以用猴子锤它。
var contract = Contract.at(<address>);实际上,从通常在./contract/build/Contract.json中有大量噪声的开发机器部署并不总是最好的主意,最好将合同转移到将运行“正式发布”迁移并生成官方抽象构建的暂存服务器上。
希望能帮上忙。
https://ethereum.stackexchange.com/questions/60487
复制相似问题