F2c1cdbcafb30373e90687e7f9d50657?s=156&d=retro陈子军Jun

  • 用户自
  • 最后活跃
  • 发布 2 个帖子
  • 5 个回复

最近状况

发布帖子 Decred 技术概要白皮书

作者 Christina Jepson

翻译 胡震

摘要
分布式、代币激励的时间戳系统账本比如比特币如今已经成为了现代金融的支柱,我们实现了一个混合工作量证明(PoW)和股权证明(PoS)要素的区块链平台力图博采众长。该区块链系统对于共识网络以及额外的椭圆曲线签名套件做了较小的改动,细化和改进了现有的脚本语言,并在多个领域增加可扩展性,以支持对于协议的未来修改还有分布式股权池。

关键词 混合 PoW/PoS——PoA
Zero 公司,芝加哥,伊利诺斯州通信:cjepson@decred.org

目录
简介 4
1.混合 PoW/PoS 设计 4
2.去中心化股权池 6
3.小的设计元素 6
3.1椭圆曲线签名算法 6
3.2哈希函数 7
3.3脚本扩展 7
3.4签名脚本隔离和防伪 8
3.5交易扩展 8
3.6其他改进 8
参考文献: 9
附录 A:Schnorr 多重签名 11

简介
中本聪[1]在开创性的比特币论文中首次将分布式时间戳协议应用于去中心化金融网络,后续从业余爱好者和专业人士那里该领域已经取得了爆发式的研究进展,各方的相互竞争促进了对现有协议的扩展、调整、改进和细化。引人注目的新的想法实现包括 Ethereum[2](其扩展了脚本)、CryptoNotes[3](其改进了隐私)和侧链[4](其研究了与比特币代币的 1:1 双向钉住)。这些协议都实现了最初在比特币白皮书里描述的工作量证明(PoW)。
对于比特币协议的一个常见的扩展是修改其共识机制,使用部分或者完全的股权证明(PoS)或者使用一个股权(代币),而不是算力来参与时间戳的处理。第一个基于比特币协议的股权证明区块链在 2012 年由 King 和 Nadal[5]实现,包含了 PoW 和 PoS,随着时间的推移该区块链会逐渐投向完整的 PoS。对于纯 PoS 共识系统的批评是很多的[6] [7],最强烈的反对来自于那些使用纯 PoW 区块链的人士。对于分布式时间戳系统,最常见的反对 PoS 的观点是“不承担任何风险”或“不花钱的模拟”,其描述了系统的不稳定性来源于股权持有者能够毫不费力地生成相应的时间戳历史。
尽管有争议,但很明显,那些叠加在 PoW 时间戳系统之上的 PoS 的系统很显然也可以独立地实现共识。Bentov 和同事[8]在他们的论文中探讨了活动证明
(PoA),这似乎是对于 PoW 协议的一个可行性扩展并且可能会启用一些新的有趣属性。类似的称为 MC2 的设计于 2013 年[9]早些时候由 Mackenzie 提出。本文我们阐述了类似的我们称之为“Decred”的共识系统的搭建和实现。

1.混合 PoW/PoS 设计
与前述[8]的中本聪机制的主要差别是一个新的彩票系统,在可以选择和消费彩票之前必须购买彩票并等待到期的时期。根据区块头部中包含的伪随机数, 从到期的票池中按字典序为区块进行彩票的选择。因为在 PoW 系统中操纵这种伪随机数是很困难的,所以选票操作会与 PoW 矿工的基本成本相关联。可以通

过概率密度函数来描述一段时间之内的票据选择问题,其类似于在恒定的难度[1]
下以恒定的哈希速率获得 PoW 区块的概率,已近似于一半票池大小的模式产生一个概率分布。购票价格是由一个新的股权难度控制的,而股权难度由购票的指数权重平均值以及先前区块中的到期票数目来决定。
以下步骤解释了 PoW 区块的确认:
i.区块是由 PoW 矿工挖矿产生的,矿工选择交易并放入区块里。股权系统相关的交易被插入到 UTXO 集合中。
ii.POS 矿工通过从他们的选票生成一个投票交易在区块上进行投票。投票能够在前一个区块之上构建一个区块,并且不管前一个常规交易树(包含基于货币和非股权相关的交易)是否有效,都会选择一个。
iii.另外一个 PoW 矿工开始构建一个区块并插入 PoS 矿工的投票。已投选票的大多数都会被包含在后续的区块中,并被网络所接受。在这个新区块的投票交易中,PoW 矿工检查一个标志来确定 PoS 矿工是否指示了区块的常规交易树是有效的。这些投票标志会被记账,如果前一个区块的常规交易树是有效的,那么会在区块中基于大多数选票设置一个比特位标志来指明。
iv.会发现一个满足网络难度的随机数,并且该区块被插入到区块链中。如果前一个区块的常规交易树被确认了,就将这些交易插入到 UTXO 集合中,并返回到第 i 步。

为了防止对于票数的操纵,如果矿工没有将所有的投票交易纳入区块中,那么会对当前的区块采用线性的补贴处罚。对以前那些交易树进行失效动作的“软” 处罚有助于防止丢弃工作,这对于确保系统安全是必要的,并且假设下一个区块将由一个无私的保留前面区块补贴的矿工获得,以便获得支持。即使不是这样的情况,具有高哈希率的恶意采矿者仍然至少需要(数量为多数/2)+ 1 个选票赞成他们之前区块的交易树,以便产生一个区块,使得他们可以从前面的区块获得任何补贴。
比特位标识会被显式地添加到区块头部和投票中以便矿工可以轻松地进行硬分叉或者软分叉。

2.去中心化股权池
早先的 PoS 设计产生的一个问题就是如何在 PoS 挖矿时执行类似于 PoW 矿池的池化。这对 PoW 矿池是有利的,因为 Pos 矿池除了简单地运行一个节点, 不需要专门的硬件,而且与 PoW 挖矿不同的是,随着利润下降,挖矿资金成本增加的中心化推进方案也不太可能。Decred 通过允许为同一张选票的购买交易拥有多个输入并为每一个输入按比例提供 UTXO 补贴金额,同时也为这些按比例的奖励提供一个新的输出公钥或者脚本,从而解决了这个问题。这些补贴给予那些以不太可靠的方式生成选票的矿工,并且在提交到网络之前使用 Round
Robin 轮询方式进行签名。重要的是,控制选票产生的本身就是另外一个公钥或者脚本,该脚本不能操纵给予接受者的补贴。通过使用选票中的允许多个签名者的脚本可以以分布式的方式来产生选票。

3.小的设计元素
3.1椭圆曲线签名算法
尽管 secp256k1 被广泛认为是椭圆曲线参数的一个安全选项,一些起源于曲线的问题依然存在。例如,Koblitz 曲线(y2 + xy = x3 + ax2 +b 和 a = a2, b = b2;a =
1 或者 2,b != 0)的选择通常通过枚举 Galois 字段 GF(2m)的二进制扩展,其中 m 是在范围{0,上限值}并且 x,y∈GF(2m) [10]。对于 128 位的加密,m ≥ 257,通常是此范围内的最小素数促进快速计算。在此情况下,对于 m 的显而易见的选择是 277,a = 0,尽管曲线参数[11]的保管者知道存在这个合适的 m 值并且事实上它就是计算最高效的解决方案,但是从三个可能的选项(m = 277, a = 0; m = 283, a = 0; m = 283, a = 1)中我们选中了 m=283 和 a=0。对于所有其他 Koblitz 曲线规范,选择最显而易见的 m 值。虽然这是有疑问的,但是对于 Galois 字段还

没有已知的攻击会使用一个稍大的 m 值。人们也提出[12]了其它一些对于
secp256k1 使用参数的异议。
另一个非常受欢迎的采用 128 位加密的数字签名算法(DSA)是 Ed25519[13],它在曲线上使用双向合理的等效于 Curve25519 的 EdDSA 签名算法,在如今被广泛应用。与 secp256k1 的 ECDSA 不同,Ed25519 使用更简单的 Schnorr 签名, 在随机预言机模型[附录 A]中被证明是安全的。
Schnorr 签名也被用于比特币[14],然而 Decred 使用一个新的操作码——OP_
CHECKSIGALT 来验证一个无限数量的新的签名机制, 而不是使用实现了
secp256k1 曲线参数的 Schnorr 签名专属的操作码。在目前的实现中,secp256k1
Schnorr 签名和 Ed25519 签名均可用于作为 secp256k1 ECDSA 签名的增补。将来,在软分叉中添加新的签名方案是非常简单的,例如量子安全的。拥有这两个
Schnorr 套件也允许生成一个占用与正常签名[15]空间相同的简单组签名,这两者目前都已经实现了。在将来,使用无代理的加密共享的门限签名还将使得(t,n) 门限签名占据相同的空间量[16]。

3.2哈希函数
用于比特币的 SHA256 由于其 Merkle Damgard 数据结构从而具有很多技术缺陷。这些漏洞导致了 SHA3 有机会竞争基于不同的基础数据结构的新哈希函数。Decred 选择了 BLAKE256 作为其哈希函数的最终赢家[17] [18]。该哈希函数基于 HAIFA 数据结构,其结合了 Bernstein 的 ChaCha 流式密码变体。哈希函数在 x86-64 微架构上有着显著的高性能,与 SHA256[19]相比,短消息的速度更快, 尽管被认为在 14 轮时具有更高的加密保证金。

3.3脚本扩展
除了之前提到的 OP_CHECKSIGALT 和 OP_CHECKSIGALTVERIFY 之外,
我们也对比特币脚本做了其它的修改。在输出脚本添加了一个版本字节,以便启

用简单的软分叉到一个新的脚本语言,正如先前 Wuille[20]建议的。所有数学和
逻辑相关的操作码已被重新启用,现在在 int32 寄存器上运行。各种字节字符串操作操作码也已实现,并重新启用。剩下的未使用的比特币操作码也已被重新用于未来的软分叉,此外,也修复了[21] [22]一些比特币脚本语言长期存在的 bug。

3.4签名脚本隔离和防伪
为了防止交易可塑性以及产生的交易具有相同的输入引用和输出,但是交易
ID 却不同,已经从交易哈希的计算中移除了输入脚本。尽管这部分已经在
CryptoNote 币和侧链中实现了[3] [23], 这个修改的起源还是有争议的。现在有提议将比特币的软分叉称为“隔离见证”[20]。如在元素侧链实现中,对见证人的 承诺数据包含在区块[23]的 merkle 树中。另外,比特币的软分叉[20]提出的防伪证明是由矿工设定的,并且也致力于作为 merkle 树中数据的一部分。

3.5交易扩展
添加了交易到期这个属性,如果区块已经达到一定的高度,那么允许从内存池中删除交易。以前从内存删除交易的唯一方法是双花。

3.6其他改进
在比特币中,补贴以区块高度[24]呈指数衰减。然而,Decred 的算法虽然也非常简单,但随着时间的推移也更好地篡改了这种衰减, 以免产生与
CryptoNote[2]类似的补贴急剧下降导致的市场震荡。像 PeerCoin[5]一样,PoW 难度是根据先前区块时间的指数加权平均值计算的。然而,这个计算也被插入到了类比特币的数字货币的难度窗口期中。通过确保在区块时间中的每个差异被纳入到难度计算中,比特币中的“timewarp”bug 得到了纠正[25]。
还应该指出,许多众所周知的挖矿攻击,比如 selfish mining[26]和 stubborn

mining[27],在一个高效的去中心化股权挖矿以及没有 PoW-PoS 矿工合作的系统
中将不再有效。这是因为没有 PoS 矿工的协助,它是不可能对区块产生加密扩展的。针对前述的以及对我们系统的新设想的特定的挖矿攻击的保护弹性将是未来研究的一个富有成果的领域。

参考文献:
[1]Nakamoto N. 2008. Bitcoin: A Peer-to-Peer Electronic Cash System. Self- published. https://decred.org/research/nakamoto2008.pdf
[2]Buterin V. 2014. A Next-Generation Smart Contract and Decentralized Application Platform. Self-published. https://decred.org/research/buterin2014.pdf
[3]von Saberhagen N. 2013. CryptoNote v 2.0. Selfpublished. https://decred.org/research/saberhagen2013.pdf
[4]Back A., Corallo M., Dashjr L., Friedenbach M.,Maxwell G., Miller A., Poelstra A., Timon A., Wuille P. 2014. Enabling Bitcoin Innovations with Pegged Sidechains.
BlockStream. https://decred.org/research/back2014.pdf

[5]King S. and Nadal S. 2012. PPCoin: Peer-to-Peer Crypto-Currency with Proof-of-
Stake. Self-published. https://decred.org/research/king2012.pdf

[6]Bentov I., Gabizon A., Mizrahi A. 2015. Cryptocurrencies without Proof of Work. arXiv Cryptography and Security. https://decred.org/research/bentov2015.pdf
[7]Poelstra A. 2015. On Stake and Consensus. Selfpublished. https://decred.org/research/poelstra2015.pdf
[8]Bentov I., Lee C., Mizrahi A., Rosenfeld M. 2014. Proof-of-Activity: Extending Bitcoin’s Proof of Work via Proof of Stake. Proceedings of the ACM SIGMETRICS
2014 Workshop on Economics of Networked Systems, NetEcon. https://decred.org/research/bentov2014.pdf
[9]Mackenzie A. 2013. MEMCOIN2: A Hybrid Proof-of-Work, Proof-of-Stake

Crypto-currency. Self-published. https://decred.org/research/mackenzie2013.pdf

[10]Pornin T. 2013. StackExchange Cryptography: Should we trust the NIST- recommended ECC parameters? https://decred.org/research/pornin2013.pdf
[11]Solinas J. 2000. Efficient Arithmetic on Koblitz Curves. Designs, Codes and Cryptography. 19(2):195-249. https://decred.org/research/solinas2000.pdf
[12]Bernstein D. and Lange T. 2014. SafeCurves: choosing safe curves for elliptic- curve cryptography. http://safecurves.cr.yp.to
[13]Bernstein D., Duif N., Lange T., Schwabe P., Yang B. 2012. High-speed high- security signatures. Journal of Cryptographic Engineering. 2:77-89.

[14]Osuntokun O. 2015. OP SCHNORRCHECKSIG: Exploring Schnorr Signatures as an Alternative to ECDSA for Bitcoin. Self-published.

[15]Petersen T. 1992. Distributed Provers and Verifiable Secret Sharing Based on the Discrete Logarithm Problem. Aarhus University Ph.D. Thesis. 55-57.

[16]Stinson D. and Strobl R. 2001. Provably Secure Distributed Schnorr Signatures and a (t,n) Threshold Scheme for Implicit Certificates. Certicom Corporation.
[17]Aumasson J., Henzen L., Meier W., Phan R. 2010. SHA-3 Proposal BLAKE.
Self-published. https://decred.org/research/aumasson2010.pdf

[18]Aumasson J., Henzen L., Meier W., Phan R. 2014. The Hash Function BLAKE. Springer-Verlag Berlin Heidelberg.
[19]Bernstein D. and Lange T. eBACS: ECRYPT Benchmarking of Cryptographic Systems. http://bench.cr.yp.to
[20]Wuille P. 2015. Segregated Witness for Bitcoin. Scaling Bitcoin Hong Kong. https://prezi.com/lyghixkrguao/segregated-witness-anddeploying-it-for-bitcoin/
[21]Todd P. The difficulty of writing consensus critical code: the SIGHASH SINGLE

bug. Bitcoin-development mailing list. https://decred.org/research/todd2014.pdf

[22]Franco P. Understanding Bitoin, 6.3: Multisignature (M-of-N) Transactions. John Wiley Sons Inc. p. 84.
[23]Maxwell G. 2015. Bringing New Elements to Bitcoin with Sidechains. SF Bitcoin Devs Meetup. https://decred.org/research/maxwell2015.pdf
[24]ByteCoin. 2010. Need OP BLOCKNUMBER to allow “time” limited transactions. https://decred.org/research/bytecoin2010.pdf
[25]ArtForz. 2011. Re: Possible way to make a very profitable 50 plus ish attack for pools? Bitcointalk Bitcoin Forums. https://decred.org/research/artforz2011.pdf
[26]Eyal I. 2015. The Miner‘s Dilemma. In IEEE Symposium on Security and Privacy, 2015. https://decred.org/research/eyal2015.pdf
[27]Nayak K., Kumar S., Miller A., Shi E. 2015. Stubborn Mining: Generalizing Selfish Mining and Combining withan Eclipse Attack. Cryptology 2015/796.

[28]Wuille P. 2015. Tree Signatures: Multisig on steroids using tree signatures. https://decred.org/research/wuille2015.pdf

附录 A:Schnorr 多重签名
Schnorr 签名是为比特币提出的,它们也被广泛用于其他加密货币,如 Nxt 和 CryptoNote 币。在最简单的情况下,Schnorr 签名 ECDSA 密码系统可以描述如下:
●y = xG,其中 y 是曲线上的公钥点,x 是私有标量,G 是曲线生成器。
●r = kG,其中 r 是从随机标量 k 和曲线生成器乘积产生的一个点。
●h = H(M||r),其中 H 是一个加密的哈希函数,M 是消息(通常是一个 32 字节的哈希),r 是前述的编码点,||表示连接。
●s = k – hx,其中 s 是从 k – hx 表示的标量。

●签名是(r,s),验证也很简单 H(M||r) = hQ + sG。
在上文中,大写字母(例如,kG)的乘法是通过标量的乘法运算,因此总是体现为曲线上的点。添加这些点体现为另一点。它们之间的标量的加法和乘法与使用任何整数的常规乘法相同。重要的是要注意,将一个点乘以一个标量被认为是一个不可逆的步骤,因为从新点的标量的计算会被默认为离散对数问题。
从上面可以看出,r 是曲线上的一个点,而 s 是一个标量。考虑由 x_sum = x1 + … + xn 表示的签名者组,其中随机数 k_sum = k_1 + … + k_n。私有标量的公钥为:y = x_sumG。这些和的签名(来自所有组参与者)将是:rl = k_sumGsl
= k_sum – hx_sum。为了产生这个签名,所有参与者都必须事先共享他们的私钥和随机数。我们想明确地避免这种情况,所以我们让每个参与者创建一个部分签名。 r_n = k_1G + … + k_nG = rl(参与者可以自由单独发布的公共随机点之和)s_n = k_n – hx_n。将其代入签名的通用公式并使用点或标量加法:r = r_n = rl(与上述的相同)s = s_1 + … + s_n = sl(简单标量加法,必须是(k_1 – hx_1)+ … +(k_n – hx_n)= s_1 + … + s_n = sl。执行一个(m,n)签名是不重要的。已经有人提出了对于这些情况,使用包含 m 个参与者的所有可能的公钥总和的 merkle 树,生成长度为 log(n)的签名[28]。

发布帖子 decred简要介绍

Decred is an open and progressive cryptocurrency with a system of community-based governance integrated into its blockchain.
decred是一个开放性和渐进性的数字货币,她拥有一个系统:社区治理集成到其区块链上。
The fusion of technology, community, and governance the Decred way means development is self-funding and remains sustainable.
技术、社区、管理decred的方式 这3个要素的融合意味着发展是靠自筹资金支持的,发展是可持续的。
1.技术:
Hybridized proof-of-work proof-of-stake consensus system to strike a balance between miners and voters and create a more robust notion of consensus
系统采用工作证明和权益证明混合是为了在矿工和选民之间寻求平衡,创造一个更加强大的共识
Blake-256 hashing algorithm – not vulnerable to many of the numerous security issues facing Merkle-Damgård construction-based hashing algorithms such as SHA-256
blake-256散列算法–不同于有着许许多多的安全问题的梅克尔- Damg散列算法,如SHA-256

secp256k1 signature scheme for ease of integration into existing software or Ed25519/secp256k1-Schnorr to take advantage of Schnorr signatures and their features
secp256k1签名方案便于集成到现有的软件或Ed25519 / secp256k1 ,能够利用Schnorr签名及其特征for l
Written entirely in Go using a modular, well-documented, and tested codebase for long-term maintainability
完全的使用GO语言(使用一个模块,方便记录,和长期的可维护性测试的代码)编写

发展计划
Multi-stakeholder development ecosystem that welcomes and empowers participants who want to build new and improve on existing features
多元化得的生态系统,欢迎并赋予参与者想要在现有功能基础上做创新改进的权利
Open and self-funded development via a block subsidy to ensure long-term development sustainability as project and network usage scale upward – Decred improves with use
开放、自我资助的发展是通过一个区块的补贴,确保长期的可持续发展项目和网络使用规模上–decred改善与使用
Any party can submit feature proposals and developers are paid for work to fulfill requirements – in full view of the community in a system designed to fight against ingroup-outgroup dynamics
任何一方可提交功能建议,开发者去满足这些要求并得到报酬。旨在对抗圈内类群的动力学
Main contributors are the developers responsible for btcsuite (est. early 2013 – present) – a suite of Bitcoin packages and tools, including btcd, a full node, mining capable, Bitcoin implementation
主要开发者都是原btc的核心开发者(EST。2013年初–现在)–一核心包括比特币软件包和工具,包括btcd,挖掘能力,全节点,比特币的实现

治理
Layered form of transparent meritocratic governance that extends beyond proof-of-work and proof-of-stake mechanisms to bring forward and represent insider and outsider voices in the community
分层形成透明的精英治理,超出工作和股权机制,提出和反映社区的内部和外部的声音

Bottom-up decision-making through the Decred Assembly – an evolving and inclusive list of community members who make non-financial contributions to the project through their work and effort
自下而上的决策通过decred装配–进化和列出社区成员 通过他们的工作和努力 对项目的非财务贡献
Project bound by the Decred Constitution on the core principles of finite issuance, privacy, security, fungibility, inclusivity, and progressive development of the technology that keeps these principles together
项目受decred宪法的核心原则有限发行,隐私,安全,可替代性,包容性,和在一起,让这些原则的技术进步

In an effort to create balance in the network distribution of Decred, a cryptocurrency airdrop was created for anyone who wants to participate in the development of the project.
为了在网络中分布的decred创造平衡,cryptocurrency空投是谁想要参与项目的发展创造了。