GOVM
简介
当前,区块链系统最大的问题就是性能问题。每秒能够处理的交易数量很有限。
比如比特币,每秒约7笔,当然,其他的区块链的性能有比较大的提高,但也仅仅达到每秒几千笔交易。
这样的性能,比单机系统还差得多。作为一个世界性的开放系统,性能远远难以满足应用场景。
最终的结果是,不同的应用有不同的区块链系统,系统之间相互独立,成为一座座孤岛。由于区块链是依赖于算力、股权等共识为基础,参与的人越多,整个系统越可靠、越稳定。区块链孤岛将严重影响系统的可靠性(51%算力攻击等)。
GOVM
GOVM是一个全新的、开放的、高性能的公共区块链系统。
它不是单一的一条链,而是由很多链组成的系统。
单一的链,它的区块有严格的先后顺序,所以必须串行处理,而区块链又是世界性的,处理需要所有节点都验证并认可,串行处理的性能想要提高很困难。
如果是多链,每条链是相对独立的,链与链之间就可以做并行处理,能够大大提高整体性能。
图1 链与链之间的逻辑关系
图2 区块的关系
图3 新的区块结构
由图1可以看出,链与链组成了一个二叉树的逻辑结构,每条链都可以创建2条子链,如果二叉树深度限制为64,则总共可以有264条链;如果每个区块的大小为1M,每分钟生成一个,则整个系统的性能极限为1M*264 ,这个性能超过当前所有计算机性能总和。
图2中的结构,可以看到不同链之间的区块有虚线指向,表示区块中保存了其他链的区块HASH,这样能够保证数据的不可篡改。所有区块组成了网状结构。
图3为区块的数据结构,该结构是根据系统需要新定义的,与已有区块链系统不一样。增加了几个属性,以实现区块链的可追溯性和不可篡改性。
可编程
- 支持发布链上app(golang的源码),其他人可以调用该app。
- 使用golang的原因:强类型判断,高效,简洁,通用,能够使用更少的代码实现相同功能。
- 系统的核心共识算法是以app的形式发布,一经发布,不允许再改动,这样能够保证有一个稳定的共识。
- 发布的是源码,任何人都可以看到,了解其逻辑,信任其流程。
账户
- 系统使用账户模式,而非UTXO,这样可以减小交易大小
- 普通账户就是一个钱包地址,可以自己离线创建;公共账户是创建公共app时系统自动创建的账户
- 普通钱包地址为0x01*,代理签名的钱包地址为0x02*,公共app的账户地址为0xff*,其他的暂时保留
- 用户可以任意操作普通账户,但无法直接操作公共账户,只能通过app的代码规则进行操作
- 用户私有的app允许操作用户的账户进行转出操作
- 建议用户长期使用一个账户,区块链能提供的仅仅是基础信任,更多的信任需要靠过往的交易提升
- 为支持代理签名,本系统的钱包地址和其他的区块链地址不一样,长度为24
项目源码
https://github.com/lengzhao/govm
- 安装golang(>v1.20),git
- 下载源码
- 编译源码:go build
- 启动程序:./start.sh
- 浏览器查看http://localhost:9090