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

区块链有哪些技术特征

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

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

在这里插入图片描述
区块链有哪些技术特征

在信息网络化的大背景下,当需要与不熟悉的对手方进行价值交换活动时,人们如何做才能防止不会遭受恶意欺骗,从而做出准确的决策?区块链技术则正可以解决这一问题——它提供了一种无需信任单个节点、还能创建共识网络的方法。完备可追溯、去中心化和去信用化是区块链技术的三大特点。区块链的所有核心技术均围绕这三大问题设计。

1. 区块链的结构设计保证了其记录数据完备可追溯

区块链是由“区块+链”构成。区块(block),是指存放已记录数据的文件,里面按时间先后顺序记录了已发生的所有价值交换活动。每个区块均由三部分构成:本区块的ID(本区块块大小、生成时间等所有信息)、所有交易单(每一笔交易的详细情况)与在其先后的区块ID(即前后区块中所有价值交换信息经过算法压缩后形成的一个字符串)。区块的生成时间由系统设定,通常平均每几分钟会生成一个区块。由于每个区块中都包括了前一个区块和后一个区块的ID,这种设计使得每个区块都能找到其前后节点,从而可以一直倒推至起始节点,形成一条完整的交易链条,即构成区块链。

“区块”+“链”=完整历史:从第一个区块开始,到最新产生的区块为止,区块链上存储了系统全部的历史数据。“区块”+“链”=时间戳(time stamp):区块链让全网所有节点都在每一个区块上盖一个时间戳来记账,表示这个信息是这个时间写入的,形成了一个不可篡改、不可伪造的数据库。时间戳可以证明某人在某天确实做过某事,可以证明某项活动的最先创造者是谁。任何事情的“存在性”证明变得十分简单,区块链上的每一条交易数据,都可以通过链式结构追本溯源,一笔一笔进行验证。

2. 区块链使用的对等网络技术可实现去中心化

区块链存储数据时使用的是对等网络技术(peer-to-peer,P2P,又称点对点技术),是没有中心服务器、依靠用户群交换信息的互联网体系。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能。网络中的资源和服务分散在所有节点上,信息的传输和服务的实现都直接在结点之间进行,可以无需中间环节和服务器的介入。

P2P架构天生具有耐攻击、高容错的优点。由于服务是分散在各个结点之间进行的,部分结点或网络遭到破坏对其他部分的影响很小。对等网络技术要求各节点“人人皆兵”。对等网络设计了一整套协议机制,让全网每一个节点在参与记录的同时也来验证其他节点记录结果的正确性。

对等网络技术通过“链式防守”保障数据安全。对等网络让数据能实时记录的同时,并在每一个参与数据存储的网络节点中不断实时更新,这就极大地提高了数据库的安全性。即使个别节点发生故障(如数据丢失、遭到黑客攻击等),整个数据库系统也不会受到任何影响,因为其他节点存储的数据依然可用。

3. 区块链使用的非对称加密技术可实现去信用化

区块链使用了密码学中的“非对称加密”,解决了节点间的相互信任问题。所谓非对称加密,是指我们在“加密”和“解密”的过程中分别使用两个密码,这两个密码具有非对称的特点。加密时的密码(被称为公钥)和解密时的密码(被称为私钥)是一对:如果用公钥对数据进行加密,只有用对应的私钥才能解密,从而获取对应的数据价值;如果用私钥对数据进行签名,那么只有用对应的公钥才能验证签名,验证信息的发出者是私钥持有者。

在中心化的系统中,我们只需要向中介组织证明自己身份,即可进行交易。例如,我们在银行系统进行交易时,只需输入密码,就能证明自己是账户主人,支配账户内的资产。而在区块链的系统中,由于没有中心节点,任何节点之间的权利都是平等的。这就意味着,想要证明“我是张三”,就必须向全网所有节点亮出证据,即让全网所有节点都相信我拥有“张三的密码”,但还不能让他们知道密码是什么。

非对称加密就是能达到这一效果的“神器”。当甲把某项资产转移给乙时,他使用乙的公钥对交易进行加密,然后将交易信息向全网公开,该交易唯有使用乙的私钥才能打开。使用椭圆离散对数的非对称加密算法非常安全,在不拥有私钥的情况下,破解难度极高,可能性几乎为零。因此,当乙解开了交易密码后,即可证明自己是资产的拥有者,并得到全网认可与记录。可见,完善的加密技术保证了,我们无需辨别交易对方是“好人”还是“坏人”,也不需要第三方机构对交易进行信用背书,就可放心地与任何对手方进行交易。区块链凭借其严谨的加密算法与认证体系,真正实现了去信用化。

区块链应用在哪些地方

管比特币是区块链技术最著名也是最成功的应用,但区块链的用途非常广阔。我们甚至可以认为,区块链具备颠覆一切行业的可能性!近年来,区块链应用已经从第一代的比特币,进化到了第二代的支付清算、证券交易、医疗、物流、政务服务、博彩娱乐等各个领域。

1. 支付清算

由于区块链可摒弃中转银行的角色,实现点到点快速且成本低廉的支付,因此在支付清算尤其是跨境支付行业有着显著的优势。通过区块链平台,不但可绕过中转银行,减少中转费用,还因区块链安全、透明、低风险的特性,提高了跨境汇款的安全性与清算速度,大大加快资金利用率。

2. 证券交易

证券交易市场是非常适合区块链技术的应用领域。传统的证券交易需要经过中央结算机构、银行、证券公司和交易所这四大机构协调工作,才能完成股票交易,不仅效率低、而且成本高。引入区块链后,就可独立地完成一条龙式服务。目前,美国纳斯达克与英国伦敦证券交易所均在私人股权交易领域开始试水区块链应用。纳斯达克在2015年10月正式推出了它的区块链平台Nasdaq Linq。通过Nasdaq Linq进行股权交易的用户们将享有一种“数字化”的所有权。

3. 医疗

医疗领域是除了金融领域外区块链应用的第二大领域。由于包括病历在内的很多用户资料极具私密性,这就需要很高的安全措施进行信息保护。然而,当前中心化管理的信息系统在各类网络攻击下越发力不从心,容易出现大规模数据泄漏问题。即便是安全技术很高、采用封闭系统的苹果公司,也出现多次数据泄漏,造成恶劣影响。

4. 物流

区块链技术可以记录货物从发出到接受过程中的所有环节。通过创建共识网络,能直接定位到快递中间环节的问题所在,也能确保信息的可追踪性,从而避免快递爆仓丢包、误领错领等问题的发生,也可有效促进物流实名制的落实。快递交接需要双方私钥签名,每个快递员或快递点都有自己的私钥,是否签收或交付只需要查下区块链即可。最终用户没有收到快递就没有签收,快递员无法伪造签名。这样即可杜绝快递员通过伪造签名来逃避考核,减少用户的投诉。

当前区块链技术面临的挑战

尽管区块链实现了堪称“革命性”的技术突破,但质疑声音一直不少。区块链缺点主要集中在技术落地时的硬件问题:

1. 交易速度

区块链技术的交易速度与区块副本数量显著负相关,区块节点越多,交易速度越慢。目前比特币每秒最多只能执行7笔交易,即使是技术相对领先的Hyper Ledger方案每秒也只能执行200到300笔交易,这与中心化体系的运算处理速度相差较远。

2. 节点维护激励

区块链网络的稳定运营需要一定量的节点保持接入到网络中。然而,节点的运行有一定成本,这就需要有合理的激励机制来吸引节点参与,确保交易被记录和维护。目前,这种激励机制并未形成,节点的参与更多是靠自愿或随机性,并未形成一个有序的规则。

3. 达成数据共识的成本

在开放网络环境下,由于多个节点都可以记录新的区块,这就需要解决区块冲突和数据一致性问题,即“拜占庭将军问题”。要维持区块链数据的安全性与可靠性,就必须保证全球多个节点同时参与记账,但多个节点的数据共享过程实际上也是一个高耗能的过程。

相关文章:

《JavaEE开发的颠覆者——Spring Boot实战》是一本好书

这本书的风格非常好、每一节都是先点明这一块知识的要点,随后就手把手的做出一个最简明、但有能体现核心的实例(大多只有几个Class) 这样的书用来熟悉一门框架,实在是再好不过。转载于:https://www.cnblogs.com/nanlan2017/p/1045…

html css 布局知识概况

1、如果想设置页面居中,当设置margin属性为auto的时候,不能在设置浮动或绝对定位属性。并且一定要设置width为一个定值 2、盒子模型三维立体结构图 3、浮动布局 利用浮动可以实现横向布局,通过float来实现(left--左浮动&#xff0…

项目的简单总结二--可拉伸的头视图

项目总结二 tableVIew和collectionview中头视图的可拉伸放大效果 demo中只做了tableview的效果, collectionview做法一样 效果如下图: demo地址: https://github.com/wyon0313/ZoomHeaderView

浅谈区块链技术

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 浅谈区块链技术 这几天空闲的时候在网上浏览了一些区块链的技术,其实区块链只是一个技术,只不过是比特币很好的实…

IIS 7.5 去掉index.php 西数服务器

//新建web.config 加上下面代码<?xml version"1.0"?> <configuration> <system.webServer><rewrite><rules><rule name"OrgPage" stopProcessing"true"><match url"^(.*)$" /><condit…

bzoj1927: [Sdoi2010]星际竞速

跟上一题几乎一样。。。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> using namespace std; #define rep(i,n) for(int i1;i<n;i) #define clr(x,c) memset(x,c,sizeof(x)) #define op() cl…

在cell中取得UITableView所在的ViewController对象

原来碰到这个问题一般会将控制器传进cell中, 或者将cell要做的响应事件回调到控制器去处理, 前段时间找到一种方法觉得很不错 - (UIViewController *)getTableViewSuperViewController { for (UIView* next [self superview]; next; next next.superview) { UI…

区块链当前现状

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自链客区块链技术问答社区&#xff0c;未经允许拒绝转载。 区块链是分布式账本技术&#xff0c;用于记录交易数据&#xff0c;具有不可篡改性、完整分布性、可追溯性等技术优势&#xff0c;应用包括…

MVC 4.0 Razor模板引擎 @Html.RenderPartial 与 @Html.RenderAction 区别

近来在学习MVC 4.0&#xff0c;设置布局全局网页的页脚&#xff0c;使用了Razor语法 {Html.RenderPartial("Footer", Model.FooterData);} 但是并不理解Html帮助器方法Html.RenderPartial。 先来介绍一下Html.RenderPartial用法。 Html.RenderPartial在Asp.net Mvc中…

iOS 图片处理-利用GPUImage 磨皮和美白图片

项目中要求处理图片, 简单记录一下美白和磨皮过程 (其中GPUImage还有美颜滤镜, 使用方式基本一样) //磨皮 - (void)editPhotoByBilateralWithLevel:(CGFloat)level { GPUImagePicture *pic [[GPUImagePicture alloc] initWithImage:image]; // 磨皮滤镜…

linux下编译php扩展

1 在pecl.php.net搜索你需要的php扩展 2 在解压后的扩展目录运行phpize 3 执行编译./configure --with-php-config/usr/local/php/bin/php-config 4 修改php/lib/php.ini文件 加上这句话extention扩展.so的绝对路径转载于:https://www.cnblogs.com/wyqn/p/8493456.html

区块链技术原理

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自链客区块链技术问答社区&#xff0c;未经允许拒绝转载。 以比特币的区块链为例&#xff0c;你可以把区块链想象成一个比特币的公共账本&#xff0c;这个账本&#xff1a; 1.存放在互联网的各个比…

Spring之事务管理配置

1. 基于注解的事务配置 1. 在需要添加事务的方法上加上Transactional注解2. Spring的配置文件中配置事务管理器1 <!-- 添加事务管理器组件DataSourceTransactionManager -->2 <bean id"transactionManager"3 class"org.springframewor…

iOS 图片处理-图片旋转和裁剪

项目中要求处理图片, 简单记录一下图片旋转和裁剪过程 /** 将图片旋转弧度radians */- (UIImage *)imageRotatedByRadians:(CGFloat)radians{ // calculate the size of the rotated views containing box for our drawing space UIView *rotatedViewBox [[UIView alloc…

ThinkPHP 3.1.2 视图 1

一、模板的使用 &#xff08;重点&#xff09;a、规则模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[index].html&#xff08;.tpl&#xff09;更换模板文件的后缀名&#xff08;修改配置文件&#xff09;TMPL_TEMP…

mysql事务处理用法与实例详解

MySQL的事务支持不是绑定在MySQL服务器本身&#xff0c;而是与存储引擎相关1.MyISAM&#xff1a;不支持事务&#xff0c;用于只读程序提高性能 2.InnoDB&#xff1a;支持ACID事务、行级锁、并发 3.Berkeley DB&#xff1a;支持事务一个事务是一个连续的一组数据库操作&#xff…

C++ 类的内存分布

C类内存分布 转自&#xff1a;http://www.cnblogs.com/jerry19880126/p/3616999.html先写下总结&#xff0c;通过总结下面的例子&#xff0c;你就会明白总结了。下面总结一下&#xff1a; 1、虚基类指针和虚函数指针是可以继承的 2. 虚函数指针来源于父类或者自己是第一个声明虚…

iOS 关于手机权限的检查与获取

手机通讯录权限: /** * 检测权限并作响应的操作 */ - (void)checkAuthorizationStatus:(UISwitch *)sender { switch (ABAddressBookGetAuthorizationStatus()) { case kABAuthorizationStatusAuthorized: //存在权限 //获取通讯…

也谈谈区块链技术

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链社区&#xff0c;未经允许拒绝转载。 现在区块链技术很火&#xff0c;而且几乎被上升到了一个“革命性”的高度&#xff0c;很多股票居然都因为沾了点区块链变得炙手可热。其实这玩意没有这么…

nyoj——297(期望)

GoroSort 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;4描述Goro has 4 arms. Goro is very strong. You dont mess with Goro. Goro needs to sort an array of N different integers. Algorithms are not Goros strength; strength is Gor…

js ajax调用请求

<pre name"code" class"html"> function getAppList(env){var data {};data.env env;var successfn function(jdata){$(".deploy_list").html("");_HTML "<tr><th>发布清单</th></tr>";$…

iOS SDWebImage加载webp

项目更新使用的最新版本的SDWebImage, 需配置如下: Build Settings -> preprocessor macros -> 添加 SD_WEBP1

区块链之初识区块链

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自链客区块链技术问答社区&#xff0c;未经允许拒绝转载。 首先得明白几个概念&#xff1a;区块链&#xff0c;比特币&#xff0c;中心化&#xff0c;去中心化&#xff0c;挖矿 区块链和比特币 区…

Linux RSS/RPS/RFS/XPS对比

RSS适合于多队列网卡&#xff0c;把不同的流分散的不同的网卡多列中&#xff0c;至于网卡队列由哪个cpu处理还需要绑定网卡队列中断与cpuRPS&#xff1a;适合于单队列网卡或者虚拟网卡&#xff0c;把该网卡上的数据流让多个cpu处理RFS&#xff1a;当流量需要传输到用户态处理时…

iOS 关于UIView覆盖StatusBar的小知识点

项目中有关于浏览图片的需求, 自己写了一套, 但是一直有个关于StatusBar的问题: 因为在查看图片时隐藏掉了StatusBar, 当结束查看后再显示sta会发现整个界面下滑了20px, 在IM聊天界面这个滑动效果很不友好 最近在优化这一块东西时又想到了这个问题, 现在得到了比较好的解决方…

从数字货币说起

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自链客区块链技术问答社区&#xff0c;未经允许拒绝转载。 从数字货币说起 历史上&#xff0c;货币的形态经历了多个阶段的演化&#xff0c;包括实物货币、金属货币、代用货币、信用货币、电子货币、…

git常用命令及规范流程

参考地址&#xff1a;https://www.cnblogs.com/my--sunshine/p/7093412.html&#xff0c;感谢分享 官网地址&#xff1a;https://git-scm.com/book/zh/v2 git init 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹.git…

关于iOS 11的适配

距离iOS 11正式发布也有小半年了, 陆陆续续也看到许多关于iOS 11和iPhone X适配相关的文章, 现记录下自己做适配所做的工作 首先给出自己适配所用到的宏定义, 如下://状态栏 #define kStatusBarHeight [[UIApplication sharedApplication] statusBarFrame].size.height //导航条…

PHP实现队列的原理

关于的队列的介绍&#xff0c;我这里就不多讲了&#xff0c;随便百度一下都很多 用过laravel框架的童鞋都知道其自带队列功能&#xff0c;之前我很费解&#xff0c;PHP只是一个脚本&#xff0c;有超时机制 为什么能不停的去执行队列呢&#xff1f; 带着这个问题&#xff0c;在网…

实现代币的管理者

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 实现代币的管理者 虽然区块链是去中心化的&#xff0c;但是实现对代币&#xff08;合约&#xff09;的管理&#xff0c;也在许多应用中有需求&…