solidity
文章平均质量分 54
前端段
这个作者很懒,什么都没留下…
展开
-
多签名合约
多签名合约// SPDX-License-Identifier: MITpragma solidity >=0.4.22 <0.8.0;pragma experimental ABIEncoderV2;contract Wallet { address[] public approvers; uint8 public quorum; struct Transfer { uint id; uint amount; address payable t原创 2022-05-20 23:49:49 · 209 阅读 · 0 评论 -
工厂模式创建合约&合约互调
工厂模式创建合约// SPDX-License-Identifier:MITpragma solidity ^0.8.7; //站点contract Station { //站点名称 string private name; //站点位置 string addr; //站点人员数量 uint16 count; //构造函数 constructor(string memory _name, string memory _addr,原创 2022-05-19 18:55:06 · 283 阅读 · 0 评论 -
solidityABI编码函数
solidityABI编码函数abi.encode(…) returns (bytes):计算参数的 ABI 编码。自动补全32位字节abi.encodePacked(…) returns (bytes):计算参数的紧密打包编码abi. encodeWithSelector(bytes4 selector, …) returns (bytes):计算函数选择器和参数的 ABI 编码abi.encodeWithSignature(string signature, …) returns (byte原创 2022-05-18 19:49:52 · 1098 阅读 · 0 评论 -
solidity学习一(数据类型、增删改查合约)
一、程序的授权码// SPDX-License-Identifier: GPL-3.0可以从这里挑:https://spdx.org/licenses/不开发直接写:// SPDX-License-Identifier: UNLICENSED二、版本:pragma solidity =0.8.7; //合约版本三、合约contract Vote {…}...原创 2022-02-22 18:56:50 · 1261 阅读 · 0 评论 -
拍卖的合约
拍卖合约1.a出价100,最高价=a地址2.b出价200,最高价=b地址pragma solidity ^0.6.1;contract auction_demo{ address payable public seller; // 卖方 address payable public buyer; // 最高价者 uint256 public highAmount; // 最高价 address payable public admin; // 平台方 st原创 2022-03-29 17:43:47 · 234 阅读 · 0 评论 -
发红包的合约&银行合约
发红包的合约案例分析:pragma solidity ^0.6.1;contract redpacket_demo{ address payable public tuhao; uint256 public rcount; // 红包数量,因为抢一个少一个,所以要记录 uint public ave; mapping(address => bool) isStake; //1.fa hong bao constructor(uint256原创 2022-03-28 18:52:43 · 604 阅读 · 1 评论 -
solidity库的使用
库一个特殊的合约可以像合约一样进行部署,但是没有状态变量、不能存以太币可重用部署一次,在不同合约内反复使用节约gas,相同功能的代码不用反复部署1.定义库、使用库library mathlib{plus();}contract C{mathlib.plus();}库函数使用委托的方式调用delegateCall,库代码是在发起合约中执行的。2.using for 扩展类型A是库libraryusing A for B 把库函数(从库A)关联到类型BA库有函数add(B b)原创 2022-03-24 18:53:10 · 9494 阅读 · 0 评论 -
solidity中的继承
继承1.普通合约的继承pragma solidity ^0.4.20;contract base { uint internal a; constructor (uint _a){ } function privateHello() private{ } function internalHello() internal { } function externalHello() external { } f原创 2022-03-24 18:27:25 · 823 阅读 · 0 评论 -
合约交易中transfer和send的区别
send()成员函数addr.transfer(eth) 等价于 require(addr.send(eth))推荐用transfer,因为有报错提示send错了,因为默认不报错,所以用断言assert(towho.send(1 ether));// transfer()成员函数// 说明:接收币的合约,必须有fallback函数,0.6以上版本还增加了receive函数// funtion () public payable{// }// 0.6以上版本有函数名// receive原创 2022-03-24 17:21:08 · 1041 阅读 · 0 评论 -
solidity第三方库
第三方库:https://github.com/pipermerriam/ethereum-datetimemapping没有长度,无序,所以获取不到长度。不能用迭代访问。https://github.com/ethereum/dapp-bin/blob/master/library/iterable_mapping.solhttps://github.com/Arachnid/solidity-stringutilshttps://github.com/OpenZeppelin/openzepp转载 2022-03-18 18:16:26 · 333 阅读 · 0 评论 -
openzeppelin库详解
地址:https://github.com/OpenZeppelin/openzeppelin-solidity详解:https://www.linuxidc.com/Linux/2016-10/135891.htm一个在以太坊上建立安全智能合约的框架,目前集成与Truffle和Embark安装步骤(ubuntu)新建一个自己的合约目录,进入合约目录Truffle initnpm init -y 该步生成一个package.json,内置一些配置信息npm install -E openz.原创 2022-03-12 21:42:14 · 1219 阅读 · 0 评论 -
实战例子:Solidity代码小失误导致池子里60万U被盗空
实战例子:Solidity代码小失误导致池子里60万USDT被盗空被盗原因:利用token的漏洞查看合约地址先看这笔交易:黑客用0.04个eth换了112个USDT再用112个USDT换了101个TCR关键这步:101个TCR换了63.9万USDT(价值400万RMB),如下图第一步,点击这里第二步,点address第三步,点contract,就可以看合约源码了/** *Submitted for verification at Etherscan.io on 2021-04-13原创 2022-03-11 18:40:14 · 1261 阅读 · 0 评论 -
合约里面创建合约
合约里面创建合约:1.合约名字 aa = new 合约名字(); // 返回合约地址2.合约名字.属性3.合约名字.方法();// SPDX-License-Identifier:MITpragma solidity ^0.8;import "https://github.com/Arachnid/solidity-stringutils/blob/master/src/strings.sol"; // 字符串拼接contract Pair { using strings for *;原创 2022-03-10 17:12:44 · 1118 阅读 · 0 评论 -
solidity合约调合约方法汇总
共六种方法:// SPDX-License-Identifier:MIT// 合约调合约方法// 参考视频pragma solidity ^0.8;contract Callee {uint public x;uint public value;function setX(uint _x) public returns (uint){x = _x;return x;}function setXandSendEther (uint _x) public payable returns原创 2022-03-09 16:31:19 · 1153 阅读 · 0 评论 -
solidity全局变量和方法
由于版本更新比较快。过去一部分写法,现在使用0.5.10版本开发合约时,部分报错。再去翻翻官方的最新的文档。文章目录一、特殊变量msgtxblockaddressaliastype二、ABI编码decodeencodeencodePackedencodeWithSelectorencodeWithSignature三、错误处理assertrequirerevert四、合约相关thissuperselfdestruct五、数学和密码学函数addmodmulmo原创 2022-03-09 14:43:55 · 459 阅读 · 0 评论 -
solidity高级特性
1 functionview:承诺不修改状态。pure:纯函数,承诺不会读取或修改状态。payable:为了接收ether,必须标记回退功能payable。最少需2300gas。2 log通过函数来访问低层接口的记录机制log0,log1,log2,log3和log4。 logi获取类型的参数,其中第一个参数将用于日志的数据部分,其他参数用作主题。上面的事件调用可以以与以下相同的方式执行i + 1bytes32。pragma solidity ^0.4.10;contract C {原创 2022-03-08 04:03:27 · 7756 阅读 · 0 评论 -
truffle入门(发币和宠物商店)
truffle入门truffle compile //编译truffle migrate // 部署原创 2022-03-07 10:15:19 · 282 阅读 · 0 评论 -
solidity中datalocation数据位置
solidity中datalocation数据位置在storage和 memory之间(或来自 calldata)的赋值总是创建一个独立的副本。从 memory到 memory的赋值仅创建引用。这意味着对一个内存变量的更改在引用相同数据的所有其他内存变量中同样有效。从storage到本地storage变量的赋值也仅赋值一个引用。所有其他到storage的赋值总是被复制。这种情况的示例是赋值给状态变量或storage结构体类型的局部变量成员,即使局部变量本身只是一个引用。// SPDX-Licens原创 2022-03-06 00:16:17 · 6535 阅读 · 0 评论 -
solidity全局变量&modify的顺序
truffle原创 2022-02-08 18:36:14 · 1749 阅读 · 0 评论 -
hardhat入门
hardhat入门第一步:mkdir hardhat-tutorialcd hardhat-tutorialnpm init --yesnpm install --save-dev hardhatnpx hardhat第二步、首先创建一个名为 contracts 的新目录,然后在目录内创建一个名为Token.sol的文件。// Solidity files have to start with this pragma.// It will be used by the Solidity c原创 2022-03-05 13:49:25 · 4726 阅读 · 0 评论 -
solidity中未解决的问题
1.请问ethscan上查到bytecode代码,可以反编译为solidity代码嘛?2.函数returns中,可以返回reference type类型嘛?原创 2022-03-04 11:01:38 · 181 阅读 · 0 评论 -
solidity开发中的问题(assert revert require&节约gas)
1.如果compile 0.4.23,找不到对应的版本,可以先选auto compile。2.callData就是console里面的input数据原创 2022-03-04 10:44:52 · 300 阅读 · 0 评论 -
在ethscan.io上发布和验证合约源码
在ethscan.io上发布和验证合约源码1.公开token的源码,增加透明度和投资人的信任度;2.上传源码后,人们可以在Etherscan查看当前token的源码,同时也可以很方便的看到token的相关信息。#合约代码没有通过 Verify Your Contract Source Code的样子#合约代码通过 Verify Your Contract Source Code的样子下面我们来看看怎么通过验证先看一下源码验证页面构造通过上图可以看到,除了构造参数的byteCode外,原创 2022-03-04 09:31:39 · 590 阅读 · 0 评论 -
solidity函数
前言一、receive&fallback是什么?二、函数可见性visility1.public2.private3.external4.internal三、函数状态易变性mutability1.view2.pure3.payable4.non-payable四、函数修饰符modifiy五、函数returns原创 2022-03-03 17:40:00 · 4556 阅读 · 0 评论 -
solidity学习二(赋值数据位置、modify、Event、receive&fallback、数组)
赋值位置1.memory 引用类型=storage 引用类型,没有修改指针,而是深拷贝。pragma solidity ^ 0.5.0;contract Locations {uint[] public stateVar = [1,2]; //storagefunction doSomething() public returns(uint) {uint[] memory localVar; //memorylocalVar = stateVar;stateVar = [3,4];requ原创 2022-03-02 14:06:45 · 581 阅读 · 0 评论