网站开发项目答辩视频,中国互联网企业100强名单,企业手机网站cms,网络营销方案案例范文文章目录 第一个Solidity程序编译并部署代码变量值类型1. 布尔型2. 整型3. 地址类型4. 定长字节数组 第一个Solidity程序 开发工具#xff1a;remix 本教程中#xff0c;我会用remix来跑solidity合约。remix是以太坊官方推荐的智能合约开发IDE#xff08;集成开发环境#… 文章目录 第一个Solidity程序编译并部署代码变量值类型1. 布尔型2. 整型3. 地址类型4. 定长字节数组 第一个Solidity程序 开发工具remix 本教程中我会用remix来跑solidity合约。remix是以太坊官方推荐的智能合约开发IDE集成开发环境适合新手可以在浏览器中快速部署测试智能合约你不需要在本地安装任何程序。 网址remix.ethereum.org 进入remix我们可以看到最左边的菜单有三个按钮分别对应文件写代码的地方编译跑代码部署部署到链上。我们点新建Create New File按钮就可以创建一个空白的solidity合约。 // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract HelloWeb3{string public _string Hello Web3!;
}SPDX-License-Identifier: MIT 第1行是注释会写一下这个代码所用的软件许可license这里用的是MIT license。如果不写许可编译时会警告warning但程序可以运行。solidity的注释由“//”开头后面跟注释的内容不会被程序运行。 pragma solidity ^0.8.4; 第2行声明源文件所用的solidity版本因为不同版本语法有差别。这行代码意思是源文件将不允许小于 0.8.4 版本或大于等于 0.9.0 的编译器编译第二个条件由^提供。Solidity 语句以分号;结尾。 contract HelloWeb3{ string public _string “Hello Web3!”; } 第3-4行是合约部分第3行创建合约contract并声明合约的名字 HelloWeb3。第4行是合约的内容我们声明了一个string字符串变量_string并给他赋值 “Hello Web3!”。 编译并部署代码
在编辑代码的页面按ctrlS就可以编译代码非常方便。
编译好之后点击左侧菜单的“部署”按钮进入部署页面。 在默认情况下remix会用JS虚拟机来模拟以太坊链运行智能合约类似在浏览器里跑一条测试链。并且remix会分配几个测试账户给你每个里面有100 ETH测试代币可劲儿用。你点Deploy黄色按钮就可以部署咱们写好的合约了。 部署成功后你会在下面看到名为HelloWeb3的合约点击_string就能看到我们代码中写的 “Hello Web3!” 了。
中文solidity资料推荐 Solidity中文文档官方文档的中文翻译
solidity教程 技术教学博主
变量 Solidity中的变量类型 数值类型(Value Type)包括布尔型整数型等等这类变量赋值时候直接传递数值。 引用类型(Reference Type)包括数组和结构体这类变量占空间大赋值时候直接传递地址类似指针。 映射类型(Mapping Type): Solidity里的哈希表。 函数类型(Function Type)Solidity文档里把函数归到数值类型但我觉得他跟其他类型差别很大所以单独分一类。 值类型
1. 布尔型
布尔型是二值变量取值为true或false。 // 布尔值bool public _bool true;// 布尔运算bool public _bool1 !_bool; //取非bool public _bool2 _bool _bool1; //与bool public _bool3 _bool || _bool1; //或bool public _bool4 _bool _bool1; //相等bool public _bool5 _bool ! _bool1; //不相等2. 整型
整型是solidity中的整数最常用的包括 // 整型int public _int -1; // 整数包括负数uint public _uint 1; // 正整数uint256 public _number 20220330; // 256位正整数// 整数运算uint256 public _number1 _number 1; // -*/uint256 public _number2 2**2; // 指数uint256 public _number3 7 % 2; // 取余数bool public _numberbool _number2 _number3; // 比大小3. 地址类型 地址类型(address)存储一个 20字节的值以太坊地址的大小。地址类型也有成员变量并作为所有合约的基础。有普通的地址和可以转账ETH的地址payable。其中payable修饰的地址相对普通地址多了transfer和send两个成员。在payable修饰的地址中send执行失败不会影响当前合约的执行但是返回false值需要开发人员检查send返回值。balance和transfer()可以用来查询ETH余额以及安全转账内置执行失败的处理。 // 地址address public _address 0x7A58c0Be72BE218B41C608b7Fe7C5bB630736C71;address payable public _address1 payable(_address); // payable address可以转账、查余额// 地址类型的成员uint256 public balance _address1.balance; // balance of address4. 定长字节数组 字节数组bytes分两种一种定长byte, bytes8, bytes32另一种不定长。定长的属于数值类型不定长的是引用类型之后讲。 定长bytes可以存一些数据消耗gas比较少。 // 固定长度的字节数组
bytes32 public _byte32 MiniSolidity;
bytes1 public _byte _byte32[0]; MiniSolidity变量以字节的方式存储进变量_byte32转换成16进制为0x4d696e69536f6c69646974790000000000000000000000000000000000000000 _byte变量存储_byte32的第一个字节为0x4d。 枚举 enum 枚举enum是solidity中用户定义的数据类型。它主要用于为uint分配名称使程序易于阅读和维护。它与C语言中的enum类似使用名称来代替从0开始的uint // 用enum将uint 0 1 2表示为Buy, Hold, Sellenum ActionSet { Buy, Hold, Sell }// 创建enum变量 actionActionSet action ActionSet.Buy;它可以显式的和uint相互转换并会检查转换的正整数是否在枚举的长度内不然会报错 // enum可以和uint显式的转换function enumToUint() external view returns(uint){return uint(action);}enum是一个比较冷门的变量几乎没什么人用。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;
contract ValueTypes{// 布尔值bool public _bool true;// 布尔运算bool public _bool1 !_bool; //取非bool public _bool2 _bool _bool1; //与bool public _bool3 _bool || _bool1; //或bool public _bool4 _bool _bool1; //相等bool public _bool5 _bool ! _bool1; //不相等// 整数int public _int -1;uint public _uint 1;uint256 public _number 20220330;// 整数运算uint256 public _number1 _number 1; // -*/uint256 public _number2 2**2; // 指数uint256 public _number3 7 % 2; // 取余数bool public _numberbool _number2 _number3; // 比大小// 地址address public _address 0x7A58c0Be72BE218B41C608b7Fe7C5bB630736C71;address payable public _address1 payable(_address); // payable address可以转账、查余额// 地址类型的成员uint256 public balance _address1.balance; // balance of address// 固定长度的字节数组bytes32 public _byte32 MiniSolidity; // bytes32: 0x4d696e69536f6c69646974790000000000000000000000000000000000000000bytes1 public _byte _byte32[0]; // bytes1: 0x4d// Enum// 将uint 0 1 2表示为Buy, Hold, Sellenum ActionSet { Buy, Hold, Sell }// 创建enum变量 actionActionSet action ActionSet.Buy;// enum可以和uint显式的转换function enumToUint() external view returns(uint){return uint(action);}
}