1. 比特币
    1. 默克尔树
    2. 比特币的区块结构
    3. 布隆过滤器
    4. SPV 节点
    5. 拜占庭将军问题
  2. fuzz learning

比特币

默克尔树

默克尔树(Merkle Tree) | Go 技术论坛

可以快速比较大量数据,查找一个数据存在

比特币的区块结构

structure-and-interpretation-of-blockchain/6_2.md at master · Ice-Storm/structure-and-interpretation-of-blockchain

基于 UTXO 每个交易都由挖矿开始经过每一个交易到一个地址

布隆过滤器

可以在不暴露自己身份的情况下,获得自己账户相关的交易信息

智能合约是锁定/解锁脚本的一种么?它也存放在区块里面么?

SPV 节点

用于核实其他地方的计算结果(因为个人终端可能没有这么多算力)

核心节点为什么也需要钱包?

可以控制比特币的汇率么()

其实我是好奇为什么交易所容易被盗…(因为交易所钱很多么…)

笑死(感觉好像是因为目标比较大?)

拜占庭将军问题

这个问题是由 Leslie Lamport、Robert Shostak 和 Marshall Pease 在1982年提出的。简单来说,拜占庭将军问题是这样一个场景:几位将军和他们的军队围攻一座城市,他们需要通过传递信息来达成一个共同的进攻或撤退的决策。然而,其中一些将军可能会变节,传递错误信息,导致军队行动不一致,进而失败。

在区块链中,拜占庭将军问题形象地描述了节点间可能存在的信任问题。区块链是一个去中心化网络,其中的节点可能彼此不信任,还可能有节点故意传播错误信息或进行恶意行为。为了在这样的环境下达成一致性,即使在一部分节点可能是恶意的情况下,区块链设计了一系列的共识机制。

最著名的解决拜占庭将军问题的共识算法之一是拜占庭容错(Byzantine Fault Tolerance,BFT)算法。BFT算法确保了在一定数量的恶意节点存在的情况下,系统仍然能够达成一致并继续运行。区块链中的许多共识算法,如Practical Byzantine Fault Tolerance (PBFT)、Raft等,都是为了解决这个问题或类似问题。

fuzz learning

antonio-morales/Fuzzing101: An step by step fuzzing tutorial. A GitHub Security Lab initiative

一个面向实践的 fuzz 学习路线,相比之下, the fuzzing book 的学习更偏向理论(而且我目前还没有看明白它的学习方向是什么…)