最近我在看星云链的源代码,很少更新公众号。星云链的代码写的比较规整,虽然代码量比较大,看起来还是比较舒服的。接下来的几天,我会分享我对星云链的理解。
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)运行。接下来的几天,我会继续介绍星云链的其他模块。
领取专属 10元无门槛券
私享最新 技术干货