参考书籍《区块链技术进阶与实战》
目录
go-ethereum客户端简称为geth,是一个完全的命令行界面,同时也是一个以太坊节点。通过 安装和运行geth,可以实现搭建私有链、挖矿、账户管理、部署智能合约、调用以太坊接口等常 用功能。
下面是geth的常用命令行。命令行组成为geth --<命令>参数。
geth +
--datadir 指定数据存储位置(也是默认的私钥仓库位置)
--nodiscover 标示此节点私有,不被别人添加
--maxpeers 0 设置网络中可以被接入的最大节点数目,0代表不被其他节点接入
--rpc 允许节点的RPC接口打开(默认打开)
--rpcapi "db,eth,net,web3" 配置RPC接口允许访问的API (默认情况下,RPC接口是允许访 问web3 的API的)
--rpcport "8080" 设置geth端口号(默认为8080)
--rpccorsdomain "http://chriseth.github.io/browser-solidity/"设置可以连接此节点的网 址(并不是通配符)
--port "30303"设置监听端口号,用于与其他节点进行连接
--identity "TestnetMainNode"设置节点标识
--datadir<账户数据存放地址>
account new 用于创建一个新账户
account list 查询账户列表
init <genesis.json 文件路径>根据genesis.json文件初始化创世区块
进入geth控制台后,有如下常用命令。
> eth.accounts 查询账户列表
> personal.listAccounts 查询账户列表
> personal.newAccount() 创建新账户
> personal.deleteAccount(adrr,passwd) 删除账户
> personal.unlockAccount(adrr,passwd,time) 解锁账户,可进行交易操作
> eth.sendTransaction({}) 发送交易
以太坊钱包是一个以太坊账户管理的独立应用,它是开源的,任何人都 可以提交代码改进项目。同时可以离线管理账户,包括账户的创建、备份、导入、更新等。以太 坊钱包重要的功能是可以进行以太币交易。
目前官方下载地址为https://github.com/ethereum/ mist/releases,
也可以在这个网页下载https://ethfans.org/wikis/Ethereum-Wallet-Mirror
browser-solidity是一个在线浏览器编译器,可用solidity编写智能合约,并对其编译和测试,它是使用C++开发的,又叫Remix。目前,browser-solidity已经正式改名为Remix-IDE。
这是以太坊客户端的C++实现,流行程度仅次于geth。cpp-ethereum的代码非常便于移植,并 且已经在各种操作系统和应用领域成功使用。以太坊社区正在将cpp-ethereum的代码库从copyleft GPLv3的许可重新授权为Apache 2.0的授权,来推广cpp-ethereum的使用。
Mix是以太坊官方的DApp集成开发环境,用以在以太坊平台上快速开发应用。可以用于合约 的编写、测试和部署到区块链,同时进行用户界面的开发。webthree-umbrella是以太坊官方的项 目,开发语言为C++,里面主要包括3个客户端:AlethZero、Mix和Eth,可以运行在Windows、 Linux和macOS操作系统上。webthree-umbrella其实是cpp-ethereum项目的一个shell,是以太坊基 金会的前CTO Gavin Wood主持编写的。
Meteor是一套通用的webapp前端开发框架,可以非常方便地集成以太坊的web3.js接口。 Meteor被认为是一个全栈式的框架,完全使用JavaScript实现,并提供了重新加载、CSS注入和支 持预编译(Less、CoffeeScript等)。Meteor可以非常方便地构建一个单页面应用(Single Page App, SPA),可以把所有的前端代码都写入到index.html中,并使用一个js文件和css文件加入在资源中。 Meteor支持响应式的开发,类似于Angualr.js,可以非常简单地构建界面。
Truffle是一款非常优秀的开发DApp的框架。在Truffle中可以方便地使用JavaScript进行应用的 开发,并使用JavaScript中几乎所有的机制,如Promise、异步调用等。Truffle使用了包装web3.js 的一个Promise框架Pudding,所以不需要手动加载web3.js库,可以有效提升开发效率。同时Truffle 也内置了智能合约编译器,只要使用脚本命令就可以完成合约的编译、动态库链接、部署、测试 等工作,大大简化了合约的开发生命周期。