1026 区块链

区块链

  1. 去中心化

    1. 区块链技术的颠覆性特点,实现了一种点对点的直接交互,使得高效率、大规模、无中心化处理的信息交互成为了现实。
    2. 会出现两个问题:
      • 类两军问题:(TCP,Transmission Control Protocol中有提到)
      • 拜占庭将军问题或者“拜占庭容错”(BFT):有一些节点是坏掉的,可能向外界广播错误的信息或者不广播信息
  2. 我们将计算机节点从地底下挖出区块的过程叫做挖矿(工作量巨大,运气成分较多,但收益丰富的事)

  3. 陌生节点彼此不信任,会校验挖出的区块(副本)真假性

  4. 各个节点对挖出区块的节点认同的表现:

    1. 停止已经停止进行了一半甚至99.99%的挖矿进程

    2. 将该节点成功挖出的区块(副本)追加到自己区块链的末尾:

      (区块是周期性不断的产生和不断的被挖出来,一个计算机节点可能市县已经执行了N次”从别人手上拿过区块—>校验小纸条有效性“的流程,肯定自己的节点上早已经存放了N个区块,这些区块会按照时间顺序整齐的一字排列成为一个链状<区块链>。)

  5. 在去中心化的网络中,通过建立交易链和通过交易链上的可塑源性间接保证数据安全和有效

  6. 两个知识点:

    1. SHA256()函数:任意长度的字符串、甚至文件体本身经过SHA256函数工厂的加工,都会输出一个固定长度的字符串;同时,输入的字符串或者文件稍微做一丢丢的改动,SHA256()函数给出的输出结果都将发生翻天覆地的改变。

      篡改过的数据完全不可能通过哈希校验。

      SHA256()函数是公开的,任何人都可以使用

    2. 非对称加密:任何人手里都有两把钥匙,其中一把只有自己知道,叫做“私钥”,以及一把可以公布于众,叫做“公钥”;通过私钥加密的信息,必须通过公钥才能解密,连自己的私钥也无解。公钥可以通过私钥生成多把。

  7. 区块链:(最大特点是所有上链的数据必须通过所有节点的验证)

    1. 区块链是一个放在非安全环境中的分布式数据库(系统)

      有一个中心服务器或者节点的,不是区块链

      节点都是安全的,无恶意的,不是区块链

    2. 区块链采用密码学的方法来保证已有数据不可能被篡改

      1. 密码学哈希函数(用于验证信息完整性)

        一个函数Y=H(X),有如下性质:

        • 有X可以很容易算出Y;
        • 有Y不可能算出X;
        • 有Y不可能找到另一个X’使得H(X’)=Y;
        • 如果X和X’相差很小,H(X)和H(X’)则完全不相关。
      2. 非对称加密(加密信息,身份验证)

        区块链的实现:

        ​ 交易(数据)写在区块里

        • 第一个区块:创世区块,写啥都行。

        • 从第二个区块开始,每个区块的第一部分都有前一区块的哈希值。此外,区块里的每一笔交易(数据)都有发起人的数字签名来保证真实性和合法性。于是,先前区块里的任何数据都不可被篡改。

        • 这个数据库并不是静止的啊。

          数据库的数据是会增加的,而每次增加的数据,就是一个区块,于是这些生成时间不同的区块,就以这种形式链在一起了。

    3. 区块链采用共识算法来对于新增数据达成共识

      共识算法目的:让所有节点对于新增区块达成共识

      BFT:恶意节点可以做一些别的事来阻止整个系统达成共识。

      • BFT共识模型:恶意节点可以干任何事情

        节点的数量和身份都必须是已知的

        恶意节点不能超过总数的1/3

      • 比特币共识模型:模型中有公认的“价值”,每个节点说话都需要一定代价,诚实节点会受到奖励,而恶意节点由于只付出代价而收不到奖励,变相受到了惩罚。

        任何人随时都可以加入,不需要预先在网络里注册自己的身份

        假定大部分节点都是理性的,是逐利的,也就是会采用最佳的策略来赚取最大的价值

        私自挖矿这种行为在比特币共识里是允许的

      BFT共识模型其实涵盖了比特币共识模型的场景,比特币共识其实放宽了BFT共识模型的限制。

      • 公有链(BFT算法没法应用于大量节点,所以用BFT算法的就没法做公有链):以比特币、以太坊和所有虚拟货币为代表,都采用比特币共识,共识算法基本上采用工作证明机制(挖矿)
      • 私有链和联盟链(比特币共识得有个价值体系,这东西去做私有链联盟链就很不靠谱,因为一个单纯逐利的人的假设还算靠谱,但是如果对象是公司的话,公司的利益就太复杂了,不能简单认为他们只追逐区块链上那点价值):BFT共识
  8. 应用:

    1. 央行数字货币:(区块链目的是去中心化,央行数字货币用不到)

      可能会在某些环节采用区块链技术去中心化(货币的发行仍旧是中心化的,但是流转中的管理和验证可以通过区块链技术去中心化到其他银行)

    2. 全球计算机:用“智能合约”来编写在这台全球计算机上运行的软件(又被称为Dapp,即去中心化应用)

      可以把一切想要“去掉中间商赚差价”的事情全部搬到这上面来做,而不需要依赖某个大企业作为可信中心。

    3. 不可篡改:(区块链的特点,以及它在存证、溯源、防伪、征信等方面的作用)

      目前在落地上做的最成熟,也是最能够实打实得看出来区块链对于传统中心化系统优势的应用

  9. 区块链的核心技术:(前三者可以认为是底层,后两者是上层)

    1. 共识算法(区块链最核心)

      大量的公链项目都追求共识算法的创新

      • 有许可共识算法:要求所有参与节点的身份已知,主要采用累BFT算法;多用于联盟链
      • 无许可共识算法:允许任何节点只要达到某些条件就能进入,无需事先在任何系统中注册身份;多用于公有链
      • 激励机制(比特币的挖矿)
    2. 衍生方向(ASIC矿机,链上治理,加密经济学等等)

      隐私保护技术和相应密码学技术

      哈希函数和数字签名

      隐私保护技术:可能会用到零知识证明、同态加密

      零知识证明:局限性:效率

    3. 智能合约相关技术

      • 以太坊式的,高度自由的图灵完备的系统。然而问题是,写程序太容易出错了,而且出错的代价太大。
      • Hyperledger-fabric式的,高度模块化的系统,然而,极度复杂,复杂到想要采用HF的公司,要么放弃,要么花钱请IBM的人帮他们做。
      • Libra式的,专注于某项应用的系统,例如libra的move语言就明白地说了,我们不追求图灵完备,我们的目标是做一个更方便于实现各种金融场景的语言——这可能是个趋势,但是还没有经过足够的检验。
    4. 面向应用相关技术

      区块链目前落地最大的难点,在于其相比传统的中心化方案,除了在存证,溯源方面的一些场景下,找不到明显的优势,也就找不到可行的商业模式。

Guess you like

Origin blog.csdn.net/sssurprise/article/details/109399605