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

Solidity是以太坊上编写智能合约的主要程式语言。它是一种契约编写的程式语言,也就是说,智能合约可以储存、交易与编写在区块链上。Solidity与JavaScript、Python和C ++类似,都是有一定难度的程式语言,它是被用来在Ethereum Virtual Machine(EVM)上运行,且会储存在各个全节点上面,并在上面运行,简而言之,学会Solidity就足够让我们在区块链网络上建立一个智能合约与应用。
pragma solidity ^0.4.24;
pragma solidity ^0.4.24;contract MyContract { // …}
这边要先解释几件事情,以便后的执行。
智能合约是在以太坊区块链上执行的一段程式码以太坊区块链上的程式码都是公开且开源的,也就是说任何人都可以查看你在智能合约里的程式码,同样地,你也可以查询其他人的程式码pragma solidity ^0.4.24;contract MyContract { string value;}
*数值是会储存到储存空间当中,而不是记忆体。
*整个智能合约都可以访问这个变数,并解改变里面得数值,然而有些变数只能被部分的访问函数里面的值,而且无法直接更动里面的值。
function get() { // …}
function get() { return value;}
function get()public view{ return value;}
function get() public viewreturns(string){ return value;}
这样我们就可以从智能合约能取数值。
function set(string _value) public {// …}
function set(string _value) public {value = _value;}
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启用这两个插件(上图)
,启用后就会多出下面两个符号
接着,点击左方的循环图示,选择版本0.4.25来编译代码(版本会不断更新,不同版本会有些微差异),记得勾选「Auto Compile」并点击蓝色按键「Compile」。
再来,让我们选择测试环境,选取左列清单第三个。我们选择JavaScript虚拟机,因为它可以在浏览器中提供一个模拟的区块链,也就是类似将智能合约部署后的样子。
那为什么不直接部署呢?因为部署到真正的区块链上要花费以太币,也需要时间等候,而Remix给予我们一个较快速且模拟部署后的样子。这也是我们选择Remix的原因。
只要点击按钮即可部署智能合约!!
部署完成后,要如何与智能合约进行互动呢?
我们可以呼叫智能合约里面的函数,而这些函数在Remix中的介面中已经产生好给我们了,如下图 :
点击get()。可以看到在函数中设置的预设值“ myValue”
我们使用set()更新值。在表格当中添加一个新值,只需确保将其用引号引起来即可,例如:“New Value”。因为这样才可以表示他是一个字串,接着运行它!智能合约会读取该值并更改为“New Value”
以上我们就完成一个以太坊的智能合约,在下一个阶段我们会用以上刚写完的智能合约程式码为基础再进行下一步的教学。