Infura

通過 infura 在 Rinkeby 上解鎖帳戶問題

  • March 21, 2018

當我嘗試解鎖在 MetaMask 上創建的帳戶時,出現“405 Method Not Allowed”錯誤。這是程式碼:

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));

我做錯了什麼?“密碼”從何而來?

在這種情況下,密碼用於解鎖密鑰庫文件,該文件本地儲存在您的機器上(執行節點的地方)。通常它位於子文件夾下的乙太坊客戶端文件夾中keystore。Metamask 不會以這種方式儲存您的密鑰庫,而是使用瀏覽器數據。

如果你不想解鎖你的錢包,你需要在創建帳戶後預設生成密鑰庫文件的地方創建另一個帳戶(使用密碼)。

或者您可以使用您的 MetaMask 帳戶並Export Private Key進一步使用一些web3py(例如)來生成您自己的密鑰庫文件:

web3.personal.importRawKey(self, private_key, passphrase)

將給定的 private_key 添加到節點的鑰匙串,使用給定的密碼加密。返回導入賬戶的地址。

生成密鑰庫文件後,只需將其放在客戶端文件夾中的密鑰庫文件夾中,客戶端應該會自動檢測到它,下次您嘗試使用正確的密碼解鎖帳戶時,它應該會按預期工作。


personal如果您在 RPC 上啟用了 api,則需要密碼。但是 infura 並沒有啟用這個 RPC-API,因為如果它啟用了,這將是一個很大的安全問題。

相反,您需要發送已簽名的交易。

引用自:https://ethereum.stackexchange.com/questions/43272