Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | Github | OSChina 博客 | 腾讯云社区 | 阿里云栖社区 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏多维度架构

第 10 章 web3.js - 1.0.0

目录

10.1. 开发环境
10.1.1. Ropsten 测试网
10.2. truffle-contract
10.3. 连接到以太坊客户端
10.3.1. http 方式
10.3.2. WebSocket 方式
10.3.3. IPC 方式
10.4. web3
10.4.1. version 显示web3版本号
10.5. web3.eth
10.5.1. 查看账号列表
10.5.2. 查询矿工账号
10.5.3. 获得余额
10.5.4. web3.eth.sendTransaction()
10.5.5. web3.eth.sendSignedTransaction() 私钥签名转账
10.5.5.1. 例子1
10.5.5.2. 例子2
10.5.6. web3.eth.getBlock() 获取区块
10.6. 账号管理
10.6.1. web3.eth.personal.unlockAccount()
10.7. 智能合约
10.7.1. 部署合约
10.7.2. 使用最佳手续费创建合约
10.7.3. 调用合约
10.7.4. event
10.8.
10.8.1.
10.8.2. 订阅 newBlockHeaders
10.8.3. 订阅 log
10.8.4. 订阅同步状态
10.9. utils
10.9.1. web3.utils.toWei()
10.9.2. 将 Wei 转换到指定单位
10.10. web3 编译合约
10.10.1. solc.compile
10.11. web3admin
10.12. ABI-encoded
10.13. 实用例子
10.13.1. 数据写入到区块链中
10.13.2. 编译部署智能合约
10.13.3. 部署合约
10.13.4. ERC20 Example
10.14. HD Wallet(Hierarchical Deterministic wallet)
10.14.1. 创建项目
10.14.2. 生成第二个钱包
10.14.3. Mnemonic Code Converter
10.14.4. HD Wallet 例子
10.14.5. 获得钱包地址和私钥
10.14.6. truffle.js 例子
10.14.7. Mnemonic To Seed 加密
10.14.8. 中文助记词
10.14.9. 代币转账
10.15. 从 .ethereum/keystore 文件导入私钥
10.16. Express + web3.js 实现简单网页钱包
10.16.1. 创建项目
10.16.2. 主程序 main.js
10.16.3. ABI 文件 abi/NKC.abi
10.16.4. 页面视图
10.16.4.1. views/account.ejs
10.16.4.2. views/balance.ejs
10.16.4.3. views/done.ejs
10.16.4.4. views/header.ejs
10.16.4.5. views/index.ejs
10.16.4.6. views/showbalance.ejs
10.16.4.7. views/transfer.ejs
10.16.5. 启动 Node 服务

注意本章采用 web3.js v1.0.0 版本,这个版本仍在beta阶段,还没有 release。

你看到网上很多实例,安照例子的步骤操作,发现无法成功,很可能跟版本有关。v1.0.0 与之前的版本还是有很大差异,所以选择版本很重要。因为 v1.0.0 很快就会 release 所以本章不会在用早起版本举例。

10.1. 开发环境

		
npm init
npm install web3 --save
npm install solc
		
		

10.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);