比特币钱包开发:钱包项目整体架构设计
目标
构建NodeJS后端框架构建前端web框架前端交互
前言[X] [X]本课程是比特币钱包的开发、后端使用的NodeJS的构建、客户端使用的web前端、VSCode的开发工具、Ubuntu16.04系统(当然还有Mac和windows系统)
一、前端架构
我们的开发重点是后端的实现,所以在web客户端不使用其他流行的框架,只用jQuery框架来简化代码,还有一个jQuery Validate插件来简化表单验证。
web前端整体技术:
html css javascript jQuery。
web前端功能:
钱包模块创建钱包助记符、导入钱包列表、导出钱包助记符、账户模块查询余额、创建子账户查询子账户:地址、路径和私钥、比特币转账交易记录
二、后端架构
另外,后端Http框架使用了功能强大的express,封装了很多功能,因为bitcore-wallet-client库中提供的API会通过异步回调返回数据,所以不需要koa。
本项目使用的第三方库很少,如下:
bitcore-wallet-client:是bitcore-wallet-service的客户端库,使用REST API与BWS bitcore-wallet-service进行通信,所有REST端点都封装成简单的异步方法。Bitcore-wallet-service库实现了多签名比特币高清钱包服务,Copay和Bitpay钱包都使用该服务。Express:是web框架,提供的HTTP服务器工具非常强大,集成和使用简单,类似koa。Ejs:它是一个JavaScript模板引擎,可以动态地将变量值设置为html。它需要与模板渲染中间件koa-views结合使用。整体架构采用成熟的MVC架构。项目的入口是index.js文件,对项目进行配置。后端服务绑定到端口3000,处于简化状态。前端访问服务时,router.js路由文件根蓑衣网小编2022据URL将任务分配给controllers文件夹下的业务文件。
这里为了快速入门开发比特币钱包项目,在一个项目上同时开发前端和后端,前端的页面文件放在static和views文件夹中。当然也支持移动终端(iOS和Android)的通话。如果需要分离前端和后端,可以直接从views文件夹中分离static。第三部分。项目初始化
新建一个项目和文件夹BTCWallet,然后按照以下步骤执行
新建一个项目和文件夹BTCWallet。然后按照以下步骤执行
徐丽@ Ubuntu:~ $ CD '/home/徐丽/桌面/demo/BTC钱包/'徐丽@ Ubuntu:~/桌面/demo/BTC钱包$ NPM init
然后回车初始化项目。然后自动生成package.json文件,这是项目包的配置文件。让我们导入项目中需要的库,并将下面的json复制到package.json文件的最后一个字段。
,"依赖项":{ " bit core-wallet-client ":" 6 . 7 . 5 "," EJS": "2.6.1 "," express ":" 4 . 16 . 4 " }
[xNPM install下载完成后,所有的依赖库都会下载到项目根目录下自动创建的node_modules文件夹中。第四章。项目源代码按照下面的结构构建项目。项目的1a 0b 838 e-50e 6-44FC-Ab9b-3d 95 c6a 467 c 7index . js
条目文件。首先实例化express对象,然后向中间件注册express.urlencoded、ejs、视图和静态路由,服务绑定到端口3000。蓑衣网小编2022
每个字包含:
bws _ URL:bit pay的地址。我们使用BitPay的地址。也可以自己搭建钱包服务器。
networkType:钱包连接的网络类型,支持正式网络和测试网络,分别表示为livenet和testnet。
coinType:货币类型,支持比特币和比特币现金,分别表示为btc和bch。
copayerName:钱包的所有者,创建钱包所必需的断词,我在这里将它指定为常量“徐丽”。
walletFilePath:创建wallet后导出文件的存储位置。
models/Wallet client . js钱包的模型文件出来了。只有一种方法可以实例化bitcore-wallet客户端。let config=require("./config/config ")module . exports={
?getWalletClient: ()={
?var 蓑衣网小编2022 Client=require(' bit core-wallet-Client ');
?var client=new Client({
?baseUrl: config。BWS _网址,
?verbose: false,
?});
?返回客户端
?},
}
router/router . js
路由文件。
let router=require(' express ')。路由器();
router.get("/wallet.html ",(req,res)={
?RES . render(" wallet . html ");
})
模块。exports=router
utils/myutils . js
项目工具类,提供返回前端的成功和失败的基本数据结构,判断字符串是否以某个字符串结尾。
资源GitHub of Express: 3330。Bitcore的EJSGithub-钱包-客户端:https://GitHub。com/bit pay/bit core-Wallet-Client
项目来源GitHub地址
版权声明:博客中的文章版权归博主所有,未经授权禁止转载。请联系作者获得许可并注明出处。
未经授权禁止转载和改编。转载请注明出处!