如何將網站連接到 geth 節點?
在 DApp 瀏覽器 Mist 可用之前,這個web3庫似乎是建構從合約到前端(網站)的橋樑的方式。
但是,我無法讓非常基本的範例起作用。
這些來源缺乏幾個要點:
- 啟動 geth 以執行範例的確切命令是什麼?我用過:
geth --rpc console 2
在採礦等 2. 這個例子有一行:
web3.setProvider(new web3.providers.HttpProvider());
應該是本地主機嗎?
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
- 是否有隱藏
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效果很好。