[智能合约]:solidity初体验

智能合约

智能合约是在区块链上运行的程序,也可以说是用来实现DAPP的。详细的内容可以查看Solidity官方文档。

一个简单的例子

pragma solidity ^0.5.0;

contract Hello {
    
    address owner;
    string hello = "Hello World!";
    uint num;
    
    constructor() public {
        owner = msg.sender;
    }
    function sayHello() view public returns(string memory){
        if (owner == msg.sender) {
            return hello;
        }
    }
    function setNum(uint n) public {
        num = n;
    }
    function getNum() view public returns(uint){
        return num;
    }
}

上述智能合约的构成:

  • 1.pragma solidity ^0.5.0;solidity的版本声明,0.5.0指的是版本号,^指的是向上兼容,意味者此智能合约在0.5.0~0.6.0之间是兼容使用的(不包括0.6.0)。

  • 2.contract Hello{...},智能合约的主体,一个合约,类似于其他语言中的class。合约可以继承。

  • 3.address owner;string hello = "Hello World!";uint num;都是状态变量。address,地址类型,20个字节。string,字符串类型。uint,整型,uint256的缩写。

  • 4.constructor() public { owner = msg.sender; }constructor()为构造函数,即在创建此合约的时候执行的函数。所有的合约都可以用constructor()表示构造函数,在以前的版本中,使用的是与合约同名的函数名来表示。
    owner = msg.sender;中,msg.sender表示消息的发送方,也就是调用此函数的人的地址。由于是在构造函数中,消息的发送方为创建合约的人的地址。

  • 5.其他的函数为合约的成员函数,用来执行需要涉及的操作。比如说,用setNumgetNum来设置和获取状态变量num

执行智能合约

编译
将上述的代码在Remix中执行,Remix是一个网页版的solidity的编译器。

remix

点击左上角的+新建新的合约文件,然后在合约文件里输入代码。右边是编译智能合约的设置。如下所示,设置编译的版本号。
compile

其中选择版本号需要比pragma solidity ^0.5.0;中的版本号一致或是更新,因为是向上兼容的。

执行
需要先在右边的设置里,点开Run分页。

run

  • 1.Environment,环境的选择,remix里提供了三种环境,分别是JavaScript VMInjected Web3Web3 Provider

    • JavaScript VM是JS虚拟机,也就是remix提供的虚拟的环境,不需要连接到区块链的网络中,存在于内存中。
    • Injected Web3,用于使用浏览器插件MetaMask的环境。具体可以查看MetaMask的使用。
    • Web3 Provider,用于在remix中连接到区块链,需要输入URL。比如说,你有一个运行的本地节点,通过它的ip和端口号连接到该节点。
  • 2.Account,选择JavaScript VM的情况下,默认提供5个以太坊的测试账号(地址),也就是给我们用来测试合约的地址。

  • 3.Deploy,部署合约。部署成功后会在下方出现可以进行交互的合约。

  • 4.与合约进行交互。
    n后输入数值100,点击transact,即可将num的值设置为100。点击getNum会得到num的值100。点击sayHello会得到hello字符串的内容。如下所示:

总结

  • 智能合约是在区块链上运行的程序,可以在remix中对智能合约进行简单的测试。

你可能感兴趣的:([智能合约]:solidity初体验)