| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 智能合约学习笔记一 、——{Solidity语言详解——(1)智能合约介绍} -> 正文阅读 |
|
[区块链]智能合约学习笔记一 、——{Solidity语言详解——(1)智能合约介绍} |
1.1 智能合约? ? ? ? ·智能合约(英语:Smart Contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。 ????????智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。 ? ????????怎么理解智能合约的概念呢? ???????? 举个例子:微信和支付宝的信用卡自动还款,这也类似于 智能合约。 当还款日到了,还款条件也满足(在线钱包或者银行储蓄 卡中余额充足),系统会自动进行还款,无需人为干涉。 ???????? 当然这类程序依赖于中心化平台,依然可以被人为修改。 所以在防篡改的区块链平台出现前,智能合约并没有真正落地。 1.2 以太坊智能合约????????以太坊是第一个开源的支持智能合约的 区块链平台。由于以太坊区块链被普遍 接受,因此多数区块链的智能合约采取 与以太坊相似的设计。以太坊借鉴了比 特币区块链的技术,对它的应用范围进 行了扩展。 ????????如果说比特币是利用区块链 技术的专用计算器,那么以太坊就是利 用区块链技术的通用计算机 ????????与比特币相比,以太坊最大的不同点是:它可以支持图灵完备的开发语言,允许 开发者在上面实现智能合约,开发应用,这也是以太坊的最强大之处。 而solidity语言就是以太坊平台上使用最广泛的语言之一。 ?? ? ? ? ????????以太坊的智能合约被广泛应用的一个用途是创建通证,通证可以对应以太坊区块链平 台之上或之外的资产。 ????????下图为某咨询公司使用以太坊智能合 约从事业务的一个图示。图示是一个 典型的 ERC20 通证(一种以太坊智 能合约)发行过程: ????????一个项目通过智 能合约创建通证,这个通证是实体资 产或线上资产的价值表示物。投资者 (用户)发起交易,向智能合约转入 以太币(ETH),满足规则的智能合 约就一定会向投资者账户转入相应数 量的通证 ? ?1.3 .sol文件样例 。?????????编写智能合约的语言一般用solidity,编写的内容会保存在后缀名为.sol的文件中。一 个 solidity 文件可以包含任意数量的合约(contract)定义、import指令和pragma指令。 下面是一个.sol文件的样例: ? ? 1.4 pragma 指令????????接下来我们对该智能合约文件中的一些基础语法进行讲解。 第一行是 pragma 指令,它告诉我们源代码是为solidity 0.6.0 及以上版本编写的, 但不超过0.7.0。????????换句话说源文件不能用低于0.6.0版本的编译器编译,也不能用 0.7.0版本及以上版本的编译器编译。????????pragma一般用在整个程序的第一行:
同样含义的另外一种表述方法可以写成:
1.5 合约(contract)定义????????合约(contract)是位于以太坊区块链上特定地址的代码和数据的集合。???????? 如下所示,定义一个合约需要声明contract 关键字,随后跟上合约的名字 (SimpleStorage)。
????????合约是一个程序的主体,出现的位置一般紧随 pragma 之后。???????? 注意:一个程序可以有多个 contract 定义。1.6 function????????函数在所有的语言中都是一种常见类型。????????solidity中的函数关键字是function,之前的 智能合约文件定义的合约下,包含了如下两个函数: 函数可以分为内外两个部分:???????? 1.第一行 { } 之前的内容是对该函数的描述。????????2.{ } 里面的部分被称为函数内容,是函数实现其功能的代码。
1.7 保留关键字????????保留关键字是系统内部自带的、已被赋予特殊用途的字词,例如 function,不可以 被定义为变量来使用,下面是solidity中一部分的保留关键字:????????下面的 pragma、 solidity、contract、function、uint、public、return 都是被 使用的关键字。
1.8 代码注释???????? solidity 支持c风格和c++风格的注释:???????? // 之后到行尾的文本,都被看作注释,编译器不会编译此内容。 /* 与 */ 之间的文本被看作注释, 编译器不会编译此内容。 注释示例:
?代码示例编译solidity代码示例编译 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/25 20:48:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |