Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

第 16 章 web3.js - 1.0.0

目錄

16.1. 開發環境
16.1.1. Ropsten 測試網
16.2. truffle-contract
16.3. 連接到以太坊客戶端
16.3.1. http 方式
16.3.2. WebSocket 方式
16.3.3. IPC 方式
16.4. web3
16.4.1. version 顯示web3版本號
16.5. web3.eth
16.5.1. 查看賬號列表
16.5.2. 查詢礦工賬號
16.5.3. 獲得餘額
16.5.4. web3.eth.sendTransaction()
16.5.5. web3.eth.sendSignedTransaction() 私鑰簽名轉賬
16.5.5.1. 例子1
16.5.5.2. 例子2
16.5.6. web3.eth.getBlock() 獲取區塊
16.6. 賬號管理
16.6.1. web3.eth.personal.unlockAccount()
16.7. 智能合約
16.7.1. 部署合約
16.7.2. 使用最佳手續費創建合約
16.7.3. 調用合約
16.7.4. event
16.8.
16.8.1.
16.8.2. 訂閲 newBlockHeaders
16.8.3. 訂閲 log
16.8.4. 訂閲同步狀態
16.9. utils
16.9.1. web3.utils.toWei()
16.9.2. 將 Wei 轉換到指定單位
16.10. web3 編譯合約
16.10.1. solc.compile
16.11. web3admin
16.12. ABI-encoded
16.13. 實用例子
16.13.1. 數據寫入到區塊鏈中
16.13.2. 編譯部署智能合約
16.13.3. 部署合約
16.13.4. ERC20 Example
16.14. HD Wallet(Hierarchical Deterministic wallet)
16.14.1. 創建項目
16.14.2. 生成第二個錢包
16.14.3. Mnemonic Code Converter
16.14.4. HD Wallet 例子
16.14.5. 獲得錢包地址和私鑰
16.14.6. truffle.js 例子
16.14.7. Mnemonic To Seed 加密
16.14.8. 中文助記詞
16.14.9. 代幣轉賬
16.15. 從 .ethereum/keystore 檔案導入私鑰
16.16. Express + web3.js 實現簡單網頁錢包
16.16.1. 創建項目
16.16.2. 主程序 main.js
16.16.3. ABI 檔案 abi/NKC.abi
16.16.4. 頁面視圖
16.16.4.1. views/account.ejs
16.16.4.2. views/balance.ejs
16.16.4.3. views/done.ejs
16.16.4.4. views/header.ejs
16.16.4.5. views/index.ejs
16.16.4.6. views/showbalance.ejs
16.16.4.7. views/transfer.ejs
16.16.5. 啟動 Node 服務

注意本章採用 web3.js v1.0.0 版本,這個版本仍在beta階段,還沒有 release。

你看到網上很多實例,安照例子的步驟操作,發現無法成功,很可能跟版本有關。v1.0.0 與之前的版本還是有很大差異,所以選擇版本很重要。因為 v1.0.0 很快就會 release 所以本章不會在用早起版本舉例。

16.1. 開發環境

		
npm init
npm install web3 --save
npm install solc
		
		

16.1.1. Ropsten 測試網

			
geth --testnet --syncmode light --cache 1024 --ipcpath /Users/neo/Library/Ethereum/geth.ipc
			
			

Ropsten 測試網上轉賬的例子

			
fs = require('fs');
var net = require('net');
var Web3 = require('web3');
var web3 = new Web3('/Users/neo/Library/Ethereum/geth.ipc', net);

console.log(web3.version)
const abi = fs.readFileSync('output/TokenERC20.abi', 'utf-8');

const contractAddress = "0x70682386d0dE84B1e549DC3c4305CCB2D261b2a8";
const coinbase = "0xB94054c174995AE2A9E7fcf6c7924635FBa8ECF7";
const toAddress = "0xf56b81a2bcb964D2806071e9Be4289A5559BB0fA";

balanceWei = web3.eth.getBalance(coinbase);
console.log(balanceWei);

const contract = new web3.eth.Contract(JSON.parse(abi), contractAddress, { from: coinbase , gas: 100000});

web3.eth.personal.unlockAccount(coinbase, "netkiller").then(function(result){
	console.log(result)
	contract.methods.balanceOf(coinbase).call().then(console.log).catch(console.error);
	contract.methods.balanceOf(toAddress).call().then(console.log).catch(console.error);
});


contract.methods.transfer(toAddress, 10000).send().then(function(receipt){

	console.log(receipt);

}).catch(console.error);

contract.methods.balanceOf(coinbase).call().then(console.log).catch(console.error);
contract.methods.balanceOf(toAddress).call().then(console.log).catch(console.error);