比特币Bitcoin: A Peer-to-Peer Electronic Cash System

随便写写学习笔记,哈

S. Nakamoto, “Bitcoin: A peer-to-peer electronic cash system”. https://bitcoin.org/bitcoin.pdf,2008.


1、简介 Introduction

本文提出了一种完全通过点对点技术实现的电子现金系统,它使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。

传统支付系统:

  • 系统受制于“基于信用的模式”
  • 借助可资信赖的第三方信用机构来处理电子支付信息
  • 无法实现完全不可逆的交易:部分商品和服务无法退货

区块链支付系统:

  • 基于密码学原理而不基于信用
  • 点对点支付,不需要第三方中介的参与
  • 交易在计算上是不可逆的:可保护卖家权益


2、定义 Definition

区块链是一个分布式账本,一种通过去中心化、去信任的方式集体维护一个可靠数据库的技术方案。


3、结构 Structure

区块结构:

4字节

区块大小

描述该字段之后的区块大小

80字节

区块头

组成区块头的几个字段

1-9

交易计数器

记录交易的数量

可变

交易

记录在区块里的交易信息

区块头结构:

4字节

版本

版本号,用于跟踪软件/协议的更新

32字节

父区块哈希值

引用区块链中父区块的哈希值

32字节

Merkle

该区块中交易的Merkle树根的哈希值

4字节

时间戳

该区块产生的近似时间

4字节

难度目标

该区块工作量证明算法的难度目标(控制10min)

4字节

Nonce

用于工作量证明算法的计数器

4、交易 Transactions

电子货币:一串链式的数字签名

收款人可通过检验签名去验证其所有者的链式关系



收款人不能确定“双花问题”(double-spend)?
传统支付系统:可信第三方解决“双花问题”
区块链支付系统:所有交易信息公开宣布,然后给交易信息加上时间戳,以确保大多数节点都认同该交易是首次出现。

5、时间戳服务器 Timestamp Server

时间戳服务器:证明数据在某特定时间是存在的
时间戳是一种具有法律效力的电子凭证

时间戳服务器将前一个时间戳与此时以区块形式存在的一组数据实施随机散列而加上时间戳,逐步增强而形成时间上的链条。


但攻击者可以修改区块中的信息然后重新做hash运算?

区块链用工作量证明解决这个问题

6、工作量证明 Proof-of-work

不断寻找一个随机值(nonce),使得该区块的随机散列(SHA-256)值满足一定的条件(如前面出现多少个0)。

不可篡改:(>50% CPU power)
若要修改该区块中的信息:要重新完成该区块及其后所有区块的工作量证明

经证明,一个较慢的攻击者试图赶上随后的区块,其成功概率将呈指数化递减


7、过程 Process

网络的运行步骤:
1、产生新的交易并广播至所有节点
2、节点收集新的交易封装成一个区块
3、节点在自己的区块上不断尝试找到满足条件的随机值完成工作量证明
4、当某个节点完成POW就将其产生的区块广播给其他节点
5、节点收到区块,验证其是否满足POW及区块中交易是否有效
6、若区块满足条件,节点会接受该区块,并在其后产生新的区块

8、激励 Incentive

  • 挖矿:  系统为该区块的创造者分配一定数量的新电子货币
  • 交易费
电子货币总量一定:可避免通货膨胀

激励系统可鼓励节点保持诚实:若攻击者拥有了超过一半的算力,则其用于产生新的区块将会比用于进行二次支付攻击得到更大的好处。

9、节点网络

任何机器都可以运行一个完整的比特币节点,一个完整的比特币节点包括如下功能:

  • 钱包,允许用户在区块链网络上进行交易
  • 完整区块链,记录了所有交易历史,通过特殊的结构保证历史交易的安全性,并且用来验证新交易的合法性
  • 矿工,通过记录交易及解密数学题来生成新区块,如果成功可以赚取奖励
  • 路由功能,把其它节点传送过来的交易数据等信息再传送给更多的节点
一个节点必须要有路由功能。


10、回收硬盘空间 Reclaiming Disk Space

  • 一旦货币中最新的一次交易已经被纳入足够多的区块之中,就可以丢弃之前的一些交易数据。
  • 区块头只保存交易的根哈希值: Merkle Tree

区块头大小为80字节,一年产生的区块大约为4.2MB


11、简化的支付确认 Simplified Payment Verification

用户不需要拥有完整的网络节点,只需要保留最长的工作量证明链条的区块头的拷贝即可。它可以不断向网络发起询问,直到他确信自己拥有最长的链条,并通过Merkle Tree 的分支找到某次交易。


12、隐私 Privacy

区块链模型保护隐私:

  • 让公钥匿名,无法建立公钥与拥有者的关联
  • 每次交易使用新的密钥对
  • Zerocash、Zerocoin等新型隐私保护区块链模型(Zerocash以后可能会详细再写一篇)


13、特征 Feature

  • 开放,共识
任何人都可以参与到区块链网络,每一台设备都能作为一个节点,每个节点都允许获得一份完整的数据库拷贝。节点间基于一套共识机制,通过竞争计算共同维护整个区块链。任一节点失效,其余节点仍能正常工作。
  • 去中心,去信任
区块链由众多节点共同组成一个端到端的网络,不存在中心化的设备和管理机构。节点之间数据交换通过数字签名技术进行验证,无需互相信任,只要按照系统既定的规则进行,节点之间不能也无法欺骗其它节点。
  • 交易透明,双方匿名
区块链的运行规则是公开透明的,所有的数据信息也是公开的,因此每一笔交易都对所有节点可见。由于节点与节点之间是去信任的,因此节点之间无需公开身份,每个参与的节点都是匿名的。
  • 不可篡改,可追溯
单个甚至多个节点对数据库的修改无法影响其他节点的数据库,除非能控制整个网络中超过一半的节点同时修改。区块链中的每一笔交易都通过密码学方法与相邻两个区块串联,因此可以追溯到任何一笔交易的前世今生。

14、分类 Classification

公有链

无官方组织及管理机构,无中心服务器,参与的节点按照系统规则自由接入网络、不受控制,节点间基于共识机制开展工作。全世界任何人都可读取、任何人都能发送交易且交易能获得有效确认、任何人都能参与其中的共识过程,通常被认为是“完全去中心化”的。

私有链

建立在某个企业内部,系统的运作规则根据企业要求进行设定,修改甚至是读取权限仅限于少数节点,同时仍保留着区块链的真实性和部分去中心化的特性。其写入权限仅在一个组织手里,读取权限或者对外开放,或者被任意程度地进行了限制。相关的应用囊括数据库管理、审计、甚至一个公司。

联盟链

由若干机构联合发起,介于公有链和私有链之间,兼具部分去中心化的特性,其共识过程受到预选节点的控制。例如有15个金融机构组成的共同体,每个机构都运行着一个节点,而且为了使每个区块生效需要获得其中10个机构的确认(2/3确认)。区块链或许允许每个人都可读取,或者只受限于参与者,或走混合型路线,例如区块的根哈希及其API(应用程序接口)对外公开,API可允许外界用来作有限次数的查询和获取区块链状态的信息。这些区块链可视为“部分去中心化”。


15、其他 Others

“拜占庭将军问题”:

在一个不可靠、具有潜在威胁的网络中通过信息交流来达成一个行动协议共识。(POW、POS、DPOS...)

bitcoin客户端:

完整客户端:存储所有交易历史,管理用户钱包,不依赖第三方

轻量级客户端:不保存所有交易的完整历史,管理用户钱包,依赖第三方钱包(轻量级节点:SPV节点    SPV:简单支付验证)

在线客户端

钱包、地址、比特币、公司钥:

wallet = file 

一个钱包包含多个比特币地址

An address has its own balance of bitcoins.

(address,sk)=(账号,密码)

sk通过椭圆曲线相乘等方式产生pk, pk通过hash可以产生地址

Combining and Splitting Value:


猜你喜欢

转载自blog.csdn.net/black_bearb/article/details/80117921
今日推荐