如何证明一个事物是真实存在?怎么证明一份合同是真的?你的房子就是你的吗?人有百口,就算白纸黑字也会有造假的时候,因此“第三方”权威机构就诞生了,由可信赖的第三者来证明一件事物的真实存在,如:政府、银行等。但我们知道历史是胜利者书写的,规矩也是权威者定义的,书是可以焚烧的,签章是可以从写的,公证人员也是可以买通,人性是无法违背的。所以,世界上没有任何东西是可以绝对信任的,因此区块链就诞生了。
区块链的定义:通过去中心化、去信任化的方式集体维护一个可靠的资料库的技术(不断增长的长链,只能添加记录,发生过的记录都不可篡改)。
区块链的核心:去中心化、去信任化、集体维护、可靠的质料库。即去掉中心、权威机构,去掉对中心、权威的信任,以所有人作为中心,让集体去证明一个事物真实。
通俗讲就是,每个人都有一个记录数据小本子,这个小本子就是可靠的数据库,所有小本子记录的数据都是一样,除非全世界有51%的人愿意同时造假共同修改小本子数据,否则单独个体或者49%的人对自己的小本子进行修改添加删除等操作都是无效的,不被承认的。
你要让几个人帮你造假可能很容易,或者只要买通一个权威人士即可,但是你要让大部分人,超过一半的人办你造假那就不容易了。
接下来讲讲比特币,比特币是区块链技术的第一个应用。
区块链从宏观看就是一种去中心化的记录技术。在比特币中,它就是记录交易的账本,一条不断增长的链,只能添加不能篡改,去中心化,通过密码学技术确保信息与记录的安全性。其实比特币区块链就是 “全球比特币交易的总账簿“。
比特币基本内容:
交易(Transaction):一次账簿操作,如添加一条记录。
区块(Block):记录一段时间内发生的交易,一次账簿状态的共识。
链(Chain): 由一个个区块按照发生顺序串联而成,整个账簿状态的变化记录。
比特币交易,本质是一个资料结构,其中包含了交易参与者、价值转移的相关资讯。每一个比特币交易都是在比特币区块链上的一个公开记录。
交易的生命周期:一个比特币交易被创建 比特币交易被广播到比特币网络中 每一经过一个节点(其它比特币参与者) ,会被独立验证此交易合法性,后继续广播 直到被所有节点确认,在此期间节点中的挖矿节点对此交易验证后,会将交易添加到其创建的比特币区块中(区块后面会介绍) 生产此区块的矿工,要计算区块头中hash值,若最快算出获得计算竞赛胜利,就可以把此区块放入比特币区块链上,此矿工会获得相应报酬 区块添加到比特币区块链上后,在此区块中的比特币交易就被确定且永远不会改变。
交易结构:
交易基本单位:UTXO(Unspent Transaction Output) 未使用的交易输出。一个用户所拥有的比特币会被当作UTXO,是分散记录在成百上千个交易中,也是区块中。用户并没有所谓固定的“钱包“存放的余额,这些余额信息(UTXO)都是分散的记录在整个比特币区块链中。
一笔比特币交易产生,交易消耗的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 Pay-to-Public-Key-Hash 付到比特币地址
P2PK Pay-to-Public-Key 付到公钥
MS Multiple Signature m-n多重签名
P2SH Pay-to-Script-Hash 付到脚本哈希值
OP_Return Data Output 数据输出
比特币网络上大多数交易都是,P2PKH。
ex:你向Bob的café店买一杯café,你支付1.5BTC到Bob的比特币地址,该交易输出UTXO的锁定脚本为:
OP_DUP OP_HASH160
脚本中的
Bob未来若要使用这有1.5BTC的UTXO,需要提供解锁脚本为:
具体解锁过程:
成功后,Bob就可以使用这个UTXO了。
仅为个人理解,如有不足,请指教。 https://blog.csdn.net/weixin_35811044