委托人信息(委托信息参数不能为空是什么意思)

文章前言

在智能合约中数组0地址有时候用于存储某一类具备特殊意义的数据,但是有时候也用0地址来表示查询无果的情形,如果将这两者混用或误用,则可能导致逻辑设计的严重问题,本篇文章将对此进行简单介绍。

问题描述

智能合约中的add和remove两个函数用于增加和移除受益人,这里的depositariesIndex是depositaries数组的索引值:

委托人信息(委托信息参数不能为空是什么意思)

但是在以下位置处,合约要求添加的委托人地址索引为0:

委托人信息(委托信息参数不能为空是什么意思)

同样的问题存在于以下位置,不允许删除索引为0的受益人:

所以说这里原来的设计目的是索引为0则表示该受益人不存在,但是在增加收益人时却在索引为0的位置存放的受益人,从而导致索引为0的受益人地址覆盖,而对应的索引为0的受益人地址不可被删除~

安全建议

在索引为0的地址不存放任何受益人地址信息,将所有存储的数据往后移动一个索引位置:

原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34137.html

(0)
七芒星实验室's avatar七芒星实验室
上一篇 2024年4月7日 下午3:29
下一篇 2024年4月7日 下午3:31

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注