標簽: 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自己的智能合約編輯器,我們打開下面的鏈接:

加載完畢后可以看到其中有一個發(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"})

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

這筆交易也是匿名的。
最后
入門課先上到這兒,接下來我們會詳細的講解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