使用 MetaMask 到私有網路的 RPC 連接可以工作,但使用 geth、mist 或 solidity 瀏覽器不能
我正在嘗試按照本教程在 Azure 中創建一個專用網路聯盟:
問題 1 - solidity 無法連接到專用網路
使用 MetaMask 連接到網路工作正常,因此我可以創建帳戶並將餘額從一個帳戶轉移到另一個帳戶。但是,由於 https->http 問題,我無法使用solidity 瀏覽器連接到我的網路(因此我無法部署合約)。從本地主機執行solidity 也不起作用。它說帳戶被鎖定。這裡的目標是輕鬆地將我自己的合約部署到這個專用網路。
問題 2 - 從本地主機的 geth 或 Mist 連接不起作用
由於solidity瀏覽器不起作用,我嘗試了另一種方法來連接到網路並部署我的合約。使用 Mist 的問題是:
方法personal_newAccount 不存在/不可用
其他執行緒告訴我開始使用,
--rpcapi="db,eth,net,web3,personal,web3"
但為什麼它與 MetaMask 一起工作呢?
問題是 Azure 市場託管的是不支持EIP 155 重放保護的舊版本 Geth ,而最新版本的 MetaMask 支持。
解決方案是:
- 使用不同的客戶端進行測試(如 TestRPC)。
- 讓 Azure 更新其託管的 Geth 版本。
- MetaMask 可以增加支持舊交易簽名格式的能力,這需要解決這個問題。
作為 MetaMask 團隊的成員,如果我們不必支持像這樣的舊的、更危險的乙太坊客戶端,我會很高興,並且如果 Azure 剛剛更新了他們的 Geth 版本,我會非常喜歡。
最後,您可以執行舊版本的 MetaMask。3.5.2 版本是最後一個沒有實現 EIP155 重放保護的版本: https ://github.com/MetaMask/metamask-plugin/releases/tag/v3.5.2
但為什麼它與 MetaMask 一起工作呢?Metamask 使用一種稱為 Brainwallet 的東西,基本上是一種“即時”身份驗證,無需創建任何密鑰文件。
當然,您需要在使用之前解鎖您的帳戶,或者您可以使用啟動參數永久解鎖它(=直到您關閉/重新啟動 geth)
--unlock 0
。對於多個帳戶,請使用--unlock 0,1,2,3,4
. 當它們解鎖並啟用 rpc (--rpc --rpcport 8545 --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcapi "eth,web3,debug" for example, please look up what these parameters mean
) 時,您只需在瀏覽器 solidity / remix 中將 https 更改為 http,然後連接到您的節點。solidity 無法連接到專用網路
Solidity 只是一種程式語言,你的意思可能是別的嗎?祝你好運 !