区块链基本介绍(一)

52人阅读 评论(0) 收藏 举报
分类:

区块链产生的背景

传统互联网上的交易都需要借助可信赖的第三方机构来处理电子支付信息,交易双方信赖第三方机构。(淘宝买家-淘宝平台-淘宝卖家)

但是第三方介入也有很多缺点:
- 交易成本高(收取一定的手续费)
- 暴露隐私(第三方为了验证信息,需提供交易双方信息)
- …

试想如果去掉第三方机构,交易双方直接交易,这样怎么保证交易生效呢?区块链技术的出现就是为了解决这样的问题,区块链是一个基于密码学原理而不基于信任机制,使得达成一致的双方直接交易,并且公布给所有的见证人。

区块链的起源

区块链的起源来自2008年中本聪<<比特币:一种点对点电子现金系统>>,根据这种思想概念诞生了第一个产物”比特币”。

比特币

什么是比特币

直观映象
- 具有投资、购买和存储属性的商品
- 虚拟货币,价格波动大,可以购物
- 2017年勒索病毒,暗网交易

概念

比特币是一种虚拟数字货币,总量是恒定的,没有发行方,不可篡改,数学科学做背书,任何人可参与和创造,可以用来购买商品和兑换法币。

比特币的挖矿是什么

比特币中的挖矿就是将一段时间内比特币系统中发生的交易进行确认,并记录在区块链上形成新的区块链的过程,挖矿的人就是矿工,对挖到矿的人进行比特币奖励,换而言之,挖矿就是生产比特币的过程。

节点类型和分工

比特币P2P网络中的各个节点相互对等,但是根据所提供的功能不同,各节点可能具有不同的分工,每个比特币节点都是 钱包、矿工、完整区块链、网络路由节点 的功能集合。

全节点

包含钱包、矿工、完整区块链、网络路由节点,可以独立验证交易,维持与对等节点的连接。

完整区块链节点

包含完整区块链、网络路由节点,只用来同步区块,参与验证,维持与对等节点的连接。

独立矿工节点

包含矿工、完整区块链、网络路由节点,自行验证,参与挖矿,维持与对等节点的连接。

轻量(SPV)钱包

轻量钱包没有完整区块链数据,是通过一种名为“简易支付验证(SPV)”的方
式来完成交易验证

挖矿硬件的进展

  • CPU
  • 显卡
  • FPGA
  • ASIC矿机
比特币为什么有价值

1、去中心化,没有发行机构,匿名性。
2、总量恒定,稀缺性。
3、比特币因挖矿产生,挖矿消耗了电力,对等性产生了价值。
4、越来越多的人参与到比特币网络,为争夺比特币。
5、…..

比特币的网路概览图

什么是区块链

定义

区块链是一个去中心化的分布式账本,由不可更改的数据包组成,这些数据包也称作”区块”,每个区块前后相连就形成”区块链”,是一种通过去中心化、去信任的方式集体维护一个可靠数据库的技术方案。


每个区块都连着上一个区块,就形成的区块链。

从数据角度来看

区块链是一种几乎不可能被更改的分布式数据库,这里的”分布式”不仅体现为数据的分布式存储,也体现为数据的分布式记录(即由参与者共同维护所有数据)

从技术角度看

区块链并不是一种单一的技术,而是多种技术整合的结果,这些技术以新的结构组合在一起,形成一种新的数据记录,存储和表达的方式。

区块链的特征

开放、共识

任何人都可以参与到区块链网络,每一台设备都能作为一个节点,每个节点都允许获得一份完整的数据库拷贝,节点之间基于一套共识机制,通过竞争计算共同维护整个区块链。

去中心化、去信任机制

区块链由众多的节点共同组成一个点对点的网络,不存在中心化的设备和管理机构,节点之间数据交互通过数字签名技术进行验证,不需要信任,只需要按照设置好的规则就行,节点之间不存在欺骗不信任的问题。

交易透明,双方匿名

区块链的运行规则是公开透明的,所有的数据信息也是公开的,每笔交易都是对所有节点公开可见,由于节点之间是去信任的,因此节点不需要公开身份,每个参与的节点都是匿名的。

不可篡改,可追溯

单个节点甚至多个节点对数据库的修改无法影响其他节点的数据库,区块链中的每一笔交易都通过密码学方法与两个相邻的两个区块串联,因此可以追溯每一笔交易的所有记录。

区块链的分类

公有链

无官方组织以及管理机构,无中心服务器,参与的节点按照系统规则自由接入网络,不受控制,节点间基于共识机制开展工作。(颠覆性:绝对可信以及公开)

典型案例:数字货币代表 比特币

私有链

建立在一个集团内部,系统的运作规则根据集团要求进行设定,修改或者读取权限都被进行了一定的限制,同时保留着区块链的真实性和部分去中心化的特性。(相对可信以及公开)

典型案例:R3

例:

联盟链

由若干机构联合发起,介于公有链和私有链之间,兼具部分去中心化的特性,这区快链上的读权限可能是公开的,也有可能是部分公开的,也就是说通过内部指定多个预选的节点为记账人,预选人争夺记账权限,其他接入节点可以参与交易,但不过问记账过程。(预选人的能力不能参差不齐)。
(相对可信以及公开)

已有案例:超级账本

例:
以贷款导流来说,当用户通过我们的链接跳转到对方网页注册之后,对接方可以选择耍赖,说没有收到用户注册的请求。但是如果我们把用户注册的行为放到区块上去,对接方要想接收用户注册行为,必须在接收的时候同时付款给我方。

区块链不同类型的对比


区块链解决了什么问题

区块链最重要是解决了信用成本的问题,在过去,两个互相不认识的人达成公协是很难的,必须通过第三方信任机构来完成,比特币的诞生就是最好的案例,成功的解决了信任问题。

区块链的产生

区块链技术是由比特币联想而产生的,把比特币技术抽象提取出来,称之为区块链技术。

区块链的交易机制

区块链的交易机制是大概10分钟产生一个区块,这个区块会打包全网的交易,但是一个区块的打包是有限制的,会根据规则优先打包一些交易,那些没有被打包的交易就需要等待下一次的被打包机会。打包交易的就是矿工,矿工就是打包游戏中争夺区块链记账权的人,谁能最快解开SHA256这个数学命题的值,就拥有记账的权限,被打包的交易会被盖上时间戳的,而记账的矿工也会得到相对应的奖励。

一次交易过程大概是这样的:

1、发起一笔交易,并广播到区块链网络中。
2、矿工争夺记账的权限,获得记账权限的矿工给交易盖上时间戳,并进行打包到区块当中。
3、矿工通过P2P网络全网公布它盖上时间戳并打包的交易。
4、全网的其他节点对收到的区块进行验证。
5、区块验证通过之后连接到区块链。
6、交易经过六个区块确认之后,交易才算真真完成。

区块链的共识机制

目前主要有几大类共识机制:Pow、Pos、DPos
- Pow(Proof of Work):工作量证明,就是通过计算机对一个数学公式进行计算,谁先计算出的结果与答案结果一样,谁就获得本次记账权。
优点:
算法简单粗暴,节点无需交换额外信息即可以达成共识,破坏难度大;
缺点:
以比特币来说,目前比特币来已经吸引全球大部分的算力,其它再用Pow共识机制的区块链应用很难获得相同的算力来保障自身的安全;挖矿造成大量的资源浪费;共识达成的周期较长,不适合商业应用

  • Pos(Proof of Stake):权益证明,Pow的一种升级共识机制;根据每个节点所占代币的比例和时间;等比例的降低挖矿难度,从而加快找随机数的速度。
    优点:
    在一定程度上缩短了共识达成的时间,节省了资源。
    缺点:
    还是需要挖矿,富人越富,穷人越穷。

  • DPos(Delegated Proof of Stake):股份授权证明机制,类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。
    优点:
    大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证
    缺点:
    整个共识机制还是依赖于代币。

区块链涉及到的技术

  • 哈希算法
  • 非对称密钥算法
  • 数字签名
  • Merkel Tree
  • 共识机制
  • P2P网络

区块链常见问题

  • 双花
    双花就是一笔钱花两次。
  • 区块链分叉
    分叉分为软分叉和硬分叉。
    软分叉就是同时产生两个区块,都连着上一区块。

    硬分叉就是通过强制升级客户端的方式,更改运行规则。
  • 51%攻击
    掌握全网51%的算力,就有机会产生造假的可能。
  • 代币的丢失
    如果密钥丢失,数字财产将永远找不回来,因为没有找回机制。
  • 完全独立挖矿的困境——矿池的产生
    随着挖矿硬件的不断升级,慢慢形成矿池,算计完全掌握在矿池拥有者的手中,普通人基本没有机会挖到矿。

区块链技术的颠覆性

代码即规则–>用技术确保绝对的信任可靠公正
- 规则公开透明
- 规则不可更改
- 按照规则生成的记录不可更改

区块链的瓶颈

以特币为例
- 交易时间模糊:时间以区块时间为准,每笔交易无时间;
- 交易时间长,吞吐量低
- 扩容问题
- 占用大量存储空间
- pow挖矿浪费计算机资源,且矿机出现,挖矿掌握少数人手里
- 代码即规则,规则能否与时俱进,代码存在BUG,升级需要硬分叉。
- 线程数据库的虽然公开透明,但是不支持关系型数据库的强大操作,大大的降低了数据库的灵活性。

数字货币排行榜

网站

区块链瓶颈的一些解决方案

  • 缩短区块平均产生的时间
  • 中心化服务
  • 扩容
  • 闪电网络(把交易放到链下,通过一条支付通道完成,避免主链堵塞,区块链则确保最终的交易结果被确认)
  • 隔离见证(隔离就是允许把打包的数据进行精简,把”见证”部分”隔离”在区块之外,但又不能丢失数据的完整性验证)
  • …..

区块链在国内的一些应用

1、玩客币(迅雷公司),极速下载。(硬盘大小、带宽和在线时长)
2、百度的莱茨狗。
3、网易星球(点击广告,阅读等得到原力,通过原力得到钻石)
4、阿里云发布区块链解决方案,支持天猫奢侈品正品溯源。
5、腾讯将于4月23发布一款区块链游戏。


区块链的发展现状

区块链1.0

虚拟货币

比特币为代表的数字货币应用,其场景包括支付、流通等货币职能,比特币被认为是互联网上的黄金,它的储量是有限的,将作为未来数字货币的价值铆钉。

区块链2.0

百花齐放

以太坊为代表,数字货币智能合约相结合,可以开发DAPP应用,是金融、经济领域的应用,最大贡献就是开创了智能合约,场景如投票系统。

区块链3.0

支持复杂的商业应用

满足复杂的商业应用,适用于为各行业提供去中心化解决方案,不再依靠某个第三人或机构获得信任或建立信用,实现信息的共享,解决信任问题,提高整个系统的运转效率。

代表产物
- EOS
特点:
- 高性能的交易速度。
- 去掉手续费的困扰。
- 模块化封装,应用人员开发DAPP更加方便(合约异步调用)。
- 以太坊3.0
- 实现“无限”可扩展性。
- 超级账本
- 超级账本是一个联盟组织发起的完全共享、去中心化、透明的联盟链,由几十家大型公司组成,为解决商业商业问题而建立的区块链。虽然技术上没有很大的革新,但出发点是为了适用大部分商业问题,因此也成为区块链3.0的一个代表产物。
- …


区块链技术选型

技术选型上我们选择了区块链2.0时代的领航者-以太坊,以太坊开创了智能合约先例,且以太坊的社区多,以太坊支持的开发语言也很多,其中以go语言最为流行。

以太坊生态中的概念和工具

以太坊

以太坊是一个智能合约区块链平台,在上面你可以创建去中心化的应用程序,也叫Dapp。

智能合约

智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。

Geth

Geth 是由以太坊基金会提供的官方客户端软件。它是用 Go 编程语言编写的

Mist 浏览器

这是一个用于与你的节点通信的桌面应用程序。 任何你能使用 geth 终端完成的操作都可以通过此图形用户界面来完成。

Web3.js

web3.js是javascript的库,可以用来与一个以太坊节点进行交互。 由于它是一个 javaScript 库,你可以使用它来构建基于 web 的去中心化应用 (dapp)。

Solidity

Solidity 是用于编写在以太坊区块链上运行的智能合约最流行的编程语言。它是一种编译时转换为 EVM (以太坊虚拟机)字节码的高级语言。

Truffle/Embark

Truffle 和 Embark 是用于开发以太坊去中心化应用(dapps)的两个最流行的框架。它们将在区块链上编译和部署合约的许多复杂的东西都抽象化了。

Metamask

Metamask是一个用于与以太坊节点进行交互的chrome浏览器插件,是一个轻量级的钱包,可以用来查询余额和交易转账等。


运行一个基于区块链的宠物DAPP

部署一个DAPP的步骤
1、先部署好以太坊网络。
- 创建创始块

{
  "nonce": "0x0000000000000042",
  "timestamp": "0x00",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x00",
  "gasLimit": "0x80000000",
  "difficulty": "0x133332",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": {},
  "config": {
    "chainId": 15,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0
  }
}
  • 初始话创始块
mygeth.exe --datadir "%cd%\chain" init genesis.json
  • 启动geth私有链网络
mygeth.exe --identity "newEth" --rpc --rpccorsdomain "*" --datadir "%cd%\chain" --port 30303 --rpcapi "db,eth,net,web3,personal" --networkid 9999 console

2、编写智能合约,并部署。
合约代码

pragma solidity ^0.4.0;

contract Adoption {
    address[16] public adopters;
    // Adopting a pet
    function adopt(uint petId) public returns (uint) {
        require(petId >= 0 && petId <= 15);

        adopters[petId] = msg.sender;

        return petId;
    }
    // Retrieving the adopters
    function getAdopters() public view returns (address[16]) {
        return adopters;
    }
}

编译合约命令

E:\workspace\truffle\pet-shop>truffle.cmd compile

部署合约命令

E:\workspace\truffle\pet-shop>truffle.cmd migrate

3、启动DAPP
启动宠物商店命令

E:\workspace\truffle\pet-shop>npm run dev

打开网址
http://localhost:3000/
打开网页点击领养,显示领养成功。


研究成果

1、以太坊中心节点部署。
2、智能合约开发。
3、DAPP应用开发。
4、Docker容器化。

待研究

1、Docker命令脚本化封装。
2、研究合约之间异步交互,同步生效。

查看评论

图解区块链:14张图看懂什么是“区块链技术”?

区块链技术最初源于解决“拜占庭将军”问题,金融科技的发展使得区块链技术有了更好的应用场景。它最显著的特征是去中心化,当然在应用中也存在一些技术和安全的挑战。欲知何为区块链?且看图示详解。 ...
  • wo541075754
  • wo541075754
  • 2017-01-26 07:52:06
  • 37232

区块链发展一定需要代币吗?

区块链发展一定需要代币吗?从去年4月开始,比特币价格疯狂走高,ICO项目开始泛滥,区块链技术作为ICO项目的重要组成部分,在中国市场一路升温,这么看来是比特币的发展推动了区块链技术,但从未来趋势上看,...
  • bdzh135
  • bdzh135
  • 2018-03-19 12:32:40
  • 3931

一张图让你明白区块链的方方面面

  • 2017年08月15日 17:32
  • 230KB
  • 下载

区块链原理、技术及简介

  • 2017年12月10日 18:42
  • 4.14MB
  • 下载

各区块链底层数据存储分析(二)

目前市场上主流的区块链系统有比特币,Ripple,以太坊和 Hyperledger Fabric 。昨天小编已经为大家介绍了比特币和瑞波币(Ripple),今天小编将继续为大家分析当前主要流行的区块链...
  • Peersafe
  • Peersafe
  • 2017-12-15 09:40:27
  • 632

区块链介绍(一) 矿工挖矿过程

区块链矿工挖矿时机问题: 当矿工接到竞争者发送的新区块时,就放弃当前工作。更新区块,准备开始下一个区块竞争。  根据区块链白皮书,预计没十分钟生成一个区块。但是实际上,矿工并没有统一的算法保证收集到特...
  • huangyehui
  • huangyehui
  • 2017-04-21 17:38:22
  • 386

火爆全球的区块链到底是怎么一回事?

来源:  阮一峰  www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html此文已录入七月在线AI题库,作为国内首个AI题库,七月在线题库囊括绝...
  • T7SFOKzorD1JAYMSFk4
  • T7SFOKzorD1JAYMSFk4
  • 2018-02-06 00:00:00
  • 410

车联网是什么?云计算+区块链的车联网数据安全模型

自从“互联网+”概念一经提出,各行各业都悄然发生着变化,作为传统制造业,汽车似乎与互联网和互联网思维没有太大的关联,但是本次“互联网+”的出现着实对汽车行业产生了影响。不过虽然互联网汽车或者互联网企业...
  • uuZC66688
  • uuZC66688
  • 2017-09-08 09:43:47
  • 1332

日本区块链联盟助推日本区块链发展

区块链协作联盟(BCCC)是一个来自日本的区块链联盟。自去年4月开始,他们不断壮大该组。目前联盟成员已经超过了100多家公司。BCCC成员包括日本微软、日本三井住友保险公司、普华永道、Bitbank和...
  • sinat_36420262
  • sinat_36420262
  • 2017-01-03 11:54:29
  • 618

斯坦福区块链会议,图灵奖得主加密之父Whitfield Diffie邀请你参会

硅谷Live / 实地探访 / 热点探秘 / 深度探讨图灵奖获得者、公钥加密之父Whitfield院士邀请你参加斯坦福区块链会议图灵奖获得者、公钥加密之父Whitfield院士和CPC将于2018年3...
  • kXYOnA63Ag9zqtXx0
  • kXYOnA63Ag9zqtXx0
  • 2018-02-23 00:00:00
  • 483
    个人资料
    持之以恒
    等级:
    访问量: 4066
    积分: 733
    排名: 6万+
    文章存档