Govm

golang virtual machine。

Posted by Lengzhao Blog on January 15, 2022

govm

govm:golang virtual machine。 这是我自己实现的一个基于分片的区块链。

特点

  1. 可以无限扩展分片(牺牲一些去中心化,增强扩展性)
  2. 可以直接使用golang写智能合约
  3. 所有的智能合约都要求开源(所有合约都是源码,节点本地校验/编译)
    1. 限制只能import系统合约或链上其他的智能合约,从而做到屏蔽网络

新功能

  1. 基于cosmos sdk?
  2. 支持webauthn
  3. 多分片(多链并行)
    1. 父子分片可以直接跨链交互
    2. 其他分片之间可以通过逐层传递,从而实现跨分片交互,100%可靠但效率低
    3. 通过cosmos ibc跨链协议,快速在分片之间传递消息,依赖于relayer
  4. 防止重复签名/投票
    1. eddsa
    2. 签名中的随机数强制要求通过bip32,可以预测,它跟分片ID和分片高度强相关(参考babylon)
    3. 奖励:连续性奖励,非连续性 ,奖励减半,最低奖励只有1;连续则可以达到最大128(参考solana)
  5. 共识
    1. 主链DPos+分片POA(default)
    2. 主链DPos+分片Pos
    3. 主链POW+分片POA

相关技术

  1. cosmos sdk
    1. globalfee
    2. Vote Extensions
      1. 用于投票决定父/子分片的区块信息,放到临时db里
      2. 处理区块的时候,将相邻分片的区块信息写入当前链的db里
      3. 更多细节
      4. more 2
      5. Vote Extensions Tutorials
      6. oracle案例
  2. webauthn
    1. secure-payment-confirmation
    2. 自定义transaction: cosmos-sdk:x/tx/signing/directaux/direct_aux.go
  3. EVMOS
  4. EVM兼容
    1. geth: backends.NewSimulatedBackend
    2. accounts/abi/bind/backends/simulated.go
    3. evmos