Raftale Blog

「离开世界之前 一切都是过程」

区块链技术与应用 - P06 - 比特币网络

The Bitcoin NetWork P2P Overlay Network 比特币工作在应用层,底层的网络是一个P2P网络。 ----------------------------------------- application layer: | BitCoin Block Chain ----------------------------------------- networ...

区块链技术与应用 - P05 - 比特币系统的实现

Transition-based ledger 比特币采用了基于交易的账本(Transition-based ledger)模式,并维护了一个UTXO(Unspent Transation Output) 的数据结构,来防止双花攻击,也就是说,交易中币的来源必须是在UTXO中。 矿工打包交易的动机: block reward: 每隔21万个区块减半,大概4年一次。 trans...

区块链技术与应用 - P04 - BTC共识协议

构建去中心化的货币系统 我们假设央行要发行数字货币,很直观的是参考现金的发行形式,现金的特征是: 防伪标记: 难以伪造,不可篡改 唯一性:无法复制 如果要实现数字货币的防伪标记,那么基于公私钥体系就能很容易的实现,发行100元需要通过央行的私钥进行签名,公钥是公开的,任何人都可以验证它的权威性。公私钥保证了不可篡改,但没有解决货币的唯一性,毕竟代码本身就是文件,是可以无限复...

区块链技术与应用 - P03 - Data Structures

比特币中的数据结构。 区块链 哈希指针:除了指向地址,也保存了结构体的hash值。 Block chain is a linked list using hash pointer. 对每个区块头进行SHA256加密哈希,可生成一个哈希值, 每个区块都可以通过其区块头的「父区块哈希值」字段引用前一区块。 与普通链表的区别是: 普通链表可以随意改变一个节点,但是区块链中改变任何一个区块,...

区块链技术与应用 - P02 - Cryptographic Principles

哈希和签名。 哈希 cryptographic hash function:两个性质 collision resistance: that is, two inputs a and b where a != b, but Hash(a) = Hash(b). pigeonhole principle:输入空间远远大于输出空...

DDIA-chap2-数据模型与查询语言

x关系模型与文档模型 数据被组织成关系(表),其中每个关系是元祖(行)的无序集合。 NoSQL Not only SQL 对象关系不匹配 ORM框架可以减少模型转化层的代码。 JSON有时候更方便,可以直接将其保存到SQL中。 多对一和多对多的关系 存储文本字符串面临着 原始数据被修改导致多个副本都需要被修改的开销和数据不一致的风险,如果用ID连接就没有这一问题。 文档模型...

DDIA-chap1-可靠性、可伸缩性和可维护性

很多应用程序都是数据密集型,而非计算密集型的。 数据密集型应用通常由标准组件构成,标准组件提供了许多通用的功能: 存储数据,即数据库 记住开销昂贵操作的结果,加快读取速度:缓存 允许用户按关键字搜索/过滤数据:搜索引擎 向其他进程发送消息,进行异步处理:流处理 定期处理累积的大批量数据:批处理 目标:可靠、可伸缩、可维护的数据系统 关于数据系统的思考 数据库...

DDIA-chap3-存储与检索

存储与检索 数据库最基础的需求: 写入数据; 查询数据 存储引擎有两大类: 日志结构 log-structured 面向页面 page-oriented: B+树 驱动数据库的数据结构 最简单数据库的写入(set)和查询(get)的实现: set:在文件末尾追加(key, value)对 get:逐行匹配key,返回最后一次匹配成功所对应的value...

文章样板

Quickcheck - A Tutorial on Typeclasses in Coq

Considerring printing different types with this common idiom: 1 2 3 4 5 6 showBool : bool → string showNat : nat → string showList : {A : Type} (A → string) → (list A) → string showPair : {A B : T...