码迷,mamicode.com
首页 > 其他好文 > 详细

初识区块链

时间:2018-09-07 01:02:39      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:算法   资产   性能   .so   安全协议   ash   key   mini   自动   

微博上关注的响马的微博,看他们8月发布的fibos项目看评价貌似很有前景,买币还要写fibjs代码,觉得挺新奇的。看官网介绍,一堆概念搞不清楚,想着了解一下一直在论坛和社交媒体上讨论得如火如荼的区块链技术,这是背景(在mac上装了下fibos,执行起来就报错了,也不懂fibjs,有些依赖关系搞不清楚,第一次买币冲动,卒orz)

术语

区块链技术(Block Chain)是指通过去中心化的方式集体维护一个可靠数据库的技术方案。该技术方案主要让区块(Block)通过密码学方法相关联起来,每个数据块包含了一定时间内的系统全部数据信息,并且生成数字签名以验证信息的有效性并链接到下一个数据块形成一条主链(Chain)。

区块(Block)是区块链中的一条记录,包含并确认待处理的交易。

挖矿(Mining)指通过计算形成新的区块,是交易的支持者利用自身的计算机硬件为网络做数学计算进行交易确认和提高安全性的过程。以比特币为例:交易支持者(矿工)在电脑上运行比特币软件不断计算软件提供的复杂的密码学问题来保证交易的进行。作为对他们服务的奖励,矿工可以得到他们所确认的交易中包含的手续费,以及新创建的比特币。

对等式网络(Peer-to-Peer Network)是指通过允许单个节点与其他节点直接交互,从而实现整个系统像有组织的集体一样运作的系统。以比特币为例:网络以这样一种方式构建——每个用户都在传播其他用户的交易。而且重要的是,不需要银行或其他金融机构作为第三方。

哈希散列(Hash)是密码学里的经典技术,把任意长度的输入通过哈希算法,变换成固定长度的由字母和数字组成的输出。

数字签名(Digital Signature)是一个让人可以证明所有权的数学机制。

私钥(Private Key)是一个证明你有权从一个特定的钱包消费电子货币的保密数据块,是通过数字签名来实现的 。

双重消费指用户试图非法将电子货币同时支付给两个不同的收款人,是电子货币的最大风险之一。

区块链的起源:一种支持比特币运行的底层技术
区块链的概念首次在2008年末由中本聪(Satoshi Nakamoto)发表在比特币论坛中的论文《Bitcoin: A Peer-to-Peer Electronic Cash System》提出。论文中区块链技术是构建比特币数据结构与交易信息加密传输的基础技术,该技术实现了比特币的挖矿与交易。

作为一种基于开源软件和建构上的P2P网络,在和货币相关的例如交易支付等领域,相比传统网络的支持方式,区块链可以为这些领域带来多种优秀特点。这些优点包括:去中心化、无须信任系统、去中介化、不可篡改、加密安全性。这些优点的叠加可以解决两个长期存在于加密数字货币行业的问题:“双花”问题和“拜占庭”将军问题。

去中心化:区块链是一个由各矿工节点记账维持,并储存在全球范围内各个去中心化节点的公开账本,因为每个节点和矿工都必须遵循同一记账交易规则,而该规则基于密码算法而非信用,同时每笔交易需要网络内其他用户的批准,所以不需要一套第三方中介结构(比如说银行)或信任机构背书。在传统的中心化网络中,对一个中心节点(例如支付中介第三方)实行有效攻击即可破坏整个系统,而在一个去中心化的例如区块链的网络中,攻击单个节点无法控制或破坏整个网络,掌握网内50%的节点只是获得控制权的开始而已。

无须信任系统:区块链网络中,通过算法的自我约束,任何恶意欺骗系统的行为都会遭到其他节点的排斥和抑制,因此其不依赖中央权威机构支撑和信用背书。传统的信用背书网络系统中,参与人需要对于中央机构足够信任,随着参与网络人数增加,系统的安全性下降。与之相反,区块链网络中,参与人不需要对任何人信任,但随着参与节点增加,系统的安全性反而增加,同时数据内容可以做到完全公开。不可篡改和加密安全性:区块链采取单向哈希算法,同时每个新产生的区块严格按照时间线形顺序推进,时间的不可逆性导致任何试图入侵篡改区块链内数据信息的行为很容易被追溯,导致被其他节点的排斥,从而限制了相关不法行为的产生和施行。

“双花”问题:加密数字货币和其他数字资产一样,如同可以将一个文件以附件形式保存并发送任意多次,具有无限可复制性的缺陷。如果没有一个中心化的机构,我们无法确认一笔数字现金或资产是否已经被花掉或提取。为了解决“双花”问题,可以信赖的第三方需要保留交易总帐从而保证每笔现金或资产只被花费或提取过一次。在区块链中,每一个区块都包含了上一个区块的哈希值,从创始区块开始连接到当前区块从而形成块链。每一个区块都要确保按照时间顺序在上个区块之后产生,否则前一个区块的哈希值是未知的。同时,由于区块链中所有交易都要进行对外广播,所以只有当包含在最新区块中的所有交易都是独一无二且之前从未发生过,其他节点才会认可该区块。因此在区块链中,“双花”变的非常困难。

“拜占庭将军”问题:拜占庭问题的核心问题是当战场上多个将军互相并不信任彼此(存在叛徒)时,互相相隔甚远无法碰头,但却要保证进攻时间一致,所以某种分布式远程协调沟通机制尤为重要。如果每个将军向其他九个将军派出一名信使,也就是10 个将军每个派出了9 名信使,即为总计90 次的传输,每个将军会分别收到9 条信息,可能每一封都附着不同的进攻时间。此外,部分将军会答应超过一个的攻击时间,故意背叛发起人,所以他们将重新广播超过一条的信息链。这个系统迅速变成不可靠信息和攻击时间相互矛盾的混合体。区块链通过为发送信息加入了成本,也就是基于计算一个随机哈希算法得到遗传64 位的随机数字和字母组成的字符串的“工作量证明”,并加入了一个随机元素以保证在一个时间只有一个将军可以进行广播,解决了这个问题。


区块链的原理:去中心化的分布式记账系统

区块链技术的核心是所有当前参与的节点共同维护交易及数据库,它使交易基于密码学原理而不基于信任,使得任何达成一致的双方,能够直接进行支付交易,不需第三方的参与。

从技术上来讲,区块是一种记录交易的数据结构,反映了一笔交易的资金流向。系统中已经达成的交易的区块连接在一起形成了一条主链,所有参与计算的节点都记录了主链或主链的一部分。

一个区块包含以下三部分:交易信息、前一个区块形成的哈希散列、随机数。

交易信息是区块所承载的任务数据,具体包括交易双方的私钥、交易的数量、电子货币的数字签名等;前一个区块形成的哈希散列用来将区块连接起来,实现过往交易的顺序排列;随机数是交易达成的核心,所有矿工节点竞争计算随机数的答案,最快得到答案的节点生成一个新的区块,并广播到所有节点进行更新,如此完成一笔交易。

比特币(BitCoin)的概念最初由中本聪在2009年提出,根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的数字货币。点对点的传输意味着一个去中心化的支付系统。
与大多数货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。这同样确保了货币所有权与流通交易的匿名性。比特币与其他虚拟货币最大的不同,是其总数量非常有限,具有极强的稀缺性。该货币系统曾在4年内只有不超过1050万个,之后的总数量将被永久限制在2100万个。
¥47,050-2.51%
24H最高¥48,137
24H最低¥46,710
≈$6,874 ≈1BTC

Ethereum(以太坊)是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用。 Ethereum可以用来编程,分散,担保和交易任何事物:投票,域名,金融交易所,众筹,公司管理, 合同和大部分的协议,知识产权,还有得益于硬件集成的智能资产。

以太坊将使用混合型的安全协议,前期使用工作量证明机制(POW),用于分发以太币,然后会切换到权益证明机制(POS)。自上线时起,每年都将有0.26x,即每年有60102216 * 0.26 = 15626576个以太币被矿工挖出。转成POS后,每年产出的以太币将减少
¥1,909-4.66%
24H最高¥1,996
24H最低¥1,891
≈$279 ≈0.0405BTC

EOS 为区块链奇才 BM (Daniel Larimer)领导开发的类似操作系统的区块链架构平台,旨在实现分布式应用的性能扩展。EOS 提供帐户,身份验证,数据库,异步通信以及在数以百计的CPU或群集上的程序调度。该技术的最终形式是一个区块链体系架构,该区块链每秒可以支持数百万个交易,同时普通用户无需支付使用费用。¥40.7-2.38%
24H最高¥43.07
24H最低¥39.62
≈$5.95 ≈0.000865BTC

概念

Cryptocurrency、token(加密数字货币、代币)更应被译为“通证”。

本文定义:通证(token)是基于区块链技术、以密码学为基础、以数字形式存在,可流通可编程的代码。通证包含了BTC、类BTC与ETH、EOS等图灵完备的区块链资产。

智能合约是代码和数据的集合,寄存与Blockchain的具体的地址。智能合约更想是在Blockchain中的一个自动化的代理(或者说是机器人or NPC),智能合约有自己的账户,在时间或事件的驱动下能自动执行一些功能,如可以在相互之间传递信息,修改区块链的状态(账户信息等),以及图灵完备计算(可以用图灵机做到的所有事情,通俗来说就是一般编程语言可以做的所有事情)。以太坊的智能合约是以太坊特定的字节码,被叫做EVM字节码。

以太坊社区把基于智能合约的应用称为去中心化的应用程序(Decentralized App)。DApp的目标是(或者应该是)让你的智能合约有一个友好的界面,外加一些额外的东西,例如IPFS(可以存储和读取数据的去中心化网络,不是出自以太坊团队但有类似的精神)。DApp可以跑在一台能与以太坊节点交互的中心化服务器上,也可以跑在任意一个以太坊平等节点上。(花一分钟思考一下:与一般的网站不同,DApp不能跑在普通的服务器上。他们需要提交交易到区块链并且从区块链而不是中心化数据库读取重要数据。相对于典型的用户登录系统,用户有可能被表示成一个钱包地址而其它用户数据保存在本地。许多事情都会与目前的web应用有不同架构。)

DApp流程:

用Solidity(或其他语言)编写智能合约(后缀为.sol)
用solc编译器将.sol合约编译成EVM字节码
编译好的字节码回送给dapp前端
前端将编译好的智能合约部署到区块链中
区块链返回智能合约地址+ABI(合约接口的二进制表示。合约接口用JSON表示,包括变量,事件和可以调用的方法)
前端通过Address+ABI+nonce,调用智能合约。智能合约开始处理。

初识区块链

标签:算法   资产   性能   .so   安全协议   ash   key   mini   自动   

原文地址:https://www.cnblogs.com/xdargs/p/9602044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!