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

剖析DeFi借贷产品之Compound:延伸篇

合约篇则从智能合约出发,深入讲解了核心业务的实现细节,包括利率模型的实现原理和 cToken 合约等。...重入攻击 由于智能合约可以调用外部合约或者发送以太币,这些操作需要合约提交外部的调用,所以这些合约外部的调用就可以被攻击者利用造成攻击劫持,使得被攻击合约在任意位置重新执行,绕过原代码中的限制条件,从而发生重入攻击...简单的来说,发生重入攻击漏洞的条件有 2 个: 调用了外部的合约且该合约是不安全的 外部合约函数调用早于状态变量的修改 举个简单的案例,合约如下: ? 构造如下攻击合约: ? 攻击流程如下: ?...部署完之后,通常需要对合约再检查各种参数,确保没有问题后,接着就可以调用 Comptroller 合约(其实是通过 Unitroller 合约)的 _supportMarket(cToken) 函数将其添加到市场列表了...开仓时,智能合约就会根据 Uniswap 上该池子的兑换率自动将部分资产兑换成另一种,让两种资产的数量能满足添加流动性的匹配要求,然后就投入到 Uniswap UNI/ETH 的资金池里,得到该池子的

98030

为Optimism Rollup Dapp 准备的脚手架

L1 和 L2 交互 在 L1 和 L2 之间移动 ETH 在 L2 部署智能合约 创建自己的 ERC20 代币桥接!...用户和开发者的角度来看,需要考虑的主要问题之一是如何处理 L1 和 L2 网络,哪些要呈现给用户,以及如何确保钱包连接到正确的网络。...我们有一个简单的 OptimisticETHBridge组件,它可以显示用户在 L1 和 L2 的余额,并允许他们存款到 L2 或 L2 取款。 ?...1_iUEdefxX0UwlELeOwG4GdgL1/L2桥 存款是指在L1ETHGateway合约调用payable deposit函数,存入你想存入的数量。...我们不需要对合约做任何修改,尽管可能不一定是这样,例如对.balance的调用会在编译时抛出一个错误。一般来说,编译器的错误对追踪问题都很有帮助。

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

iOS应用程序如何调用以太坊智能合约

以太坊智能合约有各种各样的用例,但到目前为止,你的iOS应用程序中调用它们非常困难。不过如果使用以太坊iOS开发套件和EtherKit,这种情况会改善很多,你可以立即开始使用。...这是因为创建我们的帐户是异步操作,因此我们需要在此功能完成后开始调用我们的智能合约。...调用我们的合约 前往我们之前创建的testContract()函数。...,你刚刚使用Swift调用了你的第一个智能合约函数! 还有一件事应该说。智能功能有两种类型:应付款和非应付款。...这种差异由生成的智能合约代码处理,因此你在代码中将在这两种类型之间看到的唯一区别是,当调用非应付函数时,将省略参数金额(因为不应发送以太坊)。很简单,是吧? 如果想查看整个项目,可以在此处下载。

1.4K20

教程: 利用Gelato搭建自动Uniswap交易

Gelato[1]用来帮助开发人员自动执行智能合约的工具。 我们都知道,以太坊上的智能合约无法定时执行任务,但是经常有这样的需求场景,例如 DEFI 合约需要定时给合约喂价。...本教程以每 2 分钟自动在 Uniswap 上将 DAI 交换为 ETH 为示例, 学习悉如何使用 Gelato 构建自动执行的交易。...因为 Demo 是基于Rinkeby进行开发的, ETH 可以水龙头[6] 获取到,为了防止交易失败,最好将至少 2 ETH 存入与 DEMO_USER_PK 关联的帐户: 在用户钱包中包含 ETH...理论上讲,可以使用任何智能合约代理,例如GnosisSafe或Maker的DSProxy。...智能合约上的交易函数) Task(任务):每 2 分钟,在 Uniswap 上用 1 DAI 兑换 WETH Condition条件会由 GelatoCore 智能合约检查,并在满足条件的区块上执行任务

2K30

二层网络 Optimism 智能合约要点解析

以太坊上有一个智能合约(称为RollupL1),它允许 ETH存款/提款。当你的钱存入RollupL1时,你可以认为它是在 L2。...RollupL2可以是另一个更快的区块链上的智能合约,也可以是一个传统的 web2 服务器。每种方法都有优点和缺点,如延迟和去中心化。...在 L2 上有一个相应的函数来监听这些消息。L2StandardBridge合约就是这样做的。这个合约部署在一个独立的 L2 区块链上(比以太坊快)。...我应该有提到,你可以使用这个桥来转账任意的 ERC-20 代币,而不仅仅是 ETHETH 只是被包裹在一个 ERC-20 接口中)。 同样,也有相应的功能用于将资金 L2 转移到 L1。...每一方都有onNewMessage这样的函数,中继器需要使用传统的 web2 HTTPs 来调用它们。

76410

概述:通过Solidity进行闪电贷(Aave,DyDx,Kollateral)

在本教程中,我们将介绍你在 Solidity 智能合约中进行闪电贷的不同方式。如果你想了解更多有关可以用于闪电贷的信息,我们建议你阅读几篇文章:什么是闪电贷[4], 这篇报告[5]或这个文章[6]....另一种获取有关如何使用闪电贷如何工作的好方法是在区块浏览器中检查使用闪电贷的某些交易,看看它们都做了什么[7]....为了模仿 DyDx 上的 Aave Flashloan,你需要: 借入一定数量的代币 使用借入资金调用函数 退回接入的代币(+2 wei) 你可以在Money Legos 网站上找到一个实现示例[11]...缺点: 使用的是 ETH 的包裹(WETH) 代码可读性较低 可用代币很少(ETH/USDC/DAI) 检查代码[12] 使用 Kollateral 的闪电贷 Kollateral[13]是一个智能合约...repay(); } } 可以通过一种非常简单的方式 javaScript 调用: import { Kollateral, Token } from '@kollateral/kollateral

1.8K10

跨链桥是否有安全的未来?

例如,Wormhole是一种跨链桥接协议,允许用户在各种智能合约区块链(如Solana和以太坊)之间移动加密货币和NFT。...例如,用户通常将以太币(ETH)发送到协议,在那里它被作为抵押品持有,并在Solana上发行虫洞包装的ETH,并由以太坊上虫洞合约中锁定的抵押品支持。...无论这些资金是如何存储的——锁定在智能合约中或与集中式托管人一起存储——这个存储点都会成为目标。此外,有效的桥梁设计仍然是一个未解决的技术挑战,许多新模型正在开发和测试中。...如果攻击者可以在不进行真实存款的情况下生成存款事件,或者使用无价值的令牌进行存款,那么他们可以另一端的桥梁中提取价值。...跨链桥通常通过使用智能合约将区块链连接在一起。这使得智能合约审计成为桥梁安全过程的重要组成部分。通过在代码发布到区块链上之前识别和修复漏洞,智能合约安全审计可以防止许多最大的跨链桥黑客攻击。

57830

ETH2.0市值机器人开发技术分析

最新消息,据Glassnode数据显示,以太坊2.0存款合约总价值达到13,638,560 ETH,创历史新高。...ETH 2.0是以太坊网络工作证明(PoW)到权益证明(PoS)共识机制的多阶段转变。就像PoW区块链依赖石广工来验证交Y一样,PoS共识机制依赖“质押者”通过运行节点来验证交Y。...图片目前ETH2.0正处于合并升级阶段,其将利用分片来大幅增加网络带宽并降低gas费用,从而降低发送ETH 代必以及与智能合约进行交互的成本。...ETH以太坊作为一个出了名的对抗性环境,其主要来自应用层(不安全的智能合约)或社交层的弱点,以及交Y存储池中提取价值的机器人的存在,但ETH 2.0将提高更加安全,高效,友好的环境,ETH2.0+市值机器人...,可代替项目方手动做市值,节约人力、时间成本,让用户执行更有效的交Y,不必一直盯盘,可协助跑K线;做市管理;24小时不间断监视;连续不间断成交,智能自动执行,为用户提供真实交Y环境。

39640

Filecoin向左,以太坊向右

这个阶段主要是将目前以太坊1.x的当前状态(智能合约和交易数据)转换为以太坊2.0网络的一个分片。...这个阶段是在分片中解锁智能合约执行的能力,网络状态将部分或者全部分布在64个分片中。...成为以太坊2.0验证节点的过程存款合约开始。...存款合约部署在以太坊1.0上,以太坊2.0客户端向合约存款,并向信标链发出信号,让其在以太坊2.0上创建等值的ETH,并将ETH分配给正确的帐户,然后存款人可以使用相应的验证节点密钥来签名。...存款合约与信标链配合,将ETH持有者变成质押者和验证节点。 6/ 关于扩展性。 Vitalik 在6年前的reddit上曾经留言:以太坊2.0,我们要么解决可扩展性和共识问题,要么去死!

51720

智能合约安全审计技术概览

call函数是最灵活的转账函数,它可以用于调用任何合约函数并且可以传递任何数量的以太币或代币,如果调用失败,该函数将返回false并且不会回滚任何更改,其语法如下 function call(address...智能合约初期合约名称和构造函数名称一致,如果构造函数名称和合约名称不一致将导致其变为一个public的函数被任意用户调用,例如:大小写不相同、构造函数后面加s等,下面是一个简单的示例,如果不注意看你会很难发现构造函数名称和合约名称不同...当用户进行存款操作时会调用"Deposit"事件并将用户地址和存款金额作为参数传递给该事件,event和emit在智能合约的开发中具有非常重要的作用,它们可以用于记录合约中的重要操作和状态变化,帮助开发者实现合约的逻辑和功能...sendTransaction跟web3标准下的用法是一样的,这时你再使用getbalance去看合约拥有的eth就会发现变成了2,说明它本来上面存了1个eth,然后我们返回攻击合约运行attack函数就可以完成攻击了...什么条件下可以调用授权转账函数进行转账、质押逻辑如何设计、什么时候开始游戏、什么时候进行分红、分红比例如何设计、那些人员可以分红、分红的层级如何设计、邀请奖励如何设计等等,不同类型的智能合约有不同的业务需求和不同的业务场景

67040

区块链–Arbitrum Rollup(Layer2)

简介 Arbitrum是OffchainLabs 团队开发的以太坊Layer2层扩容方案,可以实现高吞吐量,让开发者以低成本部署、运营智能合约,同时可以保持无需信任的安全性。...事务调用生命周期 在用户认为交易被确认之前,交易经历了许多不同的阶段,保证交易顺序开始,到保证交易执行结束。我们用户将交易提交给定序器(可能通过另一个节点转发)的那一点开始。...费用还包含 L2 交易、L1 数据调用、计算以及存储成本。 费用以 ETH 的形式支付。...对于不携带自己的通话数据的简单转账交易,我们的基准测试表明,Arbitrum 将允许每秒最多 4,500 笔转账交易 跨合约通信 区分以太坊到 Arbitrum 的调用 Arbitrum 到以太坊的调用很重要...ETH 存款特殊行为:可重试票据以一种特殊的方式利用来处理 L1 到 Arbitrum 的 ETH 存款;如果您的应用程序将直接使用 Ether 存款,则值得了解其设计细节。

48720

首个主网配置的以太坊2.0测试网络发布

这些里程碑体现了他们对如何帮助将以太坊推向全球的愿景。Prysmatic Labs今日宣布在以太坊 2.0 阶段0的最终计划的重启:Topaz测试网络。...在之前的测试网Sapphire中,我们以主网规模为目标,但使用了较小的3.2个ETH存款。对于Topaz,验证者必须将完整的32个ETH存入Goerli ETH1测试网上才能参与。...更多Topaz测试网络的信息 存款合约地址:0x5ca1e00004366ac85f492887aaab12d0e6418876 配置:主网 参数版本:v0.11.1(最新版本) Prysm版本:v 1.0.0...平台抗住日访问量 7 亿次,研发品控流程全公开 “手把手撕LeetCode题目,扒各种算法套路的裤子” 北京四环堵车引发的智能交通大构想 Ngin到Pandownload,程序员如何避免面向监狱编程?...Web1.0到Web3.0:详析这些年互联网的发展及未来方向 老铁们求在看!

31110

eos源码赏析(十一):EOS之“狼人游戏”看智能合约调用及权限分配(上)

今天我们就从开发者的角度来看看在eos中智能合约调用过程中都发生了什么,当然提到智能合约调用就不得不说权限分配,本文将分为上下两篇,下篇会对eos账户权限作出一些说明。...在上篇中主要包括: eosio智能合约通信方式 eosio.token智能合约源码分析 eosio智能合约调用实例 eosio智能合约通信方式 关于eosio智能合约的通信方式,官方给出了具体的解释,...智能合约提供操作处理程序来执行所请求的action,每次action执行的时候通过apply在智能合约中实现应用操作。eosio全局来看,每个节点都会获得每个智能合约中每个action的副本并运行。...图4 require_recipient的相关解释 智能合约之间的通信 了解了智能合约之间的通信方式即内联通信和延迟通信,让我们来了解下两个智能合约之间的相互调用。...最后通过一个简单的狼人游戏介绍了两个智能合约之间是如何调用和通信的,关于权限的校验,我们会在下一篇文章中作出详细的说明,敬请期待。

46520

eos源码赏析(十二):EOS之“狼人游戏”看智能合约调用及权限分配(下)

接上篇,本篇智能合约内部权限使用出发,结合“狼人游戏”源码,谈谈eosio中权限的分配及使用,本文主要分为以下三部分: 狼人团队的声明探析 多签名账户 权限eosio.code的相关说明 狼人团队的声明...但其做过的恶会永远记录在这条链上,笔者角度出发,不建议参与这种资金盘游戏,哪怕源码已公开,你对源码已经了如指掌,但奈何eos中合约可更新机制,我们还是无法确保合约开发者永远不作恶。...在狼人团队最新的声明中指出:active 权限为合约代码本身,这是为了可以利用合约实现自动提币,那么我们来看看是如何进行提币的(也可参考exchange合约中的内容或者dice小游戏中的内容),代码如下...我们从上篇文章中(eos源码赏析(十一):EOS之“狼人游戏”看智能合约调用及权限分配(上))也可以得知:内联通信采用调用其他action的形式,这些action需要作为调用操作的一部分来执行。...我们来思考一个问题,假设狼人团队获取了账户user的active权限,他们是否可以通过更新智能合约的形式偷偷的调用eosio.token的transfer函数转走user的eos代币呢?

40020

MakerDAO 代币解释:DAI, WETH, PETH, SIN, MKR(一)

在这篇文章中,我们主要关注 token 是如何周转和使用的。...下图显示了 token 流动周转和智能合同使用方式,如何将一个 token 转换为另一个 token: [Maker DAO Token流动周转和智能合同使用方式] Maker DAO Token流动周转和智能合同使用方式...例如,调用 join() 将从您那里删除 WETH token,并为您提供适当数量的 PETH token。...智能合约使用方法 Maker DAO 智能合约有很多的使用方法,下表对其中的主要部分进行了分类: [Maker DAO智能合约使用方法] Maker DAO智能合约使用方法 大多数方法都是使用我们上面列出的...来源: bloxy.info DEX API PETH ( Pooled Ether) PETH 代表了 ETH,你在 Maker DAO 智能合约中投入了 ETH,以在未来创造 DAI 债务。

2K50

理解去中心化 稳定币 DAI

注意加粗的两个关键字抵押数字资产和去中心化,它是用一套称之为Maker的智能合约发行的,其背后的团队为MakerDAO。 Maker目前只支持抵押ETH,后面可能会加入其它代币。...稳定币 DAI的发行 Maker体系中有一个实现了抵押贷款逻辑的智能合约(CDP), 当我们抵押(发送)ETH智能合约合约根据当时ETH的价值,计算一个折扣后,发行对应的DAI(符合ERC20标准的代币...为了方便理解,类比抵押屋产贷款,我们把房子作为抵押品向银行贷款,ETH就相当于房子,智能合约相当于银行,DAI 相当于贷款拿到的钱。银行给我们贷款时,银行也会对房子的价值打一个折扣。...DAI是如何保持稳定的? 依靠抵押美元发行的USDT、TUSD,能保持价值相对稳定很容易理解,靠抵押ETH的DAI如何保持稳定呢?...目标利率反馈机制(TRFM):不过最重要的是以下几点:当DAI的交易价格超过1美元时,智能合约会激励人们生成DAI。当DAI的交易价格不到1美元时,智能合约会激励人们赎返DAI。

1.4K40

以太坊;MorphToken事件;看智能合约构造函数大小写编码错误漏洞

owned,任何以太坊账户均可调用函数夺取合约的所有权,进一步实现盗币等系列非法操作。...如果程序员在编写合约时将构造函数名称写错,那么原本的构造函数将成为任何人都可以调用的普通函数。...0x02 漏洞现场还原 任何以太坊账户都可以调用Bank合约继承自Owned合约的owned函数,更改Bank合约的owner变量,从而使合约所有权发生转移。...理论上在合约部署后,由于编码错误引起的构造函数缺失,owner默认值会变为0x0000000000000000000000000000000000000000,这样合约中涉及到owner的函数调用都会异常...另一种情况,如果合约中没有涉及owner权限的函数调用,那么即使攻击者盗取了合约所有权,也没有任何用处。上表B2X合约中就是这种情况。

57530

以太坊MorphToken事件看智能合约构造函数大小写编码错误漏洞

owned,任何以太坊账户均可调用函数夺取合约的所有权,进一步实现盗币等系列非法操作。...在小于0.4.22版本的solidify编译器语法要求中,构造函数的名称应该和合约名称保持一致。如果程序员在编写合约时将构造函数名称写错,那么原本的构造函数将成为任何人都可以调用的普通函数。...[d666f0b0-a307-4ab3-99ef-8a841f579c09.png-w331s] 0x02 漏洞现场还原 任何以太坊账户都可以调用Bank合约继承自Owned合约的owned函数,更改Bank...,这样合约中涉及到owner的函数调用都会异常,合约所有者应该能及时发现漏洞才是。...[d2c38d79-ddaa-4520-8526-6ab0c5ad5046.png-w331s] 另一种情况,如果合约中没有涉及owner权限的函数调用,那么即使攻击者盗取了合约所有权,也没有任何用处。

90530

【Web3 开发系列教程—创建你的第一个智能合约(2)】部署第一个智能合约

如果你是区块链开发的新手并且不知道哪里开始,或者你只是想了解如何部署智能合约并与之交互,那么本指南适合你。...第 4 步: Faucet 中添加 ether 为了将我们的智能合约部署到测试网络,我们需要一些虚假的 Eth。...// 状态变量是其值永久存储在合约存储中的变量。 关键字 `public` 使变量可以合约外部访问,并创建一个函数,其他合约或客户端可以调用函数来访问该值。...,它在创建时存储一条消息,并且可以通过调用更新函数来更新。...首先,在你的项目目录中安装 dotenv 包: npm install dotenv --save 这是一个超级简单的智能合约,它在创建时存储一条消息,并且可以通过调用更新函数来更新。

74320

构建去中心化智能合约编程货币

我们智能合约中的代码被编译为称为字节码和ABI的“工件”(artifacts)。这个ABI定义了我们如何合约交互,而bytecode是“机器代码”。...要在智能合约调用函数,你需要将交易发送到合约的地址。...",msg.value); } 每当有人与我们的合约进行交互而未指定要调用函数名称时,都会自动调用“fallback”函数。...现在重新部署并尝试多次depositing,调用次数达到上限后,会报错: ? 请注意,在智能合约中,前端如何通过require()语句第二个参数的消息获得有价值的反馈。...它们在执行过程中智能合约中发出的成本相对较低,但是智能合约却不能读取事件。 让我们回到智能合约 SmartContractWallet.sol.

1.4K30
领券