区块链学习(二)以太坊学习简介

很多人在刚接触区块链的时候疑惑以太坊是什么东西,和区块链有什么关系,为什么要学习以太坊等问题,本文将简单介绍,目的是学习和理解以太坊方便以后深入学习。

这里从区块链的发展说起:

区块链起源于比特币,是比特币的底层技术。具体介绍参照我对区块链介绍的博客:http://blog.csdn.net/striver_jt/article/details/68485521

区块链1.0时代:

也就是比特币应用中的区块链技术,里面记录着自比特币诞生以来的所有比特币转账交易,相当于比特币网络的“数据库”。其实在区块链1.0时代,也就是比特币运用的区块链技术中已经包含了智能合约的概念,可以说智能合约的引入,使得区块链技术进化为驱动世界的力量。区块链1.0 特征与不足:去中心化,开放性,自治性,信息不可篡改,匿名性。不足:支撑智能合约的脚本系统不完善,导致其应用在非金融领域十分困难,数学计算已经吞噬了全网80%的算力,每个区块的大小只有1M,能够记录的信息非常有限。

区块链2.0诞生:

         以太坊的出现,使得智能合约能力被自由释放。以太坊在比特币区块链的基础上进行了重大改进:1、完善脚本系统,使智能合约能够应用在各种非金融领域,这点非常重要;2、平衡账目实现更加精细的账目控制;3、底层协议保持简单。以太坊:图灵完备的虚拟机

区块链技术将多个领域内的概念和操作结合在一起,包括计算、通讯网络、加密学和人工智能。在区块链2.0中,我们需要通过智能合约和智能资产来记录和转移更多复杂的资产类型,我们就需要第三步—更强大的脚本系统–最终实现图灵完备(能够运行任何货币、协议和区块链)。以太坊就是一个区块链为基础的项目,旨在提供一个图灵完备脚本语言和图灵完备平台。

         因此我们学习区块链,可以直接从学习以太坊开始。

什么是以太坊?(官网: https://ethereum.org/)

        

以太坊是一个全新开放的区块链平台,它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。就像比特币一样,以太坊不受任何人控制,也不归任何人所有——它是一个开放源代码项目,由全球范围内的很多人共同创建。和比特币协议有所不同的是,以太坊的设计十分灵活,极具适应性。在以太坊平台上创立新的应用十分简便,任何人都可以安全地使用该平台上的应用。

以太坊虚拟机

以太坊是可编程的区块链。它并不是给用户一系列预先设定好的操作(例如比特币交易),而是允许用户按照自己的意愿创建复杂的操作。这样一来,它就可以作为多种类型去中心化区块链应用的平台,包括加密货币在内但并不仅限于此。

以太坊狭义上是指一系列定义去中心化应用平台的协议,它的核心是以太坊虚拟机(“EVM”),可以执行任意复杂算法的编码。在计算机科学术语中,以太坊是“图灵完备的”。开发者能够使用类似于现有的JavaScript和Python等语言为模型的其他友好的编程语言,创建出在以太坊模拟机上运行的应用。

如何运行以太坊呢?

         通过下载以太坊提供的客户端(有能力也可以自己编写),以太坊客户端将通过网络连接其它运行了类似客户端软件的计算机并且通过他们开始下载以太坊区块链从而赶上进度。相当于你也加入了以太坊区块链的网络中成为其中的一个节点,并与其它节点一样具有同等地位的处理事务。记住在一个点对点的网络里,没有“核心”服务器并且任何一个计算机都拥有等同的权利和地位。你可以在以太坊区块链上做的事情:连接到以太坊网络,探索以太坊的区块链,创建新的交易和智能合约,运行智能合约,挖矿新的区块等等。

你可以理解为以太坊网络是类似于比特币的网络,但是不仅仅是这样,他还是一个底层开发平台,具有更完善的机制。以太坊也是工作量证明(POW)挖矿同比特币一样,矿工通过花费电力解开数学难题创建有效区块。以太坊的工作量证明算法称为Ethash,它与比特币的工作量证明稍微有些不同,降低了对矿工算力的要求,这使得用普通硬件挖矿成为可能。以太坊有一种内置的数字货币:

以太坊里的代币叫做Ether,简称ETH。与BTC类似,这种加密货币可以用来与其它加密货币或其它法币进行交易。目前一个ETH的价格大概在人民币365元左右(2017年3月)。与BTC拥有者被记录在比特币区块链中一样,以太币ETH拥有者也被记录在以太坊区块链中,尽管在技术实现的方式上它们有些许不同。

以太坊的区块时间更短

与比特币区块的10分钟相比,以太坊区块间时间大约在14秒左右。这意味着,当你在比特币和以太坊中发起一笔交易,以太坊中的交易被记录入区块链中的速度快于比特币中交易被记录区块链中。你可以认为比特币写入数据库的时间平均为10分钟,而以太坊写入数据库的时间平均为14秒。

以太坊虚拟机上可以运行智能合约

相比比特币原始的脚本语言,在以太坊中用来部署代码以及运行智能合约的语言更高级,因此开发者们更熟悉。智能合约是一段存储在以太坊区块链上的简短计算机程序,智能合约代码在一种被称为以太坊虚拟机的东西上运行,以太坊虚拟机分布在网络中所有参与者的计算机上运行着。现在可以简单的把智能合约类比为传统服务器端的代码。

以太坊学习开发中常见的项目与工具简介:

        

         刚接触以太坊时候被其各种客户端,编译工具,环境,项目等搞得晕晕的,这里简单介绍以太坊各项目,客户端,工具等。

 

Geth客户端:

即Go-ethereum项目由go语言开发,界面:命令行适用平台:windows、linux和OSX

功能和特点:该项目是使用最广泛的以太坊客户端,大部分节点都是运行的该客户端,教程和例子也最多,推荐使用,可用于挖矿,组建私有链,管理账号,部署智能合约等常用功能,不可以编译智能合约。

pyethereum项目和ethereumj项目(客户端)

 pyethereum项目是用Python语言编写的以太坊客户端,ethereumj项目是用Java语言编写的以太坊客户端,只是语言不同,和前面GO语言编写的客户端Geth的功能完全相同。

webthree-umbrella项目(客户端):

此项目包含3个客户端,开发语言:c++,使用平台:windows、linux和OSX,易用性也很好。但是随着后续以太坊基金会主推的图形化钱包Mist的推出,渐渐没落。

 Mix(IDE)

Mix 是智能合约(以太坊称为DAPP)的开发IDE,可以支持智能合约(DAPP)的编写、调试,部署,全图形化界面,但是目前已经停止开发了,开发组转向了Remix,所以目前我们进行智能合约的编写调试时候一般使用Remix。

Mist项目(客户端)

由JavaScript语言开发,客户端文件:Mist,可以在windows、linux和OSX平台使用的图形化界面。Mist定位不只是一个钱包,而是将来DAPP(智能合约的应用APP)市场,类似于苹果市场,在这里可以有你的账号,可以浏览、发布和买卖以太坊的DAPP应用。目前因为开发还不够全面,名称暂时显示为Ethereum-Wallet,作用也很简单,就是一个钱包的功能。未来要多多关注。

Truffle:

truffle是以太坊(Ethereum)最受欢迎的一个开发框架,是本地的用来编译、部署智能合约的工具,他可以为你做很多编译部署等事情,使得开发者能够专注于开发。

Testrpc:

Testrpc是以太坊区块链在本地的一个模拟环境,不同于geth,geth是真正的以太坊环境,testrpc是在本地使用内存模拟的一个以太坊环境,对于开发调试来说,更为方便快捷,当你的合约在testrpc中测试通过后,再可以部署到geth中去。

Solc:

对智能合约的一个编译工具,在现在一般的开发中可以由Remix替代。

solidity项目

solidity是智能合约的编程语言,语言风格类似于JavaScript,目前只适用于以太坊智能合约的编写,你可以把他理解为一门新的编程语言。


browser-solidity项目:

由C++开发,非常方便的一点就是用户输入网址,使得编译器在浏览器中显示,无需下载本地编译器。可以使用的平台:windows、linux和OSX。功能和特点:该项目是智能合约浏览器版本的开发环境,可以支持在浏览器中直接开发、调试和编译,对于初学者来说,可以快速上手,不需要安装,非常方便,直接访问地址使用:https://ethereum.github.io/browser-solidity/



综上所述:一般我们初学者进行一些简单本地编程本着容易上手考虑所能用到的有:geth等客户端,truffle开发框架,browser-solidity网页编译器,testrpc测试环境,solidity编程语言。

附:

以太坊官方网站:https://ethereum.org/

该网站为以太坊的官方网站,有详细的以太坊介绍和各种资源。

Solidity编程帮助文档:http://solidity.readthedocs.io/en/latest/

Truffle开发框架说明文档:http://truffleframework.com/docs/

以太坊新手教程:http://8btc.com/topic-ethereum.html

猜你喜欢

转载自blog.csdn.net/striver_jt/article/details/68489076