区块链原理以及如何开发区块链程序

  区块链可以理解为是分布式数据库,读取数据,存储数据。特点是:耐久性,稳健性,透明性,不被破坏性。

  这时有同学会问:“老师,别人家说区块链是个分布式账本,有奖励机制,可以通过挖矿获取奖励,怎么不一样?”,问题很好同学,说的也对,但是有局限性,针对比特币来说都符合,但是比特币那是区块链1.0时代,以数字货币为主要应用,可以理解为分布式账本,每十分钟出一个区块然后奖励一些比特币。但是这只是区块链应用中的一个,而且在区块链3.0超级账本中就没有奖励机制,也不止是记账,还有存图片,视频,文字等等,所以把区块链理解为分布式数据库更准确。

  又有同学问了:“区块链1.0是比特币,3.0是超级账本,那2.0是什么?”,好问题,很认真,就是要这样,通过问题来驱动学习,区块链2.0是智能合约,也是现在比较主流的,像前一段时间养个宠物什么的,就是智能合约,目前基本上说区块链程序,就是指智能合约。这些内容在后面专栏文章中都会讲到。下面我们来看一下区块链的特点。

  耐久性:

  比特币运行9年了,也没有出现什么大问题,而且它是自动运行的,源码大家都能看到,只要还有节点在,它就能一直运行下去,就算发生个地震,火山爆发也不会影响,没有云服务器的费用,不需要运维,能够长期持续下去。

  稳健性:

  用大家熟悉的词“去中心化”来表示会更容易理解,但是它的本质是什么?大家可以思考一下,举个例子,津巴布韦这个国家通货膨胀导致货币贬值,原因就是津巴布韦政府超额发行货币,因为政府能控制发行货币可以理解为是货币中心,这样的话货币稳定不稳定就掌控在政府手里了,去中心化就是把货币中心去掉,没有单一的个体可以影响整个市场。

  透明性:

  建议大家可以到比特币官网,下载一个钱包然后看到所有数据,从比特币诞生到现在,下图是中本聪在第一个创世区块中写的信息,

  EThe T imes 03/Jan/2009 Chancellor on b rink of second b ailout for banks。可以吧,够透明了,谁都能查看。

  不被破坏性:

  这个可以理解为不可篡改性,是因为每一个区块里都包含两个hash值,一个是上个区块的Hash值,另一个是当前区块的Hash值,只要Hash值里面任何内容有改动,Hash值都会变,比如现在有100个区块,有人改了第53个,那么54到100的区块也都要跟着变动,也就是说54到100的区块的拥有者要去做改动,而且必须得到超过50%的区块拥有者的同意,大家才会把你改动的信息同步下来。

  如何开发区块链程序:

  现在说的区块链程序基本上就是指智能合约,开发语言是solidity,智能合约可以理解为在区块链上部署用solidity编写的应用程序,至于solidity这个开发语言学习起来也容易,需要掌握它的:

  变量类型,定义,使用

  函数定义,传参,返回参数

  流程控制

  循环

  初始化,构造函数

  生命周期

  类定义,继承

  solidity是需要编译的,了解这些基本就可以开始写了第一个智能合约了,其它的特性等练习过程中自然就学习到了。