以太坊是一个基于区块链技术的去中心化应用平台。它允许任何人在平台上通过区块链技术构建和使用分散的应用程序。
对于那些不理解这句话的人,让我们只了解以太坊是区块链的Android。它是一个开发平台,允许我们像Android框架一样编写基于区块链技术的应用程序。
在以太坊之前,写区块链应用是这尚力财经小编2022样的:复制一个比特币代码,然后修改加密算法、共识机制、网络协议等底层代码。(很多假币都是这种情况,换了之后会出一个新币)。
以太坊平台封装了底层区块链技术,让区块链应用开发者可以直接基于以太坊平台进行开发。开发者只要专注于应用本身的开发,难度就大大降低了。
目前,围绕以太坊已经形成了一个比较完整的开发生态系统:在社区的支持下,有很多开发框架和工具可供选择。
智能合约什么是智能合约
以太坊上的程序叫智能合约,是代码和数据(状态)的集合。
智能合约可以理解为可以在区块链中自动执行(事件驱动)并以代码形式编写的合约(特殊交易)。
在比特币脚本中,我们谈到了比特币交易是可以编程的,但是比特币脚本有很多局限性,可以编写的程序有限,而以太坊则更为完备(用计算机科学的术语来说,叫做“图灵完备”)。让我们编写程序(智能合同),它可以做几乎任何事情,就像使用任何高级语言一样。
智能合约非常适合对信任度、安全性和持久性要求较高的应用场景,如:数字货币、数字资产、投票、保险、金融应用、市场预测、财产所有权管理、物联网、点对点交易等。
目前除了数字货币,真正的应用并不多(就像移动平台刚开始出来)。相信一到三年之内,各种杀手会慢慢出现。
编程语言:Solidity
智能合约的默认编程语言是Solidity,文件扩展名以。索尔。
Solidity是一种类似于JavaScript的语言。用来开发契约,编译成以太坊虚拟机字节码。
还有Serpent,一种看起来像Python的智能合约开发语言。不过,我建议你还是用扎实。
Browser-Solidity是一个针对浏览器的Solidity IDE。可以点进去看看。我们将在以后的更多文章中介绍语言的可靠性。
运行环境:EVM
EVM(以太坊虚拟机)以太坊虚拟机是以太坊中智能合约的运行环境。
Solidity之于EVM,正如它之于JVM的关系一样,这样每个人都可以很容易地理解它。以太坊虚拟机是一个隔离的环境,EVM内部运行的代码无法与外部连接。
当EVM运行在以太坊节点上时,我们将契约部署到以太坊网络后,契约就可以在以太坊网络上运行了。
契约的编译
以太坊的虚拟机是以契约的字节码形式运行的,这就需要我们在部署之前编译契约。可以选择Browser-Solidity Web IDE或者solc编译器。
部署契约
在以太坊上开发应用时,经常会用到以太坊的客户端(钱包)。我们在开发中通常不会触及客户端或者钱包的概念。这是什么?
以太坊客户端(钱包)
以太坊客户端,其实我们可以把它理解为一个开发者工具,它提供了账户管理、挖掘、转移、部署、执行智能合约等功能。
EVM由以太坊客户端提供
Geth是以太坊开发中使用的典型客户端,基于Go语言开发。Geth提供了一个交互式命令控制台,其中包含以太坊的各种功能(API)。Geth的用法将在后面的文章中介绍。这里我们先有一个概念。
Geth控制台类似于Chrome浏览器开发者工具中的控制台,但Geth控制台运行在终端中。
与Geth相比,Mist是以太坊客户端,具有图形化的操作界面。
如何部署
智能合约的部署是指将合约字节码发布到区块链,用一个特定的地址来标记这个合约,这个地址叫做合约账户。
以太坊有两种类型的账户:
外部账户:这些账户由私钥控制(由人控制),不与任何代码关联。合同账户:这些账户受其合同代码控制,并有与之相关的代码。与比特币使用UTXO的设计不同,以太坊使用了更简单的账户概念。
EVM有两种相同的账户。
外部账户和契约账户的区别和联系如下:一个外部账户可以通过用自己的私钥创建和签署交易,向另一个外部账户或契约账户发送消息。
两个外部账号之间发送消息是一个价值传递的过程。但是从外部帐户到合约帐户的消息将激活合约帐户的代码,允许它执行各种操作(例如转移令牌、写入内部存储、挖出新令牌、执行某些操作、创建新合约等。).
只有当外部账户给出指令时,合约账户才会执行相应的操作。
合约部署是将编译好的合约字节码通过外部账户发送交易的形式部署到以太坊区块链上(只有在实际矿工给出区块后,部署才算真正成功)。
运行
合约部署后,需要调用这个智能合约的方法时,只需要向这个合约账户发送消息(交易)即可。消息被触发后,智能合约的代码将在EVM执行。
Gas
类似于云计算。占用区块链的资源(无论是简单的转让交易还是合同的部署和执行)也需要支付相应的费用(天下没有免费的午餐,对吧!)。
以太坊中使用气体机制进行计费。气体也可以被认为是工作负荷的单位。智能合同越复杂(计算步骤的数量和类型、占用的内存等。),完成操作需要的气体就越多。
任何特定合同运行所需的天然气数量是固定的,由合同的复杂程度决定。
而气价是运行合同的人在提交运行合同的请求时规定的,以此来确定他愿意为这笔交易支付什么:气价(以泰国货币计价)*气量。
GAS的目的是限制执行事务所需的工作量,同时为执行付费。当EVM执行交易时,天然气将根据特定规则逐渐消耗。无论在哪里执行,一旦气体耗尽,就会触发异常。当前调用框架所做的所有状态修改都将被回滚,如果执行后还有任何Gas留下,这些Gas将被返回到发送帐户。
没有这个限制,就会有人写停不下来的契约(比如:无限循环)来封锁网络。
所以实际上(把前面的内容串起来)我们需要一个有以太坊余额的外部账户来发起交易(一般的交易或者一个合约的部署和运营)。运行时,矿工收取相应的工作量费用。智能合约部署是指将合约字节码发布到区块链,并用特定地址标记合约,该地址称为合约帐户。
考试网:私链有些着急的同学要问了。我没有以太坊。如何开发智能合约?
答案是创建我们自己的以太坊私有测试网络,通常也叫私有链。我们可以将它用作开发、调试和测试智能合约的测试环境。
通过上面提到的Geth很容易创建自己的测试网络。以太坊可以挖掘你想要的,它也消除了同步官方网络的整个区块链数据的需要。
另一种创建测试网络的方法是使用testrpc,这是一个以太坊环境,在本地使用内存模拟。开发调试更加方便快捷。 而testrpc可以帮助我们在启动时用资金创建一堆测试账户。
对于契约开发,可以在testrpc中测试通过后部署到Geth。
Dapp:去中心化应用
以太坊社区称智能契约式应用为去中心化应用。如果我们把区块链理解为一个不能被篡改的数据库,把智能合约理解为一个处理数据库的程序,那么就很容易理解Dapp了。Dapp不仅有智能合约,比如友好的用户界面和其他东西。
Truffle
Truffle是一个Dapp开发框架。它可以帮助我们处理很多无关紧要的小事,让我们快速开始编写代码-编译-部署-测试-打包DApp的过程。
总结
现在来总结一下。以太坊是一个平台,它允许我们方便地使用区块链技术来开发去中心化的应用程序。在这个应用程序中,Solidity用于编写与区块链交互的智能合同。写完合同后,我们需要为邰方客户部署和运行带有余额账户的合同(Truffle framework可以帮助我们做得更好)。为了开发的方便,我们可以使用Geth或者testrpc来搭建一个测试网络。尚力财经小编2022
注:本文中,为了方便大家理解,对一些概念进行了类比,有些严格来说是不准确的。但是,我也认为,初学者没有必要把每一个概念都掌握的细致准确。学习是一个循序渐进、不断深入的过程,很多时候我们会发现,经过一段时间后,我们会对同一件事情产生不同的认识。
以上是以太坊。这是什么?以太坊发展介绍指南详情,更多以太坊知识分享信息,请关注coir.com其他相关文章!