zoukankan      html  css  js  c++  java
  • 区块链技术--比特币

    比特币(BTC):是一种数字货币,去中心化(P2P网络),加密解密技术,区块链分布式记账(公开、透明、可追溯特点)等技术实现

    比特币怎么产生的呢?挖矿产生的。

    挖矿公式:HASH(已知数(上一个区块的hash值)+ 未知数(随机产生))  > 比特币规定难度系数

    挖矿流程:当矿工在经过多次算力后满足上面公式之后,就认为他挖矿成功了,他会基于在上一个区块后新生成一个区块,然后打包广播给其他节点,让其他节点从自己这个新生产的区块重新开始挖矿。

    那么其他节点怎么判断这个广播区块是不是这个链上的呢?他们可以拿到新生产区块的未知数和上一个区块的hash值带入上面的公式可以进行验证。

    怎么保证矿工新生成的区块是安全的呢?每个区块都是用公钥加密的,只有矿工的密钥才能解密。

    理论上只要一个的算力足够强大就可以更改区块链路,因为每个矿工用自己的算力投票的结果,理性的矿工会投票给最可能成为最长链的区块。

    举例说明:

    0-->1-->2-->3-->4

    比如上面这个区块链发展到第4个区块的时候,这时候同时有两个矿工(A,B)挖到比特币了,然后进行新生产区块并打包发布,A发给他的邻近节点的矿工,B发给他邻近的节点的矿工,他们邻近节点都认为当前的这个链路是最长链的区块,后面他们就按照自认为最长的链进行挖矿,就导致了下面这种硬分块的情况:

    0-->1-->2-->3-->4-->5(A)-->6-->7-->8

    0-->1-->2-->3-->4-->5(B)-->6

    经过一段时间后,B这条链都不被其他矿工认可了,因为他们发现还有更长的链,都放弃B这条链了,选择从A这个链上开始挖矿。

    但是只要A的算力强大,他一直坚持自己的这条链,总有一个时刻自己会成为最长的链。所有只要所有的矿工一起从某个链开始挖矿,是可以很轻松摧毁比特币的。

  • 相关阅读:
    vue——项目技术储备
    Framework7—— 混合开发
    CSS——常见的问题
    Vue——常见问题
    Vue——使用 watch 注意项
    Node——微服务架构(二)
    C——基本词汇
    Go——空接口与断言
    Node——PM2
    Vue——组件异步加载与路由懒加载
  • 原文地址:https://www.cnblogs.com/xubiao/p/8521017.html
Copyright © 2011-2022 走看看