OpenAtom XuperChain(下文簡稱XuperChain) V3.10正式發佈!爲了響應開源社區的對智能合約的多語言需求,並提升XuperChain的易用性、安全性,這個版本的亮點在於推出以太坊虛擬機(EVM,Ethereum Virtual Machine)、交易Txid生成方案升級、網絡層P2P鏈接對於TLS和Ipv6的支持,以及其餘對性能和穩定性等進行優化和提升。並優化和增長了Go和java語言SDK,方便開發者與XuperChain進行交互。html
主要內容:java
1. 智能合約引擎支持EVM虛擬機git
1.1 XuperChain 與EVMgithub
EVM,是專門用於運行以太坊智能合約的虛擬機,合約可由solidity、viper等語言編寫。以太坊智能合約以及EVM在區塊鏈領域應用極其普遍,已經成爲區塊鏈智能合約領域的事實標準之一。json
得益於XuperChain首創的XuperBridge的架構設計,將帳本數據、合約交互接口等進行封裝暴露,以適用於不一樣的合約VM。在版本3.10中,在原有的wasm、native虛擬機的基礎上,又新增了對EVM的支持,極大的方便以太坊的社區開發者,將以太坊Dapp遷移到超級鏈,充分發揮超級鏈高TPS、低手續費等優點。segmentfault
在XuperChain上部署、調用solidity合約,請參考solidity合約。數組
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
2. 肯定性txid生成方案優化
以前版本的tx hash的計算方式採用的是go的官方json庫來進行序列化,受限於go自身的語言特性以及json庫的特性,當用戶使用其餘語言來實現XuperChain的客戶端或者SDK時,可能會產生不一樣的序列化結果,即相同的交易,但計算獲得的txid不一樣。具體問題舉例以下:
go的json庫的特性
對比了社區開源區塊鏈解決方案Bitcoin、Ethereum、Fabric等的txid生成方案,XuperChain設計了自身的交易序列化方案,同時兼顧了執行效率、易實現等特色,txid的計算效率提高了近一倍。
肯定性txid生成方案,請參閱代碼實現肯定性txid生成方案。
3. p2pv2支持TLS和ipv6
在聯盟鏈場景下,區塊鏈網絡須要支持標準CA,只有頒發證書的節點能夠接入區塊鏈網絡。目前,p2pv1網絡已經支持基於CA的TLS證書認證功能,p2pv2僅具有對通訊內容加密的功能,在這個版本增長了基於CA的TLS證書認證功能。
同時,這個版本也增長了對ipv6網絡的支持。須要修改以下配置:
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表示須要背書:
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。目前已經支持的功能列表以下,其中加紅部分爲新增功能:
JavaScript sdk正在緊張的迭代中。
6.BUG修復
3.10版本針對共識、平行鏈功能以及區塊回滾等地方,進行了bug修復。
7.後續步驟
請參閱版本說明了解更多信息。如需獲取最新消息,敬請閱讀 百度XuperChain 公衆號(Baidu-XUPER)。如需提供反饋,請在 GitHub上提交問題。謝謝!
**版本說明
**https://github.com/xuperchain...