区块链概论(开发者入门篇

有关区块链的文章很多,但是我总感觉每一篇读完之后理解的都不透彻。趁着刚学习完一些理论知识,来自己整理篇终极入门。

(可以收藏但不支持转载)


区块链的监管


区块链并不是一个新技术,而是一堆已有技术的结合,包括分布式技术、密码学等等。比特币诞生与2009年,区块链作为其后端支撑,在2015年才掀起浪潮,大家逐渐发现区块链的应用领域远远不止代币(代币这个词很好理解,作为钱币的替代品,在特定的场合或者范围内才有效。比如比特币莱特币以太币等等等等。)

我国对于代币的监管较严格,中国人民银行宣布,发行初始代币(ICOs)是一种非法的融资手段。但同时,我国支持区块链技术的发展,并在16年12月其归为互联网金融的一项技术(参考《北京市“十三五”时期金融业发展规划》),在之前的8月,北京市金融工作局已经在推动中关村区块链联盟设立。

截止2018.5,北京、上海、广州、深圳、浙江、贵州等地在内的十八个地区出台了相关区块链项目鼓励政策。各地区将区块链研发及应用作为重要战略发展目标,并出台详细鼓励政策。所以抛开代币这个概念,区块链的未来还是值得期待的。

最近由于参加项目,收集了一些区块链在各领域在2018-2023年市场价值的预测数据,做了个柱状图。

但是这个数据吧,我认为看看就好并不能当真 = =,毕竟现在区块链的底层技术还不成熟,发展空间较大。由于供应链金融这块很贴紧区块链的运作方式,所以目前也在大力发展。

感觉说了一堆没用的。其实是想大家先了解下这个领域,包括他的制度。

区块链概述


Melanie Swan在《区块链:新经济蓝图及导读》中将区块链应用分为区块链1.0、2.0和3.0

区块链1.0:比特币,支撑虚拟货币应用,转账、汇款和数字化支付相关的密码学货币应用。

区块链2.0:支撑智能合约应用合约是经济、市场和金融的区块链应用的基石。应用包括股票、债券、期货、贷款、抵押、产权、智能财产和智能合约。2.0的代表是以太坊,以智能合约为中心,用户可以自己编辑智能合约(这当然存在一定的风险,比如TheDAO事件,黑客就是从智能合约中的漏洞入手。)

区块链3.0:应用是超越货币、金融和市场的范围的去中心化应用,特别是政府、健康、科学、文艺和艺术领域。3.0的代表是EOS(so called 3.0),但是平台好像不是很稳定,速度并没有他对外宣称的那么快。其实3.0可能还在发展中。

 

比特币分类:


1. 公有链(Public blockchain):对所有人开放,任何人都可以参与。

    应用包括:比特币、以太坊、虚拟货币、面向大众的电子商务、互联网金融等B2C\C2C\C2B等场景

2. 私有链(Private blockchain):对单独的个人或实体开放

    应用包括:数据库管理、审计,防范内部和外部的对数据安全的攻击,是许可链

3. 联盟链(Consortium blockchain):对特定的组织团体开放

    应用包括:40多家银行参与的区块链联盟R3,和Linux基金会支持的超级账本Hyperledger,需要注册许可,许可链

    用于机构间交易、结算或清算等B2B形式

4. 侧链(sidechains):比特币平均每十分钟出一个区块,每个区块1MB大小,使得大概每秒才能确认7笔交易。侧链来提升效率。      闪电网络把很多交易放在侧链,只有在做清算时才用上主链,大大提高交易速率,又不会增加主链的存储负担。

5. 互联链(interchain):各自垂直领域的区块链互联互通,形成区块链全球网络。

 

区块链行业架构:协议层、扩展层、应用层。


协议层

底层技术,完整的区块链产品,维护网络节点,提供API调用。通常提供简单的客户端。

构建了网络环境,搭建了交易通道,指定了节点奖励规则,

技术:网络编程、分布式算法、加密签名、数据存储技术。

语言:网络编程能力强的,对并发处理简单的。比如Nodejs, Go

 

进一步分为存储层和网络层。

比特币选择的是谷歌的LevelDB,读写性能好。

网络层是编码的重点和难点,包括点对点网络中的分布式算法、加密签名。《Nodejs开发加密货币》

也有将点对点网络的实现单独分开:

节点查找、数据传输和验证等逻辑独立

共识算法、加密签名、数据存储等组成核心层

 

扩展层

类似电脑驱动,让区块链产品更加实用。

有两类,一是各类交易市场,法币兑换加密货币。

二是针对某个方向的扩展实现,例如智能合约,即达到某个条件,合约自动执行,比如证券转移。

技术没有限制,分布式存储、机器学习、VR、物联网、大数据等等。

任何需要第三方支付的产品都可以方便的使用区块链

任何需要确权、征信和追溯的信息,也可以借助区块链。

 

应用层

各种客户端(DAPP、钱包等)。

 

比特币协议层使用C++开发、官方客户端钱包用Qt、第三方钱包用Python,共识算法采用PoW(Proof of work)工作量证明机制。

以太坊给出了Go(go-ethereum)\Java(Ethereum(J))\Python等多语言的实现。客户端有Rust, Ruby, Javascript等。

 

大家对区块链的定义都是分布式的公开数据库,或者叫他账本。所以功能明显:存储。存储的是什么?不可篡改的交易。

一段时间内产生的交易被打包进一个区块中,这个区块被挖出来之后(称为挖矿),连接到最长的链条上(区块数量最多),就构成了区块链。

我们根据比特币区块链来理解区块链的工作方式。

 

比特币地址


首先我们来看一下比特币地址。作为交易的用户,我们首先每个人要有个地址,这样我才能给你转账。

比特币地址由数字和字母组成。生成过程如下:

公私钥若是有问题参考密码学。

非对称加密:每个人有两把钥匙,其中一把只有自己知道(私钥),另一把可以公布于众(公钥);通过私钥加密过的信息,只要公钥才能解密,连私钥都不能,公钥可以通过私钥生成很多把。

用户随机生成私钥,然后通过私钥产生公钥,对公钥进行SHA256加密函数加密,再使用RIPEMD160加密,得到了公钥HASH。再经过两次SHA256加密,取前四字节作为校验码加入到原公钥HASH中,再添加相应的版本号(目前为0x00),将这些字节合并后通过Base58,生成58字节的比特币地址。

 

交易


对于每个账户,比特币存储的不是其余额(还剩多少比特币),而是交易记录。比如A转给我1个比特币,B转给我2两个比特币,存储的是这些账单。

(累了....待更)

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/ll523587181/article/details/81126819