zoukankan      html  css  js  c++  java
  • 初识区块链

    面对如火如荼的区块链,一大批 “比特币”、“挖矿”、“账本”、“矿工”、“以太坊”等名词叫的火热,都是什么意思、有什么联系,下面来看一下吧!

    什么是区块链?

    区块链是一个分布式的共享账本数据库,存储于其中的数据或信息,具有去中心化、不可篡改等特点。 

    将数据加密,存放在区块中,保证这些数据无法篡改,区块链系统会检验期间产生的所有数据,比如交易记录以及该区块何时被编辑或创建的记录等,并将这些数据储存在一个新的区块上。这个区块会与前一个区块连接,每个区块都必须包含前一区块的相关信息才能生效,从而形成一根链条,因此称为“区块链”。

    区块链本质上是一个去中心化的数据库,传统的数据库是需要有人维护的,即中心化,区块链无需第三方参与维护。

    能允许用户在无第三方中介参与的情况下进行协作,且不必彼此信任,且区块中的数据是无法篡改的。

    用户若要运行和独立验证区块链的状态,必须下载特定的钱包软件。软件启动后,便会接入区块链网络中的其他计算设备,目的是上传或下载信息(例如,交易、区块)。软件将会下载一个个区块数据,检查它的真实性,然后将检验过的相关信息广播传递给其他计算设备。

    于是,我们得到了由成百上千、甚至是上万个计算设备组成的区块链生态系统。这些计算设备被称为“节点”,全部运行同一个软件,并同时彼此同步更新、广播交易数据,实现了区块链的数据真实而去中心化的特性。

    结构

    数据是存储在一个一个的区块中,一个区块分为区块头和区块体

    区块头:上一个区块的hash值和本区块的hash值、时间戳等

    区块体:存储的数据,例如交易信息、比特币等

    分类

    区块链大致可分为:公有链、私有链、联盟链

    1、公有链:所有的数据公开透明、所有人可以参与(访问、交易、验证)

    缺点可能包括:绝大部分公链系统需要较高的硬件资源来保障安全性,交易的隐私性极低或根本没有隐私性可言。而这些又是区块链企业用例的重要考虑因素。

    2、联盟链:参与的节点是事先选好的,数据可以公开也可以是内部的

    多个组织可以分担维护区块链的责任,这些预先选定的组织将决定谁可以提交交易或访问数据。

    3、私有链:参与的节点有所限制,且所有权归参与者所有 ,数据可以修改,和传统的数据库很像

    私有链的整个网络由一个组织管理,该组织有完全的权限来控制允许谁参与、维护区块链网络。根据使用情况,可以显著提高参与者之间的信任和信心。私有区块链可以在企业防火墙后面运行,甚至可以在企业内部托管。

    特点

    优点:

    1、去中心化

    2、集体维护

    3、高安全性

    4、无需信任

    缺点:

    1、安全性(私钥丢失、量子破解)

    2、延迟性(交易会有延迟)

    3、监管(国家需要监管)

    区块链如何解决拜占庭将军问题?

    拜占庭将军问题:

    拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了达到防御目的,每个军队都分隔很远,将军与将军之间只能靠信差传消息。在战争的时候,拜占庭军队内所有将军和副官必须达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序。在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。

    总结一下问题:

    1、如何防止叛徒冒充将军发布军令?

    2、如何保证忠诚将军发布的军令是一致性的?

    下面引入区块链:

    将军抽象成节点、传输的军令抽象成交易信息

    转成区块链中的问题:

    1、如何防止恶意节点冒充诚实节点?

    使用非对称加密,将用私钥加密交易信息,传播给其他诚实节点,恶意节点无法获取私钥解密,保证消息无法篡改。

    2、如何保证所有节点记录的交易信息是一致的?

    规定每隔一段时间打包一次交易信息(工作量最多的节点的打包的数据为准)

    共识机制

    什么是比特币?

    比特币是区块链的一种应用。

    比特币的交易信息被记录在一个去中心化的账本(区块链)上,账本中有一页(区块)一页的 交易信息,每十分钟生成一页新的账本信息(交易信息)

    比特币这种新型的货币模式和传统的模式有几点不同,首先它不是有一个中央机构发行的,其次他的总量恒定 2100万枚永不超发,再者比特币所有的交易都是记录在一个公共账本当中,这样所有人都可以查看,所有人都可以参与记账,这样既保证了整个系统的公开透明,又保证了货币不会因为滥发而导致的贬值。

    在用户看来,比特币就是一个手机APP或电脑程序、一个比特币钱包,用户可以用来支付和接收比特币。

    和传态货币的不同?

    1、没有管理机构

    2、必须用电子方式结算

    如何获取比特币?

    1、在一个比特币交易所购买比特币

    2、和你附近的人兑换比特币

    3、通过挖矿获取比特币  

    挖矿?

    上面说到比特币的所有交易记录在一个账本(区块链)中,这份账本包含了每一笔处理过的交易,使得用户的电脑可以核实每一笔交易的有效性,每一笔交易的真实性由发送地址对应的私钥保护。

    任何人都可以利用专门计算设备来处理、记录交易并获得比特币奖励。这一服务经常被称作“挖矿”。通过挖矿,调动了挖矿者(矿工)的积极性,还保证了交易的确认速度、交易记录的正确性及比特币网络的安全性。

    UTXO模型?

    参考:【区块链探索笔记十一】:UTXO

    unspent transaction output

    点对点的现金交易系统(面额)

    小明收到了1个币和0.5个币,总数为1.5个币(两条记录-两张币),现在小明想买小花的衣服,需要花0.8个币,系统自动转出1个币(对方地址),自动找回0.2个币(原来地址新建一个地址)

    优点:

    1、保护隐私

    2、数据模型小

    3、高并发处理(多个转账可以同时进行)

    账户模型:支付宝、微信用的

    如何交易?

    转载:深入浅出比特币交易 (transaction)


    如果你接触比特币够久,你一定听说过比特币是个区块链,一个区块里包含很多交易,而交易都是链在一起的。那么,具体交易的细节如何?通常的技术文档都充满了术语,即使是中本聪的白皮书也难以直接联系实际,我最近又仔细研究了一下,这里用一种简单的比喻来解释下
    比方说你的钱包里有三个地址A,B,C。你在地址A有1个币,你在钱包软件里把币发送到地址B,可以在区块链上查到这笔交易,不妨叫做交易甲。然后你又做了一笔交易乙,把币从地址B发到地址C。假设手续费是0.0001个币,每次发送你都花了0.0001个币作为手续费,那交易甲被确认后地址B就是0.9999个币,而交易乙被确认后地址C里就是0.9998个币
    交易甲:地址A 1BTC -> 地址B 0.9999 BTC, 手续费 0.0001
    交易乙:地址B 0.9999BTC -> 地址C 0.9998 BTC,手续费 0.0001

    用账簿的比喻最好理解
    账簿就是区块链,账簿的每页纸就是区块,这些纸依次装订在一起形成了一整个账簿。每页纸上贴满了一条又一条的汇款单(交易)
    如果仔细观察汇款单交易乙(把0.9998个币从地址B转到地址C,并付0.0001手续费),你会发现交易乙是由两大部分组成,前一部分可称为付款信息(input),后一部分可称为收款信息(output)
    按一般在银行填汇款单的习惯,付款信息里该填支出账户名(也就是地址B)和账户所有人签名(授权交易),而收款信息里应该填金额和收款方账户名(也就是地址C)。事实上,比特币交易也大致是这么写的,只有细微差别

    交易甲
    付款信息:  签名 + 公钥A  (签名相当于盖章,是用地址A的私章(私钥)产生,而地址A的公钥可用于让其他人验证这个章是否有效 (私钥公钥加密原理到处都有))
    收款信息:  0.9999 (金额) + 地址B + 兑现条件 (这里的兑现条件注明了未来要花地址B的币需要满足何种条件,下面有详述)

    交易乙
    付款信息:  签名 + 公钥B
    收款信息:  0.9998 + 地址C + 兑现条件

    交易丙
    付款信息:  签名 + 公钥C
    收款信息:  0.9997 + 地址D + 兑现条件

    有几点和银行汇款单不同的地方

    第一,每个汇款单都是花前一个汇款单的收款地址里的币,这样所有交易就一个个链结在一起,而如果要彻底核实某笔交易丙是否有效,就要顺着这个链一直回溯到最原始的挖矿产出交易(在交易甲之前还有别的交易),这样保证了只要用户有区块链的完整拷贝(也就是目前全节点的那60G数据),就可以独立验证任何一笔交易的有效性

    第二,每次汇款只能完全将支出账户里所有的币都花掉。以交易乙为例,汇款完成后原来的地址B就空了。如果只想转一半的资金到地址C,剩下的那一半就要在收款信息里另外填一个账户地址E,也就是所谓的找零地址

    第三,总汇款金额小于地址B的部分就是手续费。如果地址B里有0.9999个币,汇款到地址C的金额是0.9998个币,那中间的差额0.0001就是矿工的手续费

    第四,验证交易乙是否有效,是靠上一个交易即交易甲的收款信息中的兑现条件来保证的。可以有多种规则,目前最常见的两种就是提供收款地址的签名 (P2PKH)以及提供一段程序的哈希值(P2SH,这个涉及到哈希,一种防伪的手段)

    如果你完全看懂了,那你对比特币交易的功能理解,就接近于core程序员的水平了,以后碰到很多名词如scriptSig (签名+公钥) 和scriptPubKey(兑现规则)之类你就很容易知道那都是汇款单上的哪个部分了


    闪电网络?

    闪电网络是构建在比特币网络上的第二层支付协议,用来解决比特币网络堵塞问题,其理念是,在区块链之外开通一条“绿色通道”,将大量高频的、小额的交易在区块链外进行。

    如此,交易双方可在这条“绿色通道”上进行多次、高频、双向地、点对点的交易,可实现瞬间确认的微支付,而且双方若无直接的点对点支付通道,只要闪电网络中存在一条连通双方的、由多个支付通道构成的支付路径,那么也可以利用这条支付路径实现交易。

    闪电网络能够提高加密货币每秒的交易数量,同时保持较低的转账费用。

    什么是以太坊?

    以太坊(Ethereum) 类似于区块链版的安卓、iOS系统,一个区块链APP平台,是一个为去中心化应用(DApp)而生的全球开源平台。

    就是区块链的一个实际的应用,升级版的区块链。

    以太坊是去中心化的、可以运行可转移计算和数据的自洽经济系统,一个去中心化的区块链平台,用于构建去中心化应用程序(DApp),以太币(Ether)是该平台所使用的加密货币。    

    以太坊可以轻松创建智能合约,自行执行代码,开发人员可以利用这些代码来处理各种应用程序。

    以太坊几乎可以用于任何类型的交易或协议,其成本比传统的替代方案要低,例如银行卡支付,PayPal 和投票等,并且全程采用去中心化、去信任(无需中介)、安全有效并且抗审查的形式。

    通过以太坊,用户可以创建任何去中心化应用程序(即DApp)和智能合约。

    用户只需要通过互联网就能够以去信任化的方式访问应用程序、产品和服务。每一个人都可以与以太坊网络进行交互,亲自参与到这种数字经济形式中,而不需要第三方。

    人们可以使用智能合约来为项目众筹资金、公司可以在区块链上运用智能合约进行股票发行、银行等金融机构可以用它来管理贷款收发、保险公司可以用它来实现自动理赔等等等等,甚至任何现实金融交易都可以被改造到区块链上进行,这些都是区块链的功劳。

    以太坊没有中心服务器,所以在以太坊上运行的APP不存在崩溃、死机的可能,数据也不会泄露,甚至不能被关闭

    和比特币的区别?

    以太坊节点存储着每个智能合约的最新状态,对于每个以太坊应用程序,网络都需要跟踪“状态”或所有这些应用程序的当前信息,包括每个用户的余额、所有智能合约代码以及它们的存储位置等。

    以太坊也采用POW机制,通过矿工挖矿来产生新的以太坊。不同的是,以太坊是一个可以编程的区块链,它允许任何人在上面创建去中心化的APP、编写智能合约和发行属于自己的数字货币。

    相比比特币,以太坊添加了新的功能:包括虚拟机(EVM, Etheruem Virtual Machine)、账户系统,在其上可以运行智能合约。

    以太坊用户可以将以太坊储存在以太坊钱包中,也可以与以太坊网络上的智能合约进行交互。钱包是一种应用程序,可以便捷地保存和传送 ETH,同时可以通过钱包与以太坊上构建的应用程序进行交互。

    以太坊网络中发生的每笔交易都需要一定数量的gas,gas是用于度量处理交易所需计算能力的单位。帮助验证信息真实下要付出算力成本处理交易并将其打包在区块中,理应获得相应的补偿,在以太坊系统中,这就要通过在每次交易中设定gas价格来完成,gas以Gwei(1 ETH = 1,000,000,000 Gwei)作为单位。

    举个例子:用户将ETH从一个帐户发送到另一个帐户需要花费21,000 gas,如果将gas价格定为1 Gwei,则此交易花费0.000021 ETH。

    什么是智能合约?

    根据区块链可编程的特点,人们可以将合同变成代码的形式放到区块链上,并在约定的条件下自动执行, 这就是所谓的智能合约。

    简单地认为,智能合约就是一种“ 程序”, 只是这种“ 程序”处理的是人与人之间的权利和义务的约定。

    当满足某些条件时,它则执行特定任务。因此,智能合约系统通常遵循“if ... then ...”语句,但是,即便智能合约成为一种主流的技术,但智能合约既不是法定的也不是智能化的,它们只是在分布式系统(区块链)上运行的一段代码

    参考:链节点

    作者: Pam

    出处: https://www.cnblogs.com/pam-sh/>

    关于作者:网安在读

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(mir_soh@163.com)咨询.

  • 相关阅读:
    SGU 176.Flow construction (有上下界的最大流)
    POJ 2391.Ombrophobic Bovines (最大流)
    poj 1087.A Plug for UNIX (最大流)
    poj 1273.PIG (最大流)
    POJ 2112.Optimal Milking (最大流)
    SGU 196.Matrix Multiplication
    SGU 195. New Year Bonus Grant
    关于multicycle path
    ppt做gif动图
    codeforces 598A Tricky Sum
  • 原文地址:https://www.cnblogs.com/pam-sh/p/15670644.html
Copyright © 2011-2022 走看看