美文网首页
[智能合约]:solidity初体验

[智能合约]:solidity初体验

作者: jea的笔记本 | 来源:发表于2019-02-12 21:19 被阅读0次

    智能合约

    智能合约是在区块链上运行的程序,也可以说是用来实现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初体验

          本文链接:https://www.haomeiwen.com/subject/qqbqeqtx.html