| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 区块链开发之Solidity编程基础(一) -> 正文阅读 |
|
[区块链]区块链开发之Solidity编程基础(一) |
概要由ETH为代表的第二代区块链技术,相比于第一代区块链技术而言,最大的特点就是智能合约的出现,让去中心化应用成为了可能。ETH节点为智能合约提供运行环境:EVM(Ethereum Virtual Machine)以太坊虚拟机。EVM是一个动态运行沙盒,可以将以太坊上所有的智能合约和周围环境全部隔离。因此,EVM上运行的智能合约无法访问网络、文件系统或者在EVM上运行的其他进程。 Solidity是一个基于合约高级编程语言,它是静态类型语言,支持继承、库和复杂的用户定义两类型等功能。它可以被编译成EVM的汇编语言,从而被链上的节点所执行。其他语言还有Serpent、Vyper和LLL,同样可被编程成EVM的汇编语言从而在其节点上运行。 solidity的IDE环境可使用:Remix sol文件结构编译开发pragma关键字沿用c、c++编译指令概念。
以上指令表明编译器版本需要高于0.4.0才可编译。
可以使用更复杂的规则来指定编译器的版本,表达式遵循 npm 版本语义。 引入其他文件1、全局引入:
2、自定义命名空间
…创建一个新的全局符号 symbolName,其成员均来自 “filename” 中全局符号。 另一种语法不属于 ES6,但或许更简便:
3、多包引入
创建新的全局符号 alias 和 symbol2,分别从 “filename” 引用 symbol1 和 symbol2 。 4、路径 用 Remix 提供一个为 github 源代码平台的自动重映射,它将通过网络自动获取文件: 比如,你可以使用 关于编译器的路径配置可以根据自己的编译器进行查找 注释代码注释
文档注释
合约在 Solidity 中,合约类似于面向对象编程语言中的类。 每个合约中可以包含 状态变量、 函数、 函数修饰器、事件、 结构类型、 和 枚举类型 的声明,且合约可以从其他合约继承。 采用关键字 contract声明
状态变量状态变量是永久地存储在合约存储中的值,在合约里声明而不属于任何函数的都是状态变量。
类型Solidity 是一种静态类型语言,这意味着每个变量(状态变量和局部变量)都需要在编译时指定变量的类型(或至少可以推导出变量类型 – 类型退到)。 Solidity 提供了几种基本类型,可以用来组合出复杂类型。 值类型以下类型也称为值类型,因为这些类型的变量将始终按值来传递。 也就是说,当这些变量被用作函数参数或者用在赋值语句中时,总会进行值拷贝。 1、 布尔类型 运算符:
2、整型 运算符: 比较运算符: 除以零或者模零运算都会引发运行时异常。 移位运算的结果取决于运算符左边的类型。 3、地址
运算符: ps: 关于地址类型相关内容,在后文介绍 4、定长字节数组 可以通过16进制字面量或者数字字面量来设定bytesi: 也可通过字符来设定bytesi: 运算符: 比较运算符: 成员变量: 5、有理数和整型字面量
整数字面常数由范围在 0-9 的一串数字组成,表现成十进制。 例如,69 表示数字 69。 Solidity 中是没有八进制的,因此前置 0 是无效的。 十进制小数字面常数带有一个 科学符号也是支持的,尽管指数必须是整数,但底数可以是小数。 比如 数值字面常数表达式本身支持任意精度,除非它们被转换成了非字面常数类型(也就是说,当它们出现在非字面常数表达式中时就会发生转换)。 这意味着在数值常量表达式中, 计算不会溢出而除法也不会截断。 例如, (2800 + 1) - 2800 的结果是字面常数 1 (属于 uint8 类型),尽管计算的中间结果已经超过了 以太坊虚拟机Ethereum Virtual Machine(EVM) 的机器字长度。 此外, 只要操作数是整型,任意整型支持的运算符都可以被运用在数值字面常数表达式中。 如果两个中的任一个数是小数,则不允许进行位运算。如果指数是小数的话,也不支持幂运算(因为这样可能会得到一个无理数)。 6、枚举类型
7、函数类型 函数类型是一种表示函数的类型。
函数类型有两类:- 内部(internal) 函数和 外部(external) 函数:
只能在当前合约内被调用(更具体来说,在当前代码块内,包括内部库函数和继承的函数中),因为它们不能在当前合约上下文的外部被执行。 调用一个内部函数是通过跳转到它的入口标签来实现的,就像在当前合约的内部调用一个函数。
由一个地址和一个函数签名组成,可以通过外部函数调用传递或者返回。 函数类型表示成如下的形式
如果没有返回结果,则必须省略 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 1:49:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |