资讯专栏INFORMATION COLUMN

快速上手第一个智能合约

chaosx110 / 2006人阅读

摘要:本文主要帮助大家快速编写并运行第一个智能合约。是提供的一种事件和订阅机制,智能合约能够发出一些,合约调用者能够监听这些事件并作出相应的反应。

引言

本文假设你已经对区块链有一定的了解。智能合约是1990年代由尼克萨博提出的理念,以太坊首先看到了区块链和智能合约的契合,发布了白皮书《以太坊:下一代智能合约和去中心化应用平台》,并一直致力于将以太坊打造成最佳智能合约平台。因此目前的智能合约基本都是运行在以太坊区块链上的计算机程序。本文主要帮助大家快速编写并运行第一个智能合约。

语言和IDE选择

目前智能合约最受欢迎的编程语言为Solidity,但是并不只有Solidity。编写Solidity代码,我们可以使用Remix,它是一个基于浏览器的Soldity IDE,网址为http://remix.ethereum.org/。Remix支持编写、测试和部署智能合约。Remix界面如下图

编写代码

学一门语言的第一个程序毋庸置疑都是HelloWorld,那么我们就来写一个HelloWorld的智能合约吧。合约代码如下。

pragma solidity ^0.4.21;

contract HelloWorld {
    string hello = "Hello World!!!";
    event say(string _value);
    
    function sayHello() public {
        emit say(hello);
    }
    
}

合约代码第一行指定该合约使用的Solidity版本为0.4.21,不支持高于0.4.21版本的Solidity特性。

在Solidity中,contract关键字包含的代码段即表示一个智能合约,它拥有一些成员变量,表示该合约的数据,如我们的HelloWorld中的hello,我们可以修改操作这些成员。同时它拥有一些function,可以被他人调用。

event是Solidity提供的一种事件和订阅机制,智能合约能够发出一些event,合约调用者能够监听这些事件并作出相应的反应。

这个合约没有做很多事情,它只会在有人调用它的sayHello方法时,发出一个say事件。接下来让我们来部署和执行它。

部署和运行合约

首先我们需要编译这段代码,在Remix的右边有一个Compile的tab,点击Start to compile,编译成功,如果失败会有错误提示,改正即可。

然后我们需要将其部署到区块链上,切换tab到Run。

Remix支持三种环境运行合约。其中如果为JavaScript VM,则合约会在浏览器JavaScript沙箱区块链中被执行,可以理解为Remix使用了浏览器的JS环境虚拟了一个区块链虚拟机。如果为Injected Provider,则Remix将会链接Matamask或者Mist这些区块链钱包,通过它们来间接部署和调用合约。最后为Web3 Provider,Remix会链接Geth等远程区款连节点,来部署和调用合约。

简单起见,我们将使用JavaScript VM,它将为我们初始化出五个区块链账号,使用默认账号即可。将Environment设置为JavaScript VM。如下图。

上图除了Environment和Account依次往下,我们将能够看到Gas Limit,这是执行一个Transaction我们能够接受的最大代价。Value表示下一次调用我们将向合约账户转账多少ether。

接下来的HelloWorld表示我们将创建的合约。点击Create既能够创建这个合约。如下图我们看到HelloWorld合约已被创建。

我们可以点击sayHello调用。可以看到已经调用成功,在logs中打印出了我们发出的event。

结语

在本文中,我们编写了一个最简单的智能合约,并部署和运行了该合约。我们并没有将合约部署到实际的链上,只是在JS 沙箱虚拟机中执行了它。后面的文章中我们将会继续讲解如何将合约部署到链上。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24013.html

相关文章

  • 等风来!区块链熊市,技术人就要做技术投资

    摘要:年的区块链牛市已经过去了,目前看来,年会是一个大熊市,投资抄币估计也捞不着什么。熊市囤技术,其实是技术人员很好的选择。三期同学讨论积累资料的地址等风来区块链熊市,技术人就要做技术投资。 2017 年的区块链牛市已经过去了,目前看来,2018 年会是一个大熊市,投资抄币估计也捞不着什么。熊市只能囤囤币,囤囤技术,只能等下一轮风起了。熊市囤技术,其实是技术人员很好的选择。等区块链牛市来了,...

    番茄西红柿 评论0 收藏0
  • 智能合约部署到Rinkeby测试链上

    摘要:由于使用的人数众多,主网络的鲁棒性很强,能够对抗攻击,区块链也不易被篡改,因此主网络是具有功能的,其上的以太币是有价值的。结语本文主要介绍了如何使用和将智能合约部署到区块链上,我们使用了以太坊的区块链网络。 引言 在上一篇文章中《快速上手第一个智能合约中》,我们介绍了如何编写与运行我们的第一个智能合约。但那只是将合约运行在了浏览器的区块链虚拟环境中,与区块链还是有一定的区别,另外也无法...

    marser 评论0 收藏0
  • 【许晓笛】开发一个 EOS 智能合约

    摘要:所以最简单的智能合约只需实现文件。我们看到文件中已经声明了这个,并说明了这个的李嘉图合约,大概意思是本合约的输入为一串字符,本合约意图是打印输出,没有其他效果。 Hello World! 稍微了解 EOS 系统,你就会知道 EOS 的智能合约基于 WebAssembly(WASM) 技术,这种技术在性能和跨平台兼容性之间取得了很好的平衡,通过将原始代码编译成字节码,使得代码可以在多种平...

    Developer 评论0 收藏0
  • 以太坊智能合约开发七篇:智能合约与网页交互

    摘要:原文发表于以太坊智能合约开发第七篇智能合约与网页交互上一篇中,我们通过开发框架快速编译部署了合约。智能合约与网页交互启动脚本修改完了之后,就需要与网页进行整合。 原文发表于:以太坊智能合约开发第七篇:智能合约与网页交互 上一篇中,我们通过truffle开发框架快速编译部署了合约。本篇,我们将来介绍网页如何与智能合约进行交互。 编写网页 首先我们需要编写一个网页。打开 smartcon...

    sherlock221 评论0 收藏0
  • 调用Bytom Chrome插件钱包开发Dapp

    摘要:流程总结就是下载安装插件钱包,如果自己的不需要跳过这一步。然后将编译后的合约参数配置在的配置文件,如下图全红部分是测试网合约配置参数调用插件钱包。开发出优秀的应用。 安装使用插件钱包 1. 打开Google浏览器的应用商店,搜索Bystore showImg(https://segmentfault.com/img/bVbq0Ol?w=2554&h=1312); 下载链接:http:/...

    Mike617 评论0 收藏0

发表评论

0条评论

chaosx110

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<