欢迎大家来到IT世界,在知识的湖畔探索吧!
假如你在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。
数字货币的春天过去了么?没人知道。但区块链的雪已经逐渐开始融化了。今天跟大家分享的这个教程就是通过讲解太坊平台中的若干重要概念,为后面深入学习区块链打下基础。
主要知识点:
- 以太坊平台基础知识
- 智能合约简介
具体讲解教程涉及大段代码,这里就不强行展示了。大家可以在shiyanlou.com搜索关键词“以太坊”学习完整教程,也可以点击文末扩展链接查看更多介绍。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/61580.html