Solidity基础

这篇具有很好参考价值的文章主要介绍了Solidity基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们的学习方式是基于项目的,remix是我们写代码的地方.Remix - Ethereum IDE

在你的智能合约中你总是要做的第一件事情就是告诉Solidity,你正在使用哪个版本的solidity,并且加上SPDX许可。

接下来创建你的contract并为他命名(类似于其他语言的class)

第一个程序

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.8;//稳定的版本,^表示比0.8.7更高的版本都适用以下代码,也可以使用>=,<,>,<=来确定范围

contract SimpleStorage{
    //boolean,uint,int,address,bytes
    
    bool hasFavouritenum = true;
    uint256 Favouritenum = 5;//uint后面不加数字就是默认分配256bit,x数字表示分配xbit,但是显示的分配是个好习惯
    string FavouritenumInText = "Five";//string是一种特殊的bytes,只能存储文本
    address MyAddress = 0x5Beba6a653De36a74b681216457e0511e3615CE9;
    bytes32 FavouriteBytes = "cats";//通常是0x123456789,32是bytes被允许的分配的最多的空间

    //会以0初始化变量
    uint256 Favourite;
  

}

每个合约都有一个地址 just like 每个账户都有一个地址。

原本中的基本数据是private,可以加上public来查看,删除旧合约只是在面板上删除而已,因为区块链是不可更改的(测试环境在某种程度上可以改)。

变量前的描述:

public :内部外部都可见,会创建storage 和 state 变量的getter函数,实际上加上public就是创建getter函数来返回该值,public会自动获得一个view函数,也就是蓝色按钮

private:只对合约内部可见,在storage中,表明该合约是唯一可以调用favoriteNumber函数的合约

external:只对合约外部可见,

(默认)internal:只有这个合约和继承他的合约可以读取

做更多的操作,消耗更多的gas

view和pure关键字会改变按钮的颜色(黄色到蓝色),

调用该俩函数不需要支付gas(但是你在消耗gas的函数中调用它就需要付费),记住!,只有在更改状态的时候才支付gas

view函数不允许修改任何状态。只能读取这个合约的状态

pure函数不允许修改任何状态。也不允许去读区块链数据,一般用于常用的方法,或者某个不需要读取数据的算法。

第二个程序

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.8;//稳定的版本,^表示比0.8.7更高的版本都适用以下代码,也可以使用>=,<,>,<=来确定范围

contract SimpleStorage{
    
    //会以0初始化变量
    uint256 public Favourite;
    
    function store(uint256 _Favourite) public {
        Favourite = _Favourite;
        
    }
    function retrieve() public view returns(uint256){
        return Favourite;
    }
    function add() public pure returns (uint256){
        return 1+1;
    } 
}
// 0xd9145CCE52D386f254917e481eB44e9943F39138

目前,再Solidity中有6种方式可以存储数据

1.Stack

2.memory:能修改的临时变量

3.storage:永久存在

4.calldata:不能更改的临时变量

5.code

6.logs

数组array,结构struct,映射mapping在Solidity中被认为是特殊的类型,需要给定一个memory或calldata关键字,solidity知道uint256仅仅存在于内存之中,string的背后其实是一个bytes数组

mapping映射(也可以叫做python中的字典)

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.8;//稳定的版本,^表示比0.8.7更高的版本都适用以下代码,也可以使用>=,<,>,<=来确定范围

contract SimpleStorage{
    
    uint256 public favouriteNumber;

    // uint256[3] public favouriteNumberList;//静态数组
    People[] public people;//动态数组
    
    
    People public person1 = People(1,"lbx1");
    People public person2 = People({FavouriteNumber:2 ,name:"lbx2"});

    mapping(string => uint256) public nameToFavouriteNumber;


    struct People{
        uint256 FavouriteNumber; 
        string name;
    }
    
    function store(uint256 _FavouriteNumber) public {
        favouriteNumber = _FavouriteNumber;
        
    }
    function retrieve() public view returns(uint256){
        return favouriteNumber;
    }
    function addPerson(uint256  _favouriteNumber,string memory _name) public {
        // 等价people.push(People(_favouriteNumber,_name)); 
        People memory newperson = People(_favouriteNumber,_name);
        people.push(newperson);
 
        nameToFavouriteNumber[_name] = _favouriteNumber;
        
    }
   
}
// 0xd9145CCE52D386f254917e481eB44e9943F39138

怎么把合约部署到测试网络或者真实网络上

ENVIRONMENT 选择Injected Provide

尽量在最后一步再部署到测试网上,作为实际搭建应用的最后一步,因为会等待很长时间

CTRL+S的compile是在EVM(以太坊虚拟机:Ethereum Virtual Machine)上编译的。文章来源地址https://www.toymoban.com/news/detail-819427.html

到了这里,关于Solidity基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【区块链-智能合约工程师】第三篇:Solidity进阶(一)

    学习资料地址:WTF学院 库合约一般都是一些好用的函数合集(库函数),为了提升solidity代码的复用性和减少gas而存在。他和普通合约主要有以下几点不同: 不能存在状态变量 不能够继承或被继承 不能接收以太币 不可以被销毁 String库 String库合约是将uint256(大正整数)类型

    2024年02月06日
    浏览(54)
  • 区块链web3智能合约Solidity学习资源整理

    Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。 Solidity中文官方文档: https://solidity-cn.readthedocs.io/zh/develop/ https://learnblockchain.cn/docs/solidity/index.html 在线rem

    2024年03月19日
    浏览(73)
  • 《NFT区块链进阶指南二》Etherscan验证Solidity智能合约(Remix插件验证)

    前置参考文档:https://blog.csdn.net/sinat_34104446/article/details/130557703 合约验证是上传合约源代码到etherscan过程,在智能合约项目中,通常都是提供源码验证,增加项目信任度 验证合约后可以直接在etherscan上执行获取和设置方法,方便日常的管理员维护 以下使用remix进行验证并使用

    2024年02月05日
    浏览(76)
  • solidity(智能合约)零基础教学(3)

    前言:前面我们将了solidity的一些常用方法,接下来我们来讲一下,我们编写合约经常要用的一些功能; 一,modifier修饰符 在Solidity合约中,修饰符(modifier)是一种用于修改函数行为的特殊函数。通过使用修饰符,我们可以在执行函数之前、之后或中途对函数进行某些操作或

    2024年03月27日
    浏览(55)
  • 基于以太坊的智能合约开发Solidity(基础篇)

    参考教程:基于以太坊的智能合约开发教程【Solidity】_哔哩哔哩_bilibili (1)程序编译完成后,需要在虚拟机上运行,将合约部署好后便可执行刚刚编写的函数。(注意, 合约一旦部署,就会永久存在于区块链上,且不可篡改 ,不过可以销毁) (2)执行完成后,可以得到以

    2024年02月04日
    浏览(58)
  • 【区块链技术开发】 Solidity使用Truffle Box工具实现预构建模板、自动化部署、创建智能合约示例代码

    专栏:区块链技术开发 Truffle Box是一个开发工具,为Truffle生态系统中的开发人员提供了预构建

    2023年04月16日
    浏览(71)
  • 区块链智能合约基础

    什么是智能合约 简单来说,智能合约是一种满足在一定条件时,就执行的程序,例如自动售货机就类似一个智能合约系统。 1.向自动售货机投入足够硬币,按下按钮 2.售货机供出商品 3.售货机回到初始状态 智能合约的工作原理 智能合约是一段程序(代码和数据的集合),可

    2024年02月13日
    浏览(44)
  • Solidity智能合约开发 — 3.4-抽象智能合约和接口

    假如一个智能合约中至少一个函数缺省实现时,即某个函数缺少{}中的内容,这个智能合约就当做抽象智能合约。 当我们有一个函数没想好怎么写时,必须将该合约标为 abstract ,不然编译会报错;另外,未实现的函数需要加 virtual ,以便子合约重写。抽象智能合约是将智能合

    2024年02月12日
    浏览(46)
  • 【Solidity】智能合约案例——①食品溯源合约

    目录 一、合约源码分析: 二、合约整体流程:       1.部署合约       2.管理角色       3.食品信息管理       4.食品溯源管理         Producer.sol:生产者角色的管理合约,功能为:添加新的生产者地址、移除生产者地址、判断角色地址是否被授权         Di

    2024年02月08日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包