以太坊智能合约示例与漏洞分析——竞拍合约

本文深入探讨了以太坊智能合约中的竞拍合约设计,指出收款地址未定义fallback函数和重入攻击两大问题,并提供了相应的解决方案。在收款地址问题上,建议采用投标者自我退款机制;针对重入攻击,推荐在转账前清除账户余额,或使用send限制转账次数。
摘要由CSDN通过智能技术生成

一、拍卖合约

智能合约定义成员变量、event等,构造函数初始化受益人、拍卖结束时间,如下所示:
在这里插入图片描述
出价的函数如下,标注payable说明函数可以接收转账,require(now <= auctionEnd)检查拍卖是否结束,如果已经结束就抛出异常,然后检查出价是否大于最高出价,然后将出价人记录到bidders数组(因为bids哈希表不支持遍历),然后记录新的最高出价人,记录日志,如下所示:
在这里插入图片描述
结束拍卖的函数如下,首先检查拍卖是否结束,拍卖没有结束就调用该函数就会抛出异常,然后检查是否已经被调过,重复调用会抛出异常,然后将最高出价转给出价人,将钱退回给未中标的人,然后标注函数执行完成,记录日志,如下所示:
在这里插入图片描述

二、收款地址未定义fallback函数的问题

如果一个黑客通过外部账户发起交易调用自己的合约的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值