区块链-Nebulas星云链源代码分析

最近我在看星云链的源代码,很少更新公众号。星云链的代码写的比较规整,虽然代码量比较大,看起来还是比较舒服的。接下来的几天,我会分享我对星云链的理解。

1)星云链的总体框架

星云链使用DPOS共识机制,智能合约是在Chrome V8的沙盒中运行。星云链使用的虚拟机取名:NVM(Nebulas Virtual Machine)。Blockchain Core是区块链的核心,维护着世界状态。Parallels Execution Model交易的并行执行,在后期的文章中,我会详细讲解。星云链的总体框架如下图所示(摘自星云链PPT):

2)命令行Console

星云链的Console实现和以太坊大体一致。星云链的实现更简单简洁。JSVM是JS的虚拟机,Nebulas的虚拟机是基于otto库实现。neb-light.js提供了API以及Admin的API接口。JSBridge实现了从JS到GPRC的转接(bridge)。

3)地址生成算法

和比特币/以太坊类似,星云链也采用了椭圆曲线算法作为地址生成的基础算法。地址分为两种:一般账户地址和智能合约地址。

a)一般账户地址

椭圆曲线算法(ECC_SECP256K1)根据用户输入的密钥生成一个私钥和公钥密码对。一般账户地址是在公钥的基础上生成,整个生成过程如下:

很明显看出,从私钥可以直接计算出公钥,推算出地址。为了更安全的保存私钥,星云链和比特/以太坊一样采用scrypt算法对私钥进行加密:

b)智能合约地址

智能合约的地址生成逻辑大体和一般账户地址生成逻辑类似。区别在于,智能合约的公钥并不是由椭圆曲线算法计算获取,而是由生成智能合约的地址相关信息拼接而成:

经过base58编码的一般账户或者智能合约地址长度为35个字节,类似n1Yydd77tqcHfgrhpJdomDejAoKT542SsrZ(地址都是以n1开头)。

总结:星云链的代码写的比较规整,逻辑清晰,值得学习。星云链使用DPOS共识机制,智能合约是在Chrome V8的沙盒中(NVM)运行。接下来的几天,我会继续介绍星云链的其他模块。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180724G1QQ2C00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券