侧边栏壁纸
博主头像
秋码记录

一个游离于山间之上的Java爱好者 | A Java lover living in the mountains

  • 累计撰写 29 篇文章
  • 累计创建 40 个标签
  • 累计创建 185 个分类

玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一)

Solidity是静态类型的,支持继承、库和复杂的用户定义类型以及其他功能。 使用Solidity,您可以为投票、众筹、盲目拍卖和多签名钱包等用途创建合约。 在部署合约时,你应该使用最新发布的 Solidity 版本。除了特殊情况外,只有最新版本才会收到安全修复。此外,突破性的变化以及新的

前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。

而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链 以太坊上,毕竟国内的联盟链有些是不兼容Solidity

Solidity 是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。

Solidity 是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++pythonjavascript影响。

Solidity是静态类型的,支持继承、库和复杂的用户定义类型以及其他功能。

使用Solidity,您可以为投票、众筹、盲目拍卖和多签名钱包等用途创建合约。

在部署合约时,你应该使用最新发布的 Solidity 版本。除了特殊情况外,只有最新版本才会收到安全修复。此外,突破性的变化以及新的功能会定期引入。我们目前使用0.y.z版本号来表示这种快速变化的速度。

Solidity 具有以下两个显著特征(纯属笑谈,别太在意):

  • 1、面向对象:学会之后能挣钱去找对象
  • 2、在币圈混:不会 Solidity ,在圈内显得是那么 low,“瞧,那家伙不会 Solidity,还想混币圈!”

在线编辑器 remix

工欲善其事,必先利其器。 这句话是很有道理的,不管做什么事或在学习新事物,都要准备好工具,学习新事物也是一样的。

打开浏览器,在地址栏输入remix.ethereum.org

打开后的默认界面,包含 Solidity 示例。首次打开可能没那么快,这毕竟国外的站点。

img

我们在当前工作空间新建一个 solidity 文件,注意,是以sol作为文件的后缀名。

img

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
contract MyToken{
    string public webSite = "Welcome to qiucode.cn";
}

img 代码分析:

  • solidity 也和大多数编程一样,也是使用//作为程序的注释,而本实例中的第一行其实是表明该合约所用的软件许可(license),这里用的是MIT license。如果不写许可,编译时会警告(warning),但程序可以运行。

    // SPDX-License-Identifier: MIT
    
  • 而第 2 行 则声明了合约所使用的 solidity 版本,毕竟 solidity 正处于发展阶段,更新迭代比较频繁,不同的版本之间各有差异。这行代码意思是源文件将不允许小于 0.8.7 版本或大于等于 0.9.0 版本的编译器编译(第二个条件由^提供)。Solidity 语句以分号(;)结尾。

    pragma solidity ^0.8.7;
    
  • 第3-4行是合约部分,第3行创建合约(contract),并声明合约的名字 MyToken。第4行是合约的内容,我们声明了一个string(字符串)状态 webSite,并给他赋值 “Welcome to qiucode.cn”。

    contract MyToken{
        string public webSite = "Welcome to qiucode.cn";
    }
    

编译需要点时间,直到出现了绿色小图标,就说明编译成功了。

img

现在可以不受测试下看看效果如何。

img

img

img