http://www.7klian.com

技能阐明 :Lendf.me 被进攻,ERC777到底该不应用?

ERC777 是一个好的Token尺度, 可以极大的提高Defi 应用的用户体验,通过利用的 Hook 回调机制,在 ERC20 中需要二笔或多笔完成的生意业务(虽然尚有其他的特性),而利用ERC777单笔生意业务就可以完成。




下面我用一段简捷的代码说明可重入进攻是如何产生的(告诫,以下是代码请勿利用),下面是 Defi 应用最常见的逻辑,,deposit 函数用来存款,存款时会记录下用户的存款金额,withdraw 函数用来取款,取款在余额的基本上加上一个利率。



interface IToken {

}

在交互进程中,存在 3 个脚色,用户、Defi合约、Token合约, 用户存款和取款的时序图是这样的:


可重入进攻是怎么产生的?

}

address to,

}
bytes calldata data,
return true;
}

}
}


function tokensToSend(


function deposit(uint256 amount) external {





uint256 amount,

function tokensReceived(
balances[msg.sender] = balance;


假如发送者和吸收者实现了ERC777的转账接口, 上面的存款挪用时序图就是这样的:



}
uint balance = balances[msg.sender] + amount;
if(token.transferFrom(msg.sender, this, amount)){
balances[msg.sender] = 0;
}
// 取回后余额配置为 0

mapping(address => uint) balances;

周末两天Uniswap 和 Lendf.me 都产生了黑客进攻事件,都是Defi 应用与 ERC777 组合应用导致可重入裂痕,个中导致 Lendf.me 损失抵押资产千万美元。

}


if (有发送者接话柄现) {



IToken token;


产生这样的工作,相信是所有从业者不肯意看到的,本文也无意针对Lendf.me,你们也是受害者,只是看到有人甩锅给 ERC777 ,不忍从

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。