Web3js

如何使用 web3 連接到公鏈?

  • November 29, 2017

我使用 web3 通過以下方式與我的私有鏈互動:

web3.setProvider(new web3.providers.HttpProvider("http://localhost:8012"));

但是如何使用 web3 連接到公共網路?

我正在嘗試製作一個用於與我的契約互動的網路界面(它已部署,您可以使用我的網路界面使用我的契約提供的所有功能。我已經在專用網路上完成了這項工作,並且一切都可以無縫執行。

但現在我有疑問我是否可以在公共網路上複製相同的內容。

例如,讓我的合約地址x和合約 ABI 成為y,我有一個名為transfer轉移硬幣的功能。我在私人網路上做了這個:

web3.setProvider(new web3.providers.HttpProvider("http://localhost:8012"));
var contract1=web3.eth.contract(y).at(x);
contract1.transfer(to, amount, {from: frm});

我也可以使用 RPC 解鎖我的帳戶嗎?我的意思是如果我的使用者想要創建一個地址,如果我可以向他們詢問密碼並使用web3.personal.newAccount(password);.

總結一下:

  1. 我可以使用 web3 在公共網路上訪問我的合約嗎?如果是,如何?
  2. 是否personal通過 RPC 公開?我的意思是如果我必須使用 web3 生成地址或解鎖帳戶,我該怎麼做?
  3. 有提供乙太坊地址的api,它們是如何工作的?

這是您訪問 ehtereum 公共網路的方式

new Web3.providers.HttpProvider('https://api.myetherapi.com/eth')
  1. 是的,您可以在發布合約後訪問乙太坊主網或測試網(公共鏈)上的合約,就像您訪問私有鏈一樣。您必須通過 RPC 將您的客戶端程式碼(Web3 JS)連接到正在執行的乙太坊節點。這個正在執行的節點可以是:
  • 在客戶端機器上本地執行的節點 ( http://localhost:8545 )
  • 遠端節點(由您的組織提供)
  • 第 3 方節點
  1. 個人不暴露。賬戶和交易大部分時間由乙太坊瀏覽器處理,例如Mist或 Google Chome(+plugin Metamask)。乙太坊瀏覽器允許:
  • 連接到節點
  • 創建一個帳戶
  • 為賬戶注資
  • 發送交易

例如,每次您的客戶將嘗試執行 sendTransaction 或您編寫的合約編寫函式時

var contract1=web3.eth.contract(y).at(x);
contract1.transfer(to, amount, {from: frm});

它將打開一個彈出視窗,要求使用者批准交易。

元遮罩範例

在此處輸入圖像描述 在此處輸入圖像描述

  1. 如果你想自己管理這部分,我沒試過,但我想你可以使用像eth-lightwallet這樣的庫

希望這對您有所幫助。

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