ethers.js库旨在为以太坊区块链及其生态系统提供一个小而完整的 JavaScript API 库 它最初是与 ethers.io 一起使用,现在已经扩展为更通用的库。
要解释「零知识证明」,我们需要先解释「证明」,然后解释什么是「知识」,最后再解释什么是「零知识」。
最近又重新看了看ZCash的白皮书。话说,看ZCash的白皮书需要一点耐心,144页的白皮书形式化太多,通篇就只有一张图(地址和Key生成关系图)。本文画图总结了Sprout和Sapling的交易Transaction的数据结构。
我认为区块链很难称为一个“技术”。它更像是一个领域,包罗万象。或者形而上地说,区块链更像一个有机体,融合了各种不同的理论技术。
零知识证明是构建信任的重要技术,也是区块链这个有机体中不可缺少的一环。
为什么合约里尽量避免使用 tx.origin
早上很多朋友@我,安比实验室发表了一篇文章zkSNARK的“输入假名”的攻击。迅速看了看,很赞。这个攻击原理其实比较简单,但是,不深入理解zkSNARK以及使用场景的朋友确实很难发现和理解。本文讲讲我对这个攻击的分析和理解。
大量零知识证明项目由于错误地使用了某个 zkSNARKs 合约库,引入「输入假名 (Input Aliasing) 」漏洞,可导致伪造证明、双花、重放等攻击行为发生,且攻击成本极低。众多以太坊社区开源项目受影响,其中包括三大最常用的 zkSNARKs 零知开发库 snarkjs、ethsnarks、ZoKrates,以及近期大热的三个混币(匿名转账)应用 hopper、Heiswap、Miximus。这是一场由 Solidity 语言之父 Chris 两年前随手贴的一段代码而引发的血案。
PoW(工作量证明)是区块链系统中广泛使用的协议,用于解决双花难题。但是,如果攻击者拥有超过全网哈希算力的一半,那么该攻击者就可以发起双花攻击或51%攻击。如果哈希算力足够强大,那么发起攻击的成本会低的惊人,这将会对众多PoW区块链造成巨大威胁。
我们提出了一种技术方案,将矿工的挖矿历史权重信息与总计算难度相结合,以达到缓解51%攻击的问题。分析表明,使用这种新技术,将会使传统攻击的成本增加两个数量级。
Zcash的发展大体经过了OverWinter(过冬) -> Sprout(发芽) -> Sapling(树苗)这几个阶段,随着业务和功能的逐渐丰富,密钥系统也越来越复杂,刚开始接触时感觉一头雾水,但是静下心来仔细分析,就能逐渐领略其中的魅力。
区块链钱包作为数字货币世界的入口,它糟糕的体验把大部分人挡在门外,说的就是你:助记词备份(或私钥备份)。 现在一个激动人心的签名方案让体验提升一大步,也是博客的主角:门限签名技术(Threshold signatures: 也可翻译为阈值签名)及ZenGo钱包。
ZenGo钱包不需要备份助记词,交易也不需要输入密码,一切只需要FaceID/TouchID。
智能合约的地址什么时候有效? 在构造函数中可以使用this吗?
2018年 Jacob Eberhardt和Stefan Tai两位德国柏林工业大学博士生,提出了链下计算/链上验证的处理框架,并提供了在以太坊上的整个框架的工具链。链下计算/链上验证的思想很早就有,但是能提供比较完善的工具链的实属难得。目前ZoKrates使用zk-SNARK算法实现零知识证明。
什么是 Parathreads
由于以太坊又慢又贵的POW共识(尽管如此,以太坊依旧是最受欢迎的DApp平台),催生了各种以太坊侧链的方案用来减少以太主网的拥塞,前面我们介绍了Loom SDK, 这篇博客介绍下POA Network以及xDai。 如果大家想稳定的数字货币做一些智能合约应用,在Libra还没有上线之前,也许你可以尝试一下xDai。
Raft算法解决的核心问题是在分布式环境下如何保持集群状态的一致性,简而言之就是一组服务,给定一组操作,最后得到一致的结果。
Raft
CentOS 上一键安装比特币节点
在「详解TLS/SSL运行机制」这篇文章中,在TLS握手的第三步中,用到了数字证书中的公钥,通过这篇文章,我们一起来看一下为什么会出现数字证书,以及它解决了什么问题。
TLS
零知识证明 - Coda SNARK挑战(Stage2)
TLS传输层安全性协议(Transport Layer Security)及其前身SSL安全套接层(Secure Sockets Layer)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障,TLS/SSL协议位于网络OSI七层模型的会话层,用来加密通信。
SSL
TLS/SSL
这篇文章解释利用ZKP(零知识证明)与区块链来实现去中介的交易协议的原理,讲讲我们是怎么把这个理论变成实用的代码的,这是一篇概述,希望了解更多的朋友请关注后续。
12 篇文章,-40 学分