区块链基础

通过后一个区块对前一个区块的引用,并以加密技术保证了区块链不可修改

Posted by page on November 1, 2024

区块链基础

区块链(Blockchain)技术源于 比特币。为了保证每笔交易可信并不可篡改,它通过后一个区块对前一个区块的引用,并以加密技术保证了区块链不可修改。

本质:一个分布式的,不可篡改的数据库;

特性:天生具有可验证、可信任的特性

用途:不但可用于支持比特币等数字货币,也可用于数字身份验证清算业务等传统的必须由第三方介入的业务,从而降低交易成本(当然也增加了另一些成本)。

区块链原理

区块链是由一个一个区块构成的有序链表

区块

  • 记录了一系列交易

  • 有唯一的哈希标识,即block hash(区块哈希),根据区块头部内容生成

  • 区块头部Prev Hash字段指向上一个区块

  • 区块头部Merkle Hash即交易内容生成的hash

Hash算法

比特币涉及 SHA-256,RipeMD160 算法,采用 SHA-256 + SHA-256 和 SHA-256 + RipeMD160 两种加密算法;

不可篡改

如果一个恶意的攻击者修改了一个区块中的某个交易,那么Merkle Hash验证就不会通过。

所以,他只能重新计算Merkle Hash,然后把区块头的Merkle Hash也修改了。

这时,我们就会发现,这个区块本身的Block Hash就变了,所以,下一个区块指向它的链接就断掉了。

因此,攻击者必须先重新计算这个区块的Block Hash,然后,再把后续所有区块全部重新计算并且伪造出来,才能够修改整个区块链。

P2P交易

无需信任中介参与的P2P(Peer-to-peer点对点)交易,传统交易实际上并没有完成货币转移;

数字签名

通过数字签名算法(非对称加密算法),证明交易信息有效;

对某个消息签名的时候,主体使用私钥对消息进行签名(加密),然后,把消息、签名和自己的公钥发送出去;

其他任何人都可以通过主体的公钥对这个签名进行验证(解密),如果验证通过,可以肯定该消息是特定发出的;

特性

  • 防伪造:签名不可伪造;因为私钥只有签名人自己知道,所以其他人无法伪造签名

  • 防篡改:消息不可篡改;如果原始消息被人篡改了,那么对签名进行验证将失败

  • 防抵赖:签名不可抵赖;如果对签名进行验证通过了,那么该消息肯定是由签名人自己发出的

非对称加密算法

RSA算法,DSA算法和ECDSA算法,比特币采用 ECDSA 算法(椭圆曲线签名算法)

与银行卡比较

公钥:相当于银行卡卡号,它是两个256位整数

私钥:相当于银行卡密码,它是一个256位整数

异同

银行卡的卡号由银行指定,银行卡的密码可以由用户随时修改;

比特币密码(实际上是私钥)由用户先确定下来,然后计算出“卡号”(实际上是公钥),即卡号是由密码通过ECDSA算法推导出来的,不能更换密码,因为更换密码实际上相当于创建了一张新卡片。

比特币账本是全网公开的,所以,任何人都可以根据公钥查询余额,但是,不知道持卡人是谁。这就是比特币的匿名特性

比特币的P2P网络不存在中央节点,私钥只有持有人自己知道,因此,丢失了私钥,对应的比特币就永远无法花费。

钱包软件

帮助用户管理私钥的软件,包括:

  • 本地钱包:是把私钥保存在本地计算机硬盘上的钱包软件,如Electrum
  • 手机钱包:和本地钱包类似,但可以直接在手机上运行,如Bitpay
  • 在线钱包:是把私钥委托给第三方在线服务商保存;

个人猜想:按道理私钥存在数据中,但对用户从不可见,只可授权使用;

交易

每个区块都记录了至少一笔交易,一笔交易就是把一定金额的比特币从一个输入转移到一个输出(记账)

交易双方:双方的公钥地址

交易记录:比特币协议规定一个输出必须一次性花完;一个交易中,一个输入可以对应多个输出,一个交易也可以对应多个输入和1个输出

比特币实际的交易记录是由一系列交易构成,每一个交易都包含一个或多个输入,以及一个或多个输出。未花费的输出被称为UTXO:Unspent Transaction Ouptut。