我正在使用Zeppelin库构建一个altcoin合同,以使其可以使用代理进行升级。我还使用了一个Ownable合同,该合同允许我分两个阶段将所有权转移到另一个地址。使用参数地址和所有权声明转移所有权,必须使用先前的地址进行调用。 我正在ubuntu上使用Ganache应用,有10个未锁定帐户。问题出在以下代码中:
Coin.deployed().then(coin => {
TokenProxy.deployed().then(function(proxy) {
coin.transferOwnership(proxy.address, {from:owner}).then(function(res) {
proxy.claimOwnership({from: proxy.address}).then(function (res) {
console.log("Done!");
}).catch(function (e) {console.log(e);});
}).catch(function (e) {console.log(e);});
})
})
问题在于代理地址不会是列表中的10个代理地址之一,所以我以
结尾错误:发件人帐户未被识别
基本上我不确定它是否是ganache节点的一部分(但如果是,则确保它已锁定)。 我尝试使用web3和一些不同的东西解锁它。没有任何帮助。是的
答案 0 :(得分:0)
我认为错误在于您使用的是智能合约地址,而不是有效的以太坊钱包帐户。
答案 1 :(得分:0)
不仅不能在Ganache上解锁合同帐户,在其他网络上也是如此。您不能使用合同地址作为发件人地址发送交易,因为您没有该地址的私钥。如果您仅能解锁合同的地址,那可以阻止某人解锁您的地址。
如果您希望从合同的地址中调用函数,则必须从合同本身中调用要调用的函数。