首页 > 其他分享 >solidity学习记

solidity学习记

时间:2023-03-22 09:56:52浏览次数:43  
标签:创建 solidity 地址 学习 链上 实例 区块 合约

合约的实例会一直运行在区块链上吗

合约的实例不会一直运行在区块链上,而是在执行完交易后,将其状态存储在区块链上。当需要访问合约时,可以通过调用其函数来重新激活它,执行相应的操作,并更新其状态。

当一个合约被部署到区块链上后,它的状态将被永久存储在区块链上,并且可以通过合约地址来访问它。每当合约被调用时,它会在区块链上执行,但是当它执行完毕后,它的状态将再次被保存在区块链上,并且合约实例将被删除。

需要注意的是,每次调用合约的函数时,都需要支付一定的燃气费用。因此,需要仔细设计合约的函数,以确保它们的执行效率和燃气消耗在合理的范围内。

创建一个合约的实例有几种方式

在以太坊区块链上,可以通过以下几种方式来创建合约实例:

  1. 部署合约:使用 Solidity 或其他智能合约语言编写合约代码,并使用以太坊客户端(如 Remix,Truffle 或 Web3.js)部署到区块链上。部署合约时,会创建一个新的合约实例,并分配一个唯一的合约地址。

  2. 复制合约:可以通过在 Solidity 中使用 clone 函数来复制一个已经存在的合约实例。clone 函数将复制合约的代码和状态,并创建一个新的合约实例。

  3. 调用合约:可以通过调用一个已经存在的合约的函数来创建新的合约实例。合约代码可以在函数中使用 Solidity 的 new 关键字来创建新的合约实例,并将其状态分配给一个新的合约地址。

需要注意的是,每次创建合约实例时,都需要支付一定的燃气费用,因此需要仔细设计合约代码,以确保合约实例的创建和操作效率和燃气消耗在合理的范围内。

以太坊上可以有同名合约吗

以太坊上可以有同名合约,但是合约的地址必须是唯一的。不同的合约可以有相同的名称,但是它们的地址是不同的。因此,合约的名称并不是唯一标识合约的方式,合约地址才是真正的唯一标识。

合约和合约实例是两个不同的地址吗

是的,合约和合约实例是两个不同的地址。合约是一个智能合约的代码,它被编译成字节码并部署到区块链上。合约实例是在部署合约后创建的,它是合约的一个运行实例,有自己的地址和状态。每次调用合约时,都会创建一个新的合约实例,它们都有不同的地址。

合约A内部会new 合约B,我只部署合约A,合约B会被自动部署吗

如果在合约A的代码中有创建合约B的代码,则在执行合约A时,合约B会被自动部署。但如果没有创建合约B的代码,则合约B不会被自动部署。在这种情况下,您需要手动部署合约B,并将其地址传递给合约A的构造函数。

标签:创建,solidity,地址,学习,链上,实例,区块,合约
From: https://www.cnblogs.com/woncode/p/17242495.html

相关文章

  • 学习方法
    看马林老师讲关于学习方法的视频,做了一个思维导图。B站链接:点这 ......
  • markdown学习
    markdown学习标题(几个#就是几级标题)+标题名字字体字体Hello,WorldHello,WorldHello,Worldy引用疏影横斜水清浅,暗香浮动月黄昏分割线图片超链接[点击跳......
  • springcloud学习——nacos
    1介绍nacos是阿里巴巴开发的,现在已属于springcloud框架,功能比eureka更加丰富2安装与启动下载:GitHub主页:https://github.com/alibaba/nacos解压安装包后,在bin文件夹中......
  • WPF学习-布局
    1. Grid布局,(Table布局)两行两列布局, Border 0行0列默认开始<Windowx:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/20......
  • 数据结构算法学习前言
    数据结构算法学习写在前面:今天是2023-03-21,上一次接触算法是在公司导师的带领下,学习了数据结构算法,他一题一题讲给我的,但是当时却不太争气,并没有掌握太多,由于这段时间......
  • 李沐动手学深度学习环境配置(Win)
    环境配置(Win)一、安装Minicondahttps://docs.conda.io/en/latest/miniconda.html更改镜像源condanotepad.condarcpypipipconfigsetgloba......
  • 学习Linux只要学会这个命令就够了!
    大家好,我是良许。这段时间又是搬家,又是找新办公室,现在终于安顿下来了,有时间给大家分享干货了。今天给大家介绍一个Linux超级实用命令,有了这个命令,你就可以愉快使用Linu......
  • jenkins学习笔记之十五:SonarSQube API使用
    本章主要通过SonarSQubeAPI在pipeline第一次执行时就指定自定义的质量配置和质量阈API 文档:http://192.168.1.134:9000/web_api一、编写sonarAPI(sonarapi.groovy)注......
  • 3.21学习总结
    2.4.3日期和时间组件(下)分类 Android基础入门教程本节引言:本节我们来继续学习Android系统给我们提供的几个原生的Date&Time组件,他们分别是:DatePicker(日期选择器),Ti......
  • node学习四之npm知识点
    1.版本号知识点使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本......