在Solidity中两个无符号整型数字相减结果如果为负则会溢出,很严重的问题。所以在做数字运算时可以用DSSafeAddSub来保证运算的安全。

pragma solidity ^0.4.21;
import "github.com/oraclize/ethereum-api/oraclizeAPI.sol";
contract DSSafeAddSub {function safeToAdd(uint a, uint b) pure internal returns (bool) {return (a + b >= a);}function safeAdd(uint a, uint b) pure internal returns (uint) {require(safeToAdd(a, b));return (a + b);}function safeToSubtract(uint a, uint b) pure internal returns (bool) {return (b <= a);}function safeSub(uint a, uint b) pure internal returns (uint) {require(safeToSubtract(a, b));return (a - b);}
}
contract Uint_vs_Uint8 is usingOraclize,DSSafeAddSub{uint public uint_num;uint8 public uint8_num;string public str = "abc";uint public result = uint_num - uint8_num; // 2uint public uintVal = parseInt(str,2); // 0uint public sub;uint public safesub;function setUint_num() public {uint_num = 10;}function setUint8_num() public {uint8_num = 2;}function subFun() public {sub = uint8_num - uint_num; //溢出 115792089237316195423570985008687907853269984665640564039457584007913129639928
    }function safesubFun() public {safesub = safeSub(uint8_num, uint_num); // 0
    }
}

转载于:https://www.cnblogs.com/huahuayu/p/8720112.html

Solidity safesub防止溢出相关推荐

  1. Solidity 安全:已知攻击方法和常见防御模式综合列表

    目录 重入漏洞 漏洞 预防技术 真实世界的例子:DAO 算法上下溢出 漏洞 预防技术 实际示例:PoWHC和批量传输溢出(CVE-2018-10299) 不期而至的Ether 漏洞 预防技术 真实世界 ...

  2. solidity开发智能合约

    文章目录 1 Solidity与智能合约 2 智能合约概述 3 以太坊简介 4 以太坊交互工具 5 开发环境搭建 5.1 remix在线编译器 5.2 搭建本地网络 5.2.1 安装本地remix-i ...

  3. 智能合约语言Solidity Solidity API

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约语言Solidity Solidity API Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对 ...

  4. 智能合约语言Solidity 类型介绍

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约语言Solidity 类型介绍11 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合 ...

  5. solidity智能合约开发简介

    1.solodity简介 Solidity语言是一种以太坊智能合约高级编程语言,运行在以太坊(Ethereum)虚拟机(EVM)之上. Solidity语言是一种语法类似JavaScript的高级编程 ...

  6. 【译】Jumping into Solidity — The ERC721 Standard (Part 4)

    在我上一篇文章中,我们开始编写ERC721合同. 在前三篇文章( 第1部分, 第2部分 , 第3部分 )中有很多序言和解释,所以我会假设你在家中玩耍并直接跳回到代码中. 照片由RémiJacquain ...

  7. 【译】Jumping into Solidity — The ERC721 Standard (Part 3)

    到目前为止,在本系列中,我介绍了非易失性和ERC721的基础知识 ,然后介绍了标准接口及其中的一些要求 . 在本文中,我们将对我们的ERC721合同做出一些设计决定,并开始编写它. 贝拉儿NG在Uns ...

  8. 智能合约语言 Solidity 教程系列8 - Solidity API

    这是Solidity教程系列文章第8篇介绍Solidity API,它们主要表现为内置的特殊的变量及函数,存在于全局命名空间里. <!-- more --> 写在前面 Solidity 是 ...

  9. solidity智能合约[7]-整型与运算

    整型变量 整数是现实中处理最多的单位,在solidity中的整数类型有int和uint,int类型可以存储负数,uint类型只能够存储非负数. int类型:int8,int16,int24,int32 ...

最新文章

  1. L1-039. 古风排版
  2. cscript.exe自动启动解决方法分享
  3. Kubernetes探针踩坑记
  4. pom.xml配置文件配置jar(不用记,快速配置)
  5. Cloudera Manager 和 CDH 4 终极安装
  6. 【渝粤教育】国家开放大学2019年春季 8126-22T制药工程 参考试题
  7. 工大瑞普Dynamips如何保存交换机路由器配置
  8. 高等数学---用python求极限
  9. 经典面试题 Ipv4 和 Ipv6 是什么
  10. 计算机硬件大型作业报告,计算机硬件技术大作业报告 .doc
  11. java实现“进制转换-在线工具”
  12. 龙之信条服务器维护,不只是重启!《龙之信条:黑暗觉者》常见问题解决方案...
  13. Android Framework开发大揭秘!从小白到大佬的进阶之路
  14. 五星好评html编写,五星好评.html
  15. CommandArgument的一种用法
  16. Docker容器-------网络模式,数据卷和数据卷容器
  17. [ecshop 资料 ] 通联支付 wap 手机端 开发帮助中心 手机支付网关 帮助中心
  18. gateway 内存溢出问题_内存溢出和内存泄漏、产生原因以及解决方案
  19. 《Effective Java》读书笔记,flutter游戏开发
  20. 记一次蚂蚁金服的面试经历

热门文章

  1. minicom与USB转串口
  2. 【前端应该知道的那些事儿】运动学基础
  3. 一到软考网络工程师试题
  4. JDK 5.0 中的泛型类型学习
  5. 快速上手Spring WebFlux框架
  6. 8Python全栈之路系列之Django Cookie 与Sessi
  7. 我的IT之路2011(二)
  8. 度身定造的女孩子C程序
  9. Entity Framework -- 使用类别字段的实体继承关系
  10. 构造函数创建私有变量(防继承)