Day 6不是部署日,是动手造东西的第一天。

这事得从Day 5的头脑风暴说起。作者Alena-dev-soft需要个练手项目——能完整跑通现代Web3技术栈,还能公开开发的那种。她手里另有个MVP在憋大招,暂时保密。所以得找个"常见但技术上有嚼头"的方向。

打开网易新闻 查看精彩图片

她是个梦想家。愿望清单这个点子就这么蹦出来了。

打开网易新闻 查看精彩图片

核心逻辑很简单:人人列愿望,陌生人帮你实现,再把整套机制搬上链。基础合约其实已经写好了——Sepolia测试网上跑着的React前端+Solidity合约。但单用户单列表太单薄,她想要多用户、ETH定向捐赠、Telegram机器人通知,再加上正经的monorepo架构:合约层、Supabase、Drizzle、Next.js全套。

然后想法变了形。

如果每笔捐赠都能增加某种"强度"呢?一个全局计数器,链上的能量值,有人为别人的梦想掏钱时就往上跳。项目名暂定WishList Chain(WSHL)——还不是代币,只是个链上power分数。合约里叫totalDreamPower,每个目标有自己的dreamPower字段。原本想叫DreamCoin,发现被占了,连夜改名。

这是正经产品吗?有可能。是学习项目吗?毫无疑问。想法有点荒诞吗?是的——但在加密世界,荒诞有时候就是通行证。

代码已开源:github.com/alena-dev-soft/wish-list-chain

打开网易新闻 查看精彩图片

Day 6的目标是重写核心合约——WishlistV3。多用户目标、ETH捐赠、单目标dreamPower累积、全局totalDreamPower、还有给Alchemy webhook留的DreamPowerIncreased事件。Hardhat部署,Etherscan验证。

架构从V2的单所有者单列表,改成了共享合约+多钱包隔离。用.NET程序员的脑回路翻译:V2是List,V3是Dictionary>。Solidity里写成mapping(address => Goal[]) public goals

Goal结构体加了财务字段:name、targetAmount、currentAmount、dreamPower、isFulfilled、createdAt。donate()是核心函数,两个细节:必须加payable修饰符,否则Solidity拒收ETH——这个关键字不是可选配置,是硬性要求。另外用了Goal storage goal = goals[_owner][goalId]的storage引用,避免重复读写状态变量的gas浪费。

一个.NET背景的开发者在Web3里跌跌撞撞,把"愿望"这种最软的东西,硬塞进最硬的链上代码。荒诞归荒诞,代码是跑起来了。