zoukankan      html  css  js  c++  java
  • 区块链|学习笔记(四)

    本章将介绍区块链和加密货币的相关专业名词。

    IPO(首次公开募股,Initial Public Offerings):

    交易的是股票,公司依靠IPO筹得了资金,资本则获得了公司的股份,是公司股东,拥有合法权益,公司需要对股东负责,总而言之这是合法的事情。

     

    ICO(首次币发行,Initial Coin Offering):

    为了某个目的筹钱发布一些类似于比特币的电子代币给投资者,这并不是股份,因此买了代币也不会有股票权益。但电子代币不用像未上市的股票一样无法交易,它可以立即变现,如果参与人数越多,电子币的交易价格就会越高。

     

    智能合约:

    以太坊最重要的技术贡献就是智能合约。智能合约是存储在区块键上的程序,可以协助和验证合约的谈判和运行。以太坊的智能合约可以数种用图灵完备的编程语言写成。

    纽约时报称以太坊平台是一台由众多用户构成的网络来运转的公用电脑,并用以太币来分配和支付这台电脑的使用权。

    经济学人则说明智能合约可以让众多组织的数据库得以用低廉的成本交互,并且让用户写下精密的合约,功能之一是产生去中心化自治组织,也就是一间只是由以太坊合约构成的虚拟公司。

    因为合约内容公开,合约可以证明其宣称的功能是真实的,例如虚拟赌场可以证明它是公平的。另一方面,合约的公开性也表示如果合约中有漏洞,任何人都可以立刻看到,而修正程序可能会需要一些时间。The DAO就是一个例子,无法即时阻止。

     

    硬分叉:

    官方定义:区块链发生永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点生产的区块,通常硬分叉就会发生。

    抽象定义:硬分叉是指比特币区块格式或交易格式(这就是广泛流传的“共识”)发生改变时,未升级的节点拒绝验证已经升级的节点生产出的区块,不过已经升级的节点可以验证未升级节点生产出的区块,然后大家各自延续自己认为正确的链,所以分成两条链。

    简单来说,如果区块链软件的共识规则被改变,并且这种规则改变无法向前兼容,旧节点无法认可新节点产生的区块,即为硬分叉。

    软分叉:

    简单来说,如果区块链的共识规则改变后,这种改变是向前兼容的,旧节点可以兼容新节点产生的区块,即为软分叉。

     

    侧链:

    简单来说,侧链就是一条将不同的区块链连接在一起的通路。

     

    共识机制:

    • PoW(工作量证明机制,Proof of Work):

      第一代共识机制,比特币的基础。理解起来,就是“按劳取酬”,你付出多少工作量,就会获得多少报酬(比特币等加密货币)。在网络世界里,这里的劳动就是你为网络提供的计算服务(算力x时长),提供这种服务的过程就是“挖矿”。

    • PoS(股权证明机制,Proof of Stake):

      这是点点币(PPC)的创新。没有挖矿过程,在创世区块内写明了股权分配比例,之后通过转让、交易的方式(通常就是IPO),逐渐分散到用户手里,并通过“利息”的方式新增货币,实现对节点的奖励。

    • DPoS(授权股权证明机制,Delegated Proof of Stake):

      这是比特股(BTS)最先引入的。比特股首次提出了去中心化自治公司(DACs)的理念。比特股的目的就是用于发布DACs。这些无人控制的公司发行股份,产生利润,并将利润分配给股东。实现这一切不需要信任任何人,因为每件事都是被硬编码到软件中的。通俗点讲就是:比特股创造可以盈利的公司(股份制),股东持有这些公司的股份,公司为股东产生回报,无需挖矿。

      对于PoS机制的加密货币,每个节点都可以创建区块,并按照个人的持股比例获得“利息”。DPoS是由被社区选举的可信帐户(受托人,得票数排行前101位)来创建区块。为了成为正式受托人,用户要去社区拉票,获得足够多用户的信任。用户根据自己持有的加密货币数量占总量的百分比来投票。DPoS机制类似于股份制公司,普通股民进不了董事会,要投票选举代表(受托人)代他们做决策。

      这101个受托人可以理解为101个矿池,而这101个矿池彼此的权利是完全相等的。那些握着加密货币的用户可以随时通过投票更换这些代表(矿池),只要他们提供的算力不稳定,计算机宕机、或者试图利用手中的权力作恶,他们将会立刻被愤怒的选民门踢出整个系统,而后备代表可以随时顶上去。

     

    DAPP:

    去中心化APP。

     

    女巫攻击:

    正常情况下,一个实体代表一个节点,一个节点由一个ID标识身份。而女巫攻击者只部署一个实体,但向网络中广播多个身份ID,充当多个不同节点,以此争取更多的网络控制权。一旦用户查询资源的路径经过这些节点,攻击者就可以干扰查询、返回错误结果甚至拒绝回复。

     

    SPV(简单支付验证,Simplified Payment Verification):

    简单来说,SPV让你能够验证你的交易而不用管任何其他人的交易。

    以比特币为例子,目前节点如果存储完整的区块链数据需要有几百G,一般个人终端上无法满足这个量级的存储空间,而且这个数据量还会一直增加,那么针对个人的终端需要一种简单的验证模式,SPV就出现了。

    SPV简单支付验证,在SPV节点不保存全部的区块链数据,只保存区块头的数据,这样的话大小应该是全部数据的千分之一,对整个存储的容量要求就小多了,这种节点一般也称为SPV客户端或者轻量级客户端。存储区块头信息,理解区块链结构的可能了解,这种模式无法验证全部交易,但是能验证支付,所谓验证支付就是通过区块头的Hash信息去验证这笔支付是否被确认,根据区块的深度,获知这个支付是否被支付确认。如果是交易验证,那么就涉及到了很复杂的过程,包括需要知道是否有足够余额,是否存在双花情况、脚本运行情况等,这些交易验证一般都有运行全部区块链数据的节点去验证。

    验证过程:

    当SPV节点收到一个交易请求,其实节点是无法证实对端节点的可靠性的,那么在一个交易发起过程中,一般会包括对端节点的支付UTXO、对端节点的签名、交易金额、SPV节点的地址。SPV节点验证通过支付验证,检查区块头信息来确认发生这个交易的是否在区块链中,并且在当前的区块链系统中有多少区块进行确认。

    1. SPV节点通过getheaders从相邻的全数据节点获得区块头信息(这里涉及一个问题,SPV对特定的几个交易选择读取,无疑会透露钱包地址信息)
    2. 计算当前交易的HASH值。
    3. 用计算后后的HASH值,去比对定位block head,确定是否存在目前的最长一条链接上。
    4. 从区块中获取构建merkle tree 所需的hash值,并计算merkle_root_hash
    5. 计算结果如果一致说明交易真实存在。
    6. 根据block header来确认有多少区块确认交易。

    DAO分布式自治组织,Distributed Autonomous Organization)和DAC(分布式自治机构,Distributed Autonomous Corporation):

    DAO和DAC这两个概念并没有太大的区别,在早期更多地使用DAC概念,而在2016年,越来越多的人开始使用DAO这个术语。

    所谓DAO和DAC,就是通过一系列公开公正的规则,可以在无人干预和管理的情况下自主运行的组织机构。这些规则往往会以开源软件的形式出现,每个人可以通过购买股份或者提供服务的形式获得股份来成为公司的股东。机构的股东将可以分享机构的收益,参与机构成长,并且参与机构的运营。

  • 相关阅读:
    hdu 5387 Clock (模拟)
    CodeForces 300B Coach (并查集)
    hdu 3342 Legal or Not(拓扑排序)
    hdu 3853 LOOPS(概率DP)
    hdu 3076 ssworld VS DDD(概率dp)
    csu 1120 病毒(LICS 最长公共上升子序列)
    csu 1110 RMQ with Shifts (线段树单点更新)
    poj 1458 Common Subsequence(最大公共子序列)
    poj 2456 Aggressive cows (二分)
    HDU 1869 六度分离(floyd)
  • 原文地址:https://www.cnblogs.com/Cchblogs/p/9323611.html
Copyright © 2011-2022 走看看