Eclipse中運(yùn)行開源區(qū)塊鏈Scorex

Scorex簡(jiǎn)介

Scorex是用akka實(shí)現(xiàn)的開源區(qū)塊鏈基礎(chǔ)組件,采用模塊化設(shè)計(jì)(共識(shí)模塊抽象為接口,并可通過(guò)配置替換)。
Scorex核心代碼只有約4000行,相對(duì)于其他區(qū)塊鏈項(xiàng)目,它的“純潔”更容易為區(qū)塊鏈開發(fā)者掌握和運(yùn)用。

本文目的

介紹如何下載Scorex相關(guān)代碼,并在eclipse中以Debug方式運(yùn)行,Debug方式運(yùn)行可以讓開發(fā)者更好地跟蹤和學(xué)習(xí)Scorex的內(nèi)部運(yùn)行機(jī)制。

相關(guān)子項(xiàng)目

Scorex的文檔有點(diǎn)亂,某些文檔移動(dòng)了位置但相應(yīng)的鏈接沒有更新導(dǎo)致鏈接失效,我根據(jù)首頁(yè)中的鏈接按圖索驥,對(duì)運(yùn)行Scorex的相關(guān)項(xiàng)目總結(jié)如下:

  • scrypto
    底層的加密函數(shù)庫(kù)

  • Scorex
    基礎(chǔ)框架,包含了3個(gè)子模塊:

    • Scorex-basic ——賬戶和錢包、塊結(jié)構(gòu)定義、P2P傳輸、共識(shí)接口定義。
    • Scorex-Consensus——共識(shí)的Nxt and Quora實(shí)現(xiàn)
    • Scorex-Transaction——交易的接口定義和實(shí)現(xiàn)
  • Permacoin-consensus
    共識(shí)的Permacoin實(shí)現(xiàn)——Permacoin是微軟和馬里蘭大學(xué)2014年提出的用于分布式可信任分片大文件存儲(chǔ)的共識(shí)協(xié)議。

  • Lagonaki
    示例應(yīng)用——通過(guò)配置文件,將上述子項(xiàng)目作為庫(kù)調(diào)用的應(yīng)用示范。

開發(fā)環(huán)境

操作系統(tǒng):macOS 10.12.1
JDK:j2se1.8.0_91
Scala: 2.12.1
sbt: 0.13.11
Scala-IDE: 4.5.0

基本步驟

分兩步進(jìn)行:

  1. 下載Lagonaki代碼,轉(zhuǎn)為eclipse項(xiàng)目。
  2. 用源代碼項(xiàng)目替換Lagonaki中的對(duì)應(yīng)的庫(kù),并在IDE中以debug方式運(yùn)行。
下載和運(yùn)行Lagonaki

將Lagonaki代碼git clone到本地之后,打開 project/build.properties , 確認(rèn)你本地的sbt版本與其版本一致:

sbt.version=0.13.11

生成lagonaki的eclipse項(xiàng)目

為了從sbt項(xiàng)目生成eclipse項(xiàng)目,新建一個(gè) project/assembly.sbt ,其內(nèi)容如下:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.0.1")

現(xiàn)在可以到Lagonaki的根目錄下,運(yùn)行sbt,但是運(yùn)行之前請(qǐng)注意,sbt會(huì)下載一堆maven依賴庫(kù),默認(rèn)的maven路徑下載速度可能非常慢(慢到你失去耐心:),可以用國(guó)內(nèi)的maven庫(kù)鏡像代替之,mac下的方法如下:
打開文件 ~/.sbt/repositories,增加國(guó)內(nèi)maven鏡像,并注釋主maven庫(kù):

[repositories]
  local
  aliyun: http://maven.aliyun.com/nexus/content/groups/public/
#  maven-central
 ...

到Lagonaki的根目錄下,首先運(yùn)行sbt,等待sbt結(jié)束后運(yùn)行eclipse
至此eclipse項(xiàng)目生成。

bash-3.2$ sbt
[info] Loading project definition from /Users/c4w/git/Lagonaki/project
[info] Set current project to lagonaki (in build file:/Users/c4w/git/Lagonaki/)
> eclipse
[info] About to create Eclipse project files for your project(s).
[info] Resolving org.scala-lang#scala-reflect;2.11.8 ...
[info] Successfully created Eclipse project files for project(s):
[info] lagonaki
>
導(dǎo)入lagonaki項(xiàng)目
Paste_Image.png
Paste_Image.png
運(yùn)行l(wèi)agonaki
Paste_Image.png

至此完成第一步驟,在IDE下運(yùn)行示范應(yīng)用。如果不指定運(yùn)行參數(shù),默認(rèn)加載配置文件:settings.json,節(jié)點(diǎn)會(huì)從Seed Peers接入TestNet。

用源代碼代替庫(kù)文件運(yùn)行Lagonaki

但我們需要跟蹤Scorex的內(nèi)部處理細(xì)節(jié)時(shí),需要以Debug方式運(yùn)行源代碼。
首先,用上述將sbt項(xiàng)目導(dǎo)入到IDE的方法,將Scorex項(xiàng)目也導(dǎo)入到IDE。
這里有個(gè)坑,由于Scorex項(xiàng)目包含了子項(xiàng)目,需要用eclipse skip-parents=false命令代替eclipse命令,否則只有scorex-basic子項(xiàng)目代碼導(dǎo)入。
scorex導(dǎo)入IDE之后,手工增加src路徑:

Paste_Image.png

lagonaki項(xiàng)目的Libraries中找到scorex-basicsxxx.jar,并Remove之。

Paste_Image.png

然后在Projects的依賴中增加scorex項(xiàng)目:

Paste_Image.png

成果驗(yàn)證

下面我們來(lái)驗(yàn)證上述工作達(dá)到了預(yù)期目標(biāo):即debug方式跟蹤Scorex內(nèi)部模塊的運(yùn)行,我們將利用Scorex集成的swagger-akka-http來(lái)觸發(fā)用例。
Lagonaki應(yīng)用的settings.json配置文件制定了rpc端口

 "rpcPort": 9085,

運(yùn)行Lagonaki應(yīng)用,瀏覽器訪問(wèn)此端口可以看到Swagger UI展示的api文檔:

Paste_Image.png

根據(jù)url可以定位到對(duì)應(yīng)的代碼在:AddressApiRoute.scala line185
在line189設(shè)置斷點(diǎn)

Paste_Image.png

以debug方式運(yùn)行應(yīng)用,然后前臺(tái)點(diǎn)擊Try it out!,后臺(tái)停留在斷點(diǎn)位置,目標(biāo)達(dá)成!

Paste_Image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,928評(píng)論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,262評(píng)論 6 342
  • 想要寫點(diǎn)東西,那就慢慢寫吧。 接觸極簡(jiǎn)要從接觸斷舍離開始算起,約莫著有段時(shí)間了。 這種新奇的生活方式給自己帶來(lái)了很...
    淡忘的江南閱讀 475評(píng)論 0 1
  • 第一次一個(gè)人生活在一座五月末了還蓋著棉被睡覺的城市,我以為在這座城市,會(huì)使我的品性變得溫和一些,然而是我想多了。 ...
    54碎瑤閱讀 452評(píng)論 0 1

友情鏈接更多精彩內(nèi)容