塔岸网

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

热度:10℃ 发布时间:2023-11-29 17:06:50

区块链的应用日趋广泛,智能合约现阶段也在金融、供应链等领域快速发展,让许多流程高效率自动化,同时资安管控品质也大幅提升。以下将会有五篇教学文章,让有或没有程式背景的读者都能先撰写基础智能合约,以便继续深造或参与区块链相关项目之商业开发案时能顺利沟通。

Solidity是以太坊上编写智能合约的主要程式语言。它是一种契约编写的程式语言,也就是说,智能合约可以储存、交易与编写在区块链上。Solidity与JavaScript、Python和C ++类似,都是有一定难度的程式语言,它是被用来在Ethereum Virtual Machine(EVM)上运行,且会储存在各个全节点上面,并在上面运行,简而言之,学会Solidity就足够让我们在区块链网络上建立一个智能合约与应用。

Solidity教学第一集,智能合约、Remix、储存与检验、ETH
【REMIX介面】我们首先要用Remix 来打程式码。那什么是Remix?Remix 是用来编写Solidity 的Web IDE,也就是浏览器的开发环境,可以用来储存、编译我们所写的程式码、智能合约等,当然还有很多其他很好用的功能这边就不多赘述,所以我们使用Remix当做这次开发智能合约的开发环境。【教学完会提供完整程式码提供对照】请大家开启一个新的标签页或视窗,打开Remix,以便跟上这次的教学。( Remix链结 )在Remix页面中的左手边,点击browser旁加号,可以打开一个新的文件夹来编写Solidity。Solidity教学第一集,智能合约、Remix、储存与检验、ETH
【开新档取名MyContract (可自订)】接着我们开启一个新的资夹命名为「MyContract.sol」。在程式码的第一行当中,我们要先写下要使用的Solidity的版本,因为Soldility会随着时间而更新里面的工具,尽管主要内容不变,但大家还是要注意看看版本为何。

pragma solidity ^0.4.24;

接着我们宣称智能合约如下 :

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

这边要先解释几件事情,以便后的执行。

智能合约是在以太坊区块链上执行的一段程式码以太坊区块链上的程式码都是公开且开源的,也就是说任何人都可以查看你在智能合约里的程式码,同样地,你也可以查询其他人的程式码接着我们希望可以编写一个可以「储存」的程式码而这段程式码的功能可以「储存」及「检验」。为了在Solidity里面要做到可以「储存」及「检验」,我们先将一个变数命名为value。因为Solidity是一个静态程式语言,在宣称变数之前,所以要先指定资料型态如下(ex. 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 view returns(string) { 
    return value;
}

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

 这边先介绍从智能合约外部变更数值的方法。我们将创建一个set函数,如下所示:

function set(string _value) public {
 // …
}

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

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

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

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

我们先使宣称Constructor这个函数。每当我们部署智能合约时,它只能运行一次且公开可信的。以上我们就完成了一个程式码。完整的程式码如下,小心顺序以及逻辑,新手要注意括弧的位置。

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;
        }
}

Solidity教学第一集,智能合约、Remix、储存与检验、ETH
【完整程式码】

再来,我们要编译和部署此智能合约。首先,在浏览器的左侧点开下面的插头符号。并搜寻compiler以及run并点选Activate启用这两个插件(上图)

 Solidity教学第一集,智能合约、Remix、储存与检验、ETH
【两个插件安装】

,启用后就会多出下面两个符号

 Solidity教学第一集,智能合约、Remix、储存与检验、ETH
【显示Deactivate代表已安装未来可卸除】

接着,点击左方的循环图示,选择版本0.4.25来编译代码(版本会不断更新,不同版本会有些微差异),记得勾选「Auto Compile」并点击蓝色按键「Compile」。

Solidity教学第一集,智能合约、Remix、储存与检验、ETH
【确认版本与编译合约】

再来,让我们选择测试环境,选取左列清单第三个。我们选择JavaScript虚拟机,因为它可以在浏览器中提供一个模拟的区块链,也就是类似将智能合约部署后的样子。

Solidity教学第一集,智能合约、Remix、储存与检验、ETH
【Deploy部署合约】

那为什么不直接部署呢?因为部署到真正的区块链上要花费以太币,也需要时间等候,而Remix给予我们一个较快速且模拟部署后的样子。这也是我们选择Remix的原因。

只要点击按钮即可部署智能合约!!

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

部署完成后,要如何与智能合约进行互动呢?

我们可以呼叫智能合约里面的函数,而这些函数在Remix中的介面中已经产生好给我们了,如下图 :

点击get()。可以看到在函数中设置的预设值“ myValue”

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

我们使用set()更新值。在表格当中添加一个新值,只需确保将其用引号引起来即可,例如:“New Value”。因为这样才可以表示他是一个字串,接着运行它!智能合约会读取该值并更改为“New Value”

 Solidity教学第一集,智能合约、Remix、储存与检验、ETH在编译器的下方为交易纪录,这是虚拟区块链上所有交易的完整列表。因为区块链是由区块所记录与组成,而些记录被“链”在一起,以成为公开式帐本。区块链的基本单位为交易,可以点击箭头向下查询更多详细的交易

以上我们就完成一个以太坊的智能合约,在下一个阶段我们会用以上刚写完的智能合约程式码为基础再进行下一步的教学。

以上就是Solidity教学第一集,智能合约、Remix、储存与检验、ETH的全部内容,望能这篇Solidity教学第一集,智能合约、Remix、储存与检验、ETH可以帮助您解决问题,能够解决大家的实际问题是塔岸网一直努力的方向和目标。

  • 区块链推荐
更多+
传统金融评级机构穆迪为什么要推出量子计算服务?

传统金融评级机构穆迪为什么要推出量子计算服务?

美国前三大信贷评级机构穆迪(Moody's) 近期将推出一款量子计算服务平台— Quantum for Finance,认为金融业非常适合导入量子计算,将业务资源分配问题最佳化。量子计算平台Quantum for Financ金融机构推出量子计算服务?根据穆迪分析(Moody&#...

12-12

被芒格说中了?迷因币MUNGER 蹭热度狂飙31,000% 后崩盘

被芒格说中了?迷因币MUNGER 蹭热度狂飙31,000% 后崩盘

股神 巴菲特军师、投资界传奇人物——查理· 芒格( Charlie Munger )11 月29 日撒手尘寰,当时消息一出马上传遍全球,而迷因币市场也在短短15 分钟内出现一款「芒格币( MUNGER )」,短时间内吸引不少炒币者买入。根据《CoinDesk》报...

12-12

增加国家税收!巴西要对海外加密货币收入征税15%

增加国家税收!巴西要对海外加密货币收入征税15%

巴西参议院日前通过新的所得税法规,旨在对当地公民的海外金融投资所得课税,意味着任何在海外交易所投资加密货币获利的巴西民众,可能也将有义务缴纳税率达15% 的资本利得税。这项法案已获得众议院通过,如今进入最后程序,递交给巴西总统鲁拉(Luiz Inácio Lula da Silva)签...

12-12

Starknet Foundation揭秘即将到来的空投:计划仍在草拟阶

Starknet Foundation揭秘即将到来的空投:计划仍在草拟阶

随着社交媒体上泄露的一张截图引发广泛讨论,Starknet Foundation 最近确认了关于即将发生的空投计划。该基金会进一步阐明了这些计划的进展以及参与资格的重要细节。空投计划引发猜测近日,两张在社交媒体上流传的截图引起了关于 Starknet 即将到来的空投的猜测。这些截图显示了该空投的一些...

12-12

Wormhole筹集2.25亿美元资金,估值达25亿美元

Wormhole筹集2.25亿美元资金,估值达25亿美元

跨链协议 Wormhole 已筹集到2.25亿美元的资金,估值为25亿美元。投资者包括 Coinbase Ventures、Multicoin Capital 和知名对冲基金 Breven Howard。新一轮融资采取了代币权证的形式,该权证授予持有人在未来某个日期获得代币的权利。Wormhole ...

12-12

网友评论
评论
发 布

更多区块链