酷玩网

Solidity教学第一集,智能合约、Remix、储存与检验、ETH

linx
欧意最新版本

欧意最新版本

欧意最新版本app是一款安全、稳定、可靠的数字货币交易平台。

APP下载  官网地址

随着区块链技术的迅猛发展,其应用领域日益拓宽。目前,智能合约在金融、供应链等多个行业正迎来飞速的发展,不仅大幅提高了流程的自动化效率,而且在资安管控和品质保障方面也实现了质的飞跃。为了帮助读者,无论是否有编程基础,都能掌握基础智能合约的编写,本文将连载五篇教程,以便大家在深入学习和参与区块链项目商业开发时能够无障碍沟通。

Solidity是编写以太坊智能合约的核心编程语言。作为一种智能合约的编写语言,Solidity允许在区块链上存储、交易和编写代码。与JavaScript、Python和C++等语言类似,Solidity也是一种具有一定难度的编程语言,它专门用于在以太坊虚拟机(EVM)上运行,并在各个全节点上存储和执行。简而言之,学习Solidity就等于掌握了在区块链网络上创建智能合约和应用的方法。

【REMIX界面】首先,我们需要使用Remix来编写代码。那么,什么是Remix呢?Remix是一个基于Web的集成开发环境(IDE),它允许我们在浏览器中编写、编译和存储Solidity代码,包括智能合约等。除了编写代码,Remix还提供了许多其他实用功能。因此,我们将使用Remix作为这次智能合约开发的IDE。(Remix链接)请大家打开一个新的标签页或窗口,启动Remix,以便跟上接下来的教学。(Remix链接)在Remix页面的左侧,点击“browser”旁边的加号,可以创建一个新的文件夹来编写Solidity代码。【新建文件夹命名为MyContract(可自定义)】然后,创建一个名为“MyContract.sol”的新文件夹。在代码的第一行,我们需要指定使用的Solidity版本,因为Solidity会随着时间更新其工具,尽管核心内容保持不变,但大家仍需关注版本信息。

pragma solidity ^0.4.24;

接下来,我们声明智能合约如下:

pragma solidity ^0.4.24;contract MyContract { // ...}

在此,我们需要先解释一些基本概念,以便后续操作。

智能合约是在以太坊区块链上执行的一段程序代码。以太坊区块链上的程序代码都是公开且开源的,这意味着任何人都可以查看你的智能合约代码,同样地,你也可以查看其他人的代码。接下来,我们希望编写一个能够“存储”的程序代码,而这段代码的功能既可以“存储”也可以“验证”。为了在Solidity中实现“存储”和“验证”,我们首先将一个变量命名为value。由于Solidity是一种静态类型语言,在声明变量之前,我们需要指定数据类型,如下所示(例如,string代表字符串,指定数据类型为文本时使用):

pragma solidity ^0.4.24;contract MyContract { string value;}

这个变量是一个“存储变量”,它将数据存储在区块链上。只要我们给一个值或数据,它就会存储在区块链上。

*数值会存储在存储空间中,而不是内存中。

*整个智能合约都可以访问这个变量,并解改变量中的数值,但有些变量只能在访问函数内部访问值,而且无法直接更改值。

接下来,我们创建一个函数来从存储的数据中读取该值。我们首先使用一个名为“get”的函数:

function get() { // ...}

现在,我们使用“return”将存储变量返回值。return就像是我们刚刚存储的变量吐出来一样,因此当我们需要获取刚刚的值时,就会调用get函数,如下所示:

function get() { return value;}

我们将此功能的“可见性”设置为公开,以便任何连接到区块链的人都可以调用它(而不仅仅是智能合约代码本身)

function get()public view{ return value;}

最后,我们为函数指定返回值类型为字符串:

function get() public viewreturns(string){ return value;}

这样我们就可以从智能合约中获取数值。

接下来,我们先介绍如何从智能合约外部更改数值的方法。我们将创建一个名为set的函数,如下所示:

function set(string _value) public {

我们创建一个可以接受字符串类型参数的函数。这个功能也是公开的,因此任何连接到区块链的人都可以调用它。现在,让我们实际更改智能合约的数值,如下所示:

function set(string _value) public {value = _value;}

我们设置一个值给存储变量。底线开头表示为一个局部变量,在很多语言中,包括Solidity,都是如此表示。我们可以先为设置的存储变量设置一个默认值。操作如下:

constructor() public { value = “myValue”;}

我们先声明构造函数。每次部署智能合约时,它都只会运行一次,并且是公开可信的。至此,我们就完成了一个程序代码。完整的程序代码如下,请注意顺序和逻辑,新手要注意括号的位置。

pragma solidity ^0.4.24;

contract MyContract { string value; constructor() public { value = “myValue”; }

function get() public view returns(string) { return value; }

function set(string _value) public { value = _value; }}

【完整程序代码】 接下来,我们要编译和部署这个智能合约。首先,在浏览器的左侧点击下面的插头符号,并搜索“compiler”和“run”,然后点击“Activate”启用这两个插件(上图)【两个插件安装】启用后,会多出下面两个符号【显示Deactivate代表已安装,未来可卸载】接着,点击左侧的循环图标,选择版本0.4.25来编译代码(版本会不断更新,不同版本可能会有细微差异),记得勾选“Auto Compile”,然后点击蓝色的“Compile”按钮【确认版本与编译合约】接下来,让我们选择测试环境,选择左侧列表中的第三个选项。我们选择JavaScript虚拟机,因为它可以在浏览器中提供一个模拟的区块链,类似于智能合约部署后的样子。【Deploy部署合约】为什么不直接部署呢?因为将智能合约部署到真正的区块链上需要消耗以太币,也需要等待时间,而Remix可以提供更快且模拟部署后的效果。这也是我们选择Remix的原因。【部署智能合约】 部署完成后,如何与智能合约进行交互呢?我们可以调用智能合约中的函数,而这些函数在Remix界面中已经为我们准备好了,如下所示:点击get()。可以看到在函数中设置的默认值“myValue”。我们使用set()更新值。在表格中添加一个新值,只需确保将其用引号引起来即可,例如:“New Value”。因为这样才可以表示它是一个字符串,然后运行它!智能合约会读取该值并将其更改为“New Value”。在编译器下方为交易记录,这是虚拟区块链上所有交易的完整列表。因为区块链是由区块记录和组成的,而这些记录被“链”在一起,成为公开账本。区块链的基本单位为交易,可以点击箭头向下查看更多详细信息。 以上我们就完成了一个以太坊的智能合约,在下一个阶段,我们会以刚才编写的智能合约代码为基础,进行下一步的教学。

标签: 数字货币