假如你在2016年年底买10000元的以太坊,在2018年年初,你将拥有近200万元。如果换成比特币,这个数字仅仅是30万。比特币这个词在过去两年成为比中彩票还热门的暴富词汇,但真正夸张的确是以太坊。

以太坊到底是什么?

这个问题回答起来,并没有想象的那么简单。以太坊的诞生,很大程度上受到了比特币的影响,我们先简单回顾一下比特币本身的故事。

比特币作为数字货币的先驱者,实现了一个去中心化、点对点的全球开放式支付网络。去掉那些高大上的词汇,简单说起来,比特币网络就是全球无数台运行比特币客户端程序的计算设备,通过国际互联网进行通信,形成的一个 P2P 网络。在这个网络上,任何人都可以进行点对点的转账操作。比特币的一些显著特点有:

  • 无中心信任。任何节点均可加入和退出网络,理论上节点无需信任除自己外的其他节点。

  • 极高的安全性。比特币背后的区块链技术中,加入了密码学层面的安全性验证,可以在绝大部分情况下,保证账户的安全性,交易的正确性和不可篡改性。

  • 匿名性。比特币的所有交易数据是公开透明的,但是从纯数据的角度看,交易数据无法和发起交易的个人产生实质性的联系,因此比特币网络上的交易有较高的匿名性。

为了实现上面提到的去中心化信任以及安全性等问题,比特币引入了基于 PoW(Proof of Work)的验证机制,即大家经常听到的“挖矿”。关于 PoW 和“挖矿”具体介绍,不属于本教程的核心内容,有兴趣的同学可以自行查阅相关资料。

这里我们只需要了解,通过 PoW 的机制,比特币让攻击者很难通过攻击比特币网络获取收益,通过攻击获取的收益很大概率上会小于对网络提供贡献获取的收益。比特币拥有的这些相比传统货币而言颇具颠覆性的特性,加上比特币作者中本聪的社区影响力,等等诸多原因结合在一起,使得比特币成为了人类历史上第一个被大规模使用的数字货币。

“区块链”本质上就是一个数据库。在比特币网络中,所有交易产生的账本数据,以区块链的形式记录在网络当中的所有计算机的存储当中。目前(2018 年末)比特币网络中账本的记账数据量已经达到上百 GB,并且还在持续增加。

比特币的设计者中本聪作为一个程序员,在设计比特币的时候很自然会想到比特币交易的可编程性。事实上他也确实是这么做的。比特币客户端实现了一个简单的基于堆栈的脚本解释器,比特币交易本身的校验就是通过运行脚本来实现的。理论上通过写脚本,是可以实现交易的编程性的。但是比特币的脚本功能很局限。

首先比特币脚本没有高级语言可以用,相当于只能使用汇编语言来编程,第二也是非常致命的一点,为了比特币本身的安全性,比特币脚本被故意设计成了非图灵完备的,这也就意味着可以通过编程实现的操作受到了非常大的限制。

图灵完备(Turing-complete),是一个计算机科学上的概念,是对计算能力的一种描述。图灵完备的具体内容,感兴趣的同学可以查阅有关资料。在这里我们只需要知道,比特币的脚本由于不是图灵完备的,缺乏很多编程语言中常见的功能,例如没有循环语句。

比特币诞生并稳定运行 5 年之后的 2014 年,以 Vitalik Buterin(江湖人称“V 神”)为核心的团队,创新性地提出了 Ethereum 的概念,中文翻译“以太坊”。以太坊对比特币的扩展性这一环进行了补充,建立了一个可编程的,图灵完备的区块链平台。

以太坊平台可以看做是一个全球范围运行的、永不停机的大型计算机,允许开发者在其之上使用高级语言进行编程,发布的应用可以立即在全网使用,并且永远不会下线。

以太坊本身也是一系列协议(protocol)的总称,其中包括 P2P 通信协议,链数据结构,地址格式等。只要实现了以太坊协议的程序,均可以加入以太坊网络,成为网络中的节点。以太坊协议有各种语言的诸多实现,例如 go-ethereum/Geth(Go 语言实现),Aleth(C++ 语言实现),Parity(Rust 语言实现)等等,其中最为广泛使用的是 Geth 和 Parity。

数字货币的春天过去了么?没人知道。但区块链的雪已经逐渐开始融化了。今天跟大家分享的这个教程就是通过讲解太坊平台中的若干重要概念,为后面深入学习区块链打下基础。

主要知识点:

  • 以太坊平台基础知识

  • 智能合约简介

具体讲解教程涉及大段代码,这里就不强行展示了。大家可以点我查看教程详情&学习。

相关阅读

8个爽滑的Windows小软件,不好用你拿王思葱砸死我

60人,42天,死磕机器学习,结果如下。

武侠版编程语言…Java像张无忌还是令狐冲?

大量机器学习&深度学习资料

技术变现,到底怎么变?

一份以太坊入门完全指南(非程序员免进)。相关推荐

  1. 以太坊入门手册(附各类工具链接)

    本文将围绕以太坊,介绍相关基础知识,提供各种查询工具.社群链接,帮助大家更加深入学习以及在以太坊上进行开发. 从 2008 年诞生以来,区块链走过了十多年的风雨路,繁衍出比特币.以太坊.EOS等诸多公 ...

  2. Python开发以太坊智能合约指南(web3.py)

    在以太坊上获得一个基本的智能合约是一个很简单的事,只需google查询"ERC20代币教程",你会发现有关如何做到这一点的大量信息.以编程方式与合约交互完全是另一回事,如果你是一个 ...

  3. 非程序员如何使用 Git——版本控制你的生活

    在协同工作和版本控制方面,Git 绝对是一个优秀的工具,但其优点并不被大众所熟知.在过去的几年中,由于大众对于文字处理,电子表格(译者注:这里暗指Word和Excel,下同.)以及其他常用的功能的需求 ...

  4. {转载}非程序员的GNU Emacs使用心得

    ......Shell Mode 第12集 如何从 shell 中退出来?为什么要退出来?为什么要如何退出来?为什么不能用 exit 退出来? 为什么... 没错,shell 的确是用 exit 退出 ...

  5. iPhone开发入门(1)----程序员眼中的iPhone

    自去年 iPhone 面世以来,开创了移动设备内容服务的一种新的模式--程序商店(App Store).它极大地降低了移动设备应用程序开发的成本,即使普通人也能进入这个市场.就像在PC上开发应用程序一 ...

  6. mysql是一门编程语言吗_掌握一门编程语言对非程序员的工作和生活有多大好处?...

    编程的作用之一,就是可以减少重复性的劳动,所以非程序员如果能够掌握一门编程语言的话,可以大幅度地提高工作效率和质量:甚至有些时候不需要掌握编程语言,只要懂一些程序员常用的软件,就可以让你的工作事半功倍 ...

  7. Android游戏开发实践指南(华章程序员书库)

    <Android游戏开发实践指南(华章程序员书库)> 基本信息 原书名:Learning Android Game Programming:A Hands-On Guide to Buil ...

  8. iPhone开发入门(1)—-程序员眼中的iPhone

    http://blog.csdn.net/itudou_2010/article/details/5492272 iPhone开发入门(1)--程序员眼中的iPhone 博主:易飞扬 原文链接 : h ...

  9. 区块链及以太坊入门介绍

    一.区块链入门介绍 阮一峰写的挺好的:   http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html 区块链技术:是一个去中心化的 ...

最新文章

  1. centos 下安装mysql,linux(Centos7)下安装mysql8.0.18的教程图解
  2. UE中的自动化学习课程
  3. Google CEO Sundar Pichai :“谷歌最大的威胁就是自身的成功”
  4. 编写微信小程序常用到的界面参数
  5. Android_SQLite_升级框架
  6. Ghost网刻后window 7 sysprep无人值守应答文件制作
  7. C语言如何在可变参数函数中使用printf?
  8. 实验四 恶意代码技术
  9. 【C语言进阶深度学习记录】三十三 C语言中动态内存分配
  10. 为何我中断执行的线程不起作用,Why
  11. python print输出字符串报错
  12. html怎么设置动画保持,html – 如何使用CSS3为td列可见性设置动画
  13. .7z文件 合并、解压
  14. python之捕鱼问题
  15. 为什么在AndroidManifest.xml中Activity的theme用不了Theme.Light.NoTitleBar?
  16. 连载 | Android之Camera1实现相机开发
  17. Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释
  18. [已解决]mysql查询一周内的数据,解决一周的起始日期是从星期日(星期天|周日|周天)开始的问题
  19. mysql 查询数据库ip_如何查看连接MYSQL数据库的IP信息
  20. 线性代数学习笔记3-4:描述线性变换的空间压缩情况(列空间、秩)

热门文章

  1. macos port总结
  2. js与设计模式----单例
  3. Optimize a Flex application using deferred instantiations
  4. asp.net防类似DDOS攻击(CC攻击)代码
  5. MySQL binlog和redo/undo的概念
  6. 第三次作业(词频统计及其效能分析)
  7. 长脖子鹿省选模拟赛 [LnOI2019SP]快速多项式变换(FPT)
  8. 解决IE8IE9 jquery ajaxj 跨域请求失败的问题。
  9. javascript构造函数继承
  10. Coreseek-带中文分词的Sphinx