当我试图解锁在MetaMask上创建的帐户时,我得到了"405方法不允许“错误。以下是代码:
string privateKey = "0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
string senderAddress = "0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
var account = new Account(privateKey);
var web3 = new Web3(account, "https://rinkeby.infura.io/<token>");
var password = "xxxxxxx"; // where does this come from? the meta mask password???
// error on the line below
var unlockResult = await web3.Personal.UnlockAccount.SendRequestAsync(senderAddress, password, new HexBigInteger(120));我做错了什么?“密码”从何而来?
发布于 2018-03-21 05:40:53
事实上,我在代码中有私钥,这意味着我不需要解锁我的帐户。
我只要去做任何我需要做的事后,帐户是开放的。
归功于尼瑟姆的奥瑟·胡安·布兰科。
发布于 2018-03-20 06:03:02
在本例中,密码用于解锁密钥存储库文件,该文件存储在计算机上(节点正在运行)。通常它驻留在keystore子文件夹下的ethereum客户端文件夹中。Metamask不以这种方式存储密钥存储,而是使用浏览器数据。
如果您不想解锁您的钱包,您需要在某个地方创建另一个帐户,在创建帐户后默认情况下生成keystore文件(带有密码)。
或者您可以使用您的MetaMask帐户和Export Private Key进一步使用一些web3py (例如)来生成您自己的密钥存储文件:
web3.personal.importRawKey(self, private_key, passphrase)将给定的private_key添加到节点的密钥链中,并使用给定的密码进行加密。返回导入帐户的地址。
生成密钥库文件后,只需将其放入客户端文件夹中的keystore文件夹中,客户端就会自动检测到它,下次尝试用正确的密码解锁帐户时,它应该会像预期的那样工作。
发布于 2018-03-20 06:53:13
如果在RPC上启用了personal api,则需要密码。但是,呋喃不启用这个RPC,因为如果启用它,它将是一个很大的安全问题。
相反,您需要发送一个已签名的事务。
https://ethereum.stackexchange.com/questions/43272
复制相似问题