首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

101项智能合约安全检查清单

使用非常老 Solidity 版本,无法从错误修复和较新安全检查中获益。使用最新版本可能会使合约容易受到未发现编译器错误影响。...(参见 这里[48] 和 这里[49]) ERC721 ownerOf()不正确返回值 : 用solc > 0.4.22编译合约与 ERC721 ownerOf()交互,如果返回一个bool而不是address...(见这里[63]) 低级调用返回值。确保检查低级调用(call/callcode/delegatecall/send/等)返回值,以避免意外失败。(见这里[64]) 低级调用账户存在性检查。...这是由于v0.5.0中引入一个编译器错误,在v0.5.8中得到了修正(见此处[74])。 危险单元表达式。诸如x =+ 1这样单元表达式很可能是程序员真正想使用x += 1错误表达。...死代码可能表明程序员出错、逻辑缺失或潜在优化机会,需要标记出来予以删除或适当处理。(见此处[103]) 未使用返回值。函数调用中未使用返回值表明程序员错误,可能会产生意外行为。

1.7K10

新手,Visual Studio 2015 配置Boost库,如何编译和选择,遇到无法打开文件“libboost_thread-vc140-mt-gd-1_63.lib“解决办法

1,到官网下载最新boost,www.boost.org 这里我下载1-63版本. 2,安装,解压后运行bootstrap.bat文件。稍等一小会就OK。 3,编译boost库。...下面的两个操作,需要你将上面boost编译时候告诉你目录替换到下面说有关目录信息里面去。    ..._1_63_0\stage\lib" 注意:一定要进行这样正确设置,否则编译使用boost程序总是会提示有问题。...<< std::endl; } int main() { boost::thread thrd(&hello); thrd.join(); } 出错: 错误 LNK1104 无法打开文件“libboost_thread-vc140...因为上面选择是以动态链接库形式编译boost库,所以这里要选择 多线程调试 DLL(/MDd)。 再去运行一下。就OK了。

3.1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【TypeScript 演化史 — 第二章】基于控制流类型分析 和 只读属性

    在 TypeScript 2.0 之前,编译无法推断出上面的语义。...现在,我们可以创建一个表示原点 point(0, 0) 对象: const origin: Point = { x:0, y:0 }; 由于 x 和 y 标记为 readonly,因此我们无法更改这两个属性值...因为 x 是只读,如果尝试这么,TypeScript 编译器会给出错误提示: image.png 相反,moveX 应该返回一个具有更新属性值 point,它类似这样: function...也就是说,它是类型系统另一个特性,通过让编译器从 TypeScript 代码库中检查意外属性分配,帮助你编写正确代码。...也就是说,它是类型系统另一个特性,通过让编译器从 TypeScript 代码库中检查意外属性分配,帮助你编写正确代码。

    2K10

    网站HTTP错误状态代码及其代表意思总汇

    无法分配所需内存。 0101 意外错误。函数返回 |。 0102 要求字符串输入。函数需要字符串输入。 0103 要求数字输入。函数需要数字输入。 0104 不允许操作。 0105 索引超出范围。...0115 意外错误。外部对象中发生一个可捕捉错误 (%X)。脚本无法继续运行。 0116 脚本分隔符结束标记丢失。脚本块缺少脚本结束标记 (%>)。 0117 脚本结束标记丢失。...0132 编译错误。无法处理 Active Server Page '|'。 0133 ClassID 属性无效。对象标记有一个无效 ClassID '|'。 0134 ProgID 属性无效。...无法将用对象标记创建对象添加到会话内部。 0189 禁止对象使用。无法将用对象标记创建对象添加到应用程序内部。 0190 意外错误。释放外部对象时发生可捕获错误。 0191 意外错误。...为 'Expires' 指定日期和时间在 1980 年 11 日之前或在 2038 年 1 月 19 日 3:14:07 GMT 之后。 0201 默认脚本语言无效。

    5.9K20

    Effective-java-读书笔记之枚举和注解

    返回每个枚举常量在类型中数字位置.永远不要根据枚举序数导出与它关联值, 而是要将它保存在一个实例域中.第36条 用EnumSet代替位域如果一个枚举类型元素主要用在集合中, 一般就用int枚举模式...(无法打印, 无法遍历.)java.util提供了EnumSet类来有效地表示从单个枚举类型中提取多个值多个集合.第37条 用EnumMap代替序数索引有时候, 你可能会见到用ordinal方法来索引数组代码...(一维和多维例子.)第38条 用接口模拟可扩展枚举Java语言上是不支持枚举继承, 这并不意外, 因为枚举扩展最后证明都不是什么好点子....只要实现这个接口就可以.虽然无法编写可扩展枚举类型, 却可以通过编写接口以及实现该接口基础枚举类型, 对它进行模拟....例如Serializable接口.标记接口和标记注解各有用处.

    56150

    手写编程语言-递归函数是如何实现

    以正常人类思考方式:当我们执行完 return 语句时候,就应该标记该语句所属函数直接返回,不能在执行后续 statement。 可是这应该如何实操呢?...其实看看 AST 就能明白了: 当碰到 return 语句时,会递归向上遍历语法树,标记上所有 block 节点表明这个 block 后续语句不再执行了,同时还得把返回值记录下来。...部分实现代码如下: // 在 return 时候递归向上扫描所有的 Block,并打上标记,用于后面执行 return 时候直接返回。...编译期:扫描到 statement 如果是一个函数调用,则判断该函数是否为该 block 中函数,也就是第二步取出函数。 编译期:如果两个函数相等,则将当前 block 标记为递归调用。...最后是目前递归在某些情况下性能还有些问题,后续会尽量将这些标记过程都放在编译期,编译慢点没事,但运行时慢那就有问题了。

    67020

    漏洞丨cve2010-3333

    返回地址在EBP+4位置,我们已经可以确定淹没返回位置了。...我们继续F8,但是发现程序跑飞,并没有按照正常流程发展,经过思考,应该是拷贝字符串过长,访问l无法访问地址,导致异常,所以我们需要减少字符串拷贝长度,也就是异常代码上一句ECX值C8AC,直接用010Editor...并没有出现弹栈返回情况,观察这段溢出函数:他并没有开辟新栈,这里算是这个漏洞第一个恶心点,我们需要继续F8向下运行,直到这个函数返回,也就是执行完拷贝代码下面的第一个ret:箭头指向call就是关键...,下面断点那里:进来了,继续调试:结果发现还是进入了之前那个循环,所以继续重新调试,回到第二个call里面,发现里面有个call很关键,导致函数无法返回,进入一个循环:我们在je这里修改标志位,跳过这个循环...}}}}标记1处:这里是拷贝长度,不要太大,会造成异常;标记2处:这里是跳板jmp esp地址;标记3处:这里是00000000,用来让je跳转,不要进入循环call;标记4处:这里就是弹窗shellcode

    32320

    Deepmind“好奇心”强化学习新突破!改变奖励机制,让智能体不再“兜圈子”

    来源:Google AI 作者:Nikolay Savinov, Timothy Lillicrap, 编译:大明 【新智元导读】Google、Deepmind和苏黎世联邦理工学院研究人员提出...对于ICM方法而言,这只是获得更多“意外一种方式,目的是让获得总体奖励最大化。事实证明,在某些环境中可能存在其他方式造成“自我意外”,从而导致无法预料结果。 ?...检查二者是否完全匹配可能是毫无意义:因为在现实环境中,很少出现完全相同场景。比如,即使智能体返回了一间完全相同房间内,其观察角度也会与之前记忆场景不同。...智能体任务是在迷宫中搜寻高回报目标,但它却更喜欢花时间对墙壁进行标记,因为这会产生很多“意外”奖励。...基于“意外ICM方法,智能体一直在标记墙壁,而不是探索迷宫 而我们方法则在相同条件下学习合理探索行为。

    1.5K30

    基础知识一: 面向对象基本知识.

    在面向对象程序设计中数据被看作是一个中心元素并且和使用它函数结合很密切,从而保护它不被其它函数意外修改。   封装提供了一个有效途径来保护数据不被意外破坏。...编译多态性:   编译多态性是通过重载来实现。对于非虚成员来说,系统在编译时,根据传递参数、返回类型等信息决定实现何种操作。    ...结构成员无法声明为protected成员,因为结构不支持继承。  嵌套类型 嵌套类型默认访问修饰符为private。 和类,结构成员默认访问类型一致。...在C#语言中有两种属性方法,其一是get,通过它可以返回私有域值,其二是set,通过它就可以设置私有域值。...、 属性定义: 访问修饰符 返回类型 属性名 {       get{语句集合}       set{语句集合} } 索引器定义: 访问修饰符 返回类型 this[参数类型 参数...] {

    891170

    C#开发人员应该知道13件事情

    如果你发现需要创建枚举集合,标记枚举可能是一个更简单选择: [Flag] public enum Tag { None =0x0, Tip =0x1, Example=0x2...C#编译器会警告你这个潜在错误,但是有许多类似的情况,编译器不会对意外引用相等发出警告。 3. 类陷阱 封装你数据 类负责正确地管理数据。...异常 异常不是条件 异常通常不应用于控制程序流; 它们代表是,在运行时你可能无法恢复意外情况。如果你预期你应该处理情况,主动检查情况,而不是等待异常发生。...使用volatile 将字段标记为“易变”是高级功能,即使专家也经常误解。C#编译器将确保访问字段具有获取和释放语义; 这不同于确保对该字段所有访问都处于锁定状态。...调用助手(p)传递p副本,而不是p引用,因此Helper()中执行变化将丢失。相反,Helper会返回修改p副本。 意外算术 C#编译器保护你出现常量算术溢出,但不一定是计算值。

    2.3K90

    10个实用但偏执Java编程技术

    也许吧,但请看Javadoc: 如果这个虚拟路径不表示一个文件夹目录,则此方法返回null。否则将会返回一个字符串数组,每一个字符串表示目录中文件或文件夹。 对,没错。我们可以添加一些校验: ?...所以使用-1是理所当然,对吗?我说不对,请看以下代码: ? 谁知道呢。也许到时候他们改变了编码方式,对字符串并不区分大小写,也许更好方式是返回-2?谁知道呢。 回到顶部 4.避免意外赋值 是的。...你相信你写超级好看API,它很直观,随之而来,一些用户谁只是将原始类型转换成Object类型,直到那该死编译器停止发牢骚,并且突然他们会链接错误方法,以为这是你错误。 看下面的代码: ?...当value == 3时,将会出现无法找到提示,而不会让人不知所谓。...在switch语句中,每一个case语句范围只有一行语句,事实上,这些case语句甚至不是真正语句,他们就像goto语句中跳转标记一样。

    37720

    工具解析 | 杀毒引擎惨遭打脸,黑帽大会爆惊天免杀工具

    确认工作完毕后,我们开始下载测试所需编译器TDM-GCC。 ? 说起来tdm-gcc编辑器功能还是很强大,既可以编译64位系统所需binary,也可以支持编译32位系统binary。...从图中我们可以发现绿色字体显示内容为我们目前可使用文件,且支持系统位数也标记十分清晰。 既然了解了它里面可供选择文件内容,我们也不要再耽误时间了,继续向下进发。 ?...由于我测试时使用是64位系统脚本,为了能够使后门反弹回攻击机信息准确到位,便对LHOST和LPORT参数进行调整并设置接收时使用IP地址(图中红框标记处),具体命令命令如下: ?...在此补充说明,无论是64位还是32位系统脚本,攻击端LHOST和LPORT都需要重新调整配置,从而确保你接收信息时不会出现意外情况。...既然目标客户端已经被我们使用AVET生成文件所感染,就赶快验证下它免杀效果吧。谁知,扫描结果让我感到有些意外,因为测试时所使用各种杀毒引擎居然无法查出它,扫描结果显示竟然是0%。

    91120

    VS2013+python+boost.

    然后运行:     bjam --with-python link=shared runtime-link=shared 来编译出boost.python库。...成功的话会在boost_1_57_0\stage\lib下生成4个文件。     如果失败的话,检查一下: python是否为32位,不用能64位。...解释一下bjam这里用到参数(详细参数说明可以运行bjam --help查看): --with:只编译指定库,如输入--with-python就只编译python库了,不加的话会编译全部库得用很长时间...三. python调用     将刚才生成boostDemo.pyd和${boost根目录}\stage\lib下boost_python-vc120-mt-gd-1_57.dll复制到python...在python项目入口源文件中输入代码: import boostDemo print boostDemo.greet()     运行之,如无意外,会输出:     >>hello world

    78510

    10个实用但偏执Java编程技术

    也许吧,但请看Javadoc: 如果这个虚拟路径不表示一个文件夹目录,则此方法返回null。否则将会返回一个字符串数组,每一个字符串表示目录中文件或文件夹。 对,没错。我们可以添加一些校验: ?...所以使用-1是理所当然,对吗?我说不对,请看以下代码: ? 谁知道呢。也许到时候他们改变了编码方式,对字符串并不区分大小写,也许更好方式是返回-2?谁知道呢。 回到顶部 4.避免意外赋值 是的。...你相信你写超级好看API,它很直观,随之而来,一些用户谁只是将原始类型转换成Object类型,直到那该死编译器停止发牢骚,并且突然他们会链接错误方法,以为这是你错误。 看下面的代码: ?...当value == 3时,将会出现无法找到提示,而不会让人不知所谓。...在switch语句中,每一个case语句范围只有一行语句,事实上,这些case语句甚至不是真正语句,他们就像goto语句中跳转标记一样。

    54420

    JavaScript工作原理:内存管理+如何处理4个常见内存泄漏

    root无法访问任何内容都将被标记为垃圾。 最后,垃圾收集器释放所有未标记为 Active 内存块,并将该内存返回给操作系统。 ?...Cycles are not a problem anymore 在上面的示例中,函数调用返回之后,两个对象从全局对象出发无法获取。因此,他们将会被垃圾回收器回收。 ?...请考虑以下情形: 相当大一组分配被执行 都被标记无法访问(假设我们将指向我们不再需要缓存引用置空) 没有进一步分配 在这种情况下,大多数GC不会再运行任何收集动作(passes)。...,它将打开更严格解析 JavaScript 模式,以防止意外创建全局变量。...意外全局变量肯定是个问题,但是,通常情况下,您代码会被显式全局变量所侵扰,而这些变量根据定义无法被垃圾收集器收集。需要特别注意用于临时存储和处理大量信息全局变量。

    85851

    JavaScript工作原理:内存管理+如何处理4个常见内存泄漏

    root无法访问任何内容都将被标记为垃圾。 最后,垃圾收集器释放所有未标记为 Active 内存块,并将该内存返回给操作系统。...Cycles are not a problem anymore 在上面的示例中,函数调用返回之后,两个对象从全局对象出发无法获取。因此,他们将会被垃圾回收器回收。...请考虑以下情形: 相当大一组分配被执行 都被标记无法访问(假设我们将指向我们不再需要缓存引用置空) 没有进一步分配 在这种情况下,大多数GC不会再运行任何收集动作(passes)。...,它将打开更严格解析 JavaScript 模式,以防止意外创建全局变量。...意外全局变量肯定是个问题,但是,通常情况下,您代码会被显式全局变量所侵扰,而这些变量根据定义无法被垃圾收集器收集。需要特别注意用于临时存储和处理大量信息全局变量。

    82030

    8条枚举与注解技巧,提升代码质量与设计美学

    /a774fe57ff0049eca353fbbf1d3b72e6~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?...//返回集合可以继续添加对象 public static > EnumSet of(E e1, E e2) { EnumSet<E...,那么编译器不会报错,反而运行时才出现错误,导致排查浪费时间需要覆写方法时使用@Override注解,如果发生这种情况编译器会提前报错,提示进行修改好在现在IDE工具基本上在覆写时都会自动生成Override...(方法、字段)上时优先使用标记注解当使用标记接口时,能够得到编译期间检查类型好处,尽早暴露问题比如反序列化 ObjectOutputStream.writeObject(Object) 并没有使用标记接口好处如果申明参数为...,特殊处理覆写方法始终使用override注解,如果写成重载能够在编译期间暴露问题标记接口用于定义类型,能够在编译期间检查类型,但只能用于类或接口,若用于方法、字段只能使用标记注解最后(不要白嫖,一键三连求求拉

    8521

    PHP语法和PHP变量

    >开始和结束文件,就是php标记文件,具体格式如下: 1.xml风格,是PHP标准风格,推荐使用 2.简短风格,遵循SGML处理。...需要在php.ini中将指令short_open_tag打开,或者在php编译时加入–enable-short-tags.如果你想你程序移植性好,就抛弃这种风格,它就比1.1少了个php 3.ASP...这样可以避免在 PHP 结束标记之后,意外插入了空格或者换行符之类误操作,而导致输出结果中意外出现空格和换行。 位置 可以将PHP语言放在后缀名为.phpHTML文件任何地方。...注释内容需要包含在(/* 和 */)中,以“/*”开头,以“*/结尾 php里面常见几种注释方式 1.文件头注释,介绍文件名,功能以及作者版本号等信息 2.函数注释,函数作用,参数介绍及返回类型...如下所示 变量命名规则 变量名并不是可以随意定义,一个有效变量名应该满足以下几点要求: 1. 变量必须以 $ 符号开头,其后是变量名称,$ 并不是变量名一部分; 2.

    6.6K11

    前沿 | MIT自动驾驶技术突破:实现浓雾中物体观测和测距,超人类水平

    大数据文摘作品 编译:蒋宝尚 开发可见光自主车辆导航系统一直有一个主要障碍:无法应对雾蒙蒙驾驶条件。 可见光系统比雷达探测系统表现更好,是因为其拥有高分辨率、读取道路标记以及跟踪标记能力。...麻省理工科学家们对此做出进一步改进,开发了一种深度感测成像系统。它可以识别浓雾中物体,即使是人类视觉无法识别的物体,这种系统同样可以识别。...科学家们使用一个小水箱和一个浸入其中振动电机进行测试。人类只能探视水下36厘米深度,而这一系统可以探视57厘米。...据科学家介绍,57厘米距离不是很远,但是研究中所使用雾浓度确是比人类驾驶员遇到过都浓密。关键在于系统探视穿透浓雾表现优于人类,而大多数传统成像系统表现却更差。...科学家使用一个一米长雾室测试该系统,通过安装好有规律间隔距离标记,对能见度进行粗略测量。测试系统中还涉及其他物体,如木制雕像、木块、字母剪影,即使是肉眼看不见物体,系统也能成像。

    43660
    领券