Web3——开发第一个智能合约

news2025/7/7 20:57:13

学习写第一个智能合约,下面连接是集成开发环境

https://github.com/smartcontractkit/full-blockchain-solidity-course-js#lesson-2-welcome-to-remix-simple-storage

在这里插入图片描述

点击 “Remix” 来到Remix IDE,这就是我们要写代码的地方,集成开发环境。是编写和交互智能合约的地方。点击“Accept”.
在这里插入图片描述

它有很多功能,帮助我们查看和交互智能合约,虽然我们会渐渐脱离“Remix”使用本地开发环境。但是Remix对学习智能合约基础非常有帮助。

开发第一个合约,在“contracts”下新建“SimpleStorage.sol”文件,.sol是告诉编译器这是一个Solidity文件,Solidity是智能合约的主要编程语言,在任何一个Solidity智能合约中,你首先需要的就是Solidity的使用版本。因为更新频率很高,通过“pragma solidity”加上要用的版本号,来约定版本号,

在代码的最上方加上“SPDX-License-Identifier” ,没有的话编译器会出现警告,这个会定义license和代码分享规则,如图用的是MIT,MIT是限制最少的License之一,
这时就可以编译了,到编译界面,点击如下图
在这里插入图片描述
没有智能合约现在开始定义

// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;  // 或者 ^0.8.7  或者 >=0.8.7

// 没有智能合约现在开始定义,输入“contract” ,contract是Solidity的关键字,告诉编译器后面的代码是来定义智能合约的。给智能合约取名名字叫“SimpleStorage”
contract SimpleStorage {

}

这时我们Ctrl+S 保存可以看到绿色对钩。如下图
在这里插入图片描述

如果没有,进入编译界面,点击编译,然后就可以看到了。绿色对钩表示代码成功编译没有错误。

solidity 基本数据类型

最基础的四种数据类型是:boolean , uint , int 和 address;

  • boolean 定义true或者false.
  • uint 是无符号整数,表示这个数字不是可正可负的,只能是正数。
  • int 可以表示正数或者负数。
  • address 表示地址,就像在Metamask中看到的一样。
bytes是一种更底层的数据类型。
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;  // 或者 ^0.8.7  或者 >=0.8.7

// 没有智能合约现在开始定义,输入“contract” ,contract是Solidity的关键字,告诉编译器后面的代码是来定义智能合约的。给智能合约取名名字叫“SimpleStorage”
contract SimpleStorage {
    // 创建一个变量,叫做“hasFavoriteNumber”
    bool hasFavoriteNumber = false; // 布尔类型数据
    uint8 favoriteNumber = 123;  // uint 比较特殊,我们可以决定给它分配的空间。uint8表示分配了8个bit ,最大uint256 ,
    int256 hasFavoriteInt = -54;
   // address myAddress = 0x106225d232323a23323592898;
    bytes32 favoriteByte = "1212";
    string hasFavoriteText= "123";
}

函数

和javaScript一样,通过"function"关键字来表示,


    uint256 favoriteNum; // 定义变量
    // 接收uint256的参数,参数名是“_favoriteNum” .定义为public函数
    function funName(uint256 _favoriteNum) public {  
          favoriteNum = _favoriteNum; // 一定要带上“;”符号`
    }

为了看它实际运行结果,我们把合约部署在一个测试环境上。把它部署到本地网络,部署之前编译,
部署和发送交易区域。
在这里插入图片描述

每个账户都有100个以太币。这些账号和Metamask中账户的类似,区别是这些是在测试中的以太币。
可以设置gas limit, 选择要部署的合约,
点击“deploy”按钮来部署合约。运行结果如下图。

在这里插入图片描述
Deployed Contracts 下来就是智能合约部署地址,右边点击下拉可以看到熟悉的关键字:状态,交易哈希,from,to等等。部署一个合约其实就是发送一个交易。我们在区域链上做任何事修改任何状态就是在发一个交易,部署一个合约就修改了区块链,让链上拥有这个合约。
在函数名“funName”后输入123测试,如下图,可以看到账户的余额也少了一点。这是因为我们调用合约的时候,用了一些gas.
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/9343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文入门mybatis-plus

mybatis-plus mybatis-plus官网 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生. 可以说呢,在MP基础上还可…

一次想不到的 Bootstrap 类加载器带来的 Native 内存泄露分析

最近我们线上有同学反馈,java 服务在接入了支持预发的 javaagent 以后会出现缓存的内存增长,去掉 agent 启动以后内存增长正常。于是分析了一下这个问题,写了这篇文章。 备注:JVM 堆内存最大 1000M 主要会涉及下面这些内容&#…

防火墙基础技术

目录 一、内容概述 二、防火墙概述 防火墙的应用 防火墙的本质 防火墙的发展历程 防火墙特征 防火墙分类 包过滤防火墙: 包过滤防火墙的缺点: 代理防火墙: 代理防火墙的缺点: 状态检测防火墙: 状态检测防火…

【Linux修炼手册:基本指令(下)】

目录 1 man指令(重要) 2 more指令 3 less指令(重要) 4 head指令和tail指令 5 时间相关的指令 6 Cal指令 7 find指令:(灰常重要) -name 8 grep指令 9 zip/unzip指令 10 其他常见命令 1…

SiPM使用总结

1、SiPM的电子模型 首先我们来看一下二极管的雪崩电子模型,电子模型和雪崩时的电流波形如下图所示, 电流上升的快慢是由电容的充放电速度决定的,充电的时常数TdRS*Cd,放电的时常数 TqRq*Cd,这里Rq>>Rs&#xf…

《Hidden Markov Map Matching Through Noise and Sparseness》读书笔记

摘要 Our test shows how the algorithm breaks down as the sampling rate of the GPS is reduced. We also test the effect of increasing amounts of additional measurement noise in order to assess how well our algorithm could deal with the inaccuracies of other…

甘露糖修饰阿奇霉素|mannose-Azithromycin|甘露糖-聚乙二醇-阿奇霉素

甘露糖修饰阿奇霉素|mannose-Azithromycin|甘露糖-聚乙二醇-阿奇霉素 甘露糖修饰阿奇霉素,溶于大部分有机溶剂,如:DCM、DMF、DMSO、THF等等。在水中有很好的溶解性,取用一定要干燥,避免频繁的溶解和冻,提供…

2022年11月华南师范大学自考本科计算机信息管理系统加考实践题目

《 管理信息系统 》课程试卷 答卷提交说明: 在access环境下填写SQL命令完成以下实践的题目,并返回执行结果的截图,答卷的答题格式如下,包括三部分:题目,SQL文本代码,代码运行截图&#xf…

负载均衡架构

整体架构 设计关键点 4级负载架构 3级负载架构 2级负载架构 技术剖析 DNS 应用 地理位置和机房级别的负载均衡 优点 标准协议 缺点 能力有限,不够灵活DNS劫持DNS缓存 HTTP-DNS 应用场景 App、客户端 优缺点 可以根据业务和团队技术灵活定制非标协议、不通…

企业微信汇报怎么定时提醒?如何导出?

汇报工作的重要性在哪里? 作为职场人,能够准确及时的和自己的领导汇报自己的工作,不仅仅是我们工作的一部分,也是我们和领导工作沟通的一种十分重要的形式。汇报工作的重要性主要体现在: ● 可以让你的领导知道你日常…

算法刷题日志——贪心

文章目录分发糖果根据身高重建队列分发糖果 相邻的学生中,评分高的学生必须获得更多的糖果 ,所以需要分别从左往右和从右往左遍历,然后取两次遍历结果的最大值就是最少糖果的数目了。 class Solution {public int candy(int[] ratings) {int[…

xgplayer西瓜视频插件引用后因视频格式引起问题?

起因是我的医疗公众号项目为了应对新需求引入了西瓜视频插件,但后台配置视频文件后有的可以正常展示,有的却是黑屏。我这边的安卓和ios端app都嵌套了我写的h5页面。 初步调查: 个别课程在手机上看着确实不能播放,在电脑上播放是…

大麦 Android 选座场景性能优化全解析

作者:于世雷(蓝彻) 通常情况下移动端APP由于受到设备性能所限一般较少有场景会处理超量数据,更多的是将复杂数据处理交付给服务端。本质上降低终端强数据处理是很有必要的,降低CPU使用率、减少内存抖动可以大幅提升APP使用体验。但是有时移动…

Node.js学习记录

一、Node.js简介 浏览器中JavaScript在浏览器中的运行环境(代码正常运行需要的环境), Node.js后端的运行环境,通过Node.js可以实现用JavaScript后端开发 Node.js是一个基于Chrome V8引擎的JavaScript运行环境 二、fs文件系统模块 …

腾讯云短信告警

腾讯云短信告警 密钥获取地址:https://console.cloud.tencent.com/cam/capi #!/bin/python #-*- coding: utf-8 -*-import json, sys from tencentcloud.common import credential from tencentcloud.common.profile.client_profile import ClientProfile from tenc…

来!简单了解一下计算机发展史!

一、古代的运算工具 1.双手 当我们还是远古人的时候,我们用双手来进行计算 2.结绳、垒石 渐渐的,又出现了结绳记事和垒石记事 3.春秋战国时期 — 算筹 春秋战国的时候,广泛使用的算筹,根据不同的排列来表示不同的数字并进行计…

JavaScript基础(11)_方法、枚举对象中的属性、作用域

函数可以成为对象的属性。如果一个函数作为一个对象的属性保存,那么我们称这个函数是这个对象的方法,调用这个函数就是调用对象的方法(method) 比如:console.log()调用console对象的log方法。document.write() 调用document对象的write方法。…

RabbitMQ详解

RabbitMQ详解 文章目录RabbitMQ详解一、AMQP 和 JMS1.1 JMS1.2 AMQP1.3 两者对比二、RabbitMQ消息模型2.1 基本消息模型2.2 工作消息模型2.3 订阅模型2.3.1 Fanout 订阅模型2.3.2 Direct 订阅模型2.3.3 Topic 订阅模型三、消息持久化3.1 交换机持久化3.2 队列持久化3.3 签收机制…

玩推特营销必知的基础常识上篇

现如今,Twitter已从一个让人们分享其想法的地方变成了一个强大的营销,该可让品牌实时与受众交流。每月活跃用户超过3.21亿,很容易看出为什么公司在所有这些时间之后仍继续使用Twitter。但是,仅仅偶尔发出有关趋势的话题&#xff0…

S标签肽,H2N-KETAAAKFERQHMDS-OH

S Tag Peptide 是一种合成的多肽,由15个氨基酸残基构成。S Tag Peptide is a 15 amino acid peptide derived from RNase A. 编号: 188345中文名称: 多肽标签S-tag 、S标签肽英文名: S-tag peptide单字母: H2N-KETAAAKFERQHMDS-OH三字母: H2N-Lys-Glu-Thr-Ala-Ala-A…