
solidity
tzy577
这个作者很懒,什么都没留下…
展开
-
solidity0.6.0特性
pragma solidity ^0.6.0;struct User { // 0.6.0后可以在合约外面定义结构体了,主要用于共享一些数据 uint a;}// 0.6.0开始数组的length属性变为了只读属性,如果需要减少数组长度,需要使用pop()函数contract MyContract { uint[] num = [1, 2, 3]; uint[3] num1 = [1, 2, 3]; function f() public {原创 2021-04-11 11:11:06 · 504 阅读 · 0 评论 -
solidity抢红包合约的实现
抢红包合约1.代码及注释本合约的运行版本及语言代码pragma solidity ^0.4.0;contract red_envelope{ address private sponsor; //保存红包发起方的地址 uint num = 0; //num用于保存当前已经有多少人领过红包了 uint public left_money; //left_money用于保存红包现在还剩下多少钱 mapping(address =&原创 2020-11-26 16:19:22 · 1490 阅读 · 0 评论 -
solidity投票(ballot)合约
一.此合约是remix给出的一个投票合约的例子,现对其代码进行注释:1.代码及注释本合约的运行版本及语言代码// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.7.0 <0.8.0;/** * @title Ballot * @dev Implements voting process along with vote delegation */contract Ballot { //投票人的结构原创 2020-11-10 14:36:33 · 2786 阅读 · 4 评论 -
区块的各种信息
blockhash(uint blockNumber)在0.4.22版本,将block.blockhash(uint blockNumber) returns (bytes32)替换block.coinbase (address): 当前块所属旷工地址block.difficulty (uint): 当前块难度block.gaslimit (uint): 当前块汽油上限block.number (uint): 当前块号block.timestamp (uint): 当前块的时间戳,UNIX时代以原创 2020-09-19 16:21:24 · 854 阅读 · 0 评论 -
经典合约实例
这篇博客将完成一个经典的众筹合约:1.思路:1)为某个账户或者合约申请一个众筹账号2)允许其他账号对此众筹账户进行捐赠3)检查现有金额是否已经大于目标金额,如果是则将众筹账号注销,将钱转给众筹所指定的人2.代码pragma solidity ^0.6.0;pragma experimental ABIEncoderV2;contract crowd_funding{ //众筹账号的结构体,分别为,众筹接受捐赠的地址,目标金额,现有金额和捐赠者到其捐赠金额的映射 struct原创 2020-09-19 15:11:53 · 455 阅读 · 0 评论 -
solidity的一些知识点(上)
a**b=a^b位运算(异或运算相同取0不同取1,移位运算是算数移位)view函数不会修改状态,但会读取状态。如果存在下列语句,则被视为是修改了函数,编译器会抛出警告:1)修改状态变量。(状态变量是全局变量或storage变量,即变量值永久保存在合约存储空间中的变量)2)触发事件。3)创建合约。4)使用selfdestruct。5)发送以太。6)调用任何不是视图函数或纯函数的函数7)使用底层调用(call函数)8)使用包含某些操作码的内联程序集。Pure(纯)函数不读取..原创 2020-09-18 17:17:49 · 686 阅读 · 0 评论 -
Reentrancy Vulnerability
pragma solidity ^0.4.0;contract Bank { address owner; mapping (address => uint256) balances; constructor() public payable{ owner = msg.sender; } function deposit() public payable { balances[msg.sender] += msg.v原创 2020-09-17 19:44:05 · 237 阅读 · 0 评论 -
Fallback函数
Fallback函数的使用特点:1.无名字,无参数,无返回值2.如果请求的方法在合约中不存在,则会调用fallback函数3.对合约转账的时候,会自动执行fallback函数(可能会产生Reentrancy漏洞)4.在高版本中已经将定义形式改为fallback() external {}pragma solidity ^0.4.0;contract fallbackTest{ uint public a; function(){ a=1;原创 2020-09-17 16:38:35 · 2187 阅读 · 1 评论 -
solidity的一些知识点(下)
从今天开始,我将会学习以太坊智能合约开发的solidity,这里,我将会将我学习过程中遇到的一些值得注意的知识点记录下来并且不断更新。string类型数据作为参数的时候,需要加上memory/calldata.Calldata/memory/storage区别一般只有外部函数的参数(不包括返回参数)被强制指定为calldata。这种数据位置是只读的,不会持久化到区块链memory存储位置同我们普通程序的内存类似,即分配,即使用,动态分配,越过作用域即不可被访问,等待被回收。而对于storage原创 2020-09-16 19:19:02 · 562 阅读 · 0 评论