超零协议(SERO)轻松入门——基于CENTOS7

标签: SERO 超零协议 零知识证明 匿名币 区块链隐私 智能合约


1. 机器配置

以目前Beta上链的规模,满足以下配置

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

就能很好的运行了。

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

2. 准备环境

安装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. 获取代码

创建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下生成了可执行文件gero,如果要重新编译则执行

$ make clean
$ make all

5. 配置

有了gero可执行文件,我们就能运行SERO的后台服务与交互式控制台。

首先配置运行gero的环境

创建SERO数据存储目录

$ mkdir ~/sero-data

设置动态库加载路径

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

6. 启动后台服务

用gero可执行程序,目前可以启动四种不同类型的模式:

启动dev模式

$ build/bin/gero  --dev --datadir "~/sero-data" --ipcpath "~/sero-data/gero.ipc" > ~/sero-data/debug.log
在这种模式下只能通过手工连接其他的dev节点,挖矿难度非常小,且无限制。

启动alpha模式

$ build/bin/gero  --alpha --datadir "~/sero-data" --ipcpath "~/sero-data/gero.ipc" > ~/sero-data/debug.log
这种模式下会自动链接AlphaNet网络,并开始同步数据,AlphaNet网络是SERO内部测试网,挖矿需要许可证,如果有测试需求,可以发邮件给<gordon@sero.vip>申请 `挖矿许可证` 或者 `测试用SERO币` 。

启动beta模式

$ build/bin/gero --datadir "~/sero-data" --ipcpath "~/sero-data/gero.ipc" > ~/sero-data/debug.log
这种模式下会自动链接BetaNet网络,并开始同步数据,BetaNet网络是SERO团队提供给社区公测用的网络,挖矿同样需要许可证,如果有测试需求,可以发邮件给<gordon@sero.vip>申请 `挖矿许可证` 或者 `测试用SERO币` 。

启动Main模式

此模式目前不支持,当主网络上线时,才会提供出来 ...

结果输出

只要看到`IPC endpoint opened`那句,就说明服务启动已经成功,现在可以启动控制台来连接后台服务。

7. 启动控制台

当加入attach参数时,gero可以作为控制台启动。

#后台启动gero服务
$ 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虚拟机驱动的交互式控制台


在其中可以运行复杂的js控制程序,退出控制台的指令是

> exit

8. 账户管理

创建账户指令

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

其中 [PASSWORD] 是这个账户的密码,因为SERO不会直接存储用户的私钥,当5分钟没有任何操作,账户会被锁定,这时要用该账户进行转账,则需要用此密码对账户解锁。创建用户指令会返回该用户公钥。这个公钥可以作为转账地址。

查看所有公钥

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

这个属性返回当前钱包中所有账户的公钥。

解锁账户

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

其中[PK]是该用户公钥

获取账户资产余额

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

其中tkn按分类显示账户所有Token余额,tkt按分类显示账户所有持有的Ticket

9. 挖矿

启动挖矿

> miner.start()

停止挖矿

> miner.stop()

控制台休眠

> admin.sleepBlocks(num)

参数num是需要休眠的区块数,这个方法一定要在挖矿开启的情况下调用,否则将一直阻塞系统。

需要说明的是,挖矿所获得的奖励,默认条件下,会进入sero.accounts的第0个账户的 公钥 生成的 暂存地址(PKr) 中。

10. 生成交易

accounts[0]中已经有挖矿所得的奖励的时候,既可以转账给其他账户。

转账指令

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

其中[SRC_PK]是资金发出方公钥,[TARGET_PK]是资金接受方公钥,[NUM_OF_TA]是最小单位的金额,SERO的最小单位是TA,换算单位是 `1 SERO = 10^18 TA`。返回值[TX_ID]是生成交易的ID。

交易生成之后,将同步给当前网络的其他节点,等待打包进区块中。在打包进区块之后,可以用下面的指令查询交易的详情。

获取交易详情

> 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. 发布智能合约

SERO发布智能合约与以太坊的步骤是相似的。

编译智能合约

使用SERO自己的智能合约编辑器,我们打开下面的链接:

http://remix.web.sero.cash

加载完毕后可以看到其中有一个发行匿名货币的例子seroToken.sol

右上角选择seroToken,并点击Details

点击弹出框WEB3DEPLOY旁边的拷贝按钮。

修改初始化参数

在文本编辑器中修改初始化变量。

安装智能合约

然后整个粘贴到控制台中,并回车,控制台立即会发送一笔交易来安装此智能合约。

查看智能合约账户

交易成功后,既可以通过sero.getBalance查看该智能合约所发行的token。

调用智能合约

用智能合约本身定义的transfer方法,可以将智能合约的匿名币发送给个人账户中。

转发匿名资产

现在HELLOCOIN的Token已经在account[0]的账户中,account[0]可以用普通的交易将它发送给其他的账户。但是一定记住必须在参数中指定币名cy:"HELLOCOIN"

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

最后在accounts[1]的账户中可以看到他收到了500个HELLOCOIN的资产。

image.png

这笔交易也是匿名的。

最后

入门课先上到这儿,接下来我们会详细的讲解SERO跟以太坊在使用方式最主要的差异,以及Token和Ticket两种匿名资产在智能合约调用中的使用方式。

如果对SERO的原理和零知识证明算法感兴趣,可以在SERO的官网下载我们的白皮书。有任何建议也可以发送电子邮件到 gordon@sero.vip 咨询。

欢迎加入SERO的gitter社区,一起将SERO变得更好。

--
[官网] 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区块浏览器] 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,552评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,666评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,519评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,180评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,205评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,344评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,781评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,449评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,635评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,467评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,515评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,217评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,775评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,851评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,084评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,637评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,204评论 2 341

推荐阅读更多精彩内容