请选择 进入手机版 | 继续访问电脑版

发表于 2016-10-16 11:52:44

本帖最后由 资讯播报 于 2016-10-16 12:14 编辑

     Zcash 是 bitcoin 的分支,保留了 bitcoin 原有的模式,基于比特币 0.11.2 版代码修改的。Zcash 钱包资金分 2 种:透明资金、私有资金,透明资金类似比特币资金;私有资金加强了隐私性,涉及到私有资金的交易是保密不可查的,透明资金与透明资金的交易是公开可查的。
      Zcash 被称为零币,与‘灵’同音,不好听,且有归零的感觉,统一称为 Z 币。Zcash 主链的币叫 ZEC,等同于 BTC,测试链的币称为 TAZ。目前 zcash 仅支持 linux 系统(推荐 ubuntu),不支持 Windows、MAC,且只支持命令行,没有图形界面(zcash 团队没人擅长 GUI)。

地址
     Zcash 中含有 2 种地址,实现 bitcoin 和 zcash 的兼容。
1 透明资金地址 taddr bitcoin 地址,保存在 UTXOs 中,长度为 34 位。
     命令./src/zcash-cli getnewaddress 可以生成新的 taddr 地址。例如:msFgKsVAia4aFB1qFGX7iJ3XjMZv6c26Ab
2 私有资金地址 zaddr
    保存在 notes 对象中,长度为 96 位,前 2 位为标记,主链地址前 2 位是”zc”,spendingkey的前 2 位是”SK”,测试链的地址前 2 位是”tn”。notes 对象是加密的,解密才能查看,用的是 chacha20-poly1305 算法。命令./src/zcash-cli z_getnewaddress 可以生成新的 zaddr 地址。
例如:tngBSug9xvpqudziMc3QbfReHG6BeufHDbv4vEZDmnYqSpRbqu5USZqBTXENQGdUbYMkxqHbb9j3RmEr7Lza8q7hbTQxZnM
     具体生成过程看 z_getnewaddress 函数。命令 z_listaddresses 获取节点钱包中的 zaddr 列表。命令./src/zcash-cli zcrawkeygen 可以查看地址、key 等。地址 taddr 实现了原有的 bitcoin 的功能,zaddr 实现了 zcash 的功能。 taddr 可以发送交易给 taddr、zaddr,zaddr 可以发送交易给 taddr、addr。taddr 与 taddr的交易是透明可查的,涉及到 zddr 的交易就保密了。

零知识证明
     零知识证明是在不泄漏信息的情况下,生成证明,验证者通过验证证明确定是否正确。Zcash 使用了 SCIPR 实验室的零知识证明库 libsnark,在此基础上做了修改。Zcash 团队成员包含多个 libsnark 开发人员(不是全部)。修改如下:
1、 libsnark 支持 4 种语言:"R1CS"、"BACS"、"USCS"、"TBCS",zcash 使用了"R1CS"。
2、 libsnark 支持 3 种椭圆曲线:"edwards"、"bn128"、"alt_bn128",zcash 使用了"alt_bn128"。
3、 libsnark 支持 2 个库:gadgetlib1、gadgetlib2,zcash 使用了 gadgetlib1,gadgetlib1 是底层库,支持所有的 R1CS 预处理特征。
SCIPR 实验室的 libsnark:https://github.com/scipr-lab/libsnark
Zcash 修改后的 libsnark:https://github.com/zcash/libsnark
zcash 交易涉及到私有资金时,使用零知识证明生成证明(函数r1cs_ppzksnark_prover),保存到类 JSDescription 的 proof 中,校验交易时校验证明(函数r1cs_ppzksnark_verifier_strong_IC)。libsnark 看了看,知道怎么用的,但详细的也没看懂。
零知识证明白皮书:https://eprint.iacr.org/2013/507.pdf

交易
   透明资金发送到透明资金地址,可以调用 bitcoin RPC 命令发送交易,涉及到私有资金、地址,只能用 zcash RPC 命令了,目前是 _sendmany 命令。格式:z_sendmany "fromaddress" [{"address":... ,"amount":...},...]
交易分 3 种情况:
1 透明资金发送到透明地址
    延用 bitcoin 的交易方式,仅仅打签名即可。
2 透明资金发送到透明地址、私有地址
   透明资金发送到透明地址,依然延用 bitcoin 的方式,发送到私有地址的需要构造证明,对整个交易签名发送。
3 私有资金发送到透明地址、私有地址每笔交易需要生成证明,涉及到找零、矿工费的处理,最后再签名发送。
      交易中的透明地址、私有地址的输入、输出是不同的结构,涉及到私有地址的采用了新增的结构(JSInput、JSOutput),涉及到的私有地址的数据需要先签名解密解析数据。详细过程参考函数 z_sendmany:
https://github.com/zcash/zcash/blob/master/src/wallet/asyncrpcoperation_sendmany.cpp#L126  生成证明参考函数 perform_joinsplit https://github.com/zcash/zcash/b ... n_sendmany.cpp#L804

交易签名
     Zcash 私有资金交易时,不仅仅依靠零知识证明,而且对交易打签名,采用了 ed25519算法。zcash 交易的零知识证明、签名需要的公钥、密钥使用 ed25519 算法生成的,详细参考函数 crypto_sign_keypair
签名参考函数 sign_send_raw_transaction https://github.com/zcash/zcash/b ... n_sendmany.cpp#L660

挖矿算法
Zcash 的挖矿算法是 EquiHash,理论依据是广义生日悖论,目前有 2 个实现:BasicSolve、OptimisedSolve,BasicSolve 主要用于测试用例,现在用的 OptimisedSolve 是优化后的,但依然存在优化空间。
EquiHash 算法需要高内存,最优算法每个挖矿线程需要 1G 内存,短时间内很难出现低成本的矿机。
Zcash 使用 EquiHash 计算解决方案,保存到区块头的 nSolution,接收区块时校验。

块奖励
zcash 总量是 2100 万个币,每隔 2.5 分钟出一个块,每天 576 个块。区块奖励分 2 个阶段:
1 慢慢开始挖矿阶段为了照顾在开始阶段不懂挖矿的,zcash 采用了慢慢开始挖矿机制,前 20000 个块的奖励比较少,线程递增到 12.5 个币。慢慢开始挖矿阶段也分 2 个阶段:
(1) 10000 个块,
块 1 的奖励是 0.000625 币,随着高度线性递增,增加幅度是 0.000625 币,块 9999的奖励是 6.249375 币。
(2) 10000~19999
块 10000 的奖励是 6.250625,随着高度线性递增,增加幅度是 0.000625 币,块 19999的奖励是 12.5 币。 20000 个块的奖励总量是 125000 币,相当于 10000 个块奖励是 12.5 个币的总量。产生 10000 个块需要的时间大约是 17.3 天,缓慢挖矿的时间周期(20000 个块)大约是 34.7天。
2 正常块奖励
从块 20000 开始,奖励是 12.5 个币,奖励按照每 840000 个块(每 4 年)减半,计算块奖励时块高度减少 10000,即 940000 块是第一次减半,每隔 840000 个块减半,以此类推。不懂挖矿的矿工也不必着急,因为即使懂了,前 20000 个块的奖励很少,有 1 个月的时间搞定挖矿。

创始人奖励
4 年(区块 0~840000)产生的区块奖励的 20% zcash 公司(总量的 10%),80%归矿工。4 年后的区块奖励全部归矿工。
创建区块时,构造 2 个输出,分别给矿工、创始人,当广播区块后,其他节点接受区块时,检验区块有效性,当高度小于 840000 时,检验是否有对创始人的 20%的输出。
创始人奖励地址采用 2/3 多重签名 FOUNDERS_REWARD_SCRIPT。

难度调整
    每产生一个区块都需要重新计算难度,难度计算基于前 17 个块(42.5 分钟),前 17 区块的难度是固定的(powLimit),从第 18 个区块开始调整难度,最大值是 powLimit
详细计算过程参考 GetNextWorkRequired 函数。
Bitcoin 是每隔 2016 个块调整难度,关于 zcash 的每个块都要重新调整难度,有个讨论,参考:https://github.com/zcash/zcash/issues/147

CoinBase 保护
矿工挖矿的奖励不能直接发送给透明资金地址,只能发送给私有资金地址,然后才可以发送给透明资金地址。币成熟期是 100。

创建新块
Zcash 每个挖矿线程都有自己的地址、计数器,每个线程挖出来的新块的块奖励的地址是不同的,做矿池的需要注意,改成一个地址。
参考函数 BitcoinMiner(https://github.com/zcash/zcash/blob/master/src/miner.cpp#L442)。区块大小是 2M

挖矿工具
Zcash 目前仅支持 CPU 挖矿,GPU 的挖矿工具在研发中,尚未有人公开。 zcash 支持 2 种挖矿方式:solo、矿池。
1、 Solo 挖矿在 zcash.conf 设置 gen=1,启动 zcashd 即可挖矿。
2 矿池
Zcash 开发者 str4d 做了个矿池和挖矿工具,矿池地址:http://zmine.io/,挖矿工具地址:https://github.com/str4d/zcash/tree/standalone-miner。zcash-miner 是 zcash 的分支,主要添加了 stratum 协议、cpu 挖矿。
(1) stratum 协议
采用了 cpp-ethereum stratum 的实现,V2 版,做了些修改,移除了 eth 议中的命令。参考 commit:
https://github.com/str4d/zcash/commit/c5ea2cfb190944dfa23566561d1cb37dcb116833
(2) cpu 挖矿
equihash 算法做了些修改,接受矿池下发的难度来计算。参考文件 standaloneminer.cpp。
https://github.com/str4d/zcash/blob/standalone-miner/src/standaloneminer.cpp

参数文件
       Zcash 有 2 个参数文件,包含了证明、验证 key,分别是:z9-proving.key、z9-verifying.key, ~/.zcash-params 目录下。 z9-proving.key 大概 900M z9-verifying.key 大约 14K 。使用./zcutil/fetch-params.sh 可以下载这 2 个文件。
程序启动初始化时(AppInit2),读取这 2 个文件中的证明、验证 key,生成证明时需要证明 key,验证证明时需要验证 key。

API RPC
Zcash 保留了 bitcoin 的 API、RPC,涉及到透明资金、地址的可以使用 bitcoin 的接口,涉及到私有资金、地址的只能用 zcash 新增的接口。Zcash 新增的接口包括查询余额、生成地址、发送交易等,如下:
· Accounting: z_getbalance, z_gettotalbalance
· Addresses : z_getnewaddress, z_listaddresses
· Keys : z_exportkey, z_importkey, z_exportwallet, z_importwallet
· Operation: z_getoperationresult, z_getoperationstatus, z_listoperationids
· Payment : z_listreceivedbyaddress, z_sendmany

挖矿硬件
EquiHash 白皮书讲了 2 点:1、 GPU 比 CPU 快 4 倍,2、 ASIC 是否可能实现详细信息参考白皮书第 10 页。
https://www.internetsociety.org/sites/default/files/blogs-media/equihash-asymmetric-proof-of-work-based-generalized-birthday-problem.pdf

加密库
Zcash 使用了开源加密库 libsodium(https://github.com/jedisct1/libsodium),zcash 使用了其中的 chacha20-poly1305、blake2b、ed25519 算法。
blake2b 算法:
https://github.com/jedisct1/libsodium/blob/master/src/libsodium/include/sodium/crypto_gener ichash_blake2b.h
ed25519 算法:
https://github.com/jedisct1/libsodium/blob/master/src/libsodium/include/sodium/crypto_sign.h

发表于 2016-10-17 14:42:04

什么时候众筹,记得通知我们。
支持 反对

发表于 2016-10-17 19:35:58

本帖最后由 资讯播报 于 2016-10-17 19:37 编辑

最新更新状况,以下资料源自官方:


通过零知识证明建立一个开房的金融技术平台,并且让全世界每个人都可以使用它。这个平台的第一个应用叫做“Zcash” ,一种基于隐私区块链的密码学货币。
持续注资
今天,我们很高兴的宣布,我们在过去的夏天进行了新一轮的融资。有17为投资者为 Zcash 电子货币公司注资 200 万美元,购买公司股份。这一轮的投资人包括:Aaron Grieshaber, Branson Bollinger, Maple Ventures (Amir Chetrit and Steven Nerayoff), Brian Cartmell, Vlad Zamfir, Roger Ver, Digital Currency Group, Barry Silbert, Charles Songhurst, 分布式资本 , Shapeshift, Erik Voorhees, David Lee Kuo Chuen, Fred Ehrsam, Sebastian Serrano, 和李笑来。
这么踊跃的投资代表着对于 Zcash 团队抱有信心和 Zcash 项目价值的认可。这些投资同时为 Zcash发芽 项目筹集了足够的资金支持。
我们用筹集来的资金,雇佣了一些杰出的新人 加入我们的团队,出于未来的投资安全保障雇佣了 独立安全审计员,资助了 Zcash开源矿工竞赛, 并且为接下来更多的项目做了准备。
继续阅读本篇博客,获取更多激动人心的项目进展情况!
持续的透明性

Zcash 公司一直在投资人和公司财报方面保持着格外的透明性。
但是,通过本篇博文,我们正在从根本上提升我们的透明性到一个新的高度,这种透明性与硅谷里面的公司更进一步。
我们这样做的目的是让大众对我们的动机有一个清醒的认识,同时我们也为马上要形成的 Zcash 经济模型确立“初始状态”
价格
作为200万美元投资的回报,这一轮的所有投资人拥有公司6.25%的股权。这就是说,随着新投资人的加入,公司的市值上升至3200万美元(虽然当前不确定性还很多)。包括上一轮在内,Zcash公司总共筹集了300万美金,总计出让16.4%公司股权。
由于创始人的奖励是2.1百万枚 Zcash 币 ( 占总共货币发行量2100万枚币的10% ),同时由于创始人奖励会根据参股比例分配给Zcash公司的投资人和合伙人,因此这意味着本轮投资人使用200万美元,够得了131,250枚Zcash币。经过计算,每枚币价值15.24美元。
请注意,投资人不仅能够获得了相应数量的 Zcash 币,同时获得了Zcash电子货币公司永久的分红权益,这一分红权益有其独立的价值。所以,不能简单的说,投资人以15.24美元的价格购买了Zcash币。反而,他们的投资可能单纯的出于获得公司股权的目的。从我的个人经验和与他们的沟通中,他们的态度各不相同,其中大部分对于获得Zcash币的兴趣高于公司股权,但也有相当可观的小部分比例看法相反。
投资人将会从第一年的挖矿收益中获得创始人奖励。其余的创始人将会挖矿开始后的第一个思念中获得奖励。(这并不会改变创始人和矿工所分奖励的比例。在第一个4年中,每个块创始人分的2.5个币,矿工分得10个币。这仅仅意为着,投资人将在第一年比创始人获得更多的奖励。可以参见 投资,激励和管理 来了解为何创始人奖励被安排在前四年。)

ZCASH 的分发机制
90%的Zcash货币将被矿工挖出,奖励他们维护一个适用于全球所有人的包含隐私交易的区块链。

我希望每个人都可以成为Zcash的矿工!这是你能够为这个开源的网络和新经济体做的最简单的事。同时(如果你幸运的话),你可以得到矿工奖励。你可以今天就开始(在测试网络上),找到 Zcash 挖矿向导.

创始人奖励的分发机制
10%的 Zcash 货币被分配“创始人奖励”中。

一个有趣的事实是,在分发图中没有任何一大块饼图。我将创始人奖励分配的很广泛,目的在于将有很多早期持有者手中持有筹码,而不是大量的筹码掌握在少数人手中。包括我在内,我在创始人奖励中的份额并不比某些创始人更高。
对于投资人而言(包括两轮所有投资人),他们将会得到Zcash最终筹码总量的1.65%。
在投资人中,Zcash 货币是平均分配的。即便是最大股权的投资人,也仅能得到0.2%的Zcash货币(从第一年的挖矿收益中)。
创始人,雇员和顾问(包括我在内),将从创始人奖励中得到5.72%的Zcash货币。
在这群人中,相比于其他创业公司,权益被分配的更加平均。即便最大的创始人,也仅能从中获得0.5%的Zcash货币(在挖矿开始后的四年中)。
创始人将李忠两个最大的受益人是 Zcash公司战略储备基金和非盈利Zcash基金会。
Zcash公司战略储备基金将获得总货币量的1.19%(4年内),它将用于资助Zcash 公司的新项目。
非盈利Zcash基金会将获得总货币量的1.44%(挖矿开始后的四年)。基金会将维护并提升Zcash公司对于用户的的服务。
Zcash基金会的股权使由我和一些创始人和投资者的捐赠而来,我很感谢他们对于建立一个公开的、安全的金融网络的支持。


扼要重述
我们收到了200万美元的投资,用于项目下阶段的开发。本轮投资人通过创始人奖励获得了大约单价为15美元的Zcash货币(并同时获得Zcash股权)。
我们将彻底透明化,因为这个项目的成功需要以对大众的善意为基础,大众有知晓整个系统财务架构的权利。
矿工将收获90%的Zcash货币,我鼓励每个人都成为矿工,因为如果够幸运的话,大家都将获得矿工奖励。
Zcash公司的创始人、员工和顾问将在四年间获得5.7%的Zcash货币。投资人将获得1.6%,并仅在第一年获得。Zcash公司将获得1.2%的Zcash货币(在四年间),用来资助更多的商业项目。Zcash基金会将获得1.4%的货币(在四年间),用来从用户的角度出发,支持这项技术。


支持 反对

发表于 2016-10-20 11:10:42

依据最新消息,zcash的gpu miner tool正在开发中,据悉 AMD 290 显卡 高达 40sol/S ,而 I7 每线程也高达 0.58sol/S ,相比现在的高出10倍
支持 反对

发表于 2016-11-2 14:18:51

zcash经历了如此惊人的过山车,后期还是有机会。
支持 反对

快速注册比特说
开始你的区块链之旅吧