当前位置: 首页 > wzjs >正文

网站制作论文题目企业网站设计网络公司

网站制作论文题目,企业网站设计网络公司,铜陵市建设工程管理局网站,黑龙江住房和城乡建设局网站文章目录 合约创建合约可见性与获取器状态变量可见性函数可见性获取器函数函数修饰符临时存储智能合约的可组合性和临时存储的注意事项合约 Solidity 中的合约类似于面向对象语言中的类。它们包含持久化数据在状态变量中,并且有可以修改这些变量的函数。调用另一个合约(实例…

文章目录

  • 合约
    • 创建合约
    • 可见性与获取器
      • 状态变量可见性
      • 函数可见性
      • 获取器函数
    • 函数修饰符
    • 临时存储
    • 智能合约的可组合性和临时存储的注意事项

在这里插入图片描述

合约

Solidity 中的合约类似于面向对象语言中的类。它们包含持久化数据在状态变量中,并且有可以修改这些变量的函数。调用另一个合约(实例)上的函数会执行一个 EVM 函数调用,从而切换上下文,使得调用合约中的状态变量不可访问。必须调用合约及其函数,才能发生任何操作。以太坊没有“cron”概念,无法在特定事件自动调用函数。

创建合约

合约可以通过以太坊交易从“外部”创建,也可以从 Solidity 合约内部创建。

如 Remix 等 IDE 可以通过 UI 元素使得创建过程更加顺畅。

一种在以太坊上程序化创建合约的方法是通过 JavaScript API web3.js。它有一个名为 web3.eth.Contract 的函数来简化合约创建。

当一个合约被创建时,其构造函数(使用 constructor 关键字声明的函数)会执行一次。

构造函数是可选的。只允许有一个构造函数,这意味着不支持重载。

构造函数执行完后,合约的最终代码会存储在区块链上。该代码包括所有公共和外部函数,以及所有可以通过函数调用访问的函数。已部署的代码不包括构造函数代码或仅在构造函数中调用的内部函数。

在内部,构造函数参数在合约代码之后以 ABI 编码的方式传递,但如果使用 web3.js,您不需要关心这个。

如果一个合约想要创建另一个合约,创建合约的源代码(和二进制)必须是已知的。这意味着不可能有循环创建依赖。

在 Remix 中打开

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;contract OwnedToken {// `TokenCreator` 是在下面定义的合约类型。// 只要不用于创建新合约,引用它是没问题的。TokenCreator creator;address owner;bytes32 name;// 这是构造函数,注册了// creator 和分配的 name。constructor(bytes32 name_) {// 状态变量通过它们的名称来访问// 而不是通过比如 `this.owner`。函数可以// 直接访问或通过 `this.f` 访问,// 但后者提供了对该函数的外部视图。// 特别是在构造函数中,// 不应该外部访问函数,// 因为该函数尚不存在。// 请参阅下一节了解详情。owner = msg.sender;// 我们从 `address` 显式类型转换到 `TokenCreator`// 并假设调用合约的类型是 `TokenCreator`,// 这里没有真正的方式验证这一点。// 这并不会创建一个新合约。creator = TokenCreator(msg.sender);name = name_;}function changeName(bytes32 newName) public {// 只有 creator 可以更改名称。// 我们基于它的地址来比较合约,// 地址可以通过显式转换为地址来获取。if (msg.sender == address(creator))name = newName;}function transfer(address newOwner) public {// 只有当前所有者才能转移 token。if (msg.sender != owner) return;// 我们询问 creator 合约是否应该继续转移// 通过使用下面定义的 `TokenCreator` 合约的函数。// 如果调用失败(例如由于缺少 gas),// 这里的执行也会失败。if (creator.isTokenTransferOK(owner, newOwner))owner = newOwner;}
}contract TokenCreator {function createToken(bytes32 name)publicreturns (OwnedToken tokenAddress){// 创建一个新的 `Token` 合约并返回其地址。// 从 JavaScript 端来看,该函数的返回类型// 是 `address`,因为这是 ABI 中最接近的类型。return new OwnedToken(name);}function changeName(OwnedToken tokenAddress, bytes32 name) public {// 同样,`tokenAddress` 的外部类型// 仅仅是 `address`。tokenAddress.changeName(name);}// 执行检查以确定是否应该将 token 转移到// `OwnedToken` 合约function isTokenTransferOK(address currentOwner, address newOwner)publicpurereturns (bool ok){// 检查一个任意

文章转载自:

http://xQNTCqc9.gwcjq.cn
http://jdUKIpHu.gwcjq.cn
http://maes7IjA.gwcjq.cn
http://apGqyyXI.gwcjq.cn
http://OaTh0ZKa.gwcjq.cn
http://zYzmQziy.gwcjq.cn
http://G8MU0VNA.gwcjq.cn
http://eEd0WFHZ.gwcjq.cn
http://hBNTeoMd.gwcjq.cn
http://gG86v5lA.gwcjq.cn
http://PG7x0f80.gwcjq.cn
http://fg8trd3l.gwcjq.cn
http://oUV6HLIA.gwcjq.cn
http://Zo0UtaFw.gwcjq.cn
http://WL3nJZqT.gwcjq.cn
http://JGRgBTtN.gwcjq.cn
http://cDYFKYLA.gwcjq.cn
http://ABd68I9D.gwcjq.cn
http://BtGVtPMv.gwcjq.cn
http://LnvxA93U.gwcjq.cn
http://BBuFZCWv.gwcjq.cn
http://RqZCJs3B.gwcjq.cn
http://8fcVMSSJ.gwcjq.cn
http://pHNSMQ3T.gwcjq.cn
http://7ssEDUS9.gwcjq.cn
http://BuseecHs.gwcjq.cn
http://z0UOeqeV.gwcjq.cn
http://pll9Pone.gwcjq.cn
http://0bU3SyKV.gwcjq.cn
http://jsxbEZEK.gwcjq.cn
http://www.dtcms.com/wzjs/661689.html

相关文章:

  • 工商网站查询企业信息官网三品合一网站建设案例
  • 不动产登记网站建设商品详情页设计模板
  • 谷歌seo站内优化手机怎么自己建网站
  • 钓鱼网站怎么制作视频广告网店
  • 网店运营具体做什么揭阳seo快速排名
  • 印度网站建设多少钱域名哪个网站续费
  • 做网站需要什么框架ueditor wordpress 插件
  • 常州模板网站建设咨询我的WordPress网站
  • 自个网站衡阳商城网站建设
  • 网站大改版中国建设银行个人登录入口
  • 网站建设 需求分析报告比亚迪新能源汽车e2
  • 做后期的网站有哪些狮山网站建设
  • 上海知名网站建浅谈电子商务网站的建设与管理
  • 免费创建自己的网站平台长春seo按天计费
  • 深圳网站设计深圳设计公司个体户做网站是怎么备案
  • 哈尔滨住房和城乡建设局网站网页界面设计时颜色越多越好
  • 团购网站建设费用沈阳网站搭建
  • 怎样把网站推广出去上海牛巨微seo关键词优化
  • 天涯网站建设路小学本地的赣州网站建设
  • 邢台企业建站重新下载一个微信
  • 牛仔裤网站设计企业网站制作收费
  • 重庆建设工程安全协会网站自适应网站三套代码
  • 太仓网站建设找哪家郑州网站制作哪家招聘
  • 郑州网站建站素材网站都有哪些
  • 网站建设培训深圳wordpress服务器出错
  • 经常修改网站的关键词好不好python培训学校
  • 网站排名配色网页美工设计是什么
  • 简易手机网站开发网站右下角弹窗代码
  • 网站程序方面贵阳seo网站推广
  • 怎么做水果网站浙江虎霸建设机械有限公司网站