以太坊Solidity智能合约开发(一) - 合约结构

以太坊Solidity智能合约开发(一) - 合约结构

掌握了以太坊的一些知识体系后,作为技术开发者,首先要学习的就是以太坊智能合约的开发。我们先从学习合约的开发开始,因为后面的技术栈中,我们需要用支持与以太坊交互的编程语言与以太坊交互,与合约交互,都是基于合约的代码逻辑来的,所以,接下来我们这个系列里,我们先从学会掌握solidity智能合约开发开始。

我们打开智能合约在线编辑器,编辑器的具体使用我就不具体教学了,可以自行百度或者谷歌学习编辑器的使用。我们在这里还是主要注重学习solidity语言的开发入门,在这里我们使用的都是solidty的0.8版本的特性。

开篇我们先学习下solidity合约的结构。

状态变量
状态变量是永久地存储在合约存储中的值。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleStorage {
    uint storedData; // 状态变量
    // ...
}

函数
函数是合约中代码的可执行单元。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleAuction {
    function bid() public payable { // 函数
        // ...
    }
}

函数修饰符
函数修饰符可以用来以声明的方式改良函数语义。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Test {
    address public seller;

    modifier onlySeller() { // 修饰器
        require(
            msg.sender == seller,
            "Only seller can call this."
        );
        _;
    }

    function abort() public onlySeller { // 将修饰器声明在函数中做限制
        // ...
    }
}

事件
事件是能方便地调用以太坊虚拟机日志功能的接口。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Test {
    event BidEvent(address bidder, uint amount); // 事件

    function bid() public payable {
        // ...
        emit BidEvent(msg.sender, msg.value); // 触发事件
    }
}

继承
父合约继承子合约使用is关键字。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./child.sol"; // 导入合约

contract Father is child {
	// ...
}

构造函数
constructor是在合约部署前进行初始化构建的操作。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Test {

    uint public initialize;
	
    constructor() {
        initialize = 100; // 合约部署后initialize的值为100
    }

    function setInitialize(uint _initialize) external {
        initialize = _initialize; // 设置initialize的值
    }

}

总结:从上面我们可以学习到,solidity0.8版本特性中,合约的编写必须声明 SPDX-License-Identifier,否则会发出警告,因为合约代码通常都是开源的,进行许可声明以表明其他人可以如何使用这份代码。

声明版本的写法一定要使用 pragma solidity 版本号。

合约的开始一定是使用 contract 合约名,这种方式的写法。

掌握了合约的结构,下一节,我们讲讲合约的数据类型。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值