在公司待了两周后,谈谈我对区块链的理解
一直想在公众号写写关于这个话题的文章,其实在来公司之前在看一些关于区块链的书籍,但我觉得始终是片面的,还有太多的东西没法了解到,所以也就一直在搁置。
目前在公司学习了两周,自认为弄清楚了大部分的概念,当然还需要花很多的时间去实践才能真正弄清楚。本次就专门聊聊我现在眼中的区块链到底是“何方神物”?
区块链 1.0:比特币
开始了解到区块链,基本都是因为比特币的出现,这被称为区块链 1.0 时代。
我们知道,比特币归属于数字货币, 不像传统货币,它是一种彻底的虚拟货币,它是一个分布式的,点对点的系统。
可能说到这里,就有疑惑了。什么是分布式的,点对点的系统?我们来举个例子说明:
目前我们日常使用的支付系统是通过银行实现的,我们可以认为银行就是一个中心化服务机构,所有的交易必须通过这个中心化机构银行来完成交易,所有的账本数据都由该银行保管。这将带来一些问题,如果账本数据被篡改,或者账本数据丢失,难以想象会发生什么。
而比特币呢?他通过密码学,共识算法,p2p 网络等技术手段,使得所有人都拥有一份交易账本,而且账本数据无法被篡改,除非你拥有全网超过51%的算力,这种概率几乎是不可能的。
区块链底层技术其实很难讲清楚,这里我们大致说下交易的原理:
首先我们理解以下账户的概念,我们知道,当需要转账给其他人时,需要一个银行卡卡号。比特币也是一样,需要一个账户,在比特币中,这个被称为比特币地址,它是建立在密码学之上,通过数学原理保证安全可靠。
- address A 向 address B 进行转账(一笔交易)
- 将交易广播到比特币网络
- 交易在比特币网络中进行传播
- 矿工挖矿打包到区块
- 全网同步账本
这里面每一个知识点都可以写成一本书,目前也没有能力讲的很清楚,推荐大家阅读《区块链:通往资产数字化之路》
我们普通人好像并没有觉得比特币有什么用,感觉是个虚无缥缈的东西,那比特币有哪些主流应用场景呢?
- 抵御通货膨胀风险
- 跨越监管
- 跨境支付
- 因其匿名性可进行非法交易
区块链 2.0:以太坊
因以太坊的出现,区块链正式步入 2.0 时代。其中一个最重要的特性便是智能合约。
毫无疑问,比特币只是一个虚拟货币,仅此而已。而以太坊就不同了,它允许任何人通过智能合约在平台上建立和使用基于区块链技术的去中心化应用DApp,它支持预先定义一个业务逻辑来满足规范化的运行。一个合约就像一个自动化的代理,当条件满足时,智能合约就会自动运行一段特定的代码,完成指定的逻辑。
举一个很简单的例子来说明,如美国总统大选,现在需要投票选举总统。我们知道传统的投票机制存在很多问题,从美国总统选举就知道,暴露了一系列的问题,而且搜集投票的数据缓慢,统计难等问题,最重要的是可以做些手脚篡改数据等问题。
如果这通过区块链技术,再加上智能合约平台的话,不仅能保证数据的真实性,从源头上保证了数据的可靠。并且可以实时看到数据,简化投票流程等。
下面我们可以来模拟一下投票是如何进行的:
pragma solidity ^0.4.15;
// 投票类
contract Voting {
bytes32[] public candidateList;
mapping (bytes32 => uint8) public votesReceived;
// 构造函数
constructor(bytes32[] candidateNames) public {
candidateList = candidateNames;
}
// 每执行一个该函数,该候选人投票数量+1
function voteForCandidate(bytes32 candidate) public {
require(validCandidate(candidate));
votesReceived[candidate] += 1;
}
// 统计投票数
function totalVotesFor(bytes32 candidate) view public returns (uint8) {
require(validCandidate(candidate));
return votesReceived[candidate];
}
// 验证是否是候选人
function validCandidate(bytes32 candidate) view public returns (bool) {
for(uint8 i = 0; i < candidateList.length; i++) {
if(candidateList[i] == candidate)
return true;
}
return false;
}
}
将该智能合约部署到区块链平台后,构造了一个去中心化的分布式的投票应用,不仅安全可靠,而且数据真实可信无法被篡改。
如果你也想尝试,可以访问该链接去实践:https://blog.csdn.net/weixin_45629315/article/details/113469323
同样的关于以太坊的内容有很多,推荐大家阅读《精通以太坊:开发智能合约和去中心化应用》
区块链 3.0:Fabric
Fabric 的诞生意味着区块链进入 3.0 时代,它是由 linux 基金会开源的项目。
在此我们可以对区块链类型进行一个划分了,前面提到的两种区块链均为公链,即所有人都能参与进来。
但是这将导致一个问题,首先便是交易效率比较低下,比特币平均每秒7笔交易,而且每10分钟才能产生一个区块,在同步账本时需要耗费大量的资源造成资源的浪费,这些问题导致无法满足大多数商业化的应用。
因此,Fabric 诞生了,它成功设计并实现了一个满足商业需求的区块链平台。它归属于联盟链又称为许可链,即只有经过许可的成员才能加入到该区块链上,成员之间通过身份信息互相识别,其他人无法访问。它按照节点类型分配网络角色,加速了交易到共识服务的过程,同样支持智能合约,能够满足商业化需求。
联盟链使用的主要群体是银行、保险、证券、商业协会、集团企业及上下游企业。比如一些机构之间形成一个联盟链,交易只需要这几个机构形成共识就可以了,极大的提高了效率,而且有这以上提到的区块链的所有优势。
企业级区块链服务平台:Hyperchain
最后说说我们公司的 hyperchain 区块链底层平台。
作为一个国产的企业级区块链服务平台,Hyperchain 面向企业,政府机构和产业联盟,提供了一整套解决方案。支持现有云平台的快速部署、扩展和配置管理区块链网络,对区块链网络的运行状态进行可视化监控,并符合国家规范。
Hyperchain 平台技术架构设计:
- 参与者的成员身份认证许可机制
- 商业交易数据的安全与隐私
- 较高的交易吞吐量和较低的交易延迟
- 安全完备的智能合约引擎
- 可视化使用界面
- 可插拔的加密机制
- 高效共识算法
- 数据归档等
以上的所有特性,使得我们的区块链平台许多方向得到了落地的应用。
- 金融
- 民生
- 政务
- 司法
- 能源
区块链应用介绍:司法存证溯源
我们知道,区块链具有时间戳特性和不可篡改的特性,那将此技术应用于存证溯源来说简直是太符合了。
解决思路:
- 将需要存证的数据上链
- 根据 hash 值找到上链时的所有信息
但是这将带来一个问题,数据的存储问题,区块链上存不了大一点的数据,那么就需要另外的一些方案,思路如下:
- 求出该文件的 hash 值(每个文件都可以求出唯一的 hash 值,一旦文件的内容更改,hash 值就会变化)
- 文件可以存至服务器(更好的方式是存取到 ipfs 分布式文件系统中)
- 将该 hash 值存到区块链上,得到一个交易回执(该交易的 hash 值)
- 将文件的 hash 值与交易的 hash 值存至数据库中,便于溯源
- 后续溯源的时候在数据库中查找该 文件对应的交易 hash 便可溯源
本篇介绍了区块链目前的发展,也是我学习区块链的一些过程,也有一些个人心得,后续将会继续介绍关于区块链的一些应用。