# 区块链简介
# 概念定义
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。其具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。
# 特点
# 去中心化
在一个分布有众多节点的系统中,每个节点都具有高度自治的特征。节点之间彼此可以自由连接,形成新的连接单元。任何一个节点都可能成为暂时的中心,实现点对点的直接连接。
# 不可篡改 / 全程留痕 / 可以追溯
在区块链中,每一个数据块都通过密码学算法计算和记录一段时间系统内全部信息交流的数据,并依据这些数据生成该数据块的指纹用于连接或生成下一个数据块并检验其信息的有效性。
如果修改一个区块的数据,这个区块便不被其他区块承认,而又因为其去中心化的特点,使得大规模修改区块数据十分困难,达到了不可篡改的效果。
区块链上每一个新区块的生成都包含了旧区块的信息,使得区块链储存了系统全部的历史数据,达到了全程留痕的效果。
区块链中的所有节点在每一个区块上都有一个时间戳,表示这个信息是这个时间写入的。又因其不可篡改的特点,使得区块链上每一条数据都可以通过链式结构追本溯源,验证其存在性,达到了可以追溯的特点。
# 集体维护
因为去中心化,区块链中的数据块由系统中所有具有维护功能的节点来共同维护,同时这些节点是开源的,任何人都可以参与。并且每一个节点在参与记录的同时也来验证其他节点记录结果的正确性,维护效率提高,成本降低。
# 公开透明 / 隐私保护
区块链中储存了系统全部的历史信息交流数据,并且可以追溯,使得区块链中的数据公开透明。
存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的。为了保护区块链中用户的隐私,BTC 通过隔断交易地址和地址持有人真实身份的关联(利用公钥哈希值作为交易标识),来达到匿名的效果,即知道有这笔交易,但不知道由谁交易给谁。但通过观察和跟踪区块链的信息,分析重复使用公钥哈希值和多次重复的 IP 信息,还是可以追查到帐户和交易的关联性,同时进行社工分析,就有可能被找出现实中的身份信息。
为了更好地保护隐私,基于加密算法,主要产生了以下四种加密方案:
混币原理:https://baike.baidu.com/item/ 混币服务
环签名:https://baike.baidu.com/item/ 环签名
同态加密:https://baike.baidu.com/item/ 同态加密
零知识证明(ZKP):https://baike.baidu.com/item/ 零知识证明
# 智能合约
# 概念定义
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。
# 数字形式
数字形式意味着合约不得不写入计算机可读的代码中。
简单来讲,智能合约就是部署在区块链上的代码,而代码的执行则是在代码的执行是在本地的 EVM 中。本地的 EVM 读取了区块链上的代码,并在本地运行后,再将结果写入到区块链中。
# 智能合约的安全
既然智能合约的本质是能够运行的代码,那么相应的,它也会产生出一系列安全漏洞,并且大部分智能合约是开源的,剩余的小部分,也可以进行反编译,这使得智能合约的漏洞会更容易被找到。
PWN 中的智能合约题,便是利用合约代码中的漏洞,对合约进行攻击,从而达到获取 flag 的目的。
比较经典的攻击有:
- 重入攻击
- 整数溢出
- 伪随机数回滚攻击
- 薅羊毛(Airdrop Hunting)
- 短地址攻击
- …………