大白话戏说区块链

大白话戏说区块链

一、基础概念

区块链是一种可以装文字,图片,数字等数据并且能对这些数据进行增删改查管理的 数据结构(可认为是数据库)。

生活中的数据结构长这样:

这叫链表!

还有长这样的:

这叫队列!每一个块里面存储了有数据,那么引入数据结构的本质是什么呢?

本质是将生活中的现实问题进行信息化处理,比如我们在食堂排队打饭的时候,可以遵循“队列”这个数据结构的特点-------“先进先出”,先进先出保证了我们排队的公平性,也就是“先来先得”,“先来先打饭”。那么计算机在组织处理数据时是否也同样需要维护这样的公平性呢?当然!计算机处理数据的优先级同样需要得到有效控制,维护公平机制。

我们所谈到的区块链类似于上面说的 链表,但我们在网上可以看到区块链的定义是多样化的。我们查看如下的诸多文献:

通过这些文献我们发现有的认为区块链是:

(https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20220106210421.png)]

其实区块链的定义是根据它的应用领域来区分的,他在金融领域发展广泛,所以才说区块链是分布式账本;金融领域强调的是安全,账本代表安全的隐喻。对于搞计算机工作的人来说就理解成 分布式数据库,这里提到的分布式是个什么概念呢?就是当数据库存的数据太多了压力会大,于是把数据存到多个数据库中减少这种压力。

综上,区块链是一种数据结构(可以存数据的东西),且数据发生变化的时候我们都知道它的变化,其存储数据的安全性还高于普通数据结构(链表,队列,数据库…)。

区块链的定义阐述了它存在的必要性。因为 凡是涉及到 “共享”,“隐私”,“安全”这三个话题的时候人们就会陷入到两难境地。根据唯物辩证法理论,他们既充满矛盾性同样也具备同一性。现有的计算机数据处理技术,存储技术大多体现的是矛盾性,而区块链体现的是他们之间的同一性。我们如何来绕开诸多概念去理解它呢?计算机科班的学生在大一初次接触《数据结构与算法》这门专业课时,教材作者严蔚敏老奶奶会告诉大家,学习一个新的数据结构时候要从这个数据结构的**逻辑结构(内部功能)物理结构(外部特性)**去入手。你认识一个新朋友的时候也是从他的 外貌特征内在品质认识的。

区块链外貌特征长这样:

第一个区块是老大,名叫创世区块,后面的是小弟。你如果要动其中一个小弟的数据,那么需要这整条链上的兄弟同意才行。为啥要他们同意呢?因为每个区块都把打开自己数据的钥匙放到了下一个兄弟手里,所以你得一个个兄弟问下去才能打开你想要打开的区块里的数据。当区块链长度足够长的时候,你想要获取其中区块的数据代价就会变得更大。一个个问看来是不靠谱了,那么我们来硬的呢?

我们直接破解获取小弟的数据可以吗?当然也不可以。因为每个小弟手里都握着一道数学题,你得先算题密码学相关),算出答案了才能拿到钥匙获取数据,可是这道题靠人算是不可能的,它的计算量很大,必须依靠计算机,而且是算力强的多台计算机来计算。我们把这个计算的过程称为挖矿!这道数学题的难度程度被一个叫 哈希值的东西随机控制。哈希值通过一个名叫哈希函数随机得出,这个函数又叫 sha256.

下图为每个区块内部结构:

​ 区块体内存储的就是数据


上面我们提到了让算力强的计算机去算题的过程叫 挖矿。那么计算机算题肯定是需要耗电,耗资源的,所以我们得设计奖励机制去奖励那些挖矿的计算机。让他们能够更情愿的为大家打工。我们最后奖励的是计算机,计算机是机器不是人,所以用的是数字虚拟货币,不是人民币,不是美元,统一一下全球通用的数字货币有:比特币,以太币,狗狗币

​ 曾几何时,我们说谈钱伤感情,只要说到人和人,人和钱的时候,关系就会变得复杂,很难协调。比如你表哥借了你两百,一直没还,但现在他忽然上西天了,请问你会找他的遗妻还钱吗?那如果他当初借的是两万呢?人和人之间的关系我们可以用 合同,合约进行约束,而在计算机和计算机之间在涉及到 数字虚拟货币 转账 的时候可以用到 智能合约进行约束。智能合约智能意译为 “自动执行”的意思。它能够自动执行是因为它就是一段程序,程序执行是一气呵成的(原子性特性)。比如:

if(你欠我的钱,时间超过>2)
    你卡里的钱自动转入我的账上

这段代码是计算机在执行,只要if条件满足就会执行,不可中断。不是人为操作,人不能干涉,而人为的欠条,合约除了受法律保护,还会因为道德束缚的原因失去原有的效益。

通过上文,我们已经知道了区块链相关基础概念:

  1. 分布式
  2. 逻辑结构和物理结构
  3. 创世区块
  4. 挖矿
  5. 哈希值,sha256,随机值
  6. 交易
  7. 数字虚拟货币,转账
  8. 智能合约

二、区块链技术

我们说到区块链具有:

  • 去中心化
  • 不可篡改
  • 全程留痕
  • 可以追溯

以上四条就是他的看家本领。每一条都不简单,直接分析会看不出什么,所以我们换个思路。

传统的app,网站项目是部署到服务器上的,甚至数据库里的数据还会有些许交互,而通过区块链技术衍生出来的技术开发的应用我们称为 Dapp(去中心化应用)。对比如下:

传统的app是部署到服务器上的,而通过区块链技术开发的 **Dapp(去中心化应用)**是部署到区块上的。我们前面已经介绍过了,区块很牛,很安全,你不需要数据库,不需要服务器,区块可以代替传统的数据库,服务器。而且你部署的应用数据发生变化,你都可以在区块上追溯它的变化,你部署在区块上的应用发生数据交互时数据变得更安全,因为数据发生变化会导致区块头内的哈希值发生变化,导致挖矿的难度也随之而变,那么别人破解你的应用数据将变得更加的困难。

这里说到app和Dapp的区别:App我们都知道是客户端应用,是application的简称。再说dapp就是D+app,d是英文单词decentralization的首字母,单词翻译中文是去中心化,即dapp为去中心化应用。意思是dapp应用不被某个中间机构所控制,就像马化腾的qq和微信,它能保证它的数据不被美国拿走吗?它不能保证,因为他没有去中心化啊,他用的还是别人的根服务器。如果把qq和微信部署到区块链上,那么将不存在谁控制谁,qq和微信的交互数据不会被某一个中心化机构监控,而是所有人都能看到。我们称之为去中心化。去中心化即信息的透明性,公开性。

我们把应用部署到区块链上以后,我们如何做到像传统app那样的前后端交互呢?传统的前后端交互会指定接口,你可以post,get。而区块链应用开发者面对的开发任务就是编写 智能合约。传统的app,网站开发涉及到前端技术,后端技术,服务器端技术,客户端技术…几个部门来干。而区块链应用Dapp的开发几个人就能干,他没有后端,他的逻辑就是由 智能合约所控制。

智能合约用到的编程语言是 solidity。它类似于 JavaScript。用到的编辑器是 redmix,这个编辑器可以在线运行,不是那种客户端的。现在主流的,用在区块链应用开发的前端技术既有 HTML+CSS+JS,还有Vue,Web3,React框架,和前端接壤的面积很大,Nodejs是必须用到的环境,而智能合约部分就是个 solidity语言,区块链开发技术线路中,用的最多的技术框架是 truffle,主要就图个方便,因为它类似于后端开发用到的 Maven工具,前端开发用到的 Npm工具,终端命令行,极客风格。

三、辅助工具(模拟工具)

我们说智能合约相当于后端,在和前端交互的过程中,会涉及到转账操作。也就需要用到数字虚拟货币以太币,关键是我也买不起真实的以太币,所以我们需要一个模拟环境,比如Metamask钱包,这是一个插件,安装到Chrome或者火狐浏览器中。我们需要用到Ganache,模拟节点网络,先测试好我们本地的智能合约,确保无误以后在上线部署到真正的区块链网络中。每次都去生产环境中去修改代码代价太大了。

如Metamask钱包,这是一个插件,安装到Chrome或者火狐浏览器中。我们需要用到Ganache,模拟节点网络,先测试好我们本地的智能合约,确保无误以后在上线部署到真正的区块链网络中。每次都去生产环境中去修改代码代价太大了。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>