`

solidity构造函数

 
阅读更多
一个合约只能有一个构造函数。
构造函数在创建合约时执行一次,用于初始化合约状态。
在执行构造函数之后,合约最终代码被部署到区块链。合约最终代码包括公共函数和可通过公共函数访问的代码。构造函数代码或仅由构造函数使用的任何内部方法不包括在最终代码中。
构造函数可以是公共的,也可以是内部的。
内部构造函数将合约标记为抽象合约。
如果没有定义构造函数,则使用默认构造函数。

如果基合约具有带参数的构造函数,则每个派生/继承的合约也都必须包含参数。
可以使用下面的方法直接初始化基构造函数
pragma solidity ^0.5.0;

contract Base {
   uint data;
   constructor(uint _data) public {
      data = _data;   
   }
}
contract Derived is Base (5) {
   constructor() public {}
}


不允许直接或间接地初始化基合约构造函数。
如果派生合约没有将参数传递给基合约构造函数,则派生合约将成为抽象合约。

pragma solidity ^0.5.0;

contract Base {
   uint data;
   constructor(uint _data) public {
      data = _data;   
   }
}
contract Derived is Base {
   constructor(uint _info) Base(_info * _info) public {}
}

分享到:
评论

相关推荐

    canoe-solidity:轻量级Javascript库,用于解码构造函数参数

    轻量级Javascript库,用于解码构造函数参数。 概括 独木舟通过读取合同的ABI并使用提供的参数类型对构造函数字节码进行解码来工作。 安装 npm install canoe-solidity 要求 ABI模式2.0 文献资料 职能 ⇒ Object ...

    solidity-中文文档

    - 函数:包括构造函数、普通函数、内部函数、外部函数、库函数等。 - 控制流:如 if、else、for、while 循环,以及 switch 语句。 - 错误处理:使用 require 和 assert 进行条件检查和异常处理。 3. **合约结构*...

    Solidity 官方文档中文版

    合约的构造函数(constructor)用于初始化合约状态,在部署时自动调用。 ```solidity pragma solidity ^0.8.0; contract MyContract { uint256 public myNumber; constructor(uint256 _initialValue) { my...

    Solidity基础1

    contract关键字用来定义合约,mapping类型用来定义地址到uint的映射关系,event关键字用来定义事件,constructor关键字用来定义构造函数。 2. 合约结构 Solidity合约的结构主要包含三部分:状态变量、函数和事件。...

    初级java笔试题-solidity-ci-test:可靠性-ci-test

    初级java笔试题Solidity-CI SVM Docker 支持的标签和相应的Dockerfile链接 #{range $_, $v := .Versions} #{$v.Version} ...Solidity ...Solidity ...因此,可以定义构造函数。 pragma solidity ^ 0.5 .4 ; co

    Solidity智能合约语言.pdf

    - 部署合约时,可以选择不传递参数来调用无参数的构造函数,或者传递参数以执行特定的构造逻辑。 - 调用合约函数时,需要在Remix IDE中填写参数并点击相应的按钮。 智能合约的开发和部署涉及多个步骤,包括编写...

    编游戏学Solidity

    这里涉及到的知识点包括Solidity的数据类型(如uint、address)、结构体、合约构造函数以及事件(events)的使用,这些都对于记录和追踪游戏状态至关重要。 接下来,你会学习如何实现“僵尸attack人类”的功能。这...

    solidity已知漏洞

    该漏洞的成因是由于 Solidity 语言中构造函数的问题所致。攻击者可以通过制造 GovernMental 构造函数失控来攻击智能合约,从而导致合约崩溃。 防御方法:使用安全的构造函数库,避免使用不安全的构造函数操作。 10...

    learning-solidity-2018:Solidity智能合约的基本示例

    1. **合约**:合约是Solidity中的基本构造块,包含变量、函数、事件和构造函数。它们定义了在区块链上执行的逻辑和状态。 2. **变量**:合约内的变量可以是不同类型,如整数(int)、地址(address)和布尔值(bool...

    solidity-token-ERC20

    1. **合约(Contracts)**:包含状态变量、函数、事件和构造函数等元素的代码模块。 2. **状态变量(State Variables)**:存储在区块链上的持久化数据。 3. **函数(Functions)**:执行特定任务的代码块,可以是...

    Solidity笔记

    4. `function Person()`是合约的构造函数,当合约部署时自动执行,初始化`_height`和`_age`,并将创建合约的账户地址赋值给`_owner`。 5. `function owner() constant returns (address)`:定义了一个只读的函数`...

    solidity-audit-checklist:审核Solidity智能合约时要查找的事项清单

    审核Solidity智能合约时要查找的事项清单。 这不是一个完整的列表,并且稳固性正在Swift发展,因此请尽您所能。... 构造函数中没有不必要的初始化(请记住,已设置默认值)。 有完整的测试范围; 每

    multicall:用于静态多次调用的Solidity Contract和Typescript库

    MultiCall.sol合同在其构造函数内执行多个调用,并将结果作为ABI编码的字节数组返回。 当初始化代码作为eth_call操作发送到0地址时,将不部署该代码,并且如果使用eth_sendTransaction发送eth_sendTransaction则该...

    solidity-smart-contract

    构造函数(Constructor)在合约创建时执行,用于初始化状态变量。Solidity 支持合约间的继承,允许开发者复用和扩展已有的合约功能。 **7. 部署与交互** 部署智能合约需要编写部署脚本,通常使用 Truffle 或 ...

    Unit_20_solidity_homework

    2.1 构造函数:构造函数是合约创建时自动执行的特殊函数,用于初始化合约状态。 2.2 接口与继承:接口定义了一组可调用的函数,而继承允许一个合约获取另一个合约的属性和行为,实现代码复用。 2.3 自动化部署:...

    Solidity-self-learning

    理解合约的生命周期,包括构造函数、部署、调用和销毁。 3. **状态变量与存储**:理解状态变量在区块链中的持久化存储方式,以及存储和内存的区别。 4. **函数修饰符**:熟悉view、pure、payable等函数修饰符的...

    TEA:Solidity TEA智能合约

    6. **构造函数**:合约部署时自动执行的函数,用于初始化合约状态。 7. **继承与库**:Solidity支持继承机制,允许合约从其他合约中继承功能;库(library)则提供了代码复用的方式。 8. **安全编码实践**:避免...

    hello-solidity-ganache-cli:具有ganache-cli和坚固性的自包含本地智能合约开发环境

    合同必须位于./src/contracts并且必须使用其本地构造函数args在./src/manifest.json进行注册。 在启动和编译之后,您可以使用npm run deploy将合同部署到本地节点。 使用npm test对本地节点npm test ;

    autocomplete-solidity:Autocomplete +提供者为Solidity

    这意味着该软件包不仅为您提供有关基本构造/类型的建议,而且还将为您提供变量,函数,协定等的建议。此外,它仅在允许语法方式时才为您提供建议。 (这是基于上下文级别的,因此您仍然可以得到一些建议,但是不会...

    zCryptoZombies_r8:Solidity教程“(•◡•)”╚(•⌂•)╝第九轮

    11. **构造函数**:每个合约都可以有一个构造函数,它在合约部署时自动执行。 12. **智能合约安全**:理解常见的安全问题,如重入攻击、溢出漏洞、不当使用库等,并学习如何避免它们。 13. ** Gas效率**:在...

Global site tag (gtag.js) - Google Analytics