区块链的基本理论与实践

一、前言

1.1 叙叙旧

对于区块链的学习,自己是从大四做毕设的时候开始。看到网上的文章,文章质量层次不齐,要么只是讲述理论,要么就是贴几行代码,对于初学者很不友好。由于一些原因,最近再次接触到了区块链,加上有重新开始写博客的打算,就将它作为第一篇文章发布吧。

1.2 文章摘要

这篇文章主要围绕基于以太坊的区块链开发,主要分为两个模块:区块链的理论介绍和相关的学习资料推荐;前端通过JavaScript语言,利用浏览器插件MetaMask作为钱包管理工具,使用官方提供的web3.js库实现和以太坊进行交互。

二、区块链基本理论


提到区块链,对于非区块链开发者,想到的大概是上面这些词语。关于上面的词语在网上随处可以找到解释,但所有的解释却似乎千篇一律,下面我将以我的理解通俗的简单的解释一下这几个词语。

2.1 比特币

我认为“中本聪之于比特币,似张小龙之于微信”,比特币是中本聪发行的一种电子货币,而微信是张小龙打造的一款产品。比特币底层采用的技术是区块链,微信底层采用的则是传统的移动端开发。比特币只是一款“产品”,但是很多人在评价区块链技术是否有用的时候却根据比特币的前景来判断,我认为这样有些不妥。不过这样的想法却是可以理解的,毕竟比特币是区块链的第一款“产品”。

关于上面说的电子货币,可以理解为我们银行卡里的人民币的数量。随着国家不断的发行货币,理论上所有银行卡的总额会增加,因此钱也变得不那么值钱。但是世界上所有的比特币总量却不会增加,始终保持在2100万个,给人的感觉就是一种限量版的“物品”,所以大家争相抢购,导致比特币的价格一涨再涨(下图是比特币的价格波动情况,更多信息可以点击这里)。我们在使用银行卡进行转账时,一边数字减少,另一边数字增加;通过比特币转账时也同理。

2.2 去中心化

在现阶段,通过银行卡向另一方转账,我们银行卡上的数字减少,对方数字增加,这些信息都保存在银行的服务器中。如果银行卡的数据被修改或者丢失,就会出现很严重的问题(虽然现在从来没有出现过,不过出现了也不会媒体曝光,_)。当然银行肯定会多地备份这些数据,并不会那么轻易的丢失或者被修改。

在区块链技术中,为了实现去中心化,则在每个用户那里都存储一份数据,这样数据就不会被权威机构掌握,此外如果想要篡改数据,必须同时在一半以上的用户那里修改数据,也就是我们说的51%攻击。如果用户足够的多,理论上将是不可能实现的。这里说的不可篡改是指不能恶意的去修改,比如一个人的姓名一旦写入区块链中就永久记录在区块链上,你如果正常的修改姓名,则是可以的。

2.3 以太坊

以太坊是1994年出生的一个俄罗斯小伙创立的,他的全名是Vitalik Buterin,因此也被人称为V神,由于创立了以太坊,目前身价已经百亿(以前是经商使人致富,未来大概是技术使人致富)。下面放一张V神的图片

关于以太坊的详细介绍,最好的方法当然是看以太坊白皮书,中文版请点击这里,英文版请点击这里。不过如果没有相关的知识储备,直接看白皮书可能觉得会有点突兀。通俗的来讲就是:以太坊通过以太坊虚拟机把机器虚拟化,这样某种程度来讲,每台机器都一样。通过RPC(远程过程调用,Remote Procedure Call)技术实现每个节点的连接和通信。我们在基于以太坊进行开发的时候不必在意底层的实现,只需要知道如何使用以及它的基本原理即可。就像我们在使用TCP/IP协议的时候,我们不用在意每一层协议的具体实现,只需要知道如何使用以及它的基本原理(当然你想要自己实现一个除外)。

2.4 挖矿

如何没有出现区块链技术,我们听到挖矿这个词语,想到的场景大概是下面这样的:在一个山洞中,一群人拿着工具不停的挖,希望能够挖到金矿或者铁矿。这在区块链中也类似,在去中心化中提到,区块链中的数据需要保存在每一个节点中,当有一个新的数据需要记录的时候,到底谁第一个来记录这个数据呢?因为记录的数据并不是我们明文的数据,而是经过加密的,在第一个记录以后,其他人直接复制第一个就可以了(例如老师布置一道题目,第一个同学做好以后,其他人抄一下就好了,到底谁来做呢?)于是区块链中制定了一个规则,第一个记录的人给予一定的奖励,因此大家为了获得这个奖励都不停的去争取这个记账权,这就是挖矿。争取记账权就是挖矿。

举例来说,如果需要把password:123456这条数据放在区块链中,通过把需要放的数据与机器产生的一个随机数做哈希运算,如果得到的哈希值的前面五位是零,那么就由你来记账,也就是挖到矿了。当然也可以设置前面十位是零,这样难度就会更高。随机数是你电脑随机产生的,所以挖矿就有点像买彩票,理论上你买的越多,中的可能性越大。所以不断的挖,挖到的可能性也越大。

现在大量的人都在挖比特币,随着比特币的数量越来越少,挖矿模式也随着变化。最开始一个人买一些机器,就放在家里,独自的去挖矿,挖到了就赚了,没挖到就损失电费以及机器的损耗费用。由于最初的挖矿难度比较简单,所以大家都愿意冒这个风险,但是随着挖矿难度的增加,现在大家把所有的机器都放在一起,如果挖到矿了,那么就根据你所提供的算力占所有机器总算力的百分比来获取收益。

2.5 智能合约

把Smart Contract翻译为智能合约,我觉得不太好。因为很多人第一次听到智能合约这个词语的时候第一反应是这个合约是智能的吗?但事实是,智能合约的智能和人工智能的智能没有任何关系。关于智能合约,我听到最好的解释是李笑来的一个解释:所谓的智能合约,就是一段可以执行但是不可以篡改的程序代码。智能合约就是普通的代码而已,只是因为部署在区块链中,去中心化的特点导致我们无法修改这段代码。

2.6 加密算法和P2P

关于加密算法在区块链中主要采用非对称加密和HASH-256,也没有什么可以说的,而P2P则是我们很熟悉的技术了。

2.7、小结

区块链技术是由很多基础的技术结合而成的一种新技术,造出了很多新的词语,加上比特币的火爆,因此区块链技术也出现在了技术人的视野中。对于区块链技术,我认为其核心是解决信用问题。我们在淘宝购买商品的时候,我们担心付钱了卖家不发货,卖家担心发货了我们不给钱,所以出现了支付宝,先把钱给支付宝,等买家收到货以后再给卖家。我们信任支付宝,是因为它足够的大,马云也足够的有钱,我们觉得它不会拿着我们的钱跑路。但是如果支付宝很小,并且不出名呢?这时候我们恐怕就会有很多担忧了。另外支付宝也只能够在金钱的支付方面解决信用问题。如果这时候我们采用区块链技术,则一切都变得简单,通过一段无法篡改的代码,一旦满足条件,就执行,没有谁能够阻挡。

由于知识和文笔有限,很多地方阐述不到位,如果想对区块链的有更多的了解,下面几篇文章值得一读:
区块链入门教程

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值