风险提示:防范以"虚拟货币""区块链"名义进行非法集资的风险 —银保监会等五部门
行情 平台 资讯 钱包 登录

一锅乱炖的说明下区块链是个什么东西?

发布在 区块链
64 0

区块链是啥?简单来说是一个去中心化的分布式账本系统。

一、区块链中有什么

1、钱包

钱包只有两个属性:私钥和公钥(非对称加密)

2、区块

区块有区块索引号、当前区块的唯一标识hash、生产区块的时间戳、前一区块的唯一标识、交易集合。

3、区块链

区块形成的一个链条,里面有很多区块,每个区块都包含有上一个区块的唯一标识,而唯一标识是有上一区块的hash和本区块的内容一起hash获得的,所以这条链篡改的成本很大,一个区块内容变了,那这个区块的hash就变了,那这个区块的下一个区块的hash值也需要改变,一直到末尾。

4、交易输出

区块链就相当于一个分布式账本,而账本肯定是记录有交易的,比如张三给王五赚了10个比特币,那么就会记录一笔账,也就是一笔交易,这笔交易的输出是:10和王五的公钥哈希,所以交易的输出就是比特币数量和接受者的公钥哈希

5、交易输入

一个交易,肯定包括交易的输出和交易的输入,那交易的输入包括哪些属性呢?交易的输入包括比特币数量、前一次交易的ID和发送方的公钥以及交易签名,签名是对发送者和接收者的公钥哈希以及整个交易签名

6、UTXO(unspent transaction output)

就是未花费的交易输出,也就是交易ID没有被交易输入引用的。UTXO存在全节点的数据库里,转账交易消耗自己的UTXO,同时生成新的UTXO,并用接收者的公钥锁定比特币,所以在比特币系统上其实并不存在“账户”,而只有“地址”。只要你愿意,你就可以在比特币区块链上开设无限多个钱包地址,你拥有的比特币数量是你所有的钱包地址中比特币的总和。比特币系统并不会帮你把这些地址汇总起来形成你的账户。系统中用户的“余额”实际上并不直接存在,而是通过计算得来。

所以,比特币就是所有的UTXO。

二、怎么交易的

1、起初,第一个挖出的区块里面包含了一个 coinbase 交易。在 coinbase 交易中,没有输入,所以也就不需要签名。coinbase 交易的输出包含了一个哈希过的公钥(使用的是 RIPEMD16(SHA256(PubKey)) 算法)
2、当一个人发送币时,就会创建一笔交易。这笔交易的输入会引用之前交易的输出。每个输入会存储一个公钥(没有被哈希)和整个交易的一个签名。
比特币网络中接收到交易的其他节点会对该交易进行验证。除了一些其他事情,他们还会检查:在一个输入中,公钥哈希与所引用的输出哈希相匹配(这保证了发送方只能花费属于自己的币);签名是正确的(这保证了交易是由币的实际拥有者所创建)。
3、当一个矿工准备挖一个新块时,他会将交易放到块中,然后开始挖矿。
当新块被挖出来以后,网络中的所有其他节点会接收到一条消息,告诉其他人这个块已经被挖出并被加入到区块链。
4、当一个块被加入到区块链以后,交易就算完成,它的输出就可以在新的交易中被引用。

上面的第2步骤也就说明了为啥交易的输入和输出要包含的属性,目的是为了证明这个交易的正确性。

三、啥是共识机制

去中心网络之所以需要共识机制,是因为这是一个非基于信任(non-trust-based)的网络,任何人无须许可都可以接入这个网络。并且,这些节点分散在网络条件差异非常大的全球互联网之中。在完全无中心的情况下,这些节点要同步一致,共识机制即为这些节点达成一致的机制。

比特币是通过工作量证明来达成共识机制:通过挖矿证明自己是善意节点,并获得生成区块和在该区块记账的权利。所以我们挖矿的目的是对交易进行记账,获得的激励是区块链系统自动赠送的比特币以及交易的服务费。

四、区块链节点

1、矿工-运行于强大或专用的硬件(比如 ASIC)之上,主要目的是挖矿
2、全节点-这些节点验证矿工挖出来的块的有效性,并对交易进行确认。
3、SPV节点-简单支付验证,如钱包节点

我们说的P2P之间的交互靠的是全节点,全节点包含所有的交易和区块数据,全节点一般是部署在服务器上的,会为其它节点提供服务。个人电脑如果不能有公网IP的话其实没有太大意义,不能称之为全节点(自我觉得)。

五、交易确认

1、当一项交易被链上的区块收录后,就是交易确认
2、在此区块之后每产生一个区块,此项交易的确认数相应加1
3、经过6个以上区块确认的交易才是安全确认的,因为篡改成本巨大
4、比特币钱包可以设置交易确认数

六、区块生成

矿工在挖矿前要组建区块
1、将coinbase交易打包进区块
2、将交易池中高优先级的交易打包进区块
3、创建区块头部:版本号|父区块哈希|Merkle树根|时间戳|难度值|nonce
4、挖矿成功后,将计算出来的随机数nonce(POW)填入区块头部,并向临近节点传播

注:通过挖矿证明自己是善意节点,并获得生成区块和在该区块记账的权利。

七、区块验证

相邻节点收到新区块后,立即做以下验证
1、验证POW的nonce值是否符合难度值
2、检查时间戳是否小于当前时间两小时
3、检查merkle树根是否正确
4、检查区块size要小于区块size的上限
5、第一笔交易必须是coinbase交易
6、验证每个交易

八、比特币是如何实现去中心化的?

1、去中心化的点对点电子现金系统
比特币要做的是一个“点对点的电子现金系统”,发送方和接收方直接交易,它们之间不需要中介机构的介入。

2、分布式账本
比特币的区块链是基于工作量证明形成的带时间戳、存储数据的数据块和由哈希指针连接成的链条。
这个链条或者说账本以分布式的方式存储在比特币网络的各个节点上,因而也被称为分布式账本。

3、工作量证明
比特币网络中的节点按照规则进行加密哈希计算,以竞争获得生成新区块的权利。节点在竞争获胜后就获得记账权,它生成区块成为最新区块后,就获得与新区块对应的挖矿奖励。
工作量证明也是区块链账本的安全机制。如果不重做“工作量证明”所需的大量计算则此链条不可修改,这一共识机制保证了区块链上的数据的可靠性。

4、最长链原则
在任何时刻,最长的链条是所有人都接受的最终记录。
由于最长链是由网络中的主要算力完成的,因而只要它们不都与攻击者合作,那么它们生成的最长链就是可信的。这个原则被称为“最长链原则”。

5、去中心网络
比特币的去中心网络的架构非常简洁,本身需要的基础设施很少。它可以在互联网网络上运行。计算机节点可以随时离开或加入这个去中心网络,在加入时它们只需遵守最长链原则即可。

关键词: 区块链
登录 账号发表你的看法,还没有账号?立即免费 注册