本文是前奏,本来要介绍Azure上的Azure Blockchain Service,发现,需要从什么是区块链开始讲起。。。

什么是区块链?我们从比特币说起, 2008年11月,中本聪提出了比特币白皮书,比特币系统从09年至今,未出现重大安全事故。

1.比特币的底层技术便是区块链;

2.比特币是点对点的电子现金系统(支付领域);

3.该系统基于区块链技术构建;

4.该系统通过区块链技术,使得点对点电子交易不需要中间方验证;

5.具有实验性质,运行10年,未出现重大问题。

简单理解区块链,从一个故事说起:

张三给李四转1000块钱的故事:

1.张三大吼一声,我给李四转了1000块钱;

2.张三附近的村民听到了这声呐喊,然后确认了张三有足够余额;

3.村民检查过后,每个村民都在自家的账本上记录:

张三转给李四1000,张三3000-1000=2000;李四200+1000=1200;

4. 张三附近的村民把转账告诉邻村,邻村又告诉邻村,全球人都知道了并记录到了自家账本上。

几个问题?

李四的问题:账本会不会被篡改?

村民A的问题,为什么要费力气给张三记录这笔交易呢?

全体村民的问题,以谁记的为准?

账本会不会被篡改?

通俗理解,把一段时间内的交易放到一个区块中,通过对区块进行哈希运算(哈希运算理解为Hash算法可以将一个数据转换为一个标志,这个标志和源数据的每一个字节都有十分紧密的关系。Hash算法还具有一个特点,就是很难找到逆向规律。原始数据中发生任何改变,哈希运算的结果都将发生变更),产生该区块的哈希值,该区块发生任何变化,区块的哈希值就会有巨大改变,讲哈希算法的结果写入到下一个区块中,将前后两个区块串起来。

若上一页账单(区块)数据被修改,那它的数据指纹(哈希值)会发生改变,就无法与下一页账单中记录的哈希值对应上。所有玩家就能识别出这是个被篡改的无效链,并将其抛弃。

所以,通过区块+链的方式,账不可篡改。

作为普村A,为什么要费力气记账呢?

因为有好处,就是所谓的矿工激励,第一个获得记账权的人,会获得奖励。

谁记得为准?

工作量证明(PoW),谁最先计算出某个题目的答案,就以谁的账本为准,其他人复制该账本。某个题目的答案,其实就是区块头中的随机数。

区块链的几个特点:

1.去中心化(Decentralized)去中心化系统,其没有中介机构,所有节点的权利和义务都相等,任一节点停止工作都会不影响系统整体的运作;

2.去信任(Trustless)系统中所有节点之间无需信任也可以进行交易,因为数据库和整个系统的运作是公开透明的,在系统的规则和时间范围内,节点之间无法欺骗彼此;

3.集体维护(Collectively Maintain)系统是由其中所有具有维护功能的节点共同维护的,系统中所有人共同参与维护工作;

4.可靠数据库(Reliable Database)系统中每一个节点都拥有最新的完整数据库拷贝,修改单个节点的数据库是无效的,因为系统会自动比较,认为最多次出现的相同数据记录为真。

区块链不是新技术,是一组技术的组合:

核心技术-分布式账本

通过P2P的方式,将正确的账本发送给其他人。

核心技术-密码学

主要在下一个区块中,存储上一个区块的哈希值。

核心技术-区块构成

核心技术-分布式共识

核心技术-智能合约

区块链的技术演进

普遍认为,区块链已经经历了三个阶段:

  1. 加密货币阶段:就是指以比特币系统为代表的加密货币阶段;

  2. 数字资产,加密金融:在比特币发展成全民挖矿的情况下,于2013年,以太坊创始人Vitalik Buterin发布以太坊初版白皮书。以太坊引进了智能合约的概念,从真正意义上,可以满足商业化应用发布的需求。与第一阶段,只服务于比特币等加密货币不同,区块链2.0阶段,依赖以太坊,可以用来编程、分散、担保和交易任何事物,实现了“区块链+”应用的蔓延、扩展。大部分的区块链应用,都是基于以太坊而成立,如以太猫,如元链星系等区块链游戏,还有各种加密狗等等。

  3. 随着区块链技术的进一步发展,其“去中心化”功能及“数据防伪” 功能在其他领域逐步受到重视。人们开始认识到,区块链的应用也许不仅局 限在金融领域,还可以扩展到任何有需求的领域中去。于是,在金融领域之 外,区块链技术又陆续被应用到了公证、仲裁、审计、域名、物流、医疗、 邮件、鉴证、投票等其他领域中来,应用范围扩大到了整个社会。

三个阶段中,前两个还是主要以公开的区块链为主,也成为公链,第三个阶段开始,则开始存在私链,联盟链等形式。

区块链的分类:

公链是指任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。

公链采取了采取工作量证明机制(POW)、权益证明机制(POS)、股份授权证明机制(DPOS)等方式,并将经济奖励和加密数字验证结合了起来,并建立一个原则就是每个人从中可获得的经济奖励与工作量成正比。这些区块链通常被认为是完全去中心化的。

私链是指其写入权限仅在一个组织手里的区块链。读取权限或者对外开放,或者被任意程度地进行了限制。相关的应用囊括数据库管理、审计、甚至一个公司,尽管在有些情况下希望它能有公共的可审计性,但在很多的情形下,公共的可读性并非是必须的。

联盟链开放程度和去中心化程度是有所限制的。其参与者是被提前筛选出来或者直接指定的,数据库的读取权限可能是公开的,也可能像写入权限一样只限于系统的参与者。

区块链的典型应用:币圈+链圈

Blockchain 基本知识的更多相关文章

  1. 给本体ONT技术社区的第一封公开信-涉及到不少区块链技术知识

    给本体ONT技术社区的第一封公开信-涉及到不少区块链技术知识 共识是区块链的核心机制,在一系列的区块链的发展历史当中,PoW/PoS/BFT等系列的共识算法都在各自的应用场景发挥了不同作用.在本体的第 ...

  2. Hyperledger Fabric基础知识

    文章目录 什么是Hyperledger Fabric? Hyperledger架构是怎么工作的? Hyperledger交易如何执行 总结 Hyperledger Fabric基础知识 本文我们会介绍 ...

  3. 你必须知道的EF知识和经验

    注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...

  4. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  5. 学点HTTP知识

    不学无术 又一次感觉到不学无术,被人一问Http知识尽然一点也没答上来,丢人丢到家了啊.平时也看许多的技术文章,为什么到了关键时刻就答不上来呢? 确实发现一个问题,光看是没有用的,需要实践.看别人说的 ...

  6. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  7. [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

  8. [C#] C# 知识回顾 - 学会处理异常

    学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...

  9. [C#] C# 知识回顾 - 学会使用异常

    学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...

随机推荐

  1. 用Helm3构建多层微服务

    Helm是一款非常流行的k8s包管理工具.以前就一直想用它,但看到它产生的文件比k8s要复杂许多,就一直犹豫,不知道它的好处能不能抵消掉它的复杂度.但如果不用,而是用Kubectl来进行调式真的很麻烦 ...

  2. Linux发展史及安装

    操作系统 什么是操作系统 人与硬件的中介/桥梁 操作系统的组成  操作系统可以理解为一个鸡蛋 蛋黄    内核                   Linux内核  托瓦斯  鸡蛋清  命令解释器(s ...

  3. 是谁,在敲打我窗-CSS雨滴动画效果

    1.扯闲篇 是谁在敲打我窗  是谁在撩动琴弦  那一段被遗忘的时光 渐渐地回升出我心坎  是谁在敲打我窗  是谁在撩动琴弦 记忆中那欢乐的情景  慢慢地浮现在我的脑海 那缓缓飘落的小雨  不停地打在我 ...

  4. P1046 陶陶摘苹果

    题目描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出1010个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个3030厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试. 现在 ...

  5. go变量

    go基础 go变量(静态) package main import "fmt" func main() { //申明变量 var zx int //变量赋值 zx=10 //输出变 ...

  6. 重启testjenkins的步骤

    在linux下编译caffe的过程中,发生错误,导致linux系统蹦了,没办法,重启linux系统. 之前安装在docker下的jenkins也停掉了. 先启动jenkins的步骤如下: 1.先启动d ...

  7. Spring Cloud系列-Zuul网关集成JWT身份验证

    前言 这两三年项目中一直在使用比较流行的spring cloud框架,也算有一定积累,打算有时间就整理一些干货与大家分享. 本次分享zuul网关集成jwt身份验证 业务背景 项目开发少不了身份认证,j ...

  8. 转:使用JSR-303进行校验 @Valid

    一.在SringMVC中使用 使用注解 1.准备校验时使用的JAR validation-api-1.0.0.GA.jar:JDK的接口: hibernate-validator-4.2.0.Fina ...

  9. 洛谷 题解 P3161 【[CQOI2012]模拟工厂】

    本蒟蒻又双叒叕被爆踩辣! 题目链接 Solution: 这题又是一道贪心.. 数据范围: n<=15 ti<=100,000 gi<=10^9 mi<=10^9 这里就可以看到 ...

  10. 趁热来一波,WWDC 2016 iMessage App开发

    转自:http://www.jianshu.com/p/be79b8729bf8 WWDC 2016关于iMessage App的两个视频已经放出(iMessage Apps and Stickers ...