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

免费网站源码模板下载郑州网站外包哪家好

免费网站源码模板下载,郑州网站外包哪家好,中国建筑人才网官网登录,个人网站用什么建站程序文章目录 前言Solidity 介绍Solidity 文件结构许可声明编译指示数据类型函数事件访问区块元数据 简单的智能合约 前言 上文介绍了区块链生态发展#xff0c;我们知道以太坊的到来可以使开发人员基于区块链开发DApp#xff0c;本文介绍 Solidity 编程语言的使用#xff0c;然… 文章目录 前言Solidity 介绍Solidity 文件结构许可声明编译指示数据类型函数事件访问区块元数据 简单的智能合约 前言 上文介绍了区块链生态发展我们知道以太坊的到来可以使开发人员基于区块链开发DApp本文介绍 Solidity 编程语言的使用然后基于 Solidity 编写一个简单的智能合约。 Solidity 介绍 Solidity 是以太坊开发人员使用的编程语言用来编写智能合约运行在以太坊虚拟机EVM上。 有开发经验的同学上手应该是比较容易的所有编程语言无非就是变量、分支、函数变量值之所以称之为变量是因为它是用来存储临时值是可变化的而分支是在检查某个事件是否为真后决定是否执行Solidity 编程语言中函数是与区块链交互的主要方式前期可以使用在线编程工具 remix 进行开发。 如果要开发一个去中心化的DApp需要用 React、HTML、CSS 等前端技术将用户页面和智能合约结合。 Solidity 文件结构 一个 Solidity 文件后缀为 .sol文件中包含许可声明、文件编译指示、文件导入标识以及任意数量的合约定义包括变量、常量、构造、函数、事件、结构体、错误处理等。 许可声明 由于提供源代码总是涉及版权方面的法律问题Solidity 编译器鼓励使用机器可读的 SPDX 许可证标识符每个源文件都应以说明其许可证的注释开头 // SPDX-License-Identifier: MIT 如果不想指定许可证或者源代码不是开源的可以使用特殊值 UNLICENSED其他值可以参考 SPDX licenses 编译指示 通过 pragma 关键字指定源代码使用哪个版本的编译器进行编译版本编译指示使用如下 pragma solidity ^0.5.2; 意思是该源文件不能使用 0.5.2 版本之前的编译器进行编译。 数据类型 声明变量的数据类型跟很多编程语言都相似。 address地址类型用来转账区块链独有类型。代码中 address(this) 表示当前合约的地址。 string文本类型。 int数值类型显示范围是-2255 到 2255 - 1。 uint无符号整数指的正整数最大是 2**256 -1。 bool布尔值true 或 false。 bytes字节类型。 mapping映射类型可以理解为 Map。 函数 函数声明跟 JS 一样都是 function Solidity 函数格式如下 function (parameter types) {internal|external|public|private} [pure|view|payable] [returns (return types)] 示例 function fn() public view returns (address){return address(this);} 其中 internal|external|public|private 为可见性和可变性比较容易理解。pure|view|payable 用来控制函数权限其中 pure 表示该函数内只能拥有局部变量不能读不能写外部变量不对链上有任何的读写操作。view 表示该函数内只能查看变量、链上内容不能修改变量、链上的内容。payable 表示该函数内可以修改变量及链上内容通常用来给合约地址转账或着接收ETH。 事件 事件我们可以理解成通知订阅当合约中发生某些事比如谁给谁转账那么可以声明一个事件客户端用户界面对其监听后可以接收到这个时间的消息从而 do something。示例: event Deposit(address from,address to,unit amount);function deposit(address to,unit amount) public payable {// do somethingemit Deposit(address(this), to, amount); }然后在 JSWeb3.js 代码中监听这个事件示例如下 var abi /* abi as generated by the compiler */; var ClientReceipt web3.eth.contract(abi); var clientReceipt ClientReceipt.at(0x1234...ab67 /* address */);var depositEvent clientReceipt.Deposit();depositEvent.watch(function(error, result){if (!error)console.log(result); });// Or pass a callback to start watching immediately var depositEvent clientReceipt.Deposit(function(error, result) {if (!error)console.log(result); });访问区块元数据 我们知道只能合约是运行在区块链中的所以在智能合约中可以访问区块链的内置数据比如 block 区块信息、调用合约的上下文msg信息。 block区块信息: block.coinbase (address): 当前块的矿工的地址block.difficulty (uint):当前块的难度系数block.gaslimit (uint):当前块gas的上限block.number (uint):当前块编号block.blockhash (function(uint) returns (bytes32)):函数返回指定块的哈希值已经被内建函数blockhash所代替block.timestamp (uint):当前块的时间戳 msg调用上下文信息 msg.data (bytes):完整的calldatamsg.gas (uint):剩余的gas量msg.sender (address):消息的发送方(调用者)msg.sig (bytes4):calldata的前四个字节(即函数标识符)msg.value (uint):所发送的消息中wei的数量 简单的智能合约 // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.4;contract Coin {address public minter;mapping (address uint) public balances;// 声明一个合约事件在函数send的最后一行触发使得客户端监听在区块链上发出的这些事件。一旦它发出侦听器就会收到from, to 和 amount 参数event Sent(address from, address to, uint amount);// 创建合约时执行仅一次。constructor() {minter msg.sender;}// 将一定数量的ETH发送到该地址// 只能由合同创建者调用function mint(address receiver, uint amount) public {require(msg.sender minter);balances[receiver] amount;}// 声明一个错误类型可以提供详细的信息error InsufficientBalance(uint requested, uint available);// 调用者向接收者转账function send(address receiver, uint amount) public {if (amount balances[msg.sender])# revert语句无条件中止对链上数据的更改同时使用 InsufficientBalance 错误向发送者提供错误详细信息。revert InsufficientBalance({requested: amount,available: balances[msg.sender]});balances[msg.sender] - amount;balances[receiver] amount;emit Sent(msg.sender, receiver, amount);} }
http://www.hkea.cn/news/14522782/

相关文章:

  • 自己做的网站图片不显示网络营销推广有效方式
  • 新思维网站罗湖网站建设 信科网络
  • 简述网站开发的基本流程图wordpress建站 网盘视频教程
  • 网站建设2000字论文免费自助建站全系统
  • 上海网站建设 找思创网络互联网创业就是做网站吗
  • 如何创建自己的网站平台大数据营销的缺点
  • 安卓网站开发ui南京市建设工程交易中心
  • thinkphp企业网站开发浦东建设网站
  • 如何开发cms网站WordPress偷模板
  • 广西专业网站建设网络规划设计师资料
  • 资源网站快速优化排名oss wordpress
  • 做服装团购有哪些网站切图做网站过时了吗
  • 网站降权了怎么办wordpress主题没有评论
  • 网站可以有二维码吗建设项目银行网站
  • 做电影网站需要什么服务器中国万网注册网站
  • 威县做网站哪里好个人网站建设计划表
  • 凡科网站怎么做授权查询说明多媒体教学网站开发的一般步骤
  • 半岛网自助建站优化排名
  • 南安市建设局网站垫江网站开发djrckj
  • 网站域名是不是网址开发板哪个好
  • 上海工程建设招投标网站怎样做网站标题优化
  • 某一网站seo策划方案seo优化技术招聘
  • 南山品牌网站建设企业seo教程:外链优化方法和原理介绍
  • 外贸soho网站制作wordpress注册后绑定qq邮箱
  • 水果网站大全app下载河北加工活外发加工网
  • 网站开发和运行 法律临漳+网站建设
  • 建交易网站需要多少钱周口网络推广公司
  • 网站网站程序架设阳江网签
  • 地方门户网站模板官网的网站开发费用
  • 网站设计由哪个部门做东莞视频课程网站建设