区块链1.0学习心得(上)

  •    区块链概念:

如何证明一个事物是真实存在?怎么证明一份合同是真的?你的房子就是你的吗?人有百口,就算白纸黑字也会有造假的时候,因此“第三方”权威机构就诞生了,由可信赖的第三者来证明一件事物的真实存在,如:政府、银行等。但我们知道历史是胜利者书写的,规矩也是权威者定义的,书是可以焚烧的,签章是可以从写的,公证人员也是可以买通,人性是无法违背的。所以,世界上没有任何东西是可以绝对信任的,因此区块链就诞生了。

  • 区块链的定义:通过去中心化、去信任化的方式集体维护一个可靠的资料库的技术(不断增长的长链,只能添加记录,发生过的记录都不可篡改)。

  • 区块链的核心:去中心化、去信任化、集体维护、可靠的质料库。即去掉中心、权威机构,去掉对中心、权威的信任,以所有人作为中心,让集体去证明一个事物真实。

通俗讲就是,每个人都有一个记录数据小本子,这个小本子就是可靠的数据库,所有小本子记录的数据都是一样,除非全世界有51%的人愿意同时造假共同修改小本子数据,否则单独个体或者49%的人对自己的小本子进行修改添加删除等操作都是无效的,不被承认的。

你要让几个人帮你造假可能很容易,或者只要买通一个权威人士即可,但是你要让大部分人,超过一半的人办你造假那就不容易了。

  • 比特币概念:

接下来讲讲比特币,比特币是区块链技术的第一个应用。

区块链从宏观看就是一种去中心化的记录技术。在比特币中,它就是记录交易的账本,一条不断增长的链,只能添加不能篡改,去中心化,通过密码学技术确保信息与记录的安全性。其实比特币区块链就是 “全球比特币交易的总账簿“。

比特币基本内容:

       交易(Transaction):一次账簿操作,如添加一条记录。

       区块(Block)记录一段时间内发生的交易,一次账簿状态的共识。

       (Chain): 由一个个区块按照发生顺序串联而成,整个账簿状态的变化记录。

  1. 交易(transaction:

比特币交易,本质是一个资料结构,其中包含了交易参与者、价值转移的相关资讯。每一个比特币交易都是在比特币区块链上的一个公开记录。

  • 交易的生命周期:一个比特币交易被创建 \rightarrow 比特币交易被广播到比特币网络中 \rightarrow 每一经过一个节点(其它比特币参与者) ,会被独立验证此交易合法性,后继续广播 \rightarrow 直到被所有节点确认,在此期间节点中的挖矿节点对此交易验证后,会将交易添加到其创建的比特币区块中(区块后面会介绍)\rightarrow 生产此区块的矿工,要计算区块头中hash值,若最快算出获得计算竞赛胜利,就可以把此区块放入比特币区块链上,此矿工会获得相应报酬 \rightarrow 区块添加到比特币区块链上后,在此区块中的比特币交易就被确定且永远不会改变。  

  • 交易结构:

  1. 交易基本单位:UTXO(Unspent Transaction Output) 未使用的交易输出。一个用户所拥有的比特币会被当作UTXO,是分散记录在成百上千个交易中,也是区块中。用户并没有所谓固定的“钱包“存放的余额,这些余额信息(UTXO)都是分散的记录在整个比特币区块链中。

  2. 一笔比特币交易产生,交易消耗的UTXO被称为交易输入,经过交易后产生的新UTXO称为交易输出

例如: 你有20比特币的UTXO,要付5比特币给小花。 那么此比特币交易,消耗的交易输入是含20BTC的UTXO,生成了两个交易输出,一个14.5BTC的UTXO,支付地址是你自己的比特币地址,还生成了一个5BTC的UTXO,支付地址是小花的比特币地址,还有0.5BTC没有地址就是给矿工的交易费。

      3.交易输出结构(UTXO):

Byte

栏位

描述

8 Byte

比特币值

比特币值单位为聪(10-8 比特币)

1-9 Byte

锁定脚本Byte数

锁定脚本的长度

锁定脚本Byte数

锁定脚本

使用此UTXO需要的条件

锁定脚本,定义了使用此UTXO的条件,把输出锁定在一个特点的比特币地址,从而把这些比特币所有权转移到新的所有者

     

 

       

      4.交易输入结构(UTXO):

Byte

栏位

描述

32 Byte

交易Hash值

此UTXO的交易hash值

4 Byte

索引

此UTXO在原交易的索引号,第一个为0

1-9 Byte

解锁脚本Byte数

解锁脚本长度

解锁脚本Byte数

解锁脚本

解开UTXO锁定脚本的条件

4 Byte

序号

目前未被使用,设定为0xFFFFFFFF

解锁脚本,将此UTXO对应比特币地址的私钥,进行hash比对,证明对此锁定脚本中的比特币地址的所有权。

   

       

 

 

 

      5.比特币交易结构:一个交易总结构。

Byte

栏位

描述

4 Byte

版本

明确这笔交易参照的规则

1-9 Byte

输入UTXO数量

被包含的交易输入(UTXO)的个数

不定

所有UTXO输入

一个或多个交易输入

1-9 Byte

UTXO输出数量

被包含的交易输出(UTXO)的个数

不定

所有UTXO输出

一个或多个交易输出

4 Byte

交易锁定时间

一个UNIX时间戳或区块号

交易锁定时间:此交易能被加入到比特币区块链的最早时间,0表示立即执行,0-500M表示在此区块高度前不加入,大于500M表示UNIX纪元时间。

     

       

 

 

 

      6.交易费:是支付矿工将此比特币交易加入到比特币区块链的报酬,交易费的高低会影响交易,比特币交易被处理的优先顺序,一个交易能不能被执行成功,都是靠矿工有没有帮你放到区块链上。

 

  • 具体交易例子:

五大标准脚本:

P2PKH   \rightarrow   Pay-to-Public-Key-Hash    付到比特币地址

P2PK     \rightarrow   Pay-to-Public-Key          付到公钥

MS        \rightarrow   Multiple Signature          m-n多重签名

P2SH     \rightarrow   Pay-to-Script-Hash         付到脚本哈希值

OP_Return    \rightarrow   Data Output            数据输出

 

比特币网络上大多数交易都是,P2PKH。

ex:你向Bob的café店买一杯café,你支付1.5BTC到Bob的比特币地址,该交易输出UTXO的锁定脚本为:

OP_DUP  OP_HASH160    OP_EQUAL  OP_CHECKSIG

脚本中的即为Bob的比特币地址,OP_为表示指令。

Bob未来若要使用这有1.5BTC的UTXO,需要提供解锁脚本为: 为以Bob的私钥对这个UTXO的哈希值的签章,为Bob之公钥, 为Bob公钥之哈希值,也是他的比特币地址。

具体解锁过程:

区块链1.0学习心得(上)_第1张图片

区块链1.0学习心得(上)_第2张图片

区块链1.0学习心得(上)_第3张图片

成功后,Bob就可以使用这个UTXO了。

 

 

仅为个人理解,如有不足,请指教。 https://blog.csdn.net/weixin_35811044

你可能感兴趣的:(区块链)