记录Python3开发轻量级区块链的思路

由于业务需求,需要开发一个轻量级区块链。
这里主要记录设计的思路。
先说服务端
首先,选用flask作为服务框架。注意app.run()不要放在主线程,否则会阻塞,无法进一步处理其他的事务。
在主线程中开启子线程,在子线程中运行flask。主线程启动倒计时程序,每隔一定时间打包区块并达成共识,打包区块达成共识可以放在主线程也可以放在子线程,鉴于主线程与子线程通信易,子线程与主线程通信难,可以考虑redis数据库,或者直接在子进程的类中处理数据库和区块生成等。子线程的flask服务器接收其他节点或者钱包的request,并对钱包节点的转账request进行转发(转发过程注意去重,并最好再开一个线程)收到的转账请求,其他节点产生的区块放在缓存中,等待处理。
整理成思维导图如下:
记录Python3开发轻量级区块链的思路
再说钱包:
钱包就简单了,转账信息提交至某一节点,由该节点进行转发至余下其他节点。接下来就是等待确认。钱包的设计不是重点,不展开讲。