win10下开发部署Dapp(0):从零开始

我个人算是一个比较后知后觉的人,2017年12月底才开始炒币,开始深入了解区块链。这里以一个新人的角度回忆一下这段时间的收获,做个记录,同时希望能给其他人一些帮助。 在我学习区块链的过程中,给我最大迷惑的,其实是“挖矿”这个词。我们从What、Why、How三个方向解释一下“挖矿”。在这之前,我们先得弄清什么是区块链,什么是比特币。

区块链,很接近数据结构中的链表——由一个个节点构成,每个节点都有一个指针,指向下一个节点。区块链的特殊性在于:这个链的维护不由一台机器控制,而是由全球的节点一起控制,并且任意一个已被确认的块里的内容都是不可更改的—— 一旦更改就可以很轻易的被人发现。比特币以及其他形形色色的数字货币,都是基于区块链技术的一个具体的应用。为什么区块链技术在其他领域没有广泛应用,在数字货币领域却广为盛行?因为区块链的存储效率、计算效率太低了,而数字货币本质上要记录账号间的转账信息即可,这些信息只占用很少的空间。而且这些交易信息 没必要\不能 更改。我们想知道一个账户的余额,只需要遍历一下整个链,将于这个账户相关的交易信息读出来、把转给这个账户的交易额进去、同时减去这个账户向外转出的交易额,剩下的即使该账户的余额。

接下来说挖矿。

什么是挖矿(What)?全球有N台”电脑”一起维护整个链,我们称每台电脑为一个“矿工”。挖矿即:这些电脑争夺记账权的过程,假设A矿工得到了记账权,将这个网络上的交易信息写进块中,自己将会得到一定的币做奖励(当前比特币爆块奖励为12.5BTC),得到了奖励,也就是”挖“到了比特币。 为什么要挖矿(Why)? 当比特币的各个持有者进行相互转账时,需要把转账信息写入块中。挖矿解决了两个问题:

  • 由谁记账
  • 发放奖励

如何挖矿(How)?以以太坊为例,需要有一个钱包地址(相当于银行账号),用来存放得到的奖励。一台有显卡的机器,显存3G以上。从官方下载挖矿程序,配置好命令行,双击运行就可以挖矿了。 比特币可以算是第一代区块链技术的一个实例,第一代区块链最大的特点在于:它不是图灵完备的。 以太坊则是第二代区块链,他提供了一个图灵完备的平台,在该平台上可以运行脚本语言(通常使用Solidity)来实现想要的功能,也就是智能合约。理论上来说,智能合约可以实现任何通用计算机能够实现的功能,但是效率可能很低、花费可能很高(智能合约每执行一行代码都要收取费用)。

以上简要的介绍了区块链的基本概念以及流程,为了尽量通俗易懂,避开了POW、POS、矿池等容易让人犯怵的名词。