首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏nft市场

    智能合约安全——selfdestruct攻击

    selfdestruct函数(自毁函数)由以太坊智能合约提供,用于销毁区块链上的合约系统。当合约执行自毁操作时,合约账户上剩余的以太币会发送给指定的目标,然后其存储和代码从状态中被移除。 selfdestruct函数虽然能在紧急情况下帮助开发人员删除智能合约并将合约内的余额转移到指定的地址,但这一特性也被不法分子利用,使它成为了攻击手段。 玩家每次玩游戏时都会调用 EtherGame.deposit 函数向合约中先打入一个ETH,随后函数会检查合约中的余额(balance)是否小于等于 7 ,只有合约中的余额小于等于 7 时才能继续否则将回滚 ETH进去,所以通过正常路径是不可能一次向 EtherGame 打入大于 1 枚的ETH的,但是我们又需要打入大于 1 枚的ETH到 EtherGame 合约中,所以selfdestruct函数就登场了 修复建议 我们来分析一下攻击者的思路:利用selfdestruct函数强制转账给游戏地址,导致unit balance = address(this).balance查询出的balance的值大于7,诱发

    81020编辑于 2022-07-27
  • 来自专栏自动化、性能测试

    Mysql 常用函数11)- trim 函数

    Mysql常用函数的汇总,可看下面文章 https://www.cnblogs.com/poloyy/p/12890763.html trim 的作用 删除字符串左右两侧的空格 trim 的语法格式 TRIM (s) 小栗子 SELECT TRIM(' bar '); # bar 拓展 用过 Python 的 trim 函数的小伙伴应该都知道,其实我们可以指定删除的符号 同样 Mysql 的 trim 函数也可以指定删除的符号,只是默认是空格 trim 的高级语法格式 TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) 语法格式说明 :指删除的范围

    1.1K20发布于 2020-06-09
  • 来自专栏开源优测

    JMeter函数和变量11

    下面我们就函数和变量进行一一讲解。 函数 我们在哪可以知道jmeter支持哪些函数呢?通过在菜单 “选项” -> "函数助手对话框" 即可打开函数助手。 ? 通过函数助手,我们可以快速的填充对应的参数来生成我们所需要的函数函数列表 下面我们看下jmeter提供的所有内置函数的功能说明及使用示例。 总计七大类型。 在上述内容中,并没有把所有的函数都一一列出来,但基本把个大类中主要的函数都已列出,需要大家对其有个基本印象,知道有哪些内置函数,这些函数能解决什么问题,以便在实际项目中走太多弯路。 总结 本文就jmeter函数和变量进行了分享,这是进一步掌握jmeter必备的技能。也是在项目实践中进行参数化、关联必备的技能。对于所有函数要做到心中有数,对于关键重点的函数要做到随时会用,灵活应用

    2.9K60发布于 2018-04-04
  • 来自专栏技术分享

    C语言(11)----内存函数

    内存函数主要用于动态分配和管理内存,它直接从指针的方位上进行操作,可以实现字节单位的操作。 要求: • 这个函数在遇到 '\0' 的时候并不会停下来。也就是说如果在数据中间插入 ‘\0’ 是不会停下复制进程的。 void * memmove ( void * destination, const void * source, size_t num ); 作用与要求 • 和memcpy的差别就是memmove函数处理的源内存块和 如果源空间和⽬标空间出现重叠,就得使⽤memmove函数处理。由于该特性,实际上memmove比memcpy更加实用,兼容性也更强。 要求: • 使用memset函数时需要谨慎,确保不会意外覆盖原有的数据。

    25420编辑于 2024-06-18
  • 来自专栏python入门

    Python入门11 函数参数

    我们来看之前这个函数的书写形式:ret()为什么函数后面要加括号呢,是因为括号内是预留给参数的位置,当没有参数的时候,括号内为空,当需要参数的时候,情况就不同了【函数参数】以下是一个使用函数参数的例子: name参数,根据name的不同,它会打印不同的结果接受参数使得函数拥有了更大的灵活性,这就是参数的作用一个函数也可以接受多个参数,参数之间用逗号隔开在函数的参数传递过程中,有两个比较抽象的概念:形式参数和实际参数 【形式参数】在函数定义阶段括号内所填写的参数,简称"形参"def func(a, b): passa和b就是函数func的形参【实际参数】在函数调用阶段括号内传入的参数,简称"实参"func(1,2 )数据1和2就是函数func的实参形参是函数定义时列出的参数,它们代表了传递给函数的值的占位符。 当函数被调用时,实参将替代这些形参那么,在使用多个参数时,python是怎么处理的呢?

    29310编辑于 2024-05-09
  • 来自专栏go程序例子

    Go程序例子(11):函数

    函数是 Go 的核心。我们将通过几个不同的示例来学习函数。package mainimport "fmt"// 这是一个接收两个整数并返回它们和的整数函数。 func plusPlus(a, b, c int) int { return a + b + c}func main() {// 调用函数就像你预期的那样,使用函数名(参数)。

    16710编辑于 2024-12-10
  • 来自专栏猿说编程

    11.python zip函数

    一.zip函数描述和使用 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,返回的结果可以直接强转为list列表,这样做的好处是节约了不少的内存 参数说明:iterable — 迭代器对象,zip函数中的迭代器对象可以是一个或者多个. 2.返回值 zip函数的返回值是zip类的对象,可以通过list()强制转为list列表. 3.zip使用 # utf-8 _*- """ @Author:何以解忧 @Blog(个人博客地址): https://www.codersrc.com/   @File:python_zip.py @Time:2019/11 *zip函数的描述和使用 如果说zip函数是压缩的话,那么*zip就是解压,其函数返回值是二维矩阵式 list1 = ["a","b","c","e","fasf"] list2 = [1,False, » python zip函数

    58420发布于 2020-03-12
  • 来自专栏Ethereum

    《纸上谈兵·solidity》第 29 课:智能合约安全审计案例复盘 -- Parity Wallet Hack(2017)

    两次重大漏洞第一次攻击(2017年7月)漏洞位置:initWallet 函数初始化逻辑错误。问题原因:合约允许任何人调用 initWallet(),从而重新设置钱包拥有者。 第二次事故(2017年11月)漏洞位置:库合约(Library Contract)的设计问题。 关键教训库合约必须不可变(不能有 init、selfdestruct函数)。delegatecall 风险极大,应谨慎使用。合约升级机制必须经过严格设计和审计。4. 启示初始化函数一定要保护(onlyOwner),不能随意被调用。delegatecall 必须小心使用,库合约最好是无状态(Stateless)。 selfdestruct 是危险函数,应该避免在核心合约中出现。智能合约一旦部署,升级和错误修复极其困难。6.

    43610编辑于 2025-09-07
  • 来自专栏深入浅出区块链技术

    Solidity 教程系列11 - 视图函数、虚函数讲解

    Solidity 教程系列第11篇 - Solidity 视图函数、虚函数讲解。 Solidity 系列完整的文章列表请查看分类-Solidity。 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 视图函数(View Functions) 一个函数如果它不修改状态变量 ,应该声明为view函数,不过下面几种情况认为是修改了状态: 写状态变量 触发事件(events) 创建其他的合约 call调用附加了以太币 调用了任何没有view或pure修饰的函数 使用了低级别的调用 访问函数都被标记为view。 当前编译器并未强制要求声明为view,但建议大家对于不会修改状态的函数的标记为view。 纯函数(Pure Functions) 函数可以声明为view,表示它即不读取状态,也不修改状态,除了上一节介绍的几种修改状态的情况,以下几种情况被认为是读取了状态: 读状态变量 访问了 this.balance

    63710发布于 2018-08-23
  • 来自专栏python3

    day11函数参数,函数对象,打散机制

    ,维护成本低 # 如何定义一个函数:用def关键词来声明函数 ''' def fn(参数列表): 函数体 return 函数的返回值 ''' # -- 定义函数时,函数体不会被执行 | 函数必须先定义后使用 # 函数的四部分: # 函数名:存放着函数的地址,是调用函数的依据 # 函数体:解决问题的代码块 # 参数列表:外界为内部提供数据的途径 - 内部需要外部的数据,就需要定义参数列表 # 返回值:将内部的结果返回给外部 # 函数的使用 # 1.通过函数名找到函数的地址 # 2.函数名() 来调用执行函数 # 3.得到函数执行的结果 - 返回值 def add(n1, n2) ) + 100) # 执行的函数体,并拿到函数的执行结果,再使用 # 函数的分类 # 有无函数体:空函数 - pass填充 | 非空函数 - 有函数体 # 有无参数: #无参函数 - # 参数介绍: # 函数为什么要有参数:因为内部的函数体需要外部的数据 # 怎么定义函数的参数:在定义函数阶段,函数名后面()中来定义函数的参数 # 怎么使用函数的参数:在函数体中用定义的参数名直接使用

    75430发布于 2020-01-17
  • 来自专栏武军超python专栏

    11月6日排序函数,匿名函数,回调函数,递归函数, zip函数

    如果你不需要原来的list,这种效率稍微高点 >>> list = [2,8,4,6,9,1,3] >>> list.sort() >>> list [1, 2, 3, 4, 6, 8, 9] 第二种:内建函数 回调函数: callback 递归函数:在函数内部,可以调用其他函数。 如果一个函数在内部调用自身本身,这个函数就是递归函数函数的调用通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。 由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出,解决递归调用栈溢出的方法是通过尾递归优化, 尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。 栈溢出就是缓冲区溢出的一种 zip函数是将两个列表转换为字典的形式: keys = ['a', 'b', 'c'] values = [1, 2, 3] dictionary = dict(zip

    1.2K30发布于 2019-02-25
  • 来自专栏Ywrby

    11-存储过程和函数

    存储过程 # 存储过程和函数 /* 存储过程和函数:类似Java中的方法 好处: 1. 提高代码重用性 2. # 函数 /* 存储过程与函数区别: 存储过程可以有任意个返回值(零或多个),适合于批量插入或修改 函数有且仅有一个返回值,适合处理数据后返回一个结果 */ # 创建语法 CREATE FUNCTION 方法名(参数列表) RETURNS 返回类型 BEGIN 函数体 END /* 参数列表包含两部分:参数名 参数类型 函数体:肯定有return语句 如果return语句不会报错,但没有实际效果 函数体中只有一句话时,BEGIN END可以省略 在DOS窗口下仍然使用DELIMITER设置终止符 */ # 调用语法,执行函数体内所有语句,并最终显示返回值 SELECT 函数名(参数列表) SHOW CREATE FUNCTION f1; # 删除函数 DROP FUNCTION f1;

    61320编辑于 2022-10-27
  • 来自专栏python3

    python基础学习11----函数

    一.函数的定义 def 函数名(参数列表): 函数体 return语句 return语句不写或后边不加任何对象即为return None 二.函数的参数 无参数 def func1(): print(args) func1(age=20,name="sfencs",job="IT")#{'age': 20, 'name': 'sfencs', 'job': 'IT'}以字典形式保存 定义函数的参数时请以必须参数 1,2,3] func1(list2) print(list2)#[1, 2, 3, 'sfencs']list2会改变 四.变量作用域 L (Local) 局部作用域 E (Enclosing) 闭包函数外的函数中 print(count)#5 function2() print(count)#r此时输出为5,若不加nonlocal count则输出为20 function1() 五.递归函数

    36220发布于 2020-01-19
  • 来自专栏C/C++基础

    C++11委托构造函数

    1.简介 委托构造函数(Delegating Constructor)由C++11引入,是对C++构造函数的改进,允许构造函数通过初始化列表调用同一个类的其他构造函数,目的是简化构造函数的书写,提高代码的可维护性 和其他构造函数一样,一个委托构造函数也有一个成员初始化列表和一个函数体,成员初始化列表只能包含一个其它构造函数,不能再包含其它成员变量的初始化,且参数列表必须与构造函数匹配。 在C++11中,我们可以使用委托构造函数来减少代码重复,精简构造函数。 在构造函数较多的时候,我们可能拥有多个委托构造函数,而一些目标构造函数很可能也是委托构造函数,这样依赖,我们就可能在委托构造函数中形成链状的委托构造关系,形成委托坏(Delegation Cycle)。 ---- [1]C++Primer [2]深入理解C++11 [3]关于使用C++11中委托构造函数

    3.3K20发布于 2018-08-16
  • 来自专栏Stone的专栏

    Power Query 系列 (11) - 函数基础

    要点: 理解 M 语言的函数式编程风格 函数的定义和调用 函数作为函数参数传递 自定义函数基础 学习 PQ 的处理数据,尽管我们大部分是在查询编辑器图形化界面中操作,但幕后将我们操作步骤记录下来的,都是 M 语言的代码,主要由函数构成。M 语言的函数与 Excel 函数不同,与其他常规编程语言的函数也不同,属于典型的函数式编程风格。 这段代码可以理解为:定义一个两数字相加的函数,将函数赋值给 result,result 作为结果输出到函数 add。 函数的调用 Power Query 标准库中一共有 700 多个函数,有些函数非常简单,有些则非常复杂。 函数能作为参数进行传递,是函数式编程的一大特点。考虑到 Power Query 主要面向数据处理人员,这里不对函数式编程进行展开说明,但需要了解这一特点。函数作为参数的函数,如何调用呢?

    1.7K31发布于 2021-03-25
  • 来自专栏C/C++基础

    C++11继承构造函数

    1.简介 子类为完成基类初始化,在C++11之前,需要在初始化列表调用基类的构造函数,从而完成构造函数的传递。如果基类拥有多个构造函数,那么子类也需要实现多个与基类构造函数对应的构造函数。 从C++11开始,推出了继承构造函数(Inheriting Constructor),使用using来声明继承基类的构造函数,我们可以这样书写。 更为巧妙的是,C++11标准规定,继承构造函数与类的一些默认函数(默认构造、析构、拷贝构造函数等)一样,是隐式声明,如果一个继承构造函数不被相关代码使用,编译器不会为其产生真正的函数代码。 解决的办法主要有两个: 一是使用C++11特性就地初始化成员变量,可以通过=、{}对非静态成员快速地就地初始化,以减少多个构造函数重复初始化变量的工作,注意初始化列表会覆盖就地初始化操作。 参考文献 [1]深入理解C++11

    2.2K20发布于 2018-08-16
  • 来自专栏有趣的django

    11.Flask钩子函数

         在Flask中钩子函数是使用特定的装饰器的函数。为什么叫做钩子函数呢,是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码,那么这种函数就叫做钩子函数。 before_first_request:Flask项目第一次部署后会执行的钩子函数。 before_request:请求已经到达了Flask,但是还没有进入到具体的视图函数之前调用。 一般这个就是在函数之前,我们可以把一些后面需要用到的数据先处理好,方便视图函数使用。 ') context_rocessor  只用这个钩子函数,必须返回一个字典。 这个钩子函数的作用是,如果一些在很多模板中都要用到的变量,那么就可以使用这个钩子函数来返回,而不是在每个视图函数汇总的render_template中去写,这样可以让代码更加简洁和好维护。

    75730发布于 2018-08-01
  • 来自专栏深入浅出区块链技术

    实践create2进行合约无缝升级(2) - Metapod.sol 解析

    caller 去执行selfdestruct来销毁合约。 utils.sha3("0xd69410ca1adca9ff38988d75dd1f6ee19b1a6bfa919701").slice(-40); '00000000002b13cccec913420a21e4d11b2dcd3c destroy 有了上面deploy的解释,那这个函数就不难理解了,调用selfdesctruct函数销毁部署的合约。 临时合约 selfdestruct,将钱转到最终合约。 实例分析 从主链上的合约https://etherscan.io/address/0x00000000002b13cccec913420a21e4d11b2dcd3c 分析下整体的交易流程。

    87520编辑于 2022-11-07
  • 来自专栏信息技术智库

    hive函数大全:11大类、109个函数

    取随机数函数: rand 7. 自然指数函数: exp 8. 以10为底对数函数: log10 9. 以2为底对数函数: log2 10. 对数函数: log 11. 幂运算函数: pow 12. 日期转天函数: day 9. 日期转小时函数: hour 10. 日期转分钟函数: minute 11. 日期转秒函数: second 12. 日期转周函数:weekofyear 13. 字符串转大写函数:upper,ucase 8. 字符串转小写函数:lower,lcase 9. 去空格函数:trim 10. 左边去空格函数:ltrim 11. 右边去空格函数:rtrim 12. 样本标准偏离函数:stddev_samp 10.中位数函数:percentile 11. 中位数函数:percentile 12. 近似中位数函数:percentile_approx 13. *r 11.

    7K11编辑于 2022-07-29
  • 来自专栏centosDai

    Python学习杂记_11_函数(一)

    函数也叫方法,就是把实现某种功能的一组代码封装起来,当你需要这个功能时直接调用函数即可。 定义函数: 定义函数时要注意 “def”关键字,“:”,“函数体缩进”;用“return”使函数有具体返回值,没有return返回“None”. def SUM(a, b): return a + b 调用函数函数名()的格式就可以调用函数 def SUM(a, b): return a + b num1 = int(input("Please input num1: ")) num2 定义函数时,括号里面的参数是形式参数简称“形参”;调用函数时,括号里面的参数是实际参数简称“实参”。 局部变量是定义在函数里的,有函数才有它,函数被调用时该函数的 局部变量被定义,函数执行结束时,改变量被释放;全局变量是定义在函数之外的可被整个程序共享,只有程序结束时才被释放。

    46220发布于 2021-05-25
领券