超零協(xié)議(SERO)輕松入門——基于CENTOS7

標簽: SERO 超零協(xié)議 零知識證明 匿名幣 區(qū)塊鏈隱私 智能合約


1. 機器配置

以目前Beta上鏈的規(guī)模,滿足以下配置

CPU 4線程以上
MEM 4GB以上
DISK 50G以上

就能很好的運行了。

#本文中測試機配置
----------------------------
OS  : CENTOS7.3
CPU : Xeon E5-26xx v4 (C2T2)
MEM : 4GB
DISK: 50GB
----------------------------

2. 準備環(huán)境

安裝Go語言和Git客戶端

$ sudo yum install golang
$ sudo yum install git

注意,只支持 v1.10.x 以及以下golang版本,v1.11.x 不支持。

安裝需要的C++依賴庫

#安裝boost庫
$ sudo yum install boost
#可能還需要安裝 gmp、libgomp、procps-ng
$ sudo yum install gmp libgomp procps-ng

3. 獲取代碼

創(chuàng)建GOPATH目錄

$ pwd
... /root

$ mkdir gopath
$ mkdir gopath/src
$ mkdir gopath/src/github.com
$ mkdir gopath/src/github.com/sero-cash
$ export GOPATH=/root/gopath
$ cd gopath/src/github.com/sero-cash

訪問go-sero項目鏈接,克隆代碼:https://github.com/sero-cash/go-sero

$ git clone https://github.com/sero-cash/go-sero.git

訪問go-czero-import項目鏈接,克隆代碼:https://github.com/sero-cash/go-czero-import

$ git clone https://github.com/sero-cash/go-czero-import.git

4. 編譯gero

$ ls
... go-sero      go-czero-import
$ cd go-sero
$ make all
$ ls build/bin/gero
... build/bin/gero

可以見到build/bin下生成了可執(zhí)行文件gero,如果要重新編譯則執(zhí)行

$ make clean
$ make all

5. 配置

有了gero可執(zhí)行文件,我們就能運行SERO的后臺服務(wù)與交互式控制臺。

首先配置運行g(shù)ero的環(huán)境

創(chuàng)建SERO數(shù)據(jù)存儲目錄

$ mkdir ~/sero-data

設(shè)置動態(tài)庫加載路徑

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GOPATH/src/github.com/sero-cash/go-czero-import/czero/lib

6. 啟動后臺服務(wù)

用gero可執(zhí)行程序,目前可以啟動四種不同類型的模式:

啟動dev模式

$ build/bin/gero  --dev --datadir "~/sero-data" --ipcpath "~/sero-data/gero.ipc" > ~/sero-data/debug.log
在這種模式下只能通過手工連接其他的dev節(jié)點,挖礦難度非常小,且無限制。

啟動alpha模式

$ build/bin/gero  --alpha --datadir "~/sero-data" --ipcpath "~/sero-data/gero.ipc" > ~/sero-data/debug.log
這種模式下會自動鏈接AlphaNet網(wǎng)絡(luò),并開始同步數(shù)據(jù),AlphaNet網(wǎng)絡(luò)是SERO內(nèi)部測試網(wǎng),挖礦需要許可證,如果有測試需求,可以發(fā)郵件給<gordon@sero.vip>申請 `挖礦許可證` 或者 `測試用SERO幣` 。

啟動beta模式

$ build/bin/gero --datadir "~/sero-data" --ipcpath "~/sero-data/gero.ipc" > ~/sero-data/debug.log
這種模式下會自動鏈接BetaNet網(wǎng)絡(luò),并開始同步數(shù)據(jù),BetaNet網(wǎng)絡(luò)是SERO團隊提供給社區(qū)公測用的網(wǎng)絡(luò),挖礦同樣需要許可證,如果有測試需求,可以發(fā)郵件給<gordon@sero.vip>申請 `挖礦許可證` 或者 `測試用SERO幣` 。

啟動Main模式

此模式目前不支持,當主網(wǎng)絡(luò)上線時,才會提供出來 ...

結(jié)果輸出

只要看到`IPC endpoint opened`那句,就說明服務(wù)啟動已經(jīng)成功,現(xiàn)在可以啟動控制臺來連接后臺服務(wù)。

7. 啟動控制臺

當加入attach參數(shù)時,gero可以作為控制臺啟動。

#后臺啟動gero服務(wù)
$ nohup build/bin/gero  --dev --datadir "~/sero-data" --ipcpath "~/sero-data/gero.ipc" > ~/sero-data/gero.log &
#啟動控制臺
$ build/bin/gero --datadir "~/sero-data" attach

attach會讓gero啟動一個JS虛擬機驅(qū)動的交互式控制臺


在其中可以運行復(fù)雜的js控制程序,退出控制臺的指令是

> exit

8. 賬戶管理

創(chuàng)建賬戶指令

> personal.newAccount("[PASSWORD]")
... "[PK]"

其中 [PASSWORD] 是這個賬戶的密碼,因為SERO不會直接存儲用戶的私鑰,當5分鐘沒有任何操作,賬戶會被鎖定,這時要用該賬戶進行轉(zhuǎn)賬,則需要用此密碼對賬戶解鎖。創(chuàng)建用戶指令會返回該用戶公鑰。這個公鑰可以作為轉(zhuǎn)賬地址。

查看所有公鑰

> sero.accounts
... ["[PK0]","[PK1]",...,"[PKn]"]

這個屬性返回當前錢包中所有賬戶的公鑰。

解鎖賬戶

> personal.unlockAccount("[PK]","[PASSWORD]")

其中[PK]是該用戶公鑰

獲取賬戶資產(chǎn)余額

> sero.getBalance("[PK]")
... {tkn:{...},tkt:{...}}

其中tkn按分類顯示賬戶所有Token余額,tkt按分類顯示賬戶所有持有的Ticket

9. 挖礦

啟動挖礦

> miner.start()

停止挖礦

> miner.stop()

控制臺休眠

> admin.sleepBlocks(num)

參數(shù)num是需要休眠的區(qū)塊數(shù),這個方法一定要在挖礦開啟的情況下調(diào)用,否則將一直阻塞系統(tǒng)。

需要說明的是,挖礦所獲得的獎勵,默認條件下,會進入sero.accounts的第0個賬戶的 公鑰 生成的 暫存地址(PKr) 中。

10. 生成交易

accounts[0]中已經(jīng)有挖礦所得的獎勵的時候,既可以轉(zhuǎn)賬給其他賬戶。

轉(zhuǎn)賬指令

sero.sendTransaction({
from:"[SRC_PK]",
to:"[TARGET_PK]",
value:[NUM_OF_TA]
})
... "[TX_ID]"

其中[SRC_PK]是資金發(fā)出方公鑰,[TARGET_PK]是資金接受方公鑰,[NUM_OF_TA]是最小單位的金額,SERO的最小單位是TA,換算單位是 `1 SERO = 10^18 TA`。返回值[TX_ID]是生成交易的ID。

交易生成之后,將同步給當前網(wǎng)絡(luò)的其他節(jié)點,等待打包進區(qū)塊中。在打包進區(qū)塊之后,可以用下面的指令查詢交易的詳情。

獲取交易詳情

> sero.getTransaction("[TX_ID]")
...[TX_DETAIL]

其中[TX_DETAIL]主要格式于下:

{
  from: "[SENDER PKr]",
  stx: {
    Desc_Z_Ins: [{
        Anchor: "[MERKLE AUTH ROOT]",
        AssetCM: "[ASSET COMMITMENT]",
        Nil: "[NULLIFIER ID]",
        Trace: "[TRACE ID]"
        Proof: "[ZKP PROOF]"
    }],
    Desc_Z_Outs: [{
        AssetCM: "[ASSET COMMITMENT]",
        OutCM: "[OUTPUT COMMITMENT]",
        PKr: "[RECIVER PKr]",
        Proof: "[ZKP PROOF]"
    }],

  }
}

11. 發(fā)布智能合約

SERO發(fā)布智能合約與以太坊的步驟是相似的。

編譯智能合約

使用SERO自己的智能合約編輯器,我們打開下面的鏈接:

http://remix.web.sero.cash

加載完畢后可以看到其中有一個發(fā)行匿名貨幣的例子seroToken.sol。

右上角選擇seroToken,并點擊Details。

點擊彈出框WEB3DEPLOY旁邊的拷貝按鈕。

修改初始化參數(shù)

在文本編輯器中修改初始化變量。

安裝智能合約

然后整個粘貼到控制臺中,并回車,控制臺立即會發(fā)送一筆交易來安裝此智能合約。

查看智能合約賬戶

交易成功后,既可以通過sero.getBalance查看該智能合約所發(fā)行的token。

調(diào)用智能合約

用智能合約本身定義的transfer方法,可以將智能合約的匿名幣發(fā)送給個人賬戶中。

轉(zhuǎn)發(fā)匿名資產(chǎn)

現(xiàn)在HELLOCOIN的Token已經(jīng)在account[0]的賬戶中,account[0]可以用普通的交易將它發(fā)送給其他的賬戶。但是一定記住必須在參數(shù)中指定幣名cy:"HELLOCOIN"

sero.sendTransaction({from:sero.accounts[0],to:sero.accounts[1],value:500,cy:"HELLOCOIN"})
image.png

最后在accounts[1]的賬戶中可以看到他收到了500個HELLOCOIN的資產(chǎn)。

image.png

這筆交易也是匿名的。

最后

入門課先上到這兒,接下來我們會詳細的講解SERO跟以太坊在使用方式最主要的差異,以及Token和Ticket兩種匿名資產(chǎn)在智能合約調(diào)用中的使用方式。

如果對SERO的原理和零知識證明算法感興趣,可以在SERO的官網(wǎng)下載我們的白皮書。有任何建議也可以發(fā)送電子郵件到 gordon@sero.vip 咨詢。

歡迎加入SERO的gitter社區(qū),一起將SERO變得更好。

--
[官網(wǎng)] https://sero.cash
[白皮書 V1.0.6] http://sero-media.s3-website-ap-southeast-1.amazonaws.com/Sero_ENG_V1.06.pdf
[Twitter] https://twitter.com/SEROdotCASH
[Telegram] https://t.me/SeroOfficial
[Github] https://github.com/sero-cash/go-sero
[Gitter Community] https://gitter.im/sero-cash/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link
[SERO區(qū)塊瀏覽器] https://explorer.web.sero.cash/blocks.html
[SERO智能合約編輯器] https://remix.web.sero.cash/
[SERO介紹視頻] https://v.qq.com/x/page/s0792e921ok.html
[SERO vs Zcash加密速度對比] https://v.qq.com/x/page/r0796jotef8.html

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

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

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