全面掌握Solidity智能合约开发

2024年11月25日更新 208 人订阅
原价: ¥ 26 限时优惠
专栏简介 比特币区块结构Merkle树及简单支付验证分析 非对称加密技术- RSA算法数学原理分析 智能合约语言 Solidity 教程系列2 - 地址类型介绍 剖析非同质化代币ERC721-全面解析ERC721标准 搞懂 Solidity 事件Event - 如何在DApp中使用 以太坊扩容 之 分片(Sharding) 智能合约语言 Solidity 教程系列12 - 库的使用 深入理解Plasma(四)Plasma Cash 技术工坊42期 - 区块链子链技术及墨客链的实现方案 脱颖而出 | 成都链安入选『腾讯区块链加速器全球32强』 参与Eth2 Staking系列(2) - 激励篇 应用案例之黄金资产证券化Digix白皮书和DGD解读 全面理解智能合约升级 测试文章123456 简析主流匿名币:Dash、门罗币、Zcash、SERO 以太坊ERC1155协议分析及代码测试 Hyperledger Fabric 1.4 Kafka分布式环境搭建 跟我学 Solidity :开发环境 跟我学 Solidity:关于变量 跟我学 Solidity : 变量的存储 跟我学 Solidity :引用变量 跟我学 Solidity :函数 跟我学 Solidity :合约的创建和继承 跟我学 Solidity :工厂模式 用Web3.js构建第一个Dapp 跟我学Solidity:事件 Solidity 中 immutable (不可变量)与constant(常量) [译] Solidity 0.6.x更新:继承 解析 Solidity 0.6 新引入的 try/catch 特性 探究新的 Solidity 0.8 版本 探索以太坊合约委托调用(DelegateCall) 停止使用Solidity的transfer() 使用工厂提高智能合约安全性 Solidity 怎样写出最节省Gas的智能合约[译] Solidity 优化 - 编写 O(1) 复杂度的可迭代映射 Solidity 优化 - 控制 gas 成本 Solidity 优化 - 减少智能合约的 gas 消耗的8种方法 Solidity 优化 - 如何维护排序列表 Solidity 优化:打包变量优化 gas 在 Solidity中使用值数组以降低 gas 消耗 Solidity 技巧:如何减少字节码大小及节省 gas 计算Solidity 函数的Gas 消耗 "Stack Too Deep(堆栈太深)" 解决方案 合约实践:避免区块Gas限制导致问题 如何缩减合约以规避合约大小限制 Solidity 类特性 安全的处理 ERC20 转账(解决非标准 ERC20 问题) Solidity 十大常见安全问题 [译]更好Solidity合约调试工具: console.log 智能合约开发的最佳实践 - 强烈推荐

跟我学 Solidity :开发环境

跟我学习 Solidity 第一篇

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

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

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

设置开发环境

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

Remix 界面

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

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

List of icons

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

使用以下命令安装remixd:

npm install -g remixd

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

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

Remix 加载文件

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

image-20201119115303427

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

Shared files from local storage

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

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

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

编写合约

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

Hello world contract

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(部署)”。

Deploying contract

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

hello world string

智能合约的结构

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

  1. 状态变量:是其值永久存储在合约存储中的变量。
  2. 函数:函数是代码的可执行单元。函数通常在合约内部定义,但也可以在合约外部定义。
  3. 函数修改器(Modifiers ,有些翻译为修饰符):函数修改器可用于以声明方式修改函数的语义。
  4. 事件:事件是与EVM日志记录工具的便捷接口。
  5. 结构体类型:结构体是可定义多个变量的自定义类型。
  6. 枚举类型:枚举可用于创建具有有限“常量值”集合的自定义类型。

稍后我们将更详细地介绍这些组件。

概述就是这样。下篇再见!


本翻译由 Cell Network 赞助支持。

点赞 13
收藏 2
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

4 条评论

请先 登录 后评论