OpenAtom XuperChain(下文简称XuperChain) V3.10正式公布!为了响应开源社区的对智能合约的多语言需要,并进步XuperChain的易用性、安全性,这个版本的亮点在于推出以太坊虚拟机(EVM,Ethereum Virtual Machine)、交易Txid生成计划降级、网络层P2P连贯对于TLS和Ipv6的反对,以及其余对性能和稳定性等进行优化和进步。并优化和减少了Go和java语言SDK,不便开发者与XuperChain进行交互。
次要内容:
- 【合约】智能合约反对EVM虚拟机
- 【共识】Smr稳定性晋升
- 【Kernel】确定性Txid生成
- 【p2p】p2pv2反对TLS和Ipv6
- 【XuperOS】Cli反对有背书的调用
- 【SDK】Go、Java等语言SDK
- 【群组治理】平行链群组主链减少addChain限度
- 【p2p】平行链群组节点音讯转发进行群组过滤
- 【Bug】未确认交易回滚等bug修复
1. 智能合约引擎反对EVM虚拟机
1.1 XuperChain 与EVM
EVM,是专门用于运行以太坊智能合约的虚拟机,合约可由solidity、viper等语言编写。以太坊智能合约以及EVM在区块链畛域利用极其宽泛,曾经成为区块链智能合约畛域的事实标准之一。
得益于XuperChain独创的XuperBridge的架构设计,将账本数据、合约交互接口等进行封装裸露,以实用于不同的合约VM。在版本3.10中,在原有的wasm、native虚拟机的根底上,又新增了对EVM的反对,极大的不便以太坊的社区开发者,将以太坊Dapp迁徙到超级链,充分发挥超级链高TPS、低手续费等劣势。
在XuperChain上部署、调用solidity合约,请参考solidity合约。
- solidity合约
https://xuperchain.readthedoc...
1.2 XuperChain与EVM地址的转换
家喻户晓,以太坊的账户分为内部账户和外部账户,外部账户即为合约。XuperChain的账户模型,蕴含AK(Access Key)、账号(Account)、合约(Contract)。AK是具体一个address;账号用来在XuperChain上部署合约,账号能够绑定一组AK;合约,即为部署在区块链上的一段可执行字节码,合约名具备唯一性,由用户指定。XuperChain的账户模型请参阅账户模型。
针对XuperChain与以太坊账户模型的不同,当AK,Account、Contract等存入EVM外部进行合约执行时,须要进行地址格局的转换。具体的地址转换规则请查阅超级链账户与以太坊账户地址转换。
能够通过xchain-cli工具,执行addr-trans命令,进行几类地址的互相转换,列举两个例子具体如下:
# xchain合约账户地址转evm地址,contract-account示意XuperChain合约账户
./xchain-cli evm addr-trans -t x2e -f XC1111111111111113@xuper
result, 3131313231313131313131313131313131313133 contract-account
# evm地址转xchain合约账户,contract-account示意XuperChain合约账户
./xchain-cli evm addr-trans -t e2x -f 3131313231313131313131313131313131313133
result, XC1111111111111113@xuper contract-account
- 账户模型
https://xuperchain.readthedoc...
- XuperChain账户与以太坊账户地址转换
https://xuperchain.readthedoc...
2. 确定性txid生成计划优化
之前版本的tx hash的计算形式采纳的是go的官网json库来进行序列化,受限于go本身的语言个性以及json库的个性,当用户应用其余语言来实现XuperChain的客户端或者SDK时,可能会产生不同的序列化后果,即雷同的交易,但计算失去的txid不同。具体问题举例如下:
- 对空列表有两种序列化后果,null和[ ]
- 对[]byte有两种序列化后果 null和" "
- ......
go的json库的个性
- 构造体的字段程序依照protobuf翻译成go构造体的字段顺序排列
- 字段的默认值不会呈现在json中,如int的0,字符串的“”, 数组的[ ]
- ......
比照了社区开源区块链解决方案Bitcoin、Ethereum、Fabric等的txid生成计划,XuperChain设计了本身的交易序列化计划,同时兼顾了执行效率、易实现等特点,txid的计算效率晋升了近一倍。
确定性txid生成计划,请参阅代码实现确定性txid生成计划。
- 确定性txid生成计划
https://github.com/xuperchain...
3. p2pv2反对TLS和ipv6
在联盟链场景下,区块链网络须要反对规范CA,只有颁发证书的节点能够接入区块链网络。目前,p2pv1网络曾经反对基于CA的TLS证书认证性能,p2pv2仅具备对通信内容加密的性能,在这个版本减少了基于CA的TLS证书认证性能。
同时,这个版本也减少了对ipv6网络的反对。须要批改如下配置:
- isIpv6:以后节点中p2p网络是否应用ipv6(仅对p2pv2无效,对p2pv1有效,p2pv1本来就反对ipv6)
- 依据节点信息配置 bootNodes、init_proposer_neturl 的 multiaddr
xchain.yaml文件
p2p:
module: p2pv2
port: 47101
isIpv6: true
bootNodes:
- "/ip6/::1/tcp/47101/p2p/QmVcSF4F7rTdsvUJqsik98tXRXMBUqL5DSuBpyYKVhjuG4"
xuper.json文件
"init_proposer_neturl": {
"1": [
"/ip6/::1/tcp/47101/p2p/QmVcSF4F7rTdsvUJqsik98tXRXMBUqL5DSuBpyYKVhjuG4",
]
}
4. cli命令行优化之反对有背书的调用
XuperChain凋谢网络的合约调用,须要背书节点来提供背书服务,次要包含黄反检测等。目前凋谢网络仅反对通过SDK的形式来进行合约调用,为了加强cli的易用性,在cli命令行则减少了有背书的合约调用。
须要对cli.yaml文件进行如下配置,isNeedComplianceCheck示意须要背书:
endorseService Info
testNet addrs
endorseServiceHost: "39.156.69.83:37100"
complianceCheck:
# 是否须要进行合规性背书
isNeedComplianceCheck: true
# 是否须要领取合规性背书费用
isNeedComplianceCheckFee: true
# 合规性背书费用
complianceCheckEndorseServiceFee: 400
# 如果通过合规性查看,签发认证签名的地址
complianceCheckEndorseServiceAddr: jknGxa6eyum1JrATWvSJKW3thJ9GKHA9n
创立平行链所须要的最低费用
minNewChainAmount: "100"
crypto: "xchain"
命令行执行减少cliconf字段,用于指定cli.yaml文件读取配置。示例如下:
// 不须要背书
./xchain-cli account new --desc account.des --fee 1000
// 须要背书
./xchain-cli account new --desc account.des --fee 1000 --cliconfpath conf/cli.yaml
5. SDK组件
为了不便开发者与XuperChain进行交互,这个版本对之前go sdk进行了性能的裁减,并新增了java sdk。目前曾经反对的性能列表如下,其中加红局部为新增性能:
- 一般账户的创立、复原、余额查问等
- 合约账户的创立等
- wasm合约的部署、调用、查问等
- solidity合约的部署、调用、查问等
JavaScript sdk正在缓和的迭代中。
- go sdk
https://github.com/xuperchain...
- java sdk
https://github.com/xuperchain...
6.BUG修复
3.10版本针对共识、平行链性能以及区块回滚等中央,进行了bug修复。
- 平行链群组主链减少addChain限度
- 平行链群组节点音讯转发进行群组过滤
- 未确认交易回滚bug修复
7.后续步骤
请参阅版本阐明理解更多信息。如需获取最新消息,敬请浏览 百度XuperChain 公众号(Baidu-XUPER)。如需提供反馈,请在 GitHub上提交问题。谢谢!
**版本阐明
**https://github.com/xuperchain...
GitHub
https://github.com/xuperchain...