区块链-3区块链入门指南 | 比特币基础知识
BLOCKCHAIN
-区块链-
-01-
数字货币
数字货币以密码学技术、区块链技术和P2P网络技术等作为支撑,由计算机程序产生,并在互联网上发行和流通,构建了一个分布式支付系统,以解决虚拟经济体系中的信用问题。
以比特币为代表的数字货币系统中,中央银行的角色不再存在,没有发行主体,它的发行不受任何人或机构控制,货币发行和交易流通职责由所有节点共同承担。
选择哪个节点来发行货币、如何识别一笔交易是否是双重支付、交易链条出现分叉时如何处理等重要问题需要网络中的各个节点采用共识机制来解决。
交易信息按时间顺序排列存放在一个个区块中,并形成一个从前往后有序链接的数据结构链条。并利用密码学的方法,实现一个公开、透明、可追溯、时序且不可篡改的分布式总账。
数字货币可以有效降低货币管理成本和社会信用成本。
-02-
比特币典型特征
比特币本质上是由分布式网络系统生成的数字货币,其发行过程不依赖特定的中心化机构。而是依赖于分布式网络节点共同参与一种称为工作量证明(PoW,这个在以后的推文会细说)的共识过程以完成比特币交易的验证与记录.
比特币和区块链系统一般具备如下五个关键要素——公共的区块链账本、分布式的点对点网络系统、去中心化的共识算法、适度的经济激励机制以及可编程的脚本代码。
比特币的典型特征有:
1.去中心化
意思是采用纯数学方法而不是中心机构来建立分布式节点间的信任关系,不存在任何中心化的特殊节点和层级结构。
另外,对比特币网络的维护也是去中心化的,不存在独立的第三方对网络进行集中监管。比特币实现了发行的去中心化,保证没有任何一个机构或个人可以集中发行比特币。
2.分布式共识
比特币采用工作量证明机制(PoW)来实现分布式共识。它解决的双重支付的问题,也就是“双花”问题(具体在以后的推文中会细说)。比特币系统的运行很多都依赖于计算力投票。
3.公开透明、极难篡改
比特币本质是一个公开的分布式总账,数据采用带有时间戳的链式区块结构存储。
区块链中记录了所有账户发生的所有交易,且每个人手上都有一份完整的账本,每个人都可以独立统计出比特币有史以来每个账号的所有账目,也能计算出任意账号的当前余额。
除非有人能控制超过全网51%的算力,否则任何想隐藏或修改交易数据的行为都会被整个网络否决掉。
4.密码算法
比特币采用椭圆曲线密码算法来保障通信和交易的安全。比特币地址其实是一套非对称密钥对中的公钥,这对密钥通过椭圆曲线算法生成,所对应的私钥可以唯一确定该地址(公钥)的所有权。
公钥生成过程是不可逆的,即不能通过公钥反推出私钥。私钥可以唯一确定其对应地址上比特币的所有权,私钥丢失意味着该地址上比特币的丢失。
5.隐私保护
用户的账户(地址)由本地客户端利用公钥自动生成一串字符串,并没有直接暴露用户的身份。公钥地址相当于一个“假名”,隐藏了用户的部分信息,但各节点并非完全匿名。
-03-
比特币密钥
密钥是由一个成对的公钥和私钥组成,其中公钥用于接收比特币并生成比特币地址,对应的私钥用于生成其对应地址上支付比特币所必需的签名以唯一确定这些比特币的所有权,决定了该地址下存储的比特币的所有权和控制权。比特币私钥由用户的钱包生成、存储和管理。
在比特币交易的支付环节,收款方出示其比特币地址以接收比特币,每笔比特币交易都需要一个付款方的有效签名才会被存储在区块链中。
因此,比特币的接受者甚至比特币网络中的所有人都可以通过支付者公开的公钥,对交易中包含的签名进行验证,从而确认支付者对所交易的比特币拥有所有权,确认该交易是有效的。
比特币系统一般通过调用操作系统底层的随机数生成器来生成256位随机数作为私钥,私钥空间的大小是2256。
比特币私钥将通过SHA256哈希算法和Base58转换,形成50个字符长度易识别和书写的私钥提供给用户。比特币的公钥是由私钥首先经过Secp256k1椭圆曲线算法(后面的推文会细说)生成65字节长度的随机数。
该公钥可用于产生比特币交易时使用的地址,其生成过程为首先将公钥进行SHA256和RIPEMD160单向散列函数运算并生成20字节长度的摘要结果(即hash160结果),再经过SHA256哈希算法和Base58(基于文本的二进制编码格式,用于比特币和其他加密货币中,实现数据压缩、保持易读性,还具有错误诊断功能)转换形成33字符长度的比特币地址。公钥生成过程是不可逆的。
-04 -
比特币钱包
比特币钱包是私钥的容器,通常通过有序文件或简单的数据库实现。它分为非确定性(随机)钱包、确定性(种子)钱包和分层确定性钱包三类:
非确定性钱包中的私钥是随机生成的,存在难以管理、备份以及导入的缺点,正在被确定性钱包替换。
确定性(种子)钱包是利用单向散列函数可以从一个公共的随机数生成许多不同的私钥,这个随机数就是种子,它包含索引号码或可生成私钥的“链码”。
分层确定性钱包基于树状结构生成密钥。父密钥可以生成一系列子密钥,子密钥又可以衍生出一系列孙密钥。可以更加结构化、组织化地表达密钥之间的关系。
-05 -
比特币交易流程
比特币的来源主要有两个,一是挖矿奖励,二是从其他账户购买。
获取比特币可以形象地称为是一个“挖矿”的过程,即不断地选取随机数进行哈希运算,以期望找到一个满足要求的哈希结果。矿工就是在挖一个随机数,这里假设要挖的是一个30位的随机数。
记账的过程如下图所示:
其中:
新建交易:
A与B通过智能合约(数字签名)交易若干个比特币,买和卖都广播给每一个人。
交易通过P2P网络传播:
网络的每个节点(有所有成员的账本)收到广播的网络信息,并进行加减来更新账本。
共识:
即是“挖矿”的过程,这个共识需要达到51%,即51%的人账本上都会记下这笔交易。
为保证防止篡改,用了哈希函数,并找其他矿工帮忙。
哈希函数是单向函数,不可逆,也无反函数,即x可推出f(x),但已知f(x)不能推出x的值。但如果告诉这个随机数x的前130位,让矿工求这130位之后的30位是什么,那矿工只能随机猜,那么他得试230次,且每次都要计算一次哈希函数,即要计算230次哈希函数。假如平均每个比特币的矿工或每个节点要试十分钟才有一个人试到了这个值,即每十分钟就有一个人挖到了比特币,则该比特币是一个类似“0101...”这样的一个串。(所以比特币会被挖完)
挖到后如果大家认可,则给这个矿工一个比特币的奖励并公布交易信息,同时也会公布他以前的账本给每个网络节点。
此时A与B的比特币交易才算成功。每笔挖矿挖出之后,这些交易就会放入这个比特币中,一旦放入后就改变不了,因为这是单向函数,下一个节点算出后改变不了上一个节点。
每笔交易单要写入数据块,上一个挖到的和下一个挖到的比特币等等连成一条很长的链,这个链就是区块链,这个极难被篡改,因为假如达到100个区块,要改第一个,则要改99个哈希函数值,即找99个230且要比全网其他人要快,因为每十分钟就增加一个数据块。
另外,交易写入账本之后矿工会再挖下一个比特币,即继续找x。
-06 -
比特币生态系统
- E N D-