社区要给几千个地址发空投,志愿者从网上找来一个「批量转账工具」,把私钥粘进去,点一下全部发送——发放完成的十分钟里,发放账户被清空的剧情每年都在重演。批量发放省的是人工,省不掉的是私钥风险和清单风险,这两样都必须提前安排。
先处理私钥暴露面。任何网页版群发工具,只要要求你把私钥或助记词粘贴进输入框,就等于把签名权连同授权书一起交给了一个匿名页面:工具可以「顺手」保存输入内容,也可以在某个版本里被替换。合规的做法是分层:发放账户本身只放本次活动预算,相当于一次性热钱包;真正的金库账户从不联网签名;需要大额操作时,用硬件钱包或离线签名流程给发放账户充值,签名在设备上完成,电脑端只搬运未签名的交易数据。活动结束,一次性账户里的余额归零转回,整个地址退役不再复用。
再看地址清单——这是另一半事故来源。清单常见的三类事故:一是格式混排,同一张表里混进不同链的地址,checksum 校验和大写形式稍有差错的地址,某些工具照样照发不误;二是表格里的手工编辑,一次误粘贴把某个地址改坏,币进了黑洞;三是清单来源污染,收集页被人脚本灌水,成千上万个无效地址里混进少量「看起来正常」的投毒地址。对应的防线:所有地址先进校验脚本跑一遍校验和,按链分流;收集环节加最低门槛,比如要求提交者先做过一笔真实交互,过滤灌水;发布前把清单按固定顺序排好并留档,发放用的必须是这份留档副本,谁也不许现场手改。
发放执行当天的纪律比工具选择更重要。先做小额试发:挑五个自己可控的测试地址,各发最小单位,核对每条交易的到账链、代币合约和数量;再分批放量,每批之间停下来对一次链上记录,发现偏差立即暂停,而不是「先把这批发完」。整个过程中,发放操作机应当是专用环境:不装杂七杂八的软件,登录状态只留这一件事,活动结束即重装或恢复出厂——发放结束后,谁也不知道哪台机器上留了什么。
最后是错发的处置边界。必须接受一个事实:链上转账错了就是错了,不存在官方回滚。可以挽回的只有一种:错发的资产仍在对方可控制的交易所账户等托管环境里,通过正式风控与客服渠道沟通有极小概率协商处理,但这是平台裁量,不是权利,不能写进活动预案当承诺。更多情况属于不可挽回:进了陌生自托管钱包、进了混币或跨链通道,就不再有合规的技术追回路径。预案里应写明的是另一件事:错发发生后,第一时间冻结发放账户继续支出、公告说明情况、保留完整清单与交易哈希,防止「错发地址」被二次利用成钓鱼话术——攻击者常在混乱期冒充客服,以「退回误发资产」为名要求签名,这是所有发放事故的标准第二幕。
补一个常被低估的环节:资格判定脚本本身。很多发放的公平性问题不在转账工具,而在「谁有资格」这段逻辑跑在谁的电脑上——用一次性脚本随手过滤快照,条件写反一个不等号,该发的没发、不该发的多发,事后既无法复现也无法举证。稳妥做法是把资格判定和转账执行分开:判定逻辑用版本控制的脚本对不可篡改的快照区块号重跑,结果输出成带行数的清单留档,和最终转账用的地址清单逐行 diff 一致才放行;清单不一致时先查生成链路,而不是当场手改表格。名单公示争议、重复地址去重规则、内部地址是否回避,这些事先写进活动规则,比事后任何解释都省力气。发放事故里,「清单怎么来的」永远比「清单怎么发的」更难自证,值得你多花一倍时间。
一句话:批量发放的安全底线,不是找到某个「安全工具」,而是让任何单点失陷都损失有限——密钥不进网页、金库不露面、清单有校验、错发有预案,四样凑齐再按下发送键。

发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。