Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Solidity学习--初识以太坊合约

Solidity学习--初识以太坊合约

原创
作者头像
FutureTester
发布于 2022-04-18 15:02:31
发布于 2022-04-18 15:02:31
39700
代码可运行
举报
文章被收录于专栏:FutureTesterFutureTester
运行总次数:0
代码可运行

Solidity 的代码都包裹在合约里面. 一份合约就是以太应币应用的基本模块, 所有的变量和函数都属于一份合约, 它是你所有应用的起点.

简单的合约:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;

contract SumTest{
    uint a;
    uint b;

    function set(uint x , uint y) public {
        a = x;
        b = y;
    }

    function sum() public view returns(uint) {
        return a + b;
    }
}

1、这个合约提供了一个很简单的功能,这是一个简单的计算合约,世界上任何人都可以调用set方法为a和b赋值,传入不同的值,覆盖你的值,但是这个值仍会被存储在区块链的历史记录中;sum方法会获取到链上a和b两个数字的和。

2、第一行说明源代码在GPL 3.0版权许可。 在代码中加入机器可读许可证说明很重要, 在发布源代码时在默认需要。

3、下一行就是告诉编译器源代码所适用的Solidity版本为>=0.4.16 <0.9.0 。这是为了确保合约不会在新的编译器版本中突然行为异常。关键字 pragma 的含义是,一般来说,pragmas(编译指令)是告知编译器如何处理源代码的指令的(例如, pragma once )

uint a; 声明一个类型为uint(256位无符号整数)的变量

在remix 上尝试部署运行:

如上图所示红框内表示以太坊合约部署成功
如上图所示红框内表示以太坊合约部署成功
上图,调用set方法传入1,2,可以看到合约返回的信息
上图,调用set方法传入1,2,可以看到合约返回的信息
上图调用sum方法,计算出a+b的值
上图调用sum方法,计算出a+b的值

注意:合约运行需要先编译,再部署到以太坊链上去,最后调用合约方法

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
三、流程控制及循环《2022 solidity8.+ 版本教程到实战》
在 solidity 中使用 if 语句对流程进行控制,用法跟C类风格编程语言类似,例如如下是一个使用 if 语句的示例:
1_bit
2022/09/28
2460
三、流程控制及循环《2022 solidity8.+ 版本教程到实战》
四、函数修改器《2022 solidity8.+ 版本教程到实战》
在 solidity 中有一个函数修改器可作为前置、中置或者后置方法,有点像 ASP.NET 中的母版页(最起码差不多十年不碰了,不懂还有没有这个概念),又有点像 ThinkPHP 中的前置方法,可以在指定某个函数调用前、中执行该函数,下面是一个示例:
1_bit
2022/09/29
3080
四、函数修改器《2022 solidity8.+ 版本教程到实战》
聊聊以太坊智能合约ABI
ABI的全称是 Application Binary Interface,所以它是一个接口。或者说是一个标准。这个标准描述了在以太坊生态中如何跟合约进行交互,这个交互包含外部客户端调用合约的接口,也包括合约之间的交互。
用户7634691
2023/02/24
1.1K0
聊聊以太坊智能合约ABI
Solidity智能合约开发语言讲解及原理说明
智能合约技术 以太坊采用了Solidity作为智能合约语言,Solidity 是一门为实现智能合约而创建的高级编程语言,能在允许以太坊程序的节点上运行。该语言吸收了C++、JavaScript的一些特性,例如它是静态类型语言,支持继承、库等。
开发v_syn520110
2022/11/09
7540
solidity开发2-合约结构
合约 在solidity中的合约可以类比看做java等面向对象语言中的类。合约可以包含状态变量、函数、函数修饰符、事件、错误、结构体、枚举类型等等。 还有一些特殊的合约可以被称作库或者接口 状态变量 状态变量指的是永久存在区块链合约中的变量。 state variables // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.4.0 <0.9.0; contract SimpleStorage { uint storedData; //
SecondWorld
2022/05/06
2400
NFT链游经济模型系统开发搭建(应用详情)
智能合约操作系统环境:CentOS 7.6.1810,操作基础目录/data,如无该目录请手动创建(mkdir /data)
开发v_syn520110
2022/10/26
5500
一、基本remix环境及HelloWord contract《2022 solidity8.+ 版本教程到实战》
这个系列是 solidity8.+版本的教程,既然学习了 solidity 就应该明白智能合约是啥,在此系列文章中将不赘述基础概念,只讲解对应的语法,希望读者理解。
1_bit
2022/09/28
5200
一、基本remix环境及HelloWord contract《2022 solidity8.+ 版本教程到实战》
智能合约编程语言-solidity快速入门(下)
在介绍区块及交易属性之前,我们需要先知道solidity中自带了一些全局变量和函数,这些变量和函数可以认为是solidity提供的API,这些 API 主要表现为Solidity 内置的特殊的变量及函数,它们存在于全局命名空间里,主要分为以下几类:
端碗吹水
2020/09/23
1.4K0
智能合约编程语言-solidity快速入门(下)
理解以太坊: Go-Ethereum 源码剖析(1): Account and State
我们常常听到这样一个说法,"Ethereum 和 Bitcoin 最大的不同之一是二者使用链上数据模型不同。其中,Bitcoin 是基于 UTXO 模型的 Blockchain/Ledger 系统,Ethereum 是基于 Account/State 模型的系统"。那么,这个另辟蹊径的 Account/State 模型究竟不同在何处呢?在本文,我们就来探索一下以太坊中的基本数据单元(Metadata)之一的Account。
Tiny熊
2023/01/09
1.8K0
solidity 合约入门
下面是一个简单的 Solidity 合约示例,它实现了一个简单的数字存储合约,允许用户设置和获取一个整数值。这个合约将帮助你了解 Solidity 合约的基本结构和语法。
孟斯特
2023/10/19
2930
solidity 合约入门
这就是区块链开源底层软件平台——长安链ChainMaker
它是国内首个自主可控区块链软硬件一体技术体系,拥有自主可控的底层平台、完整便捷的配套工具、标准化下的开放生态、灵活高效的装配模式以及国际领先的处理性能。
Regan Yue
2022/07/30
2.6K0
这就是区块链开源底层软件平台——长安链ChainMaker
如何使用remix验证已部署的合约(以Goerli测试网为例)
点击 左侧工具栏 API Keys,右上角添加 App Name,得到 API Key Token
Tiny熊
2023/01/09
3.2K0
如何使用remix验证已部署的合约(以Goerli测试网为例)
Hello World with solidity
Solidity 是一种面向对象的、静态类型的编程语言,专为在以太坊上编写智能合约而创建。由于以太坊上的智能合约可以处理真实世界的资产(比如加密货币),所以Solidity的设计非常关注安全性。
孟斯特
2024/05/17
1200
Hello World with solidity
Solidity:代理模式升级合约
在Solidity中,通过代理模式来升级智能合约是一种常见且有效的做法,它允许在不中断现有合约功能的情况下进行更新。这种模式的基本思路是将合约的状态和主要逻辑分离,使得可以在一个新的合约中部署更新的逻辑,然后通过一个代理合约来调用新的逻辑,从而达到升级的目的。
孟斯特
2024/08/01
2810
Solidity:代理模式升级合约
五、构造函数《2022 solidity8.+ 版本教程到实战》
构造函数存在于很多语言中,可用于对当前对象在第一次创建时的初始化设置。在 solidity 合约中,也存在对应的构造函数,使用 constructor(){} 对其进行定义。
1_bit
2022/09/29
2970
六、数组及其操作《2022 solidity8.+ 版本教程到实战》
在 solidity 中,数组分为定长数组和动态数据,这两者的定义上跟 golang 很相似;其定长数组在创建好后不能设置超过数组长度的值,也就是不能push;而动态数组允许 push,还有一点很有意思的是,在删除数组某个元素后,删除的数组中的某个位置的值是还原成了当前类型数组的类型默认值。
1_bit
2022/10/04
3210
First Solidity App
在前文Hello World with solidity介绍了什么是 Solidity、Solidity 的合约结构以及如何使用Remix IDE[1]开发和测试智能合约。
孟斯特
2024/05/28
1230
First Solidity App
快速学习-在 Remix 上构建简单的水龙头合约
我们已经创建了一个钱包,而且接收并发送了以太币。到目前为止,我们看到以太坊和比特币一样,也可以看作一种加密货币。但以太坊还有更多功能。事实上,加密货币功能服从于以太坊作为世界计算机的功能; 去中心化的智能合约平台。Ether 用于支付运行智能合约的费用,智能合约是在称为以太坊虚拟机(EVM)的模拟计算机上运行的计算机程序。
cwl_java
2020/04/09
1.9K0
快速学习-在 Remix 上构建简单的水龙头合约
Solidity:合约继承
在Solidity中,继承是一种使一个合约可以获取另一个合约的属性和方法的方式。这是一种代码复用的方法,可以使你的代码更加模块化,更易于理解和维护。
孟斯特
2024/05/28
1860
Solidity:合约继承
跟我学 Solidity :开发环境
Solidity[3]是用于开发以太坊智能合约的最受欢迎的语言之一,因此,作为一个想要成为区块链开发人员的人,我决定学习如何使用 Solidity 开发智能合约。
Tiny熊
2020/12/15
1.7K0
推荐阅读
相关推荐
三、流程控制及循环《2022 solidity8.+ 版本教程到实战》
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验