You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solidity合约报Member "tranfer" not found错误如何解决

问题根因

该报错与Solidity 0.5版本要求收款地址为address payable类型的规则无关,是纯拼写错误导致的编译失败:
address payable类型内置的ETH转账方法标准名称为transfer,你的代码第35行将方法名错写为tranfer(漏写了字母s),编译器无法在地址类型上匹配到这个不存在的成员方法,因此抛出对应类型错误。

修复步骤
  • 核心错误修复
    将第35行的错误方法名替换为正确写法,修正后的对应函数代码如下:
    function payout() private mustBeDeceased{
        for(uint i = 0; i<familyWallets.length;i++){
            familyWallets[i].transfer(inheritance[familyWallets[i]]);
        }
    }
    
  • 可选逻辑漏洞修复(建议同步处理,避免上线后出现资金风险)
    • 给setInheritance方法添加onlyOwner权限修饰符:当前该方法无访问限制,任意外部地址都可以随意修改继承地址列表和分配金额,存在严重逻辑缺陷。
    • 在payout函数执行转账前增加余额校验:确认合约当前持有的ETH总额不低于所有待分配继承金额的总和,避免转账过程中因余额不足触发全量回滚。
    • 若需要支持合约地址作为收款方,替换transfer为带返回值校验的call转账方式:transfer默认仅向接收地址转发2300gas,若收款方是合约且fallback/receive函数逻辑消耗超过2300gas,会直接导致转账失败。

内容的提问来源于stack exchange,提问作者Anvay Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:14:52