如何在ganache / truffle / web3中解锁合同地址,以便我可以使用as作为调用函数的方法?

时间:2019-02-28 15:39:13

标签: blockchain ethereum solidity web3 truffle

我正在使用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和一些不同的东西解锁它。没有任何帮助。是的

2 个答案:

答案 0 :(得分:0)

我认为错误在于您使用的是智能合约地址,而不是有效的以太坊钱包帐户。

答案 1 :(得分:0)

不仅不能在Ganache上解锁合同帐户,在其他网络上也是如此。您不能使用合同地址作为发件人地址发送交易,因为您没有该地址的私钥。如果您仅能解锁合同的地址,那可以阻止某人解锁您的地址。

如果您希望从合同的地址中调用函数,则必须从合同本身中调用要调用的函数。