最近又重新看了看ZCash的白皮书。话说,看ZCash的白皮书需要一点耐心,144页的白皮书形式化太多,通篇就只有一张图(地址和Key生成关系图)。本文画图总结了Sprout和Sapling的交易Transaction的数据结构。
我认为区块链很难称为一个“技术”。它更像是一个领域,包罗万象。或者形而上地说,区块链更像一个有机体,融合了各种不同的理论技术。
零知识证明是构建信任的重要技术,也是区块链这个有机体中不可缺少的一环。
大量零知识证明项目由于错误地使用了某个 zkSNARKs 合约库,引入「输入假名 (Input Aliasing) 」漏洞,可导致伪造证明、双花、重放等攻击行为发生,且攻击成本极低。众多以太坊社区开源项目受影响,其中包括三大最常用的 zkSNARKs 零知开发库 snarkjs、ethsnarks、ZoKrates,以及近期大热的三个混币(匿名转账)应用 hopper、Heiswap、Miximus。这是一场由 Solidity 语言之父 Chris 两年前随手贴的一段代码而引发的血案。
区块链钱包作为数字货币世界的入口,它糟糕的体验把大部分人挡在门外,说的就是你:助记词备份(或私钥备份)。 现在一个激动人心的签名方案让体验提升一大步,也是博客的主角:门限签名技术(Threshold signatures: 也可翻译为阈值签名)及ZenGo钱包。
ZenGo钱包不需要备份助记词,交易也不需要输入密码,一切只需要FaceID/TouchID。
智能合约的地址什么时候有效? 在构造函数中可以使用this吗?
2018年 Jacob Eberhardt和Stefan Tai两位德国柏林工业大学博士生,提出了链下计算/链上验证的处理框架,并提供了在以太坊上的整个框架的工具链。链下计算/链上验证的思想很早就有,但是能提供比较完善的工具链的实属难得。目前ZoKrates使用zk-SNARK算法实现零知识证明。
由于以太坊又慢又贵的POW共识(尽管如此,以太坊依旧是最受欢迎的DApp平台),催生了各种以太坊侧链的方案用来减少以太主网的拥塞,前面我们介绍了Loom SDK, 这篇博客介绍下POA Network以及xDai。 如果大家想稳定的数字货币做一些智能合约应用,在Libra还没有上线之前,也许你可以尝试一下xDai。
这篇文章解释利用ZKP(零知识证明)与区块链来实现去中介的交易协议的原理,讲讲我们是怎么把这个理论变成实用的代码的,这是一篇概述,希望了解更多的朋友请关注后续。
bellman是Zcash团队用Rust语言开发的一个zk-SNARK软件库,实现了Groth16算法。
Libra中采用的椭圆曲线是ED25519,而不是像以太坊比特币使用的是secp256k1. 虽然有不同,但是从本质上来说他们都是椭圆曲线,基本性质都是完全相同的.因此适用于S256曲线的VRF算法在Libra中也是相通的.
Libra
ED25519
secp256k1
S256
Solidity 中很多Hash函数, 如:keccak256 等需要bytes作为一个参数,这个时候有时需要把uint转化为bytes 。
本文主要是通过对架构设计、承兑型资产铸造、转移和销毁这几个层面进行了详细的理论和实现的分析。
内存池mempool模块解读第三篇,这部分我主要研究mempool中的节点间Tx同步. 关键代码都位于shared_mempool.rs中.
shared_mempool.rs
mempool模块对于Tx的管理核心全部集中在TransactionStore这个结构,他对外对接的是CoreMemPool结构. 从TransactionStore可以清楚看出缓冲池中Tx增删改查的逻辑.
TransactionStore
CoreMemPool
作为缓冲池,我们先大致说一下这几个功能要考虑的问题.
Libra 内存池(Mempool)模块主要用于缓存未打包的合法交易,该模块和比特币,以太坊源码中的TxPool功能等价,只要包含两个功能:
因为Libra使用的是不会分叉的PBFT共识,所以缓冲池的实现以及管理要简单许多.
根据Libra的架构图,准入控制模块(AC:admission control,本文中简称AC模块)是位于验证器(Validator)与普通用户交互的入口。
这篇文章目的是打通Libra CLI 命令行工具与底层数据库模块libradb之间的关系 Libra Cli指的是 Libra上的第一笔交易 中提到的命令行工具。 libradb 指的是storage/libradb模块 。
Libra Cli
libradb
storage/libradb
Libra数据存储使用的RocksDB这个KV数据库.并且Libra存储和以太坊基本上思路是一样的,就是一个MPT树来保存Libra这个超级状态机.
因为RocksDB中除了KV以外,还存在着ColumnFamilyName这一项,这个用起来有点像Bucket.
Protobuf是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储,本文看看它如果应用在 Libra 中。
Libra 是Facebook 牵头发布的基于稳定币的区块链项目,大家可以通过社区翻译的[Libra 中文文档](https://learnblockchain.cn/docs/libra/docs/welcome-to-l
Tendermint Core 是一个区块链应用平台; 相当于提供了区块链应用程序的 Web 服务器、数据库以及用来开发区块链应用的所需的库。
就像为 Web 服务器 服务 Web 应用程序一样, Tendermint 服务于区块链应用。
Tendermint Core 使用拜占庭容错(BFT)共识算法及基于确定性有限状态机的状态机复制 (SMR)。
扫一扫 - 使用登链小程序
75 篇文章,798 学分
51 篇文章,340 学分
14 篇文章,209 学分
143 篇文章,175 学分
18 篇文章,157 学分