步履不停:OpenAtom XuperChain V3.10新功能一覽

   OpenAtom XuperChain(下文簡稱XuperChain) V3.10正式發佈!爲了響應開源社區的對智能合約的多語言需求,並提升XuperChain的易用性、安全性,這個版本的亮點在於推出以太坊虛擬機(EVM,Ethereum Virtual Machine)、交易Txid生成方案升級、網絡層P2P鏈接對於TLS和Ipv6的支持,以及其餘對性能和穩定性等進行優化和提升。並優化和增長了Go和java語言SDK,方便開發者與XuperChain進行交互。html

主要內容:java

  • 【合約】智能合約支持EVM虛擬機
  • 【共識】Smr穩定性提高
  • 【Kernel】肯定性Txid生成
  • 【p2p】p2pv2支持TLS和Ipv6
  • 【XuperOS】Cli支持有背書的調用
  • 【SDK】Go、Java等語言SDK
  • 【羣組管理】平行鏈羣組主鏈增長addChain限制
  • 【p2p】平行鏈羣組節點消息轉發進行羣組過濾
  • 【Bug】未確認交易回滾等bug修復

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不一樣。具體問題舉例以下:

  • 對空列表有兩種序列化結果,null和[ ]
  • 對[]byte有兩種序列化結果 null和" "
  • ......

go的json庫的特性

  • 結構體的字段順序按照protobuf翻譯成go結構體的字段順序排列
  • 字段的默認值不會出如今json中,如int的0,字符串的「」, 數組的[ ]
  • ......

對比了社區開源區塊鏈解決方案Bitcoin、Ethereum、Fabric等的txid生成方案,XuperChain設計了自身的交易序列化方案,同時兼顧了執行效率、易實現等特色,txid的計算效率提高了近一倍。

肯定性txid生成方案,請參閱代碼實現肯定性txid生成方案。

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正在緊張的迭代中。

6.BUG修復

3.10版本針對共識、平行鏈功能以及區塊回滾等地方,進行了bug修復。

  • 平行鏈羣組主鏈增長addChain限制
  • 平行鏈羣組節點消息轉發進行羣組過濾
  • 未確認交易回滾bug修復

7.後續步驟

請參閱版本說明了解更多信息。如需獲取最新消息,敬請閱讀 百度XuperChain 公衆號(Baidu-XUPER)。如需提供反饋,請在 GitHub上提交問題。謝謝!

**版本說明
**https://github.com/xuperchain...

GitHub
https://github.com/xuperchain...

相關文章
相關標籤/搜索