以太坊智能合约代币应用开发(4)-web3客户端与geth节点交互

一、概述

如果到开发dapp与以太坊交互有很多方法,这里使用web3与geth交互,web3是以太坊官方提供的一个js的客户端交互工具。可以在nodejs项目引用,同样也可以在html中引入web3.js进行交互,但这种方法安全性较差不建议使用。web3.js最常用的场景还是在nodejs中进行服务器端的编程,可以结合express等框架写出各种形式的应用以及web接口给传统的app使用

二、环境准备

1、使用npm全局安装web3

sudo npm install web3 -g

2、新建一个基础的npm项目

mkdir web3
cd web3
npm init
npm install

3、编辑入口文件

在执行npm init命令时需要对项目做版本,入口文件等设置,按照设置新建一个入口文件默认是index.js。可以使用下面命令来执行index.js

nodejs index.js

也可以在交互模式下执行js,直接执行nodejs即可

三、交互实践

1、引入web3设置provider

Web3 = require("web3")
var web3 = new Web3(Web3.givenProvider||'http://127.0.0.1:8545');
web3.setProvider('http://127.0.0.1:8545');

2、查询版本号

console.log('list web3 version:');
console.log(web3.version)

3、查询支持模块

console.log('list all the modules:'+Web3.modules);
getdetail(Web3.modules)

4、查询辅助函数

console.log('list utils:'+web3.utils);
getdetail(web3.utils)

5、查询默认账号

console.log('default Account:')
console.log(web3.eth.defaultAccount)

6、查询gas费用

web3.eth.getGasPrice().then(function(r){
	console.log('display the gasprice base on the last block:');
	console.log(r)
})

7、查询账户列表

web3.eth.getAccounts().then(function(r){
	console.log('display all the accounts:');
	console.log(r)
})

8、新增账户

web3.eth.personal.newAccount('sunbaolong').then(function(r){
	console.log('create a new account')
	console.log(r)
})

9、解锁账户

web3.eth.personal.unlockAccount('0xa5d4725d9dc3f7e73818936abe151602ad6d26fa', "sunbaolong").then(function(r){
	console.log('unlock account')
	console.log(r)
})

10、解锁账户

web3.eth.sendTransaction({
    from: '0xa5d4725d9dc3f7e73818936abe151602ad6d26fa',
    to: '0x09f90ceff015e0610a9b9b7d0e3f7c498e0b0f06',
    value: '300'
}).then(function(r){
   console.log('transaction is send');
   console.log(r)
});
其他功能请大家自行实践


你可能感兴趣的:(区块链)