草庐IT

solidity复利

全部标签

solidity开发 msg.value

刚学完solidity的基础开发,想写一个众筹项目,在使用msg.value的时候,发现只要函数中使用到msg.value,就会自动转走账户的钱到该合约账户里。这让我非常疑惑,那怎么转出来呢?我写了一个demo来测试。pragmasolidity^0.4.26;contractsendmoney{uinta;//用于获取当前合约账户的钱functiongetBalance()returns(uint){returnthis.balance;}functiontransfer()payable{a=msg.value;//用于接收sender转的eth}functionsendMoney(){a

Factory工厂合约的实现-solidity实现智能合约教程(6)

文章目录1介绍2主要功能3代码示例4部署测试4.1部署Factory工厂合约4.2利用工厂合约生成新的合约4.3导入新创建的合约并验证猛戳订阅学习专栏🍁🍁👉solidity系列合约源码+解析👈🍁🍁1介绍何为工厂合约呢?相信有过编程经验的小伙伴都听说过工厂模式,此处的工厂合约其实和他的概念相似,该合约将承担创建其他合约的任务。在基于类的编程中,此模式的主要动机来自单一职责原则(一个类不需要知道如何创建其他类的实例),并且该模式为构造函数提供了一种抽象。2主要功能为什么要用到工厂合约呢?我们可以通过部署一个工厂合约来为供用户去创建N个功能相同的智能合约可以节约一定的Gas费用,简化部署流程提高合约

区块链 以太坊 solidity 如何比较2个字符串相等

不能直接returna==b;,因为Solidity是不支持两个字符串直接比较的。将string类型转换为bytes类型,它实际上是一个字节数组,每一个字节是可以直接比较,因此只要所有的字节都能相等,就代表两个字符串相等。functionisEqual(stringmemorya,stringmemoryb)publicpurereturns(bool){bytesmemoryaa=bytes(a);bytesmemorybb=bytes(b);//如果长度不等,直接返回if(aa.length!=bb.length)returnfalse;//按位比较for(uinti=0;ihttps:/

浅学区块链(2)之solidity

 solidity是开发智能合约的常用语言,下面是一些关于solidity的基础知识。目录注释导入其他源文变量类型全局变量货币单位常用修饰符修改器modifier 库的使用异常源代码结构源文件中可以包含任意多个合约定义、导入源文件指令、版本标识指令、结构体、枚举和函数定义。SPDX版权许可标识(TheSoftwarePackageDataExchange):这行就是在指明你写的智能合约采用什么样的对外开放标准,该标准规定了别人是否拥有商业开发,学习使用等权利。常见开源://SPDX-License-Identifier:MIT//SPDX-License-Identifier:GPL-3.0私

Solidity中哈希函数的编码与解码

起因写这篇文章的起因,是我在前端调试合约的时候,发现合约报错了,点开命令行报错,发现返回的是合约的callData,我直接表演一个眼前一黑,我怎么直接的知道是调用哪个方法的时候报错呢?于是有了这篇文章的探索目标:如何根据callData解析出调用函数内容:从合约小白的角度,从哈希函数的前世今生开始讲起。如果你已经很了解这部分内容,可以直接划到底。-用到的库:ethers\foundry哈希函数的前世今生这一个部分直接引用WTF课程里对哈希函数的描述,讲解的很详细。感谢社区的力量github.com/AmazingAng/WTFSolidity哈希函数(hashfunction)是一个密码学概念

Solidity拓展:数学运算过程中数据长度溢出的问题

在数学运算过程中假如超过了长度则值会变成该类型的最小值,如果小于了该长度则变成最大值数据上溢uint8numA=255;numA++; uint8的定义域为[0,255],现在numA已经到顶了,numA++会使num变成0(由于256已经超过定义域,它会越过256,变成0),即数据发生上溢(越过上边界,叫上溢)。255-->256-->0上溢。数据下溢uint8numB=0;numB--;numB本身是低水位线,现在numB--会使num变成255(由于-1已经超过定义域,所以它会越过-1,变成255),即数据发生下溢(越过下边界,叫下溢)。0–>-1-->255下溢。   可以通过引用Op

solidity中assert用法详解

//solidityfunctionadd(uint256a,uint256b)internalpurereturns(uint256){uint256c=a+b;assert(c>=a);returnc;}基本上add只是像+一样对两个uint相加,但是它用一个assert语句来确保结果大于a。这样就防止了溢出。assert和require相似,若结果为否它就会抛出错误。assert和require区别在于,require若失败则会返还给用户剩下的gas,assert则不会。所以大部分情况下,你写代码的时候会比较喜欢require,assert只在代码可能出现严重错误的时候使用,比如uint

目录(文章更新中...)《实战NFT web3 solidity(新版本0.8.+)》

注:由于是付费专栏内容,若有错误请及时联系@1_bit,博客链接:https://blog.csdn.net/A757291228,或在文章下留言,收到后将会对错误进行改正,若是版本更新导致的问题也希望大家对错误进行提交,尽力去保证付费用户该得到的权益。友情提示:本系列文章读者最好学过一门编程语言,面向对象语言更佳文章还在持续更新中…未完本专栏将会实战NFT,带读者走进web3世界,完成一个NFT项目。《实战NFTweb3solidity(新版本0.8.+)》一、solidity基础二、solidity基础进阶(2.1)——library库合约二、solidity基础进阶(2.2)——库合约的

如何使用 Solidity 创建 NFT

如何使用Solidity创建NFT提供技术支持SinaVisitorSystem构建和创建NFT的光荣指南,ERC-721标准,用于创建收藏品、艺术品和任何类型的链上独特资产。照片由AntonMaksimovjuvnsky在Unsplash上拍摄。NFT(Non-FungibleTokens)是智能合约领域的热门新秀。如果说2020年是DeFi之年,那么至少2021年初属于NFT。NFT是一种类似于ERC20的代币标准。不可替代的代币意味着它是独一无二的代币,没有其他类似的代币。这与可替代的ERC20截然不同。Fungible的意思是“可替换的”或“可互换的”。例如,无论您使用哪种美元钞票,您

solidity实战

目录合约间转账合约的继承合约间转账用到address类型的transfer方法话不多说,先上代码//SPDX-License-Identifier:GPL-3.0pragmasolidity>=0.6.20.9.0;contractInfoFeed{functioninfo()publicpayablereturns(uint256ret){return42;}functiongetBalance()publicviewreturns(uint){returnaddress(this).balance;}}contractConsumer{fallback()externalpayable{}