基于区块链的微信小程序云笔记实战
主要功能:编写,查询,修改云笔记,但是由于存放在区块链上,不可删除
1.环境搭建:
首先,要想在区块链上存放数据,就必须编写智能合约,这里采用solidity这门语言进行智能合约的开发
1.1 智能合约的编写
CloudNoteService的智能合约代码:

1.2 Spectrum链的搭建
编写好智能合约之后,下一步是进行智能合约的部署,因为是运行在区块链上,所以进行部署之前应该搭建一个私有的区块链,这里采用Spectrum光谱链。关于光谱链的搭建,可以参考以下文章:
window:
mac:
linux
1.3 部署智能合约
搭建Spectrum链完成之后,部署智能合约,可以参考
简单描述智能合约的部署:
1.3.1编写智能合约,点击编译,之后点击detail

1.3.2.将web3deploy中的代码复制到搭建的spectrum链的控制台中运行

1.3.3.查询合约是否部署成功

1.4 数据库的创建:
1.4.1 用navicat创建一个名为cloudnote的数据库,在此数据库中创建一张名为note的表,表结构如下:

1.5 nodejs的环境搭建:
1.5.1打开官网的下载链接 nodejs下载网址,下载对应的版本进行安装即可
1.5.2 这里采用webstorm进行nodejs的开发,这是已经写好的cloudnoteservice 代码
nodejs程序中有几个需要注意的地方
1. database.js中的constructor 中的密码需要改成自己对应的数据库密码

2. 在etherdata.js类中,需要注意的有以下几点:
①contractAddress要是你部署的智能合约上的address(在1.3.3步骤中通过cloudnoteservice查询时有个address,填写那个地址)
② gasprice不应该过高,否则交易会失败,进行操作的时候会抛出error
③ http://localhost:18545是你搭建spectrum链的ip地址,根据自己情况而定
④ getTransactionCount()中的地址是你通过personal.newAccount()创建的地址,或者说你部署到哪个spectrum链的地址上

2.测试:
浏览器测试:找到bin目录瞎的www.js文件,运行,在浏览器上输入
http://localhost:3000/addNote?id=user123&name=hello&content=world,如果能看到以下的界面,说明addNote方法执行良好

小程序测试:源码:note
新增内容:

查看列表:

3. 错误总结:
①

解决方案:在etherdata.js 中的rawTx加上chainId这个属性

②

解决方案: 将1.5步骤中 etherdata.js 中的gasprice 适当调低。
网友评论