21、智能合约安全与代币开发全解析

智能合约安全与代币开发全解析

1. 智能合约重入攻击及解决方案

智能合约的安全性至关重要,其中重入攻击是一个常见且危险的漏洞。以 EtherPot 合约为例,在其 Withdraw 函数中,进行 Ether 转移时会自动调用黑客合约的 receive 函数,而 receive 函数又会再次调用 EtherPot 的 Withdraw 函数,如此循环,直到 EtherPot 合约中的 Ether 被耗尽。

为解决重入问题,可采用以下安全最佳实践:
- 检查合约账户 :这是一个可选方案,若不希望其他合约与当前合约交互,可使用 Solidity 的 extcodesize 汇编操作码来判断地址是否为合约账户。若代码长度大于 0,则为合约账户,可选择拒绝调用。示例代码如下:

/*uint length;
assembly {
length := extcodesize(sender)
}
if (length > 0) {
revert("contract addresses are not allowed!");
} */ 
  • 采用 Checks - Effects - Interactions 范式 :该模式包含三个阶段:
    • 检查阶段 :验证传入参数的正确性以及合约
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值