[智能合约]: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中对智能合约进行简单的测试。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容

  • 原文:Smart contracts 正如我们在[intro]中看到的那样,以太坊中有两种不同类型的帐户:外部拥有...
    Jisen阅读 4,934评论 1 7
  • SVGKit导入 从github下载demo 打开"SVGKit-iOS.xcodeproj"目录.png com...
    ElevenXu阅读 4,873评论 0 3
  • 嫦娥奔月美传说! 美传说后羿思妻! 后羿思妻追月说! 追月说嫦娥奔月!
    余夫55阅读 497评论 0 4