区块链教程--快速入门

原文链接:http://www.jianshu.com/p/25bd28d09e6b

原创文章,转载请注明:转载自技术哥

微信订阅号:技术哥


技术哥

给你不一样的世界


主要内容:
  • 区块链是什么?
  • 区块链用来做什么?(区块链的应用场景)
  • 怎么做?(实现区块链)
  • 扩展知识

1. 区块链是什么?

一句话总结,区块链就是一群认同并遵守这个规则的人共同记录连续信息的过程。

从字面意思的理解:区块链是由一个个记录着各种信息的小区块链接起来组成的一个链条,类似于我们将一块块砖头叠起来,而且叠起来后是没办法拆掉的,每个砖头上面还写着各种信息,包括:谁叠的,什么时候叠的,砖头用了什么材质等等,这些信息你也没办法修改。

从计算机层面理解:区块链(英语:blockchain 或 block chain)是用分布式数据库识别、传播和记载信息的智能化对等网络,也称为价值互联网。(摘自维基百科)。分布式数据库就是将数据信息单独放在每台计算机,且存储的信息的一致的,如果有一两台计算机坏掉了,信息也不会丢失,你还可以在其他计算机上查看到。

谈到区块链,免不了要聊聊比特币,说白了,比特币是区块链的一个应用。比特币是08年诞生的第一种数字货币,从一万个币换一个披萨到一个币单价近两万,比特币8年暴涨百万倍,其背后的区块链技术更是被各大金融巨头竞相研究。就好像比特币是面包,而区块链是面粉,比特币一问世,人们立马发现面包是面粉做的,后来人们还发现,面粉不但可以做面包,还可以做包子、馒头等等。

2. 区块链用来做什么?(区块链的应用场景)

区块链是为了解决通过网络买卖商品和服务的双方之间的信任、透明性和责任性问题。

比特币算是区块链的第一个应用。

先是有人发现用比特币可以做小额跨境支付。只要用人民币买比特币,再卖出成美元,就完成了跨境支付。于是诞生了Circle这样的公司。拿到了5000万美元来自高盛的投资。

然后又有人说这还不够直接。我可以另外做一个区块链,在这个区块链上可以记录各种国家的货币间的转账和交易。于是就诞生了Ripple,要做SWFIT 2.0,成为未来银行间的清算标准。

还有人说我可以用区块链记录各种股票,于是诞生了纳斯达克的Linq项目,做非上市公司的股权登记和交易;又有人说我可以用区块链的不可篡改特性,写入数据进行公证,于是有了Factom项目,现在正在帮助洪都拉斯政府用区块链登记房屋产权;

然后又有一个19岁的加拿大神童说,你们都用区块链记录数据,我建立一个记录程序代码的区块链,于是有了以太坊项目,试图将人类语言书写的商业合同变成计算机语言编写的可以自动执行的智能合约。

11612414-182b09fcae6acc8a
  1. 由内至外,第一个圆圈内的分布式网络是区块链的核心。
  1. 第二个圆圈内的数字货币、交易所、矿机、矿池、云挖矿、比特币ATM机、支付/钱包、数字货币网关等是区块链1.0,是以比特币等数字货币为核心形成的底层产业结构。
  1. 第三个圆圈内的资产鉴证、慈善、积分交易、金融服务、基础设施等是区块链2.0,是围绕数字货币底层技术—区块链技术而产生的商业形态,区块链2.0相对区块链1.0更有想象空间。

目前,在地球上各处不为人知的角落里,先行者们在卯足劲偷偷研发的应用场景如下:

11612414-d1318a8c8eb97a63
区块链的应用场景

3. 怎么做?(实现区块链)

区块链与其说是一种技术,不如说是一种技术架构。这种技术架构有如下特性:

实现这种技术架构的编程语言及框架:

1. C/C++

比特币(协议层)就是用C++语言开发的。

2. Nodejs/Javascript

Nodejs平台拥有强大的网络编程能力。可以使用著名的express开发框架,基于http协议开发而成。

3. Python

如果是Python语言爱好者,建议研究研究以太坊(Ethereum)的Python实现。
以太坊官方定位为一种开发管理分布式应用的平台,主攻方向就是“智能合约”,并为其定制了一种编程语言Solidity。
以太坊给出了Go、Java、Python等多语言的实现。
其中以python为基础的实现主要包括三个部分:
1. Pyethapp是客户端部分;
2. pyethereum是核心库,实现了区块链、以太坊模拟机和挖矿等功能;
3. pydevp2p是点对点网络库,实现了节点发现、合约代码传输、加密签名等功能。
这三者组合在一起就是完整的区块链实现,后面两个核心库共同组成了协议层。

4. Go

Go语言可以让你用同步方式轻松实现高并发,特别是在分布式系统、网络编程等领域,应用非常广。
其中,由linux基金会主导的超级账本(HyperLeger),版本库的名字叫Fabric,就是其中一个。该项目试图为新一代的事务应用创建一种开放的分布式账本标准。

4、扩展知识

  1. 知识图谱


    11612414-6637e60e515dc668
    知识图谱
  2. 词汇解释

    区块(Block)是区块链中的一条记录,包含并确认待处理的交易。

    挖矿(Mining)指通过计算形成新的区块,是交易的支持者利用自身的计算机硬件为网络做数学计算进行交易确认和提高安全性的过程。

    对等式网络(Peer-to-PeerNetwork)是指通过允许单个节点与其他节点直接交互,从而实现整个系统像有组织的集体一样运作的系统。

    哈希散列(Hash)是密码学里的经典技术,把任意长度的输入通过hash算法,变换成固定长度的由字母和数字组成的输出。

    数字签名(DigitalSignature)是一个让人可以证明所有权的数学机制。

    私钥(PrivateKey)是一个证明你有权从一个特定的钱包消费电子货币的保密数据块,是通过数字签名来实现的 。

  3. 常见问题

问:什么是区块链?

答:通俗一点说,区块链技术就指一种全民参与记账的方式。

问:这样全民记账的区块链有什么好处?**

答:可以发现,这是在牺牲一点效率的情况下,获得了极大的安全性。

问:区块链解决了什么问题吗?

答:区块链最重要的是解决了中介信用问题。

问:区块链是比特币吗?或者比特币就是区块链吗?

答:区块链技术是比特币的底层技术。

问:区块链技术主要可以用在哪些行业?

答:区块链主要的优势是无需中介参与、过程高效透明且成本很低、数据高 度安全。所以如果在这三个方面有任意一个需求的行业都有机会使用区块链技术。

问:什么是比特币说的“挖矿”?

答:比特币中的“挖矿”实际上就是记账的过程,比特币的运算采用了一种称为“工作量证明(Proof of Work,PoW)”的机制,系统为了找出谁有更强大的计算能力,每次会出一道数学题,只有最快解出这道题目的计算机才能进行记账。而抢到记账权的计算机会获得25个比特币的奖励。通常把这个行为称为“挖矿”,把获得的比特币视为挖矿成功获得的奖励。

问:所有的区块链都需要挖矿吗?

答:并非所有的区块链项目都会采用类似于比特币这样的“工作量证明”方式,这更多出现在早期的区块链项目中。

问:什么是公有链?什么是私有链?什么是联盟链?

答:公有链是任何节点都是向任何人开放的,每个人都可以参与到这个区块链中参与计算,而且任何人都可以下载获得完整区块链数据(全部账本)。但是有些区块链的应用场景下,并不希望这个系统任何人都可以参与,任何人都可以查看所有数据,只有被许可的节点才可以参与并且查看所有数据。那么这种区块链结构我们称为私有链
联盟链是指参与每个节点的权限都完全对等,大家在不需要完全互信的情况下就可以实现数据的可信交换,R3组成的银行区块链联盟要构建的就是典型的联盟链

问:什么是智能合约?

答:智能合约是一种用计算机语言取代法律语言去记录条款的合约。

总结

  1. 区块链是一种技术架构,比特币就是用它实现的。
  1. 区块链还可以用来实现其他应用。
  2. 实现区块链的主流语言有C/C++、Python、Go、Nodejs/JavaScript;
  3. 实现区块链的主流框架有:Truffle、Hyperledger 、BigchainDB、IPFS。

下一个教程,技术哥将带着大家试着实现一个区块链项目,还等什么,赶紧关注技术哥吧。


11612414-e766886866c03e89
关注“技术哥”的微信公众号查看更多技术文章
展开阅读全文

没有更多推荐了,返回首页