当前位置: 首页 > news >正文

区块链原理是什么?如何开发区块链程序

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

介绍

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

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

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

 

 

耐久性:

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

 

稳健性:

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

 

透明性:

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

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这个开发语言学习起来也容易,需要掌握它的:

  1. 变量类型,定义,使用
  2. 函数定义,传参,返回参数
  3. 流程控制
  4. 循环
  5. 初始化,构造函数
  6. 生命周期
  7. 类定义,继承

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

 

 

总结:

介绍了区块链的特性:耐久性,稳健性,透明性,不被破坏性

智能合约的开发语言:solidity

区块链的三个时代:比特币1.0,以太坊2.0,超级账本3.0

互联网时代大家可能是996,早上9点工作到晚上9点,一周工作6天。

区块链时代是8247,早上8点工作到晚上24点,一周工作7天。

 

 

 

 

 

 

转载于:https://my.oschina.net/sunqichao/blog/1631714

相关文章:

  • Eclipse 如何创建Web项目
  • 软件开发中的完整测试所包括的环节UT、IT、ST、UAT
  • 我奋斗了18年,不是为了和你一起喝咖啡
  • 你信仰的一切就是你的价值观
  • VirtualBox中CentOS安装GuestAdditions
  • ghost 恢复和安装系统
  • bzoj千题计划269:bzoj2655: calc (拉格朗日插值)
  • centos mysql定时备份
  • 正确使用 Volatile 变量
  • 用dom4j操作XML文档(收集)
  • 10大基础实用算法及其讲解
  • 记一个mysql环境RR隔离级别转换成RC的问题
  • 为什么设计vMotion和Management网络分开【展现虚拟化商业价值征文大赛】
  • java开发设计六大基本原则
  • 磁盘空间满额报警shell脚本
  • 【Linux系统编程】快速查找errno错误码信息
  • 【前端学习】-粗谈选择器
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Android系统模拟器绘制实现概述
  • java8-模拟hadoop
  • Leetcode 27 Remove Element
  • MySQL几个简单SQL的优化
  • ReactNativeweexDeviceOne对比
  • React-生命周期杂记
  • STAR法则
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 前端之React实战:创建跨平台的项目架构
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 入手阿里云新服务器的部署NODE
  • 算法系列——算法入门之递归分而治之思想的实现
  • 异步
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​secrets --- 生成管理密码的安全随机数​
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • $GOPATH/go.mod exists but should not goland
  • (+4)2.2UML建模图
  • (2022 CVPR) Unbiased Teacher v2
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (二十三)Flask之高频面试点
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (四) Graphivz 颜色选择
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)visual stdio 书签功能介绍
  • ***监测系统的构建(chkrootkit )
  • ***检测工具之RKHunter AIDE
  • .NET 5种线程安全集合
  • .Net CF下精确的计时器
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET面试题(二)
  • .sdf和.msp文件读取