初识区块链

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

什么是区块链?

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

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

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

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

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

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

结构

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

区块头:上一个区块的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)咨询.

原文地址:https://www.cnblogs.com/pam-sh/p/15670644.html