我对区块链的认识

什么是区块链?

区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。这是工信部指导发布的《中国区块链技术和应用发展白皮书2016》中对区块链技术的定义。首先我们对这个定义做个解读。

  • 它是一种分布式架构和计算范式

计算机技术自70年代诞生以来,从大型机演变为小型机、到个人PC;从区域网到互联网,从单体设备独立计算到网络连接集群计算、分布式计算、云计算,再发展基于互联网络,让千千万万相互不可信赖的计算机联合起来,完成某种目标的计算模式。演进朝向单体设备越来越独立、联合的设备数量越来越大、计算目标越来越明确,依赖于网络让广泛的、异构的设备联合起来的一种计算。区块链就是在这种趋势中诞生,几万台甚至上百万台设备,每台设备对等,相互不可信,将这些设备联合起来,实现一些计算目标,例如数据货币转账、例如资产确权等应用。
我们知道,指令集级别的计算在单一个CPU顺序执行效率最高;次之在同一台计算机的多个线程执行获好的效率;数据访问频度高、计算交互强的应用适应在同一个局域网络内,分散式相互独立的计算适合在互联网中应用。可以看出,计算的协作性要求越高,那么越适合集中计算;协作性要求越低,适合分散式计算。那么区块链这种计算模式适合哪种类型的计算呢? 我认为是那种低交互、少数据访问,而且能产生较高比特价值的应用。

  • 它联合了多种计算机技术的系统
  • 区块链存储数据

首先存储的内容是什么?比特币系统中存储的是每一笔的交易记录(UTXO, Unspent Transaction Output), 以太坊存储的是每个用户的账户与状态、交易记录、智能合约代码;EOS(Enterprise Operation System)把数据存储在代币存储链中(TOK),包括交易记录、用户信息、智能合约代码、文件名称,文件实体存储在IPFS文件系统中。那么,数据是采用什么样的格式存储,也就是装数据的“盒子”是什么?首先是数据块,每个数据块中存储若干条数据,通过链式把这些数据块连接在一起,如比特币;也有按照梅克尔树(Merkle trees)的方式组织区块,以太坊和EOS是按照这种方式组织。还有其他的组织方式,如DAG有向无环图,哈希图等方式,这些都在发展过程中。

  • 数据校验方式

数据存储在不可信的设备中,存在着对数据的伪造、篡改、丢失、错误、不一致等风险。理解有2个方面做校验:1、采用MD5、HASH的方式计算数据摘要,这些算法的特点是输入数据可以很大,输出一个固定长度的结果,固定的输入能够得到固定的输出,而且不可逆,通过这些算法计算得出摘要存储起来,供网络中其他计算机,重新计算做对比验证,确保数据是没有错误、不可伪造、不存在不同计算机存储的数据不一致的问题;2、每个区块块引入数据摘要之间形成关联,后续区块引用前驱区块的摘要,这种结构获得的结果是,随着后续区块的增长,要修改之前的区块里的内容,就要将这些区块后续的那些节点HASH值全部推翻重新计算。如果结合着共识机制,确保了数据的不可篡改特性。

  • 分布式共识算法

我们为什么需要区块链这一技术,其核心的核心是实现不可信的网络、不可信的计算机上,得到一个可信的结果。那么如何让不可信的环境所得到的计算结果可信呢? 共识算法就是解决这个问题而产生的。它主要解决2个问题。其一是在众多的计算机之间,自动确立一个权威,他的记账数据是全网都认可的,验证后存储下来;其二是约定一些规则,例如只在最长的链上增加区块、优先打包给的手续费最高的交易、挖矿奖励规则等等。第一个问题需要进一步解释下,区块链上的节点身份是平等的,不存在那些节点特殊,没有权威节点的存在,也就是说常说的P2P(Peer to Peer)的对等结构。如何将成千上万区块链上的节点,有效的组织起来,形成统一的步调存储一致性的数据,并且还防止节点的恶意欺骗、解决节点的异常掉线问题。在有权威的系统中,这个问题好办,由权威节点发布消息,其他的节点顺从就可以了,而在对等网络中没有权威,那就需要选择一个权威,而且选择的这个权威还往往不能是固定的,动态产生,因为每个节点都是不稳定、存在恶意造假的可能。产生权威的主流方法有工作量证明(POW,Proof of Work),投入的计算能力大,有更高的概率选作为权威,具有记账权利,同时也能获得奖励收益;股权证明(POS, Stake),委托权益证明(DPOS, Delegated Proof of Stake), 实用拜占庭容错算法(PBFT,Practical Byzantine Fault Tolerance),这些算法往往用在一个相对可信计算环境中,其权威节点往往通过轮询、固定方式选择,以一个相对低成本的方式产生。

  • 密码学应用

各种密码技术是区块链的基础,大量应用了对称加密和对称加密技术。为每个账号生成一个非对称密钥对(椭圆曲线加密算法),账号地址往往是通过公钥经过固定算法计算得到,故此账号地址同于公钥,利用是要可以操作该账号转账、查询余额等,在我们打开某个钱包应用的时候输入密码,往往是控制读取私钥时候所需要的钥匙。对称加密算法例如MD5、SHA、DES等密码技术,应用在数据的秘钥文件的存储、私密数据存储、加密传输方面。

  • 智能合约

    其实更应该理解可编程的自动化脚本,智能合约是脚本要达到的结果。在每个运行区块链节点程序中,内置一个虚拟机,可根据实现各项不同逻辑编程,然后上传到节点的虚拟机中运行,例如达到什么条件就转账等等这些逻辑,这就大大的扩展了区块链的应用场景。其实这种不是什么新技术,无论是当下最流行的JAVA、C、PYTHON编程语言等都需要运行环境进行执行,想要性能更高的智能合约执行效率,多参考参考已经发展了几十年的虚拟机技术。在区块链中限定为智能合约,是为了更好的强调侧重合约脚本的专业属性,同时带来了对于脚本逻辑严密性的高要求,因为一旦有漏洞就会造成巨大的经济损失,这就促进了对合约漏洞的安全性检查技术发展,例如自动形式化验证、人工验证等。

理解区块链技术的背后逻辑

区块链是若干技术的一种组合,就象把若干材料搭建起来的一个容器,该容器具有数据一旦写入就不可篡改、在不可信环境形成可信结果、根据条件机器自动执行。这些组合形成了一个技术特征”窄门”,符合这个窄门的应用,那就获得了前所未有的创新,例如发币、转账、交易;例如防伪、溯源、鉴真;例如共享经济、数字资产管理等。
那么,这个窄门是怎么形成的呢?背后的逻辑是什么?

  • 数据不可篡改特征。

    区块链上的设备越多,分布式数据的同步、修改就更加成本就更高。我们在电脑上编辑文件,无论编辑多少次都是件容易实现的事。如果在一个10万台设备构成的分布式环境中,要对这个文件做编辑并同步,保持数据不出错,那将是一件非常不容易的事情。在区块链设计的时候,就放弃对写入的数据做修改的操作,提出对数据一旦写入后就无法篡改,并且通过后继数据块引用前驱数据块数据摘要、区块高度只能单向持续增加、多机器数据验证,进一步强化数据一旦写入区块就无法修改的特点。
    云计算、分布式系统,其设计的目标是将多个设备的计算能力、存储能力、网络能力得到联合,得到能力1+1>1的目标。而区块链的设计目标不是这样的,其设计的能力是1+1=1,无论链上是10万台,还是百万的机器都是这样,每一个智能合约都在每台设备上运执行、每一笔交易都在每台设备上存储。通过构建计算、存储的冗余,得到对数据、网络更好的保护,具有更高容错特性、高安全特性、更高攻破成本。
    说区块链网络是一个价值交换网络,也是基于这两个特征之上,每一个笔交易,都由所有的设备验证和存储,交易一旦写入区块就无法篡改,网络、数据具有非常高强度的安全特性,再引入智能合约的自动脚本技术,价值在区块链网络流转,有着可靠保障。在交换双方主体方面,传统模式是只有直接可信实体、或者间接可信实体才能够实现交易,在区块链网络里,由于交易双方都信赖区块链网络、智能合约是公平公正,这就不需要交易实体间建立可信关系,达到即使是完全不信任双方也交易,大大扩宽的交易范围。 在交易实体方面,任何可以数字化有价值的物体,通过映射代币,都可以实现交易。
    总结说,区块链是价值交换网络量身定制了技术”窄门”方案。

  • - 区块链不只是技术层面

    区块链不只是技术层面的问题,引入激励机制、社区化运营、经济流通系统。为什么要引入这些机制,其逻辑是什么?
    区块链往往采用对等网络模型,每个节点的权利、职责对等,如果是公链,这些节点设备由谁投入,系统运行的带宽、电力费用谁来承担,项目开发人员的收益谁来支付,项目推广的成本怎么摊销。
    这里面首先解决”项目的金主”,就是钱从哪里来? 然后设计一套经济机制,确保整个项目的能够良性运行下去。
    ICO(Initial Coin Offering)方式是公链项目常见的融资方式,通过公示项目目标、内容、计划,发售项目代币(Coin\token),出售项目权益募集资金,面向全球募集,在项目成立之初就把项目完成所需的资金全部募集到。工业革命造就金融市场的繁荣;互联网时期让私募风险投资的兴起;区块链同样也创造了ICO融资方式。ICO方式融资快速、将整个项目按照代币进行权益划分,成千上万的投资者参与投资,一改传统只有机构才能够投资的做法,更加适应区块链项目特点:对等、分散、无中心、匿名。 每种代币都对应着权益,要么是使用权益、要么是投资回报,投资都就需要回报,投入需要变现,这些代币可以在数据货币交易所交易,或者是场外交易,促使了各种交易所蓬勃发展。
    区块链的一种运营方式是社区化运营,由一群对项目充满共识,共同信仰的人聚集在一起,在这个环境中分享、交流、商议、决策、监督项目发展,甚至包括资金都募集在社区中完成,这种组织实现高度的自治,有别于公司制,更能够符合区块链的共识、自由、平等的特征,与区块链共同演进和发展。

  • 激励机制

区块链网络由众多的节点构成,共同维护者网络的安全健壮,这些节点都有由矿工自行投资,那么就需要有一条经济链条能够将矿工的投入产生回报,才能激发矿工的持续投入的积极性。在比特币网络,矿机提供算力,每产生发现一个区块,就提供若干数量的比特币作为奖励,同时获得这个区块交易的手续费。以太坊也是类似的机制,矿工通过投入设备获得的代币,再把代币通过市场交易获得收益,得到投资回报。通过投入计算能力所获得激励的就是常说的POW方式,通过抵押代币所获得利息的这种激励方式就称为POS,通过代币投票权(DPOS)竞选并建设可信节点,获得网络中应用使用费的EOS。这些公链项目的收益方式都是自行投入,获得收益,维持网络的持续运行和投资回报。

[深度分析]我对区块链的认识--概述(一)相关推荐

  1. 文献阅读(44)—— 基于眼底照的近视深度学习算法和区块链平台,以促进人工智能医学研究:回顾性多队列研究

    基于眼底照的近视深度学习算法和区块链平台,以促进人工智能医学研究:回顾性多队列研究 Retinal photograph-based deep learning algorithms for myop ...

  2. 行业深度解读:当区块链遇见汽车后市场

    摘要:我国汽车后市场规模庞大:然而,目前却存在着制约行其发展的痛点问题.造成该局面的主要原因为:市场中信任机制的缺乏与信息不对称为题.而区块链的去中心化.点对点网络.时间戳.不可篡改.共识机制.智能合 ...

  3. 深度好文丨区块链将彻底改变人工智能

    作者简介:Trent McConaghy是人工智能研究人员兼区块链工程师.他是BigchainDB.IPDB.ascribe和Solido等公司的创始人兼首席技术官. 近些年来,大数据已彻底改变了人工 ...

  4. 深度丨AI 与区块链:两大热门技术,会碰撞出什么样的火花?

    编者按:区块链和AI可以说是当今最热门的两个技术方向了.在一般人看来,这两大技术似乎没有什么交叉的地方,因为区块链和AI分别属于是技术谱系的两个极端:一个是在封闭数据平台上培育中心化的智能,另一个则是 ...

  5. 深度解析ILCC:区块链技术如何改善制造业?

    步入2018年以来,区块链技术开始逐步摆脱BTC的光环,作为一种纯粹的技术被应用和研究.目前区块链技术正在由金融领域走向传统制造业领域,包括美的.富士康等企业都开始将区块链技术应用到财务核算. 物流与 ...

  6. kinmall分析百度亮剑区块链能否险中求胜?

    在BAT的长期竞争中,百度的落伍已然是不争的事实.在错过移动互联网的船票后,百度正在尽可能地去把握未来科技竞争的制高点,人工智能是百度关键技术之一,区块链同样也是. 长期以来,百度在区块链方向的投入都 ...

  7. 深度观察:杭州区块链周,中国版的共识大会

    巴比特主编  汤霞玲 杭州区块链周结束86小时后,海明威在<流动的盛宴>的一句话,从我脑中冒出了至少三次: 假如你有幸年轻时在巴黎生活过,那么你此后一生中不论去到哪里,她都与你同在,因为, ...

  8. Comunion 区块链深度学习系列|区块链的发展历程

    打开一切科学的钥匙都毫无异议地是问号,我们大部分的伟大发现都应当归功于如何?而生活的智慧大概就在于逢事都问个为什么? -- 巴尔扎克 之前写过一篇区块链新手学习要有系统性的文章,也有读者获取到了学习视 ...

  9. 干货分享:深度解析如何借助区块链技术解决预付式消费困境

    预付式消费 随着我国经济社会的不断发展,消费者的消费理念及商家的经营方式也逐渐发生改变,预付式消费成为近些年我国经济市场上广泛应用的消费模式. 所谓"预付式消费"是指消费者在商家帐 ...

最新文章

  1. python读文件代码-Python读取表格类型文件代码实例
  2. 写给大数据开发初学者的话
  3. 数据回显---SpringMVC学习笔记(九)
  4. 【空间数据库】ArcSDE 10.7+SQLEXPRESS+ArcServer 10.7.ecp企业级数据库环境搭建
  5. 【经验】Qt项目开发必备工具
  6. 1.9 编程基础之顺序查找 08 白细胞计数 python
  7. 全信考试JAVA_2010年全国信息技术水平考试JAVA样题
  8. for 循环 and while 循环(二)
  9. KnockoutJS(4)-控制文本和外观绑定
  10. python-django rest framework框架之渲染器
  11. Java开发环境搭建实验报告
  12. RemObjects_SDK平台远程处理框架
  13. linux vnc共享时权限设置,用VNC实现远程桌面共享(支持Windows, Linux, ...) - 易水博客...
  14. arcgis导出的图片无效_img影像在arcgis中生成JPG图片空白求解
  15. 浅谈计算机专业的毕业生如何提高自身素质
  16. uniapp 微信小程序开发 图片上传压缩
  17. CSDN修改专栏名字
  18. 完整的系统帮助类Utils
  19. CreateFont比CreateFontIndirect好用啊~
  20. 初识linux网络编程

热门文章

  1. 论文笔记:Object Detection in 20 Years: A Surve(目标检测20年研究综述)
  2. 从NVIDIA官方网站上下载CUDA的方法
  3. Zblog插件-zblong插件中心
  4. 启嘉春秋:《三字经》
  5. Excel除了复制粘贴,更快速的将单元格区域的公式转换成数值?
  6. 2022:RadiAnt DICOM Viewer-PC+CD[U盘]
  7. Java 如何查询当前项目Spring和SpringBoot的版本号
  8. spark.DataFrame离群值处理
  9. 高边坡监测主要监测的内容
  10. Java 独占锁ReentrantLock、读(悲观读)写锁ReentrantReadWriteLock、读(乐观读/悲观读)写锁StampedLock