以太坊钱包的开发1 -- NodeJs

时间:2023-01-17 10:23:22

    以太坊官方提供了一些API(点我查看)给开发者使用,但是依靠这些API还不足以做成一个完整功能的钱包。

    如何做一个功能完整的以太坊钱包,主要在转账这块,由于安全性考虑,在加解密,数字签名这块不可能有现成的API暴露给开发者。官方给了一个NodeJs的模块给我们使用!!

    这个NodeJs的模块叫web3,主要连接以太坊暴露出来的RPC层,开发者利用web3连接RPC层,从而可以与区块链交互。

开始搭建    

(本文开发环境是Mac/Linux, 以太坊客户端是Go-ethereum,需要NodeJs的环境)


NodeJS安装

nodejs官网 ,自己谷歌如何下载。

安装完nodejs环境,会自带一个npm的包管理器。


创建钱包目录,我们姑且叫 wallet

cd wallet
npm init        //初始化node模块,填写信息
npm install web3@0.20.6 --save  //安装以太坊官方提供的web3模块,这里选择0.20.6版本,因为当前写博客的时间1.0.0开始还是beta版。

在wallet目录下, 新建一个叫app.js的文件。

其内容如下:

var Web3 = require('web3');
if (typeof web3 !== 'undefined') {
    web3 = new Web3(web3.currentProvider);
} else {
    // set the provider you want from Web3.providers
    web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}

var version = web3.version.api;
console.log(version);
cd wallet
node app.js        //执行文件

会发现报错,连接不到RPC层。因为要使用这个web3的模块,必须在本地搭一个以太坊的节点,如何搭建,请看这里

在本地搭建好以太坊节点后,记得启动节点的选项

geth --rinkeby --rpc --rpcaddr 0.0.0.0 --rpcapi eth,net,web3 --syncmode fast --cache 1028 --datadir data --rpccorsdomain 'http://localhost:8080' console

此处,--rinkeby 表示连接测试链 rinkeby(我使用测试链,因为我没钱买以太币啊,用这个测试链测试转、收钱,跟正式环境的一样的。);

        --rpc  表示启用HTTP-RPC服务器,这样你的web3模块才能与这个本地节点交互,从而跟整个世界的以太坊区块链交互;

        --rpcapi 表示HTTP-RPC提供的API;

        --syncmode 表示同步模式,有fast、full、light

        --rpccorsdomain 表示允许跨域请求的域名列表 用逗号分开

(更多Geth命令,可以看这个帖子)


启动完本地节点,此时再执行命令:

cd wallet
node app.js        //执行文件

就有输出了。


后续,如何转账、查看余额、查看交易等。。