当前位置: 首页 > 编程日记 > 正文

区块链是互联网未来十年中举足轻重的技术

链客,专为开发者而生,有问必答!

此文章来自区块链技术社区,未经允许拒绝转载。

在这里插入图片描述

区块链是互联网未来十年中举足轻重的技术

区块链(Blockchain),或者说分布式账本(DLT, Distributed Ledger Technology)最早是起源于比特币的一个重要概念,其本质上是一个去中心化的数据库。区块链系统能够大幅度降低成本,减少风险和管理成本,提升流动性,增加创新产品和服务的机会。可以说,和大数据、云计算、人工智能一样,区块链是未来十年中举足轻重的技术。从笔者的角度来看,区块链在未来最大的价值并不是在虚拟货币这个领域,而是用以取代原先需要中间人和第三方验证的系统中,以对于数字系统的信任来取代对于人的信任的领域。

ACID、

传统的数据库都满足ACID原则。我们首先来看一个“事务(transaction)的概念。事务是一个操作序列,是一个不可分割的基本工作单位。在一个传统的数据库管理系统(DBMS)中,事务应该具有四个特性:

原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

取这四个英文单词的首字母缩写,我们得到的是ACID。原子性指事务是一个不可分割的最基本工作单位,事务中的操作要么都执行,要么都不执行;一致性是指数据库的完整性约束不会被任何事务的发生破坏,也就是说数据库的事务不能破坏数据的完整性;隔离性是说多个事务并发访问时,事务之间是被隔离开的,一个事务不应该影响其他事务的运行效果;持久性则意味着在事务完成以后,该事务所对数据库做的更改便被永久保存在数据库之中,即使系统本身发生了事故也不会更改。从ACID的四个特性来看,我们发现其实比特币区块链系统几乎具有这些特点:

一个区块要么被全部记录进入区块链,要么不被认可,不可能有中间状态;

一个区块在加入区块链之后,原本区块链的系统依然保持完整性;

每次只有一个区块可以被加入到区块链中,所以隔离性是当然的;

而在区块被写入链条之后,新的区块链会被复制到所有的区块链节点上,被永久保存。

BASE因为区块链节点处于地球各处,而这些节点又是由不同用户维护的,所以其实我们并不能保证每次访问区块链的系统时都能获取到数据,而这恰恰又对应了互联网时代分布式数据系统的一个特性,可以称之为为BASE。

在BASE理念中,基本可用是指系统在出现不可预知的故障时,允许损失部分可用性;软状态是指允许系统中的数据存在中间状态,不过该中间状态的存在并不会影响系统的整体可用性;最终一致性指的是所有的数据副本,在经过一段时间的同步之后,最终都能够达到一致。CAP我们再来看区块链系统和分布式数据系统上的CAP理论之间的关系。在分布式数据系统中,有三种重要的属性,分别是:

一致性(Consistency):数据一致性,任何一个读操作总是能读取到之前完成的写操作结果,也就是在分布式环境中,多点的数据是一致的。

可用性(Availability):好的响应性能,每一个操作总是能够在确定的时间内返回,也就是系统随时都是可用的。

分区容忍性(Tolerance of network Partition):可靠性,在出现网络分区(比如断网)的情况下,分离的系统也能正常运行。CAP原理解释了关于这三种属性的关系。CAP原理的意思是:一个分布式系统不能同时满足一致性、可用性和分区容错性这三个需求,最多只能同时满足两个。CAP原理是由美Berkerly的Brewer教授提出。

区块链有哪些特性在区块链进入大家的视野之前,分布式数据系统也一直是学术界关注的一个方向。不过在区块链概念出现之后,大家发现原来分布式系统还可以有新的处理方式。基于区块链的数据系统特征

去中心化或者多中心化(Distributed or Decentralized)

区块链最大的特性就是使用分布式计算和存储,从而减少甚至消除中心化的硬件或管理机构。在区块链上,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。

开放性(Open)

系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何(有权限的)人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。

自治性(Autonomous)

区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由安全地交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预都不起作用。

信息不可篡改(Untemperable)

一旦信息经过验证并添加至区块链,就会永久存储起来,单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。

匿名性(Anonymous)

由于节点之间的交换遵循固定的算法,其数据交互是无需信任的(区块链中的程序规则会自行判断活动是否有效),因此交易对手无须通过公开身份的方式让对方对自己产生信任。区块链的核心在于数据区块链和大数据是两个在过去几年中都得到飞速发展的技术。2016年第46届世界经济论坛达沃斯年会论坛的主题为“掌控第四次工业革命”,包括人工智能、无人驾驶、区块链、量子计算等在内的科技前沿领域在会议中被反复提及。目前区块链能够承载的信息数量是有限的,离我们要用“大数据”的标准来衡量的地步还差得很远,不过千里之行始于足下,要一步一步地来。如果要让区块链承载大数据,那么目前笔者所看到的这些区块链系统都还不具备这个能力。区块链系统是分布式的,而大数据讲究的是可规模化的、可量化的数据;区块链系统是匿名的、有隐私的,而大数据在意的是个性化;区块链系统是安全的,信息是相对独立的,而大数据在意的是信息的整合分析。区块链系统的局限性和门槛微软亚洲研究院系统算法组首席研究员Thomas Moscibroda在2017首届科技金融国际峰会上提到了区块链的效率和隐私问题。在区块链中,每一个人都在分享自己的数据,而且每一个交易记录都需要被所有人核实、记录和存储。一方面,这个过程会使区块链对传统数据库而言更慢。另一方面,区块链双方的交易过程中第三方必须知晓,且会去核实这个交易的合法性和正当性,而每一个人都能知道交易双方的中间数据,这也带来了隐私问题。String Labs联合创始人Tom Ding认为区块链技术其实是一项有相当门槛的技术,在整个世界上可能也只有为数不多的团队有能力开发底层区块链系统。Alphabet的DeepMind Health部门已经宣布计划使用一种与分布式账本一样的系统来监视目前正在被使用的患者数据。他们的工具命名为Verifiable Date Audit(VDA)。Alphabet声称VDA并不是区块链,而是类区块链。VDA借鉴了很多来自比特币区块链的功能,包括不可更改性。同时还提供某种程度的透明度,所以第三方机构可以验证这些数据。基于区块链思想的区块链数据库笔者一直坚持的观点是不以实际应用为目的的技术都是耍流氓,那么如何让区块链系统真正商用化?受到微软和Google各位同学的启发,我们认为如果要真正商用化区块链系统,唯一的出路就是区块链数据库(Blockchain DataBase)。我们在设计的区块链数据库兼有区块链系统和数据库系统两个系统的优势。区块链数据库中的数据比特币区块链的可扩展性是一个大问题。如果不提升数据块的大小,整体的交易量则无法提升,而如果提升了数据块的大小,因为每个客户端的节点都会有数据库的完整拷贝,数据存储会是一个非常头疼的事情。

区块链数据库的共识模块区块链数据库中共识模块的作用是让系统中所有的数据节点都能够保持一致。如果一个节点的区块链上添加了一条新的交易,那么数据库中所有其他节点也会把同一个交易加入到各自的区块链上。共识模块的关键点就在于保持整个系统中所有交易顺序的一致性。共识算法在以太坊和比特币区块链中的达成是通过工作量证明(POW)或者权益证明(POS),而IBM Hyperledger和其他一些想要提升效率的区块链系统采用的是PBFT(Practical Byzantine Fault Tolerance)协议。后者的效率会高很多,不过网络传输的数据会根据节点数的上升而成倍增加。区块链数据库中,我们会采用Paxos共识算法。

相关文章:

利用jdt快速实现pmd的功能

jdt可以做语法树分析,并且支持visitor模式对代码进行分析。跟pmd的分析方式一样,我们只要实现 visitor接口即可实现一个插件。 Service("requestMappingInfoService")public class RequestMappingInfoServiceImpl implements RequestMappingIn…

用R语言做词频统计_R语言 | 词频统计

Python网络爬虫与文本数据分析本章内容导入停用词读数据,分词剔除停用词导入停用词表library(dplyr)## [1] "?" "、" "。" "“" "”" "《" "》" "!" "…

PHP拿到别人项目如何修改为自己

以下为借助google翻译的,个人润色了一下,官方版里面感觉有很多问题,我这里有我个人修改大部分问题的版本,包括翻译完善,有需要的可以联系我:qyj8411163.com 1. 在您网站的根目录创建名为“webim”的文件夹。…

浅析Hyperledger Fabric共识算法

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链系统是一个分布式架构,交易账本信息由各个节点管理,组成一个庞大的分布式账本。在分布式系统中,各个节点收…

python 获取用户ip_Python爬虫教程:你还在苦苦拉票吗?刷票小程序案例原理剖析!...

你还在苦苦拉票吗?前言剖析投票原理处理思路具体实战主要流程具体细节python代码实例python具体细节java代码实现java总结点击此处,获取海量Python学习资料!前言现在生活中离不开各类的比赛,然而,各个比赛离不开投票&a…

下拉菜单被挡住了,DIV置于最底层的方法

网站常会用到一些 下拉菜单,,幻灯片,,,飘浮广告等。但经常会发现。幻灯片会挡住下拉菜单或者飘浮广告等。解决办法有下第一,可将幻灯片所在DIV 置于最底层。添加CSS如下style"z-index:-100;position: …

github的删除

github项目删除 首先找到你要删除的项目,点击开 复制项目名称然后找到Settings 将滚动条滑至底部,找到 Danger Zone 下的 Delete this repository 这里会弹出一个警告对话框 将该项目名称重新输一遍即可 这里会弹出账号重新确认,将密码在输入…

区块链的去中心化VS传统互联网的去中心化:技术与治理的双重困境

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链的去中心化VS传统互联网的去中心化:技术与治理的双重困境11 主要观点: 1、传统互联网经典的去中心化项目BitTorrent…

第三章| 3.1文件处理

1、三元运算 简单条件语句: if 条件成立:val 1 else: val 2 改成三元运算: val 1 if 条件成立 else 2 2、文件处理 (用python对硬盘上的文件操作) 读 读取文件的三个方法:read()、readline()、readlines() 三个方法…

LR常见的报错处理方法

1.LR录制时不弹出IE浏览器 当一台主机上装有多个浏览器,LR录制脚本时,经常遇到打不开浏览器的情况,可以用下面的方法来解决 启动浏览器,打开Internet 选项对话框,切换到高级标签,去掉“启用第三方浏览器扩展…

均匀分布取某一点概率_概率和概率分布

概率与概率分布是统计学中的基础概念,在我们的高中的课本中就接触过了,如果有遗忘,一起来回顾一下吧!知识点:概率概率分布一、概率说到概率,需要先了解一个概念,叫做随机试验。随机试验是指在相…

EOS共识机制——DPoS代理权益证明

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链共识机制与它的演进,是由于区块链式去中心化而且分布式的系统,必须要有一套放诸四海皆准类似宪法的规则,来…

active mq topic消费后删除_Spring cloud stream 整合mq

说明:本案例win10环境测试scs(spring cloud stream)整合kfk(kafka)/rbt(rabbitmq)消息生产消费场景流程一、准备中间件环境(kfk/rbt)后续内容提供kfk与rbt的环境准备流程二、导入scs的依赖项目spring boot 版本:2.1.3.RELEASE引入spring cloud 版本&…

翻译的艺术 —— 无能为力的翻译,搞笑的音译

0. 无能为力的翻译 至尊宝:best sonny,乌龙:own goal,的粤语发音;1. 取其发音 word ⇒ 我的,word 妈呀, Need just word,word has word,你的就是我的,我的还是我的&#…

经常可能会用到的【函数节流和函数防抖】记录下,做下区分

今天突然被人问到,函数节流和函数防抖的区别是什么,结果我脑子一热直接举了个滚动条的粟子说是优化高频率执行的手段,就记得自己是用setTimeout来实现的。完了区别是什么??哪个是哪个都蒙B了回家想想,有些东…

智能合约和区块链技术:入门指南

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 智能合约和区块链技术:入门指南 多年前,在没有数字合约和区块链技术存在的情况下,双方的合约往往以传统的方式进…

2. 尾部的零

题目 设计一个算法,计算出n阶乘中尾部零的个数 样例 11! 39916800,因此应该返回 2 题解 一开始就用最简单对1-n找出5的个数,然后超时了。虽然都直到是要找5,因为2肯定比5多,所以5的个数就是0的个数,只是计…

case when then else end

1、根据数据库表中特定的值进行排序显示 select * from tablename where order by case when columname then 1 wnen columname when 2 else 3 end 2、根据数据库中存的值根据情况对其进行赋值CASE sexWHEN 1 THEN 男WHEN 2 THEN 女 ELSE 其他 END --Ca…

python replace函数_Python3 replace()函数使用方法

描述 replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。 语法replace()方法语法: str.replace(old, new[, max]) 参数 old -- 将被替换的子字符串。 new -…

EOS技术知识介绍

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 EOS 简介 EOS:EOS可以理解为Enterprise Operation System,即为商用分布式应用设计的一款区块链操作系统。EOS是EOS软件引入…

团体程序设计天梯赛-练习集-L1-044. 稳赢

L1-044. 稳赢 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每…

currenttimemillis 毫秒还是秒_Elasticsearch(ES)如何做到亿级数据查询毫秒级返回

前言:这个问题其实是更面向原理及实操方面的内容。换个问法,可以是这样来问:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率?为了精简,如下内容将Elasticsearch简称为ES如果你仅仅是用过ES,对于这个…

分布式系统的时间顺序

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 分布式系统的时间顺序 区块链被认为是分布式的系统,分布式系统中由于多节点,通讯、物理位置等的问题,各节点间时…

JVM 老年代对象来源

一般情况是四种,但是尤其以第一种来源最多1.新生代对象每经历依次minor gc,年龄会加一,当达到年龄阀值会直接进入老年代。阀值大小一般为152.Survivor空间中年龄所有对象大小的总和大于survivor空间的一半,年龄大于或等于该年龄的…

[心跳] 使用心跳机制实现CS架构下多客户端的在线状态实时更新以及掉线自动重连...

此文讲述的内容是一个实际项目开发中的一部分内容,笔者将亲身经历写成文章。 【背景】 现 需要实现这样的功能:有多个客户端连着同一个服务器。服务器和客户端之间需要“互相”知道彼此的连接状态。比如在某一时刻,服务器需要知道当前有多少个…

python绝对值编程_Python-abs vs fabs

编辑:正如aix所建议的,比较速度差异的更好(更公平)方法是:In [1]: %timeit abs(5) 10000000 loops, best of 3: 86.5 ns per loop In [2]: from math import fabs In [3]: %timeit fabs(5) 10000000 loops, best of 3:…

如何搭建以太坊私有链

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 如何搭建以太坊私有链1 今天讲一下如何搭建以太坊私有连,当然了在你阅读这篇文章的时候,最好是有一定基础,比如…

Autocomplete 自动补全(Webform实战篇)

开篇语 因为项目中需要用到一个自动补全的功能,功能描述: 需求一:新增收件人的时候,自动下拉显示出数据库中所有的收件人信息(显示的信息包括:姓名-收件地址-联系方式) 需求二:选中一…

前端开发基础7(Bootstrap框架)

Bootstrap介绍 Bootstrap是Twitter开源的基于HTML、CSS、JavaScript的前端框架。 它是为实现快速开发Web应用程序而设计的一套前端工具包。 它支持响应式布局,并且在V3版本之后坚持移动设备优先。 为什么要使用Bootstrap? 在Bootstrap出现之前&#xff1…

python自动化测试难不难_Python测试自动化好学还是Pythonweb开发好学?

还是测试吧。。。 用动态语言搞开发,项目大了根本没法维护,而且还会bug层出不穷,任谁也Hold不住。真想搞开发,要么玩Java,要么玩C#。 下面举个例子。 比如一个游戏项目,是这样的(伪代码):角色 l…