LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > 【以太坊智能合约编程】之【solidity傻瓜代码3】----简单的计数器和Remix IDE简介

【以太坊智能合约编程】之【solidity傻瓜代码3】----简单的计数器和Remix IDE简介

2021-05-30 邹刚 来源:区块链网络

【以太坊智能合约编程】

【solidity傻瓜代码3】

简单的代码

pragma solidity >=0.4.22 <0.6.0; contract Counter { uint counter; function count() public { counter = counter + 1; } }

代码的解读

第一句:pragma,contract,unit,function等等解释见前文。

第二句:contract Counter。定义计数器合约。 counter(计数器)。

函数的解释

合约就是由函数和数据构成。

函数就是各种功能的实现。

这里就是实现一个计数器的功能。

counter = counter + 1;

这就是自己不断的给自己加一的计数器。比如跳绳,比如读秒,比如数钱等等。

function count() public {
counter = counter + 1;
}

注意:count和counter是两个东西。

count()是函数的名字。

counter是一个uint的数据。

所以再说一遍:合约就是由函数和数据构成。

Solidity 是一门编译型语言,代码被编译为以太坊虚拟机字节码之后,再部署到以太坊网络。用人话来说就是。至今为止,我们学的Solidity代码都是人类的语言(很像英语),计算机根本无法识别。所以需要下面的工具编译(compile)。(就是把sol代码翻译成电脑可以执行的语言)

Remix IDE

https://remix.ethereum.org/

Remix 就是用来开发、编译、部署智能合约的IDE(集成开发环境)(简单说就是写代码的地方),它还是一个基于浏览器的Web IDE 。


创建文件


创建文件会自动加一个.sol

sol表示这是solidity文件

代码拷贝到右边。如下图所示。


编译文件


合约的部署


注意:合约的部署(Deploy)是要消耗以太坊的。

所以应该在测试网上来玩。不要在正式的以太坊部署(Deploy)这样的示范合约(没有任何用)

几个名词解释

运行环境:EVM
EVM(Ethereum Virtual Machine)以太坊虚拟机 。用来执行以太坊上的交易,提供智能合约的运行环境。

而EVM运行在以太坊节点上,当我们把合约部署到以太坊网络上之后,合约就可以在以太坊网络中运行了。

合约的编译compile

以太坊虚拟机上运行的是合约的字节码形式,需要我们在部署之前先对合约进行编译,可以选择Remix 或solc编译器。

合约的部署Deploy

在以太坊上开发应用时,常常要使用到以太坊客户端(钱包)。

以太坊客户端(钱包)

以太坊客户端,其实我们可以把它理解为一个开发者工具,它提供账户管理、挖矿、转账、智能合约的部署和执行等等功能。

Geth是典型的开发以太坊时使用的客户端,基于Go语言开发。 Geth提供了一个交互式命令控制台,通过命令控制台中包含了以太坊的各种功能(API)。

以太坊中有两类账户

外部账户
该类账户被私钥控制(由人控制),没有关联任何代码。
合约账户
该类账户被它们的合约代码控制且有代码与之关联。

智能合约的部署是指把合约字节码发布到区块链上,并使用一个特定的地址来标示这个合约,这个地址称为合约账户。(由实际矿工出块之后,才真正部署成功)。

运行

合约部署之后,当需要调用这个智能合约的方法时只需要向这个合约账户发送消息(交易)即可,通过消息触发后智能合约的代码就会在EVM中执行了。

Gas汽油

占用区块链的资源(不管是简单的转账交易,还是合约的部署和执行)需要付出相应的gas费用

Gas费用就是愿意为这次交易愿意付出的费用:Gas价格(用以太币计价) * Gas数量。

Gas数量:任何特定的合约所需的运行合约的Gas数量是固定的,由合约的复杂度决定。

Gas将按照特定规则被逐渐消耗,无论执行到什么位置,一旦Gas被耗尽,将会触发异常。当前调用帧所做的所有状态修改都将被回滚, 如果执行结束还有Gas剩余,这些Gas将被返还给发送账户。

还有一个好处就是如果没有这个gas费用的限制,就会有人写出无法停止(如:死循环)的合约来阻塞网络。

因此(把前面的内容串起来),我们需要一个有以太币余额的外部账户,来发起一个交易(普通交易或部署、运行一个合约),运行时,矿工收取相应的工作量费用(gas汽油)。

总结一下

我们现在来总结一下,

1:以太坊是平台,它让我们方便的使用区块链技术开发去中心化的应用,

2:在这个应用中,使用Solidity来编写和区块链交互的智能合约,

3:合约编写好后之后,我们需要用以太坊客户端用一个有eth余额的账户去部署及运行合约。

—-

编译者/作者:邹刚

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...