区块链简单介绍
什么是区块链?
首先要明确的是区块链属于一种技术,可用来保留交易记录和执行合同,通过加密来确保无法篡改之前的历史记录,并且允许链上的节点通过跟踪共享账本的记录来共享工作流程。
是从集中式数据库中演变来的一种分布式的数据管理方式。 在集中式数据库中,数据存储在一个中心位置,而在区块链中,数据分散存储在多个节点上,每个节点都有一份完整的账本副本。 集中式数据库需要有一个中心服务器,优点就是能集中管理数据,缺点就是一旦中心服务器出现问题,整个系统就会受到影响,另外这个中心服务器需要承担集成的责任。 而区块链的优点就是去中心化,每个节点都有一份完整的账本副本,一旦某个节点出现问题,其他节点也可以通过验证账本的记录来恢复数据。
所以区块链本质就是一种分布式管理的技术。也称分布式账本,就是对事务的历史记录,所以每个事务都会影响最终状态。 分布在参与者之间的区块链网络成为联盟网络,而分布在不同的区块链网络之间的区块链网络称为公链。 通过联盟网络,不同的参与者可以共享账本的记录,而通过公链,不同的区块链网络可以共享账本的记录。
区块链还使用共识机制来确保不同节点之间数据的一致性,通过加密技术来确保数据的安全性。
工作原理
在区块链中,每个节点都有一份完整的账本副本,每个节点都可以添加新的交易记录,然后通过共识机制来确保所有节点上的账本副本都是一致的。 区块链中的数据表示状态,即所有权,以现实生活的物品来说,不可能一件东西即是A的又是B的。区块链通过事务将数据的状态从一个值改为另一个值。 事务实际就是状态更改的体现,在发送事务时,会发送到区块链节点,然后节点会将事务添加到区块链中,然后通过共识机制来确保所有节点上的账本副本都是一致的。
如何确保一致性?
在区块链中会采取一种共识机制,来确保、验证区块链上的节点数据一致。共识机制会提供一种方法,让所有分散管理的节点都达到相同的状态。
双重花费:已经想数据的所有权转给A,就不能再转给B。
共识机制
共识:一个群体中至少绝大多数都认为一件事是对的,那么这件事就是对的。
在以太坊区块链中,共识至少要66%的节点达成一致。
共识机制:一套协议、想法、规则构成的体系,让区块链上所有节点能就区块链状态达成一致。
共识机制的原理就是:一组事务作为一个区块来验证,整个网络中所有节点都需要验证这个区块,只有当所有节点都验证通过了,才会将这个区块添加到区块链中。
有很多种共识算法:工作量证明PoW、权益证明PoS、等
女巫攻击(Sybil Attack)
NOTE
Sybil一词来自一位名叫Shirley Ardell Mason(又名Sybil Dorsett)的艺术家,她曾被诊断出患有多重人格障碍。顾名思义,此类攻击往往发生在当一个用户使用了多个虚假身份(像极了具有多重身份的女巫),去破坏或以其他方式获得对于网络的控制。 类似于DDos攻击。
NOTE
作为一种在线安全威胁,女巫攻击也被称为身份或声誉攻击。它是由一个实体创建多个节点、帐户或主机,意在接管某个特定的网络。此类攻击既可能像在社交媒体平台上使用多个帐户那样简单,也可能像是入侵高安全性的网络一样危险和复杂。
不过,它更容易被运用于加密货币的场景中。也就是说,在区块链中,攻击者通过运行多个节点,来达到某些非法的目的。目前,我们常见的有两种类型的女巫攻击:
- 当诚实节点受到女巫节点的直接影响时,就会发生直接的女巫攻击。
- 当诚实节点在女巫节点的影响下,受到来自另一个诚实节点的攻击时,则会发生间接的女巫攻击。而那个被利用的诚实节点,实际上已沦为了发起攻击的中间节点。
NOTE
女巫攻击会从如下常见方面对区块链造成严重的破坏:
阻碍人们正常地访问或使用网络 一个完备的女巫攻击总会通过生成足够多的身份,使欺诈者能够在投票中击败各个诚实的节点。这将会导致传输的失败、以及无法接收到正确的区块。
执行51%攻击 完备的女巫攻击可以为具有访问和控制能力的攻击者,提供超过半数(即51%)的总计算能力。这足以破坏区块链系统的完整性,并导致潜在的网络干扰。毕竟51%攻击足以改变交易的顺序,并通过逆转交易的方式,去支持女巫攻击者,进而阻止交易的确认。有时,这也被称为双花攻击(Double Spending,详见下文解释)。
在节点上实现“多数获胜(Out-Voting)” 如果系统中有足够多的假身份节点,那么它们就能以“多数获胜”的方式击败合法节点(或称为诚实节点)。就像日蚀攻击(eclipse attack)那样,如果女巫造成链网络不再传输或接收区块,那么就会直接导致其他诚实的用户被阻止参与。
NOTE
如何防止: 通过上文提到的工作量证明、权益证明等共识机制可以有效防止女巫攻击
- 工作量证明Proof of Work:使用计算能力,对区块中的数据进行哈希处理。通过验证哈希是否符合条件 即可完成证明。计算哈希的过程也称为“挖矿”,但是需要消耗电力,后来为了环保,以太坊中引入了权益证明。
- 权益证明Proof of Stake:通过质押代币,来获得投票权;如果投票不通过,代币会被扣除作为惩罚。相当于一种自己为自己担保的证明。
块
块在区块链中是一组事务的集合,每个块都有一个唯一的标识符,称为块哈希。每个块都有一个前一个块的哈希值,称为前一个块哈希。每个块都有一个时间戳,用于记录块的创建时间。每个块都有一个工作量证明,用于确保块的创建者是一个合法的节点。 所以一个块中:
- 前一个块哈希
- 时间戳
- 工作量证明
经过共识机制的验证之后,就会将这个块添加到区块链中。区块链中的所有节点都有相同的块。
如何保证账本不可变?
区块链使用加密哈希在块之间创建连接(前一个块哈希),块连接在一起之后,通过共识算法确定事务顺序的一致性。 通过哈希可以检测数据有没有发生变化,从而实现的信任。 如果修改块中的数据,后面块的哈希就会变化,验证就会不通过。
如何保证安全性?
在区块链中身份验证是很重要的,需要确保去中心化网络的安全。区块链中通过多种加密方式来验证身份:非对称加密、签名、公开签名、钱包、热钱包等。
非对称加密
简而言之:公钥加密\解密、私钥解密\加密;公钥是对外开放的,私钥是不可以开放的。
签名 Sign
指的是利用私钥对数据进行加密的过程。在区块链中,进行某次操作时,需要对操作的数据进行签名。目的是确保数据来源的真实性。签名后的数据可以被其他用户利用发送方的公钥来验证和解密。
公开签名 Public Signing
指的是在用公钥加密体系中使用签名操作的过程。一般有以下步骤:
- 发送方通过私钥加密操作数据
- 发送加密后的数据和公钥
- 接收方使用发送方的公钥解密数据
- 签名信息被验证,验证通过后接收信息
通过公开签名机制,可以保证数据的完整性和传输安全,防止篡改,防止抵赖,以及保证了用户的身份真实。
钱包
在Web3中用来存储、管理数字资产和密钥(私钥)的一种应用程序。分为硬件钱包和软件钱包:
- 硬件钱包如Ledger Nano
- 软件钱包如MetaMask
热钱包
热钱包是始终与互联网连接的数字货币钱包,可以方便的完成交易操作。但是可能有安全隐患,一般用来小额操作。
如何添加在每个节点一致执行的逻辑?
在区块链中,每个节点都有相同的块,当某一个块中的数据变化时,整个区块链的所有节点该块都应该执行相同的逻辑来修改块数据。如果做到呢?
分散式应用程序(DApp)是分布式计算系统的应用程序。 Ethereum 区块链协议,Ethereum DApps称为智能合同/智能合约。可以使用Solidity来进行开发。
Ethereum就是以太坊 是一种通用的区块链协议。
智能合同需要部署到区块链网络上,并按地址来引用。在节点中如果要使用智能合同,需要创建实例来使用。在智能合同实例中包含了状态数据和程序逻辑。比如某个节点通过智能合同实例修改了状态数据,区块链网络会自动广播这个修改,其他节点也会自动执行相同的逻辑来修改状态数据。
区块链类型
区块链可以公用,也可以私用。
公用
公用的区块链是指任何能访问互联网的都可以加入区块链网络,不需要登录、申请权限等。 公用区块链的共识算法使用加密货币作为验证块的奖励,比如比特币区块链网络。 在验证事务时,可能需要花费加密货币作为手续费。
私用
在专用的区块链网络中,只有受邀加入区块链网络的参与者才能访问区块链中存储的信息。是不完全受信任的网络,所有参与者就区块链的利用方式达成一个协议。