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


5. 互联链():各自垂直领域的区块链互联互通 , 形成区块链全球网络 。
区块链行业架构:协议层、扩展层、应用层 。

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

文章插图
协议层
底层技术 , 完整的区块链产品 , 维护网络节点 , 提供API调用 。通常提供简单的客户端 。
构建了网络环境 , 搭建了交易通道 , 指定了节点奖励规则 , 
技术:网络编程、分布式算法、加密签名、数据存储技术 。
语言:网络编程能力强的 , 对并发处理简单的 。比如, Go
区块链概论(开发者入门篇

文章插图
进一步分为存储层和网络层 。
比特币选择的是谷歌的 , 读写性能好 。
网络层是编码的重点和难点 , 包括点对点网络中的分布式算法、加密签名 。《开发加密货币》
也有将点对点网络的实现单独分开:
节点查找、数据传输和验证等逻辑独立
共识算法、加密签名、数据存储等组成核心层
扩展层
【区块链概论(开发者入门篇】类似电脑驱动 , 让区块链产品更加实用 。
有两类 , 一是各类交易市场 , 法币兑换加密货币 。
二是针对某个方向的扩展实现 , 例如智能合约 , 即达到某个条件 , 合约自动执行 , 比如证券转移 。
技术没有限制 , 分布式存储、机器学习、VR、物联网、大数据等等 。
任何需要第三方支付的产品都可以方便的使用区块链
任何需要确权、征信和追溯的信息 , 也可以借助区块链 。
应用层
各种客户端(DAPP、钱包等) 。
比特币协议层使用C++开发、官方客户端钱包用Qt、第三方钱包用 , 共识算法采用PoW(Proof of work)工作量证明机制 。
以太坊给出了Go(go-)\Java((J))\等多语言的实现 。客户端有Rust, Ruby, 等 。
大家对区块链的定义都是分布式的公开数据库 , 或者叫他账本 。所以功能明显:存储 。存储的是什么?不可篡改的交易 。
一段时间内产生的交易被打包进一个区块中 , 这个区块被挖出来之后(称为挖矿) , 连接到最长的链条上(区块数量最多) , 就构成了区块链 。
我们根据比特币区块链来理解区块链的工作方式 。
比特币地址
首先我们来看一下比特币地址 。作为交易的用户 , 我们首先每个人要有个地址 , 这样我才能给你转账 。
比特币地址由数字和字母组成 。生成过程如下:
区块链概论(开发者入门篇

文章插图
公私钥若是有问题参考密码学 。
非对称加密:每个人有两把钥匙 , 其中一把只有自己知道(私钥) , 另一把可以公布于众(公钥);通过私钥加密过的信息 , 只要公钥才能解密 , 连私钥都不能 , 公钥可以通过私钥生成很多把 。
用户随机生成私钥 , 然后通过私钥产生公钥 , 对公钥进行加密函数加密 , 再使用加密 , 得到了公钥HASH 。再经过两次加密 , 取前四字节作为校验码加入到原公钥HASH中 , 再添加相应的版本号(目前为0x00) , 将这些字节合并后通过 , 生成58字节的比特币地址 。
交易
对于每个账户 , 比特币存储的不是其余额(还剩多少比特币) , 而是交易记录 。比如A转给我1个比特币 , B转给我2两个比特币 , 存储的是这些账单 。而比特币的创新在于UTXO( , 未花费的交易输出) 。也就是说 , 我要发起一笔交易 , 转账给C两个比特币 , 这时交易的输入则是部分UTXO 。我有一些别人转账给我的账单 , 来自A的1个和B的两个 , 那么我转给C的这个交易 , 使用的就可能是B转给我的这笔钱 。