Web3js
如何使用 web3 連接到公鏈?
我使用 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);
.總結一下:
- 我可以使用 web3 在公共網路上訪問我的合約嗎?如果是,如何?
- 是否
personal
通過 RPC 公開?我的意思是如果我必須使用 web3 生成地址或解鎖帳戶,我該怎麼做?- 有提供乙太坊地址的api,它們是如何工作的?
這是您訪問 ehtereum 公共網路的方式
new Web3.providers.HttpProvider('https://api.myetherapi.com/eth')
- 是的,您可以在發布合約後訪問乙太坊主網或測試網(公共鏈)上的合約,就像您訪問私有鏈一樣。您必須通過 RPC 將您的客戶端程式碼(Web3 JS)連接到正在執行的乙太坊節點。這個正在執行的節點可以是:
- 在客戶端機器上本地執行的節點 ( http://localhost:8545 )
- 遠端節點(由您的組織提供)
- 第 3 方節點
- 連接到節點
- 創建一個帳戶
- 為賬戶注資
- 發送交易
例如,每次您的客戶將嘗試執行 sendTransaction 或您編寫的合約編寫函式時
var contract1=web3.eth.contract(y).at(x); contract1.transfer(to, amount, {from: frm});
它將打開一個彈出視窗,要求使用者批准交易。
元遮罩範例
- 如果你想自己管理這部分,我沒試過,但我想你可以使用像eth-lightwallet這樣的庫
希望這對您有所幫助。