智能合约开发:Solidity开发环境

开始在以太坊上编写智能合约

Solidity是用于开发以太坊智能合约的最受欢迎的语言之一,因此,作为一个想要成为区块链开发人员的人,必须学习如何使用Solidity开发智能合约。

但是由于找不到我想要的质量的教程(使初学者能够以简洁的方式轻松学习基础知识),所以我决定创建本系列,希望你很快学会Solidity编程。

设置开发环境

我们将使用的IDE是Remix,在浏览器输入Remix URL。完成后,你应该会看到一个类似以下的界面:

开发界面

在左侧,主要用到两个组件。第一个图标是文件浏览器,在这里可以查看你所有的Solidity文件,第二个是底部的插件管理器图标,从中可以添加新插件。我们将需要添加两个插件,因此请单击插件管理器图标,然后输入“ Solidity compiler(编译器)”。然后通过单击“Activate”将其激活,并执行相同的操作以添加“Deploy and run transactions(部署并运行交易)”插件。

“ Solidity compiler(编译器)”选项卡将允许你配置编译器参数并编译智能合约,而“Deploy and run transactions(部署并运行交易)”选项卡将允许你在区块链中部署智能合约并与之交互。图标列表现在应如下所示:

image.png

第一件事要做的是检查“编译器”选项卡中的“自动编译”选项。接下来,我们将配置Remix以使用本地存储中的文件。

使用以下命令安装remixd:

npm install -g remixd

安装完成后,你可以创建一个文件夹,在其中保存了 Solidity文件,然后运行以下命令告诉Remix使用文件夹中的文件:

remixd -s <shared folder> — remix-ide https://remix.ethereum.org

[图片上传失败...(image-7a9f96-1668079018051)]

现在转到Remix的主页,单击“Connect to localhost(连接到本地主机)”,然后在弹出窗口中选择“(connet)连接”。

然后在“File explorer(文件资源管理器)”选项卡下看到一个名为localhost的区域。展开它,你将看到从本地存储共享的文件夹中包含的所有文件:

恭喜你!现在,你拥有了开始编写第一个智能合约的工具。

等等...我们不应该安装一些东西与以太坊区块链进行交互吗?

现在还不急。我们选择轻松开始。 Remix将为你提供在浏览器中运行的虚拟区块链环境,先使用它来部署合约并与之交互。只需确保在“Deploy and run(部署并运行)”选项卡中选择Javascript VM作为环境即可。

编写合约

先看看我们的第一个智能合约:

image.png

SPDX 版权许可证标识符

如果开放源代码,则可以更好地建立对智能合约的信任。由于提供源代码总是会涉及版权方面的法律问题,因此Solidity编译器鼓励使用机器可读的SPDX版权许可证标识符。每个源文件都应以在开头以注释说明其以什么方式许可。 参考Solidity 源文件结构

版本语法

源文件可以(并且应该)添加版本注释,以拒绝使用将来可能引入不兼容更改的编译器进行编译。 参考Solidity 源文件结构

具有重大更改的发行版的格式通常形式为0.x.0x.0.0。在我们的示例中,可以使用的编译器版本应大于或等于0.7.0且小于0.8.0(第二个条件是通过使用^添加的)。可以为编译器版本指定更复杂的规则。它们遵循npm使用的相同语法

前两行应出现在所有智能合约文件中。
为了开始编写智能合约,你需要使用关键字contract 及合约名称,然后才能将代码放在大括号之间。

好,让我们创建这个Helloworld合约。

在共享文件夹HelloWorldContract.sol中创建一个新文件,然后复制粘贴先前的代码。如果你选中了自动编译选项,它将自动编译代码。如果没有,请确保检查并编译代码。

部署

现在是时候部署我们的第一个合约并与它进行交互了。
单击“Deploy and run transactions(部署并运行交易)”选项卡,然后确保在环境中选择了JavaScript VM,并在合约区域中选择了合约名称。完成后,单击“Deploy(部署)”。

现在,你应该在“Deployed Contracts(已部署合约)”区域下看到你的合约。
展开它,你将看到helloWorld函数。单击它以发送调用此函数的交易,你将看到打印出hello world字符串。

智能合约的结构

现在,让我们看一下你可以在智能合约中添加的内容,在下面直接引自文档:https://learnblockchain.cn/docs/solidity/structure-of-a-contract.html:

  1. 状态变量:是其值永久存储在合约存储中的变量。
  2. 函数:函数是代码的可执行单元。函数通常在合约内部定义,但也可以在合约外部定义。
  3. 函数修改器(Modifiers ,有些翻译为修饰符):函数修改器可用于以声明方式修改函数的语义。
  4. 事件:事件是与EVM日志记录工具的便捷接口。
  5. 结构体类型:结构体是可定义多个变量的自定义类型。
  6. 枚举类型:枚举可用于创建具有有限“常量值”集合的自定义类型。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容