因为neogame游戏比赛 催生出的想法
因为neo主链智能合约从响应时间,计算类型,可扩展性,计算成本几个方面都是传统的金融属性。
故neo主链不适合用作游戏逻辑计算
特提出一个neo扩展计算系统
暂定名neonative
该系统特征如下
一,网络模型
该系统放弃neo的网络模型
采用主从分离的网络模型,主节点离线整个系统停顿。
该模型下主节点负责交易的鉴证上链
从节点对交易进行检验
即使发现交易结果不同只是提出警告。
降低安全级别提升性能
二,交易模型
一交易一块,不出空块,无出块时间,主节点收到交易立即出块
放弃utxo模型,仅有一个应用智能合约
采用多链的设计,一组节点直接运行多条链。一号链和二号链的交易不互相等待,可以多线程并发
三 存储模型
每条链有自己的存储系统,不能跨链写入数据,在一号链上执行的交易无法写入二号链的存取区。读取另一条链的存储区需要等待同步。比如主节点执行1号链的交易读取了2号链的存储系统,访问时2号链高度为138。从节点验证到这条交易时就会锁住等待从节点的二号链同步到高度138以上
存储模型不是用简单的key value,加入value的type,实现像json一样的扩展
比如第一层设计为map<string,map>
则每一个key 对应一个map,可直接访问和操作下层map
比如a["xx"]["yy"]=456
四,计算模型
计算模型采用neovm作为入口,但是鼓励用native方法作为扩展
允许从交易中直接上传dll对系统进行升级,也允许直接对主节点停机升级。以上两种方式是等价的,都会作为升级交易广播给从节点。从节点也会对应升级。
主要的计算来自native的 dotnet core dll,支持所有的dotnet core类库。允许在原生扩展中访问外部数据
加载后的native dll,可通过syscall进行访问,不同的dll之间互访也通过syscall
我们将权力和责任一并托付给native插件的开发者,如果native插件中直接或间接使用了随机数或者含有随机性的数据源,就会导致从节点验证总是失败。
验证失败我们只设定为一种警告,如果忽视这些警告就丧失了安全计算的特性
五 加密模型
采用和neo兼容的公私钥体系,不同的是增加白名单机制,发布智能合约需要在管理员的白名单中。调用智能合约需要在智能合约的白名单中(可选)
六 和neo主链的交互
a自带主链监视器,用交易配置监视器。监视器发现主链满足监视条件的交易就往本系统发送一条交易
b.可以向主链发起交易
因为本系统公私钥模型和neo相同,故可以直接发起交易
七 和其他系统的交互
因为native插件支持几乎一切操作,这类交互都通过native插件进行