你有没有经历过这种时刻:年初立下flag要学一门新技术,三个月后连第一课都没打开;计划每天跑步半小时,跑鞋却在鞋柜里落灰。原因很简单——没完成也没什么代价。
TalknDo想用一个直接的方式来改变这种状态。它把目标的执行和Solana链上的SOL质押绑在一起,让你在按下“开始挑战”按钮的那一刻,先放上一笔真金白银。完成目标,钱拿回来还能领一个成就NFT;半途而废,这笔钱就直接转进慈善托管账户。
![]()
整个流程设计得相当干脆。你需要做的就是为挑战取个名字,写清楚要做什么、怎么做,上传一份说明文件,再填上准备质押多少SOL和截止日期。最后用钱包签一笔链上交易,挑战就直接激活了。这时候,你的SOL会被锁进一个专用的链上托管账户里,不是存在项目方手里,而是通过智能合约自动保管。
当你终于把拖延的事情搞定——比如把列出来的那十几本技术书读完,或者把规划了很久的个人项目上线——你可以上传完成证明,然后自己审核一下提交的内容,确认后就从托管账户里拿回原本质押的SOL。更有意思的是,合约还会自动调用Metaplex Core给你铸造一个不可转移的NFT凭证,作为你完成挑战的永久记录。它不能卖、不能送人,就老老实实躺在钱包里,提醒你曾经战胜过自己。
如果真的没能在截止时间前交出证明,任何人都有权触发挑战的过期。智能合约会标记挑战失败,然后把质押的SOL从托管账户转到慈善托管账户里。这笔钱最终只有经过授权的资金库成员才能提取,并当面转给选定的慈善接收方。等于用你的“没完成”帮到了需要帮助的人。
在技术实现上,TalknDo的智能合约用Rust基于Anchor框架在Solana链上完成。为了确保挑战账户、程序配置、资金库成员和慈善资金的管理既安全又不可篡改,合约广泛使用了PDA来生成确定的链上地址。比如每个挑战创建时,合约都会为它生成一个独立的PDA作为托管账户,把用户质押的SOL直接转进去。
前端部分则用Next.js搭起来,配合React和TypeScript,界面用的是Tailwind CSS加Ant Design的组件。为了连上链,同时接入了Solana Wallet Adapter和Web3.js,这样用户就能用自己常用的Solana钱包签名交易。创建挑战的时候,合约会先校验标题、截止时间、元数据链接和质押金额,全部合规才会执行SOL的转移。
合约里还设计了一层授权机制:主资金库账户可以添加或移除其他资金库成员,只有经过授权的成员才能从慈善托管账户里取出资金,转给选定的慈善地址。在安全性上,合约额外加上了账户约束检查、截止时间和状态验证、免租保护、检查过的算术运算以及自定义错误,同时还会在关键操作时抛出事件,方便前端监听和响应。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.