一、区块链是什么?
- 本质是电子账本系统
- 特点:去中心化、不可篡改。
区块就是账本,是一段特定时间内(目前为10分钟)的交易信息。一个块内包含区块头和该时间段内的交易数量、交易详情等信息。
要想讲明白区块链,要从两个方面入手:比特币的交易和区块
二、比特币/其他数字货币交易
-
交易信息是什么?
在P2P网络中,任意节点进行的交易(如比特币买卖,“A买了B多少比特币”)都会对其他节点广播,由多数人认可后记录在每个节点的账本上。这就是去中心化的网络结构。 -
怎么进行交易防伪?(给每次交易设置唯一标识)
比特币交易的认证方式——电子签名。比特币用户注册时生成随机数,由其产生私钥-公钥-地址。私钥是私有、私密的,可对信息加密;公钥是公开的,可对信息解密。
进行交易时,A将交易内容进行哈希运算得到摘要,将摘要通过私钥加密得到密码
广播时,将交易内容+公钥+密码进行广播,其余节点通过对交易内容的哈希运算和公钥+密码进行解码得到的两个摘要进行对比,一致则该广播被认可。
-
如何保证交易有效性(即卖方的资产确认)
通过追溯计算卖方账户余额。 -
如何防止双重支付?
在卖方余额只够一次交易却同时发出两条不同交易信息时,接收到其中一条广播的人会拒绝另一条,产生两条有不同人认可的链。该情况在矿工成功挖矿后以打包新块的人所认可的信息为准。 -
如何防止篡改?
最长链原则:在同时有两个人打包出新块后,对块地址进行广播。哪个链后接的块最多,大家就公认哪条。
51%:想篡改某个块上的信息,需要假造一个不含该交易的块接在该块的前一个块上,并依据最长链原则,不断计算打包新的块接在该链后,超过世界上50%的算力并成为最长链。
三、块是怎么打包的?由谁打包的?
由于每个节点都有账本,要以某个节点手上的账本为主,把他记下的信息打包成新块。系统需要选出有能力打包块的节点,并给予一定奖励,奖励包括每笔交易中的手续费和系统的打包奖励。想要竞争成为打包者的节点称为矿工。
为了证明自己的能力,这场竞争中的矿工需要解一道复杂的题,最先算出来且算对的矿工成为下一个块的打包者,这场竞赛就是挖矿。
为了证明算力而解这道复杂的题就是一种工作量证明PoW。这道题是对一串字符串做两次哈希函数运算,且为了难度要求答案前n位为0.
字符串=前块头+自己账本上收集的账单信息+随机数
哈希值HASH=SHA 256(SHA 256(字符串)),且要求答案前n位为0。函数SHA 256是对任意形式的数据进行运算后,得出一个256位的二进制数字。
n怎么确定:10分钟内所有矿机能达到的运算次数与前n位为0需要的运算次数基本一致。每台矿机的平均算力目前的矿机数量10分钟=2的n次方