草庐IT

Solidity

全部标签

想入门区块链?最强solidity学习攻略来了

在区块链世界中,智能合约是不可缺少的一部分。而作为一种真正意义上运行在去中心化网络上的合约,Solidity在智能合约的编写中占据了非常大的份额,学习solidity属于入门区块链的必须项。今天我整理了solidity的最强攻略,希望能带大家以最快的速度学习掌握solidity。初学者对solidity完全没接触过的同学,学过其他语言的话solidity是十分好上手的,但是对于计算机小白来说solidity不适合作为初学语言。我接下来的推荐也是默认大家有其他语言基础的哦。1.尚硅谷视频尚硅谷关于编程的教学视频质量普遍质量偏高,且尚硅谷在solidity方面的视频讲得细致深入,涉猎范围广,让初学

玩以太坊链上项目的必备技能(类型-引用类型-Solidity之旅三)

在前文我们讲述了值类型,也就说再修改值类型的时候,每次都有一个独立的副本,如:string类型的状态变量,其值是无法修改,而是拷贝出一份该状态的变量,将新值存起来。对于处理稍微复杂地值类型时,拷贝将变得愈发大了,也正是介于此,才考虑到将数据存放在内存(memory)或是存放在存储(storage)。在Solidity中,数组(array)和结构体(struct)属于引用类型。更改数据位置或类型转换将始终产生自动进行一份拷贝,而在同一数据位置内(对于存储(storage)来说)的复制仅在某些情况下进行拷贝。数据位置和赋值行为所有的引用类型,如数组(array0和结构体(struct)类型,都有别

Solidity 值类型、变量 和 函数

Solidity变量和函数类型整型字符串布尔类型地址类型全局变量BlockMsgtx函数类型整型int/uint:分别表示有符号和无符号的不同位数的整型变量。支持关键字uint8到uint256(无符号,从8位到256位)以及int8到int256,以8位为步长递增。uint和int分别是uint256和int256的别名。contractBase{ //整型应该和java或者c等强类型语言差不多 uintnum=1; intnum3=1;}字符串字符串有两个关键字是storage和memorystorage这个是会永久存贮在区块链中memory这个是存贮在内存中contractBase{ s

Ubuntu中使用solc-select管理多个Solidity编译器并任意切换使用(Ubuntu20.04下已验证可用性)

用Solidity写成的以太坊智能合约有多个版本.智能合约指定的编译器版本在智能合约头部.比如:pragmasolidity^0.4.16;contracttest{function(){......}}第一行的语句表明使用的solidity编译器版本就是0.4.16了.在这种情况下,必须使用版本号中间一位数字与待编译版本号相同(中间一位数字必须为4)且最右边的版本号高于或者等于待编译的智能合约指定版本号(最右边的数字要大于等于16)的编译器.比如版本号为0.4.16或0.4.17或0.4.26的编译器.有时我们编译的智能合约有不同版本号,这时就需要下载不同版本的编译器.Github上的一个项

Solidity合约标准----ERC721

ERC721非同质化token,它依赖于ERC-165ERC721快速体验参照官方提供的案例,直接部署到remix,自动下载依赖https://docs.openzeppelin.com/contracts/4.x/erc721//contracts/GameItem.sol//SPDX-License-Identifier:MITpragmasolidity^0.8.0;import"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";import"@openzeppelin/contracts/util

solidity基础语法与简单案例20221130

1、Todolist(日程表)练习包括增删改查和使用地址获取结构体//SPDX-License-Identifier:MITpragmasolidity^0.8.7;contractTodolist{structTodo{stringtext;boolcomplete;}Todo[]publictodos;//构建能够从地址映射构建内容的mappingmapping(address=>Todo)publicWhoOwnTodo;functioncreate(stringcalldata_text)external{Todomemorytodo;todo.text=_text;todo.comp

如何成为资深 solidity 智能合约工程师

原文发布在https://github.com/33357/smartcontract-apps这是一个面向中文社区,分析市面上智能合约应用的架构与实现的仓库。欢迎关注开源知识项目!如何成为资深solidity智能合约工程师Solidity+Hardhat+Ethers熟悉Solidity语法和数据结构,能使用hardhat完成智能合约的自动化测试、优化、部署、交互和SDK封装。Openzipplin+Upgradeable熟悉Openzipplin的所有库文件,能够完成可升级合约的部署和升级。SmartcontractApps熟悉市面上主流的智能合约项目的实现:dex(uniswap、cur

go - 将参数作为 bytes32 传递给 Solidity 智能合约

我正在使用thisEthereumGoClient并尝试将字符串/bytes32传递给Solidity。智能合约中的函数很简单(测试用):functionvote(bytes32id){//idhasthevalue0x0000000000000000000000000000000000000000000000000000000000000000}打电话hash,err:=contract.Send(transaction,"vote","myString")将产生0x00000000000000000000000000000000000000000000000000000000000

用solidity实现第一个智能合约(类)

用solidity实现第一个智能合约(类)一、编辑//SPDX-License-Identifier:MITpragmasolidity^0.4.0;contractPerson{uint_height;uint_age;address_owner;//合约的拥有者//方法名和合同名相同时,就是构造函数//在创建对象时,构造函数会自动最先被调用functionPerson(){_height=165;//初始化身高_age=23;_owner=msg.sender;}//set方法,修改_height属性functionsetHeight(uintheight){_height=height;

solidity第十课——接口

接口(interface):如果我们合约需要和区块链上其他合约会话,则需定义interface。外部合约使用函数可直接读取其中数据。接口规则:1.不能包含状态变量2.不能包含构造函数3.不能继承除接口外的其他合约4.所有函数必须是external且不能有函数体5.继承接口的合约必须实现接口定义的所有功能虽然接口不实现任何功能,但它非常重要。接口是智能合约的骨架,定义了合约的功能以及如何触发它们:如果智能合约实现了某种接口(比如ERC20或ERC721),其他Dapps和智能合约就知道如何与它交互。因为接口提供了两个重要的信息:合约里每个函数的bytes4选择器,以及基于它们的函数签名函数名(每