首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏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
  • 来自专栏Python与算法之美

    9函数定义

    Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。 一,函数参数 ? ? ? ? ? ? 二,递归函数 ? 三,闭包函数 闭包函数函数内定义了子函数,并最终return子函数 ? ? 四,匿名函数 lambda 匿名函数的一般语法是 : func = lambda 参数序列:返回值 ? 五,思考练习 17, 完成 add_contact 函数。 其功能是 将联系人的 name, phone_number, city ,birthday, job 等信息作为参数构造一个字典并打印之。 18,构造lambda函数求一个整数各位数字之和。 (提示 : 可先使用 str 函数将 整数 转换成字符串;对 x = 1234 测试,结果应当是 10)

    73020发布于 2020-07-20
  • 来自专栏自动化、性能测试

    Mysql 常用函数9)- reverse 函数

    Mysql常用函数的汇总,可看下面文章 https://www.cnblogs.com/poloyy/p/12890763.html reverse 的作用 将字符串反转,即顺序取反 reverse 的语法格式

    78810发布于 2020-06-09
  • 来自专栏侯哥的Python分享

    python基础-函数(9)

    一、函数的介绍 如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数 函数的语法格式: def 函数名(): 函数的功能代码 函数的调用就是函数名(),例如代码汇总的printMenu() 三、带有参数的函数 参数分为实参和形参两种形式 实参 – 在调用函数的时候给函数参与运算的真实数据 形参 – 在函数声明的时候用来给真实数据做占位使用的虚拟数据 = a+b print(result) #sum()函数的调用 sum(4,5)#4,5就是真实参数 运行结果为:9 带参数函数的精髓就是,可以灵活的处理数据的运算。 return result#result就是程序要返回出去的值 res = sum(4,5) print(res) 运行结果为:9 五、函数的类型 按照格式来划分有四种类型,具体可以根据使用场景合理的设计函数的类型 无参无返回值函数 有参无返回值函数 无参有返回值函数 有参有返回值函数 六、函数的嵌套调用 一个函数里面却可以使用其他函数,这叫做函数的嵌套调用。

    66030发布于 2019-09-11
  • 来自专栏用户7873631的专栏

    JS函数(上上) 9

    lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> //什么是函数 /* 1.什么是函数? 函数是专门用于封装代码的, 函数是一段可以随时被反复执行的代码块 2.函数格式 function 函数名称(形参列表){ 被封装的代码;

    1.7K10发布于 2020-10-28
  • 来自专栏机器学习/数据可视化

    Golang之旅9-函数

    函数定义 Go语言中支持函数、匿名函数和闭包,通过func关键字进行定义。 func 函数名(参数)(返回值){ 函数体 } //简单的求和函数 func intSum(x int, y int) int { return x + y } func div(a,b 但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名 参数:参数由参数变量和参数变量的类型组成,多个参数之间使用,分隔。 函数体:实现指定功能的代码块。 ("hello Peter") } //带上参数的函数 func sayHello2(name string){ fmt.Println("hello", name) } //定义参数和返回值的函数

    43120发布于 2021-03-02
  • 来自专栏XinChen's Tec

    GoLang9 - Go语言函数

    Go 语言函数 函数是基本的代码块,用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。 函数声明告诉了编译器函数的名称,返回类型,和参数。 Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。 函数定义 Go 语言函数定义格式如下: func function_name( [parameter list] ) [return_types] { 函数体 } 函数定义解析: func:函数由 func 开始声明 function_name:函数名称,参数列表和返回值类型构成了函数签名。 parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以

    27910编辑于 2023-02-27
  • 来自专栏学习

    Python入门:9.递归函数和高阶函数

    add(3, 5)) # 输出 8 匿名函数也可以直接作为其他函数的参数: # 使用匿名函数对列表排序 nums = [5, 2, 9, 1] nums.sort(key=lambda x: x) print (nums) # 输出 [1, 2, 5, 9] 2.2 匿名函数的应用场景 简单逻辑的函数:避免定义完整函数,提高代码简洁性。 nums = [1, 2, 3, 4] squares = list(map(lambda x: x ** 2, nums)) print(squares) # 输出 [1, 4, 9, 16] 4.2 基本用法: nums = [5, 2, 9, 1] sorted_nums = sorted(nums) print(sorted_nums) # 输出 [1, 2, 5, 9] 自定义排序规则: # 1] sorted_nums_desc = sorted(nums, reverse=True) print(sorted_nums_desc) # 输出 [9, 5, 2, 1] 结合 key 和

    24500编辑于 2025-01-13
  • 来自专栏自动化、性能测试

    Jmeter 常用函数9)- 详解 __UUID

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 返回 伪随机类型4 通用唯一标识符 语法格式

    62310发布于 2020-07-16
  • 来自专栏技术博文

    phpcms v9 常用函数

    常用函数 , 打开include/global.func.php,下面存放一些公共函数 view plaincopy to clipboardprint? /检查日期的合法性   function is_email($email) //验证Email   function file_down($filepath, $filename = '') //下载函数    function pages($total, $page = 1, $perpage = 20, $urlrule = '', $array = array(), $catid = 0) //分页函数 ') //检查日期的合法性 function is_email($email) //验证Email function file_down($filepath, $filename = '') //下载函数 子句 function pages($total, $page = 1, $perpage = 20, $urlrule = '', $array = array(), $catid = 0) //分页函数

    1.8K70发布于 2018-04-10
  • 来自专栏Ethereum

    《纸上谈兵·solidity》第 20 课:Solidity 安全专题(二)—— 编译器特性与低级漏洞

    2、ABI 混淆攻击 ABI 负责定义函数签名到 函数选择器(4 字节) 的映射。 攻击者可能利用选择器碰撞,让不同函数共享同一个选择器,从而调用到意料之外的逻辑。 function transfer(address to, uint256 amount) public {} function f123456789() public {} } 不同函数签名哈希后的前 防御手段: 使用最新 Solidity 编译器,避免 ABI 自动推导漏洞 避免函数名过长或构造极端签名 使用工具检测潜在冲突(如 Slither、Surya) 3、selfdestruct 的风险 selfdestruct 虽然 EIP-6049 已提出废弃 selfdestruct,但目前仍存在隐患: 强制转账:攻击者可以部署一个带余额的合约,并 selfdestruct 强行转账到任意合约,即使目标合约没写 receive changes to the EVM might further reduce the functionality of the opcode. --> src/VictimAttacker.sol:12:9:

    38710编辑于 2025-08-27
  • 来自专栏Android知识点总结

    Flutter & GLSL#9 | 函数曲线

    Flutter & GLSL#6 | 平滑过渡 smoothstep》 《Flutter & GLSL#7 | 减法与线》 《Flutter & GLSL#8 | 乘法与矩形》 《Flutter & GLSL#9 | 函数曲线》 案例代码开源地址 【skeleton】 1. 复习 smoothstep 函数 在 第六篇 中,我们已经认识了 smoothstep 函数,它可以让一指定的区间内平滑过渡。 函数曲线 上面只是画了一条线,那这和函数曲线有什么关系呢?其实仔细信息,上面的曲线不就是 y =0.4 这个特殊函数的曲线表现吗?如果我们通过 coo.x 控制 y 的数值,会发生什么化学反应呢? ,通过函数关系,来构造对应的函数曲线线条。

    41210编辑于 2024-03-28
  • 来自专栏深入浅出区块链技术

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

    = ( hex"58601c59585992335a6357b9f5235952fa5060403031813d03839281943ef08015602557ff5b80fd" ); 这个转换成opcode是: [1] PUSH1 0x1c [2] MSIZE [3] PC [4] MSIZE [5] SWAP3 [6] CALLER [7] GAS [12] PUSH4 0x57b9f523 caller 去执行selfdestruct来销毁合约。 destroy 有了上面deploy的解释,那这个函数就不难理解了,调用selfdesctruct函数销毁部署的合约。 临时合约 selfdestruct,将钱转到最终合约。

    87520编辑于 2022-11-07
  • 来自专栏雪胖纸的玩蛇日常

    9.生命周期函数

    生命周期函数,也叫生命周期钩子,是指组件挂载以及组件销毁所触发的一系列的方法。   在components目录下新建Life.vue组件,用于演示生命周期函数 <template>

    {{msg}}

    </template> <script> export default { name: 'life', data () { return { msg:'生命周期函数演示

    49310发布于 2019-10-06
  • 来自专栏老欧说安卓

    Kotlin入门(9)函数的基本用法

    上一篇文章介绍了Kotlin新增的空安全机制,控制语句部分可算是讲完了,接下来将连续描述Kotlin如何定义和调用函数,本篇文章先介绍函数的基本用法。 对于这种情况,通常的解决办法是把某段代码挪到一个独立的函数中,然后在原位置调用该函数,这样做的好处很多,不仅增强了代码的可读性,还能多次重复调用函数。 ; 2、Java使用“public”表示该函数是公共方法,而Kotlin默认函数就是公开的,所以省略了关键字“public”; 3、Java使用“void”表示该函数没有返回参数,而Kotlin不存在关键字 既然函数被当作一种特殊的变量,可是每个变量都有变量类型,如果函数存在返回参数,那自然把返回参数的类型作为函数的变量类型;可要是函数不存在返回参数,也就是Java中的void声明,那该怎么办? 如果函数需要具体的输出参数,则一样要在函数末尾使用关键字“return”来返回参数值,下面代码演示了如何在函数中返回一个字符串对象: //只有输出参数 fun getDinnerOutput

    67520发布于 2019-01-18
  • 来自专栏Ethereum

    《纸上谈兵·solidity》第 3 课:事件(Event)机制与链上日志——不是 print,是广播!

    在 Solidity 中,事件(event)不是控制台输出,也不是日志记录函数,而是链上广播机制。 :true,"raw_logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0x20d8a6f5a693f9d1d627a598e8820f7a55ee74c183aa8f1a30e8d4e8dd9a8d84 ":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value ":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value": ":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x20d8a6f5a693f9d1d627a598e8820f7a55ee74c183aa8f1a30e8d4e8dd9a8d84

    39310编辑于 2025-07-29
  • 来自专栏网络收集

    9、父子传参不同–setup() 函数特性

    9、父子传参不同–setup() 函数特性 总结: 1、setup 函数时,它将接受两个参数:(props、context(包含attrs、slots、emit)) 2、setup函数是处于 生命周期函数 beforeCreate 和 Created 两个钩子函数之前的函数 3、执行 setup 时,组件实例尚未被创建(在 setup() 内部,this 不会是该活跃实例的引用,即不指向vue实例,Vue 为了避免我们错误的使用,直接将 setup函数中的this修改成了 undefined) 4、与模板一起使用:需要返回一个对象 (在setup函数中定义的变量和方法最后都是需要 return 出去的 不然无法再模板中使用) 5、使用渲染函数:可以返回一个渲染函数,该函数可以直接使用在同一作用域中声明的响应式状态 注意事项: 1、setup函数中不能使用this。 Vue 为了避免我们错误的使用,直接将 setup函数中的this修改成了 undefined) 2、setup 函数中的 props 是响应式的,当传入新的 prop 时,它将被更新。

    1.3K20编辑于 2022-06-30
  • 来自专栏sickworm

    9. Kotlin 函数声明和扩展(extension)

    继承一个类比抽取代码块封装为函数的实现成本+替换成本高; 3. Utils 绝大情况下只是用来存储代码块,需求非常稳定,无需面向对象。 依赖的类是 SDK 提供的时候 Utils 往往是不可避免的。 扩展声明为顶层声明的时候可以被外部调用(是的,因为函数是一等公民,在方法内部也可以声明扩展方法)。 在函数体内用 this 来引用调用的实例,属性和方法的访问权限与普通调用一致。

    1.2K20发布于 2020-03-30
  • 来自专栏冰河技术

    《MySQL核心知识》第9章:函数

    大家好,我是冰河~~ 今天是《MySQL核心知识》专栏的第9章,今天为大家系统的讲讲MySQL中的函数,希望通过本章节的学习,小伙伴们能够举一反三,彻底掌握MySQL中的函数知识。 REPEAT(S,N) 这个函数跟SQLSERVER里的**REPLICATE()**函数是一样的,参数个数都是一样的,这里不作介绍了 9、比较字符串大小的函数STRCMP(S1,S2) STRCMP( 的字符排列方式 SELECT COLLATION(_latin2 'abc'),COLLATION(CONVERT('abc' USING utf8)) 可以看到,使用不同字符集时字符串的排列方式不同 9、 、SIGNED、UNSIGNED 在SQLSERVER里也是使用这两个函数进行数据类型转换的~ SELECT CAST(100 AS CHAR(2)),CONVERT('2013-8-9 12:12: 12',TIME) 可以看到, CAST(100 AS CHAR(2))将整数数据100转换为带有2个显示宽度的字符串类型,结果为10 CONVERT('2013-8-9 12:12:12',TIME

    1.6K10编辑于 2022-09-23
  • 来自专栏深入浅出区块链技术

    通过CREATE2获得合约地址:解决交易所充值账号问题

    可以在合约构造函数中调用transfer()函数,然后调用selfdestruct()。这将退还部署智能合约部分的gas。 这是因为CREATE2检查目标地址的 nonce 是否为零(它会在构造函数的开头将其设置为1)。在这种情况下,selfdestruct()函数每次都会重置地址的 nonce。 最终方案 初始准备: ● 通过user_id获取随机值(salt)的函数 ● 调用CREATE2操作码(使用适当的随机数)的智能合约 ● 具有如下构造函数的充值钱包合约的字节码: constructor BD%E4%BC%9A-%E5%90%9B%E5%A3%AB%E5%9D%A6%E4%B8%81%E5%A0%A1-Constantinople-%E7%A1%AC%E5%88%86%E5%8F%89- -2019%E5%B9%B42%E6%9C%8828%E6%97%A5 [2] EIP1014: https://learnblockchain.cn/docs/eips/eip-1014.html [

    3.1K10发布于 2020-07-28
领券