call()、delegatecall()】的更多相关文章

0x00 前言 Solidity(http://solidity.readthedocs.io/en/v0.4.24/) 是一种用与编写以太坊智能合约的高级语言,语法类似于 JavaScript. Solidity 编写的智能合约可被编译成为字节码在以太坊虚拟机上运行.Solidity 中的合约与面向对象编程语言中的类(Class)非常类似,在一个合约中同样可以声明:状态变量.函数.事件等.同时,一个合约可以调用/继承另外一个合约. 在 Solidity 中提供了 call.delegateca…
call()当使用方法是:require(msg.sender.call.value(_weiToWithdraw)());则作用是将_weiToWithdraw个以太币发送给msg.sender地址,并且调用msg.sender地址的fallback函数 当使用方法是: bytes4 methodId = bytes4(keccak256("increaseAge(string,uint)"));//函数hashaddr.call(methodId,"jack",…
以太坊 EVM原理与实现 以太坊底层通过EVM模块支持合约的执行与调用,调用时根据合约地址获取到代码,生成环境后载入到EVM中运行.通常智能合约的开发流程是用solidlity编写逻辑代码,再通过编译器编译元数据,最后再发布到以太坊上. 代码结构 . ├── analysis.go //跳转目标判定 ├── common.go ├── contract.go //合约数据结构 ├── contracts.go //预编译好的合约 ├── errors.go ├── evm.go //执行器 对外…
出处:https://cloud.tencent.com/developer/article/1192548 深度解析Solidity的17个坑及超详细避坑指南 写的很好,好好学习 1. Re-Entrancy重新入口,可重入性 本博客the security of smart contract- 1中已经解释过原因,这里用例子说明: pragma solidity ^0.4.23;contract EtherStore{    uint public withdrawalLimit = 1 e…
author:sf197tl;dr国内并没有一个文档有讲述该漏洞的,正好闲着没事.就写下这篇文章.在网上也搜寻了一些资料,通过自己的翻译才有今天的这篇文章.该漏洞在DASP TOP 10中可以查看到.至于查看的资料,将会在文章末尾贴上.转载请注明作者及文章来源. 什么是“未检查发送”漏洞?简洁来说,就是一个或多个Ether发送到其他地址时,其他合约拒绝,或发生错误时,会返回一个布尔值false,并且代码将会继续.倘若未给这些返回值做检测,可能会造成意想不到的结果. 漏洞函数: call(). c…
事情发生在5月中旬,ATN技术人员发现Token合约由于存在漏洞受到攻击.不过ATN基金会随后透露,将销毁1100万个ATN,并恢复ATN总量,同时将在主链上线映射时对黑客地址内的资产予以剔除,确保原固定总量不变. 以下是事件还原. 事件回顾 2018年5月11日中午,ATN技术人员收到异常监控报告,显示ATN Token供应量出现异常,迅速介入后发现Token合约由于存在漏洞受到攻击.以下是黑客的攻击操作以及利用合约漏洞的全过程. 攻击 这次攻击主要分为4步.首先,黑客利用ERC223方法漏洞…
前言 Ethernaut是一个类似于CTF的智能合约平台,集成了不少的智能合约相关的安全问题,这对于安全审计人员来说是一个很不错的学习平台,本篇文章将通过该平台来学习智能合约相关的各种安全问题,由于关卡较多,而且涉及合约的分析.攻击流程的演示所以篇幅较长,经过缩减最终定为两篇文章来分享.平台地址:https://ethernaut.zeppelin.solutions 环境准备 Chrome浏览器 插件——以太坊轻钱包MetaMask(https://metamask.io/) 在MetaMas…
什么是账户 以太坊账户与我们所知的账户概念有一定相似之处,却又有很大的区别,更不同于比特币中UTXO. 账户分两类: - 外部拥有账户(EOA),也就是普通账户 - 合约账户 普通账户 所谓的普通账户就是我们存放以太币的账户,可以随意生成,它具有以下特性: - 拥有以太币余额(以太币存放的地方,与比特币的UTXO模式不同)的balance. - 用于确定每笔交易只能被处理一次的计数器(nonce). - 发送交易(以太币转账.发布合约.调用智能合约) - 通过私钥控制 - 没有相关联的代码 合约…
简介 当合约A以delegatecall方式调用时, 相当于将外部合约B的func()代码复制过来 (其函数中涉及的变量或函数都需要在本地存在), 在合约A上下文空间中执行. 合约 pragma solidity ^0.6.0; // Delegatecall漏洞 contract HackMe{ address public owner; Lib public lib; constructor(Lib _lib) public{ owner = msg.sender; lib = Lib(_l…
本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klass.count++; console.log(obj.count);//undefined console.log(klass.count);//1 静态属性存在于对象中.它的访问方式只有:类名.count 一种方式,无法通过实例访问. 如:Math.PI 原型属性: 在讲解原型属性之前有必要先提一…