Go-Ethereum

如何將網站連接到 geth 節點?

  • December 3, 2018

在 DApp 瀏覽器 Mist 可用之前,這個web3庫似乎是建構從合約到前端(網站)的橋樑的方式。

但是,我無法讓非常基本的範例起作用。

這些來源缺乏幾個要點:

  1. 啟動 geth 以執行範例的確切命令是什麼?我用過:
geth --rpc console 2

在採礦等 2. 這個例子有一行:

web3.setProvider(new web3.providers.HttpProvider());

應該是本地主機嗎?

web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
  1. 是否有隱藏web3.setProvider使用者可查看的頁面源中的其他 JavaScript 程式碼?如果 geth 節點地址是公開的,那可能是一個安全問題。

也許我在這裡提出了明顯的問題,但是至少在教程中添加 geth 起始參數應該不會太麻煩。最好的情況是有分步指南,沒有任何假設留空。

對於第一點,這應該可行:儘管

geth --rpc --rpccorsdomain="*" console 2>> geth.log

跑步--rpccorsdomain="*"很危險,尤其是在您已解鎖帳戶的情況下。將您的域名替換為*. 對於本地主機,添加--rpcaddr="localhost"

要添加到Ethan Wilding 的答案,為了在本地進行安全測試,您可以使用該--dev標誌並使用使用者名“test”和密碼“test”連接到節點。

所以geth測試的命令變成了:

geth --dev --rpc --rpccorsdomain="*" --rpcaddr="localhost"

$$ caution: you should only use these flags for local dev mode testing, never on a real network $$

連接 web3.js 客戶端是:

web3.setProvider(web3.providers.HttpProvider(null, 0, 'test', 'test'));

其中 null 將主機設置為http://localhost:8545,0 禁用超時

完成後,範常式式碼將連接到本地節點,儘管很有可能(至少目前)很多範例無法工作,因為它們似乎不是最新的。但是web3.js/example/balance.html效果很好。

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