我正在使用zeppelin库构建一个altcoin合约,以便使用代理进行升级。我还使用了Ownable cotract,它允许我分两个阶段将所有权转移到另一个地址。转让所有权,地址为参数和索赔所有权,必须使用以前的地址调用。我在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和一些不同的东西解锁它。什么都没有帮助。 TY。
我认为错误在于您使用的是smartcontract地址而不是有效的以太坊钱包帐户。
解锁合同账户不仅不能在Ganache上,也不能在其他网络上解锁。您不能使用合同地址作为发件人地址发送交易,因为您没有该地址的私钥。如果您可以解锁合同的地址,那么有什么可以阻止某人解锁您的地址。
如果您希望从合同地址调用函数,则必须在合同本身内调用您希望调用的函数。