智能合约-Solidity官方文档(1)

2023-11-19

写在前面:HiBlock区块链社区成立了翻译小组(以太坊中文社区),翻译区块链相关的技术文档及资料,本文为solidity官方文档翻译的第一部分《智能合约概述》,特发布出来邀请solidity爱好者、开发者做公开的审校,您可以添加微信baobaotalk_com,验证输入“solidity”,然后将您的意见和建议发送给我们,也可以在文末“留言”区留言,有效的建议我们会采纳及合并进下一版本,同时将送一份小礼物给您以示感谢。

1
简单的智能合约


让我们先看一下最基本的例子。现在就算你都不理解也不要紧,后面我们会有更深入的讲解。


存储

pragma solidity ^0.4.0;


contract SimpleStorage {
   uint storedData;

   function set(uint x) public {
       storedData = x;
   }

   function get() public constant returns (uint) {
       return storedData;
   }

}


第一行就是告诉大家源代码使用Solidity版本0.4.0写的,并且使用0.4.0以上版本运行也没问题(最高到0.5.0,但是不包含0.5.0)。这是为了确保合约不会在新的编译器版本中突然行为异常。关键字 pragma 的含义是,一般来说,pragmas(编译指令)是告知编译器如何处理源代码的指令的(例如, pragma once )。


Solidity中合约的含义就是一组代码(它的 函数 )和数据(它的 状态 ),它们位于以太坊区块链的一个特定地址上。 代码行 uint storedData; 声明一个类型为 uint (256位无符号整数)的状态变量,叫做 storedData 。 你可以认为它是数据库里的一个位置,可以通过调用管理数据库代码的函数进行查询和变更。对于以太坊来说,上述的合约就是拥有合约(owning contract)。在这种情况下,函数 set 和 get 可以用来变更或取出变量的值。


要访问一个状态变量,并不需要像 this. 这样的前缀,虽然这是其他语言常见的做法。


该合约能完成的事情并不多(由于以太坊构建的基础架构的原因):它能允许任何人在合约中存储一个单独的数字,并且这个数字可以被世界上任何人访问,且没有可行的办法阻止你发布这个数字。当然,任何人都可以再次调用 set ,传入不同的值,覆盖你的数字,但是这个数字仍会被存储在区块链的历史记录中。随后,我们会看到怎样施加访问限制,以确保只有你才能改变这个数字。



子货币(Subcurrency)例子


下面的合约实现了一个最简单的加密货币。这里,币确实可以无中生有地产生,但是只有创建合约的人才能做到(实现一个不同的发行计划也不难)。而且,任何人都可以给其他人转币,不需要注册用户名和密码 —— 所需要的只是以太坊密钥对。


pragma solidity ^0.4.21;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

智能合约-Solidity官方文档(1) 的相关文章

  • 为什么模板不能模板分离编译(模板的定义与声明分离)

    目录 一 什么是分离编译 二 为什么不能 三 解决方案 1 模板定义的位置显式实例化 2 将声明和定义放到同一个文件里 不让定义和声明分离 一 什么是分离编译 一个程序 项目 由若干个源文件共同实现 而每个源文件单独编译生成目标文件 最后将

随机推荐

  • qt sql 查询 正序,倒序

    QString str QString SELECT Date Time People Event FROM TB LOG WHERE People 1 order by Date desc limit 0 2000 arg 模式 orde
  • 请你介绍一下map的分类和常见的情况

    java为数据结构中的映射定义了一个接口java util Map 它有四个实现类 分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对 根据键得到值 因此不允许键重复 重复了覆盖
  • 机器学习-线性回归总结

    最近学习了线性回归的模型 也是机器学习中最基础的一种模型 在此 总结一下线性回归的模型介绍 梯度下降以及正规方程 回归问题 线性回归 顾名思义 属于回归问题 既然是回归问题 那必然属于监督学习 在这里简单再介绍一下什么是回归问题 回归用于预
  • Matlab出错向量长度必须相同,代码已贴。错误使用plot3,向量长度必须相同

    clc clear all theta 60 半功率角 m log10 2 log10 cosd theta P LED 0 02 nLED 60 P total nLED nLED P LED Ar 1e 4 Ts 1 index 1 5
  • 智能科学工程毕业设计如何选题

    文章目录 0 简介 1 如何选题 2 最新智科毕设选题 3 最后 0 简介 学长搜集分享最新的智能科学工程与技术业专业毕设选题 难度适中 适合作为毕业设计 大家参考 学长整理的题目标准 相对容易 工作量达标 题目新颖 1 如何选题 最近非常
  • 【MicroPython RP2040】可编程IOs(PIO)示例介绍

    MicroPython RP2040 可编程IOs PIO 原文链接 https www cnx software com 2021 01 27 a closer look at raspberry pi rp2040 programmab
  • VSCode连接WSL2及VMware,WSL2安装GUI应用

    一 VScode 连接WSL2 参考文章 巨硬官方文档 知乎大佬教程 知乎大佬教程2 1 开启WSL2 支持 使用管理员权限的 Shell 才能安装 WSL2 按 Win X 找到 Windows PowerShell 管理员 并复制执行命
  • mysql (Errcode: 13 - Permission denied)没有权限找不到文件问题

    下午五点钟 突然反馈说某个页面报错 然后还想让我加班 并且很迅速的帮我点了外卖 我还打算今晚去健身房呢 1 首先从案发现场勘察 页面返回500 2 之后看后台发现某个数据表not found permission denied 3 最后到后
  • 第一次跑高光谱数据结果

    1 所用数据集 Bostwana Indian Pines 所用算法 SVM 2 数据分析 高光谱数据维数高 信息量大 冗余信息多 这些先都不考虑 先输入SVM数据再考虑 3 试验流程 加载数据 包括Data和label 数据预处理 归一化
  • python Pycharm出现“can't find '__main__' module”解决方案

    第一次运行Pycharm工程 出现 can t find main module 最后发现 原来是配置没配对 因为在配置时没有选择 py文件 而只选择了工程名 因此选择Edit Configurations 选择Edit Configura
  • 从“深度伪造”到“深度合成”:AI为啥需要一次“正名”?

    在世人对AI的 邪恶性 进行攻诘的浪潮中 AI造假 可能已经是现在排首位的理由了 自从2017年Deepfake 深度伪造 横空出世以后 人们惊呼原来AI在造假方面简直天赋异禀 此后 AI生成内容 技术 特别是GAN算法的突飞猛进更加印证了
  • ChatGLM-6b本地安装手把手教学

    什么是ChatGLM 6B ChatGLM 6B 是一个开源的 支持中英双语的对话语言模型 基于 General Language Model GLM 架构 具有 62 亿参数 结合模型量化技术 用户可以在消费级的显卡上进行本地部署 INT
  • 关于windows update 无法更新,以及.NET4.0安装失败

    故障 打开 Windows Update 出现红色盾牌图标 点击 检查更新 出现 Windows Update 当前无法检查更新 因为未运行服务 您可能需要重新启动计算机 查看 Windows Update 服务 正常 查看 Backgro
  • Linux环境下安装notepad++

    Notepad 在linux下名字为Notepadqq Centos下安装方法 sudo wget O etc yum repos d sea devel repo http sea fedorapeople org sea devel r
  • 爬虫(一):Python网络数据采集(爬虫)概述

    专栏介绍 结合自身经验和内部资料总结的Python教程 每天3 5章 最短1个月就能全方位的完成Python的学习并进行实战开发 学完了定能成为大佬 加油吧 卷起来 全部文章请访问专栏 Python全栈教程 0基础 文章目录 专栏介绍 什么
  • hack the box—Lame

    扫描 还是老方法nmap fscan得到开放的端口和服务 nmap sV sC sT v T4 10 10 10 3 看到开了445 先来波ms17 010 发现失败 这里还开个21 并且可以知道版本号 直接搜索ftp漏洞 msf正好有对应
  • Qiskit API架构介绍(一)

    API是一组类 函数和数据结构 用于与设备和模拟器进行接口 并运行实验 Qiskit实验概述 Qobj中的实验序列定义了运行在后端backend上的量子操作 单个Qobj定义了一批要并发运行的实验 即 Qobj中每个实验按列出的顺序运行一个
  • ttl一会255一会64_Ping TTL 的值越小越好?不对!

    我们在使用Ping命令的时候 通常关注的是 时间 这个值 忽略 TTL 这个值 但是细心的人会发现 TTL的值不是每次Ping都一样 也不是Ping每个域名都一样 这是什么原因呢 TTL 又是什么意思呢 可能不少人认为 TTL 的值越小越好
  • java8 sum_lambda – Java 8流由3个字段组合并按sum和count聚合产生单行输出

    前提 class Product public String name public String category public String type public int id todo implement equals toStri
  • 智能合约-Solidity官方文档(1)

    写在前面 HiBlock区块链社区成立了翻译小组 以太坊中文社区 翻译区块链相关的技术文档及资料 本文为solidity官方文档翻译的第一部分 智能合约概述 特发布出来邀请solidity爱好者 开发者做公开的审校 您可以添加微信baoba