Donation in support of Proof of Love(捐助爱的证明之开发)
1. 通过一个地址收款,收到后转账到我们道易程的多签地址;这个收款地址及其二维码会显示在Github的SCC0页面、官网首页、50Satoshis.com首页。
2. 收取 ETH 和 Ethereum Mainnet 的 USDT、USDC、TUSD、EURI;由于稳定币要先通过Uniswap兑换成 ETH,比较麻烦。简单点,就先只收取ETH。
3. 颁发荣誉通证——需要考虑如何在收款后马上,或者尽快颁发;
4. 按道易程里面的ETH和UTO的实际兑换比(包含奖励),奖励捐助者UTO——这个也要考虑收款后尽快处理。
捐赠窗口设计
1、Logo和项目名称——道易程的Logo,名称:Donation
2、链接到 爱的证明(https://learn.daism.io/zh/blogcn/136-pol.html)
3、捐赠引导:
Support Proof of Love(Support SCC0 License) – Make a Donation
(未来还有Support其它)
支持我们的开源项目 ,您的捐赠帮助我们维持项目的开发和维护,感谢您的支持
在按钮下方用浅灰色小字标注:
“By donating, you agree to our [Terms] which include experimental rewards.”
4、捐赠数量(eth) 捐赠合约地址
5、连接钱包按钮
6、捐赠按钮
7、其它 捐赠方式(二维码)
二维码展示:显示合约地址的二维码,用户可以使用手机钱包扫描二维码进行捐赠。
8、说明文字:扫描二维码直接向我们的合约地址捐赠ETH。
9捐赠反馈信息
9.1 捐赠的结果,
9.2 荣誉通证
9.3 奖励UTO信息
9.4 引导注册enki 帐号
10、捐赠反馈信息发布到社区。
功能模块设计
ETH 收款与转账模块
实现一个 payable 函数,用于接收用户捐赠的 ETH。
在收到 ETH 后,立即将资金转发到预设的多签地址,确保转账成功并捕捉异常情况。
荣誉通证铸造模块
在收款后调用外部荣誉通证合约的 mint 方法,为捐赠者颁发荣誉通证。
检查 mint 操作是否成功,记录铸造事件。
UTO 奖励转账模块
调用道易程合约接口查询捐赠 ETH 可兑换的 UTO 数量。
使用 ERC20 标准接口将计算得到的 UTO 转账给捐赠者,并检测转账成功。
记录UTO奖励数量
终止本捐赠开关,同时退还多余UTO。
代码安全与优化
重入攻击防范:利用 OpenZeppelin 的 ReentrancyGuard 确保 payable 函数不被重入调用。
状态与异常处理:对每一步操作进行 require 检查和事件日志记录,确保操作失败时整个交易回滚。
Gas 优化:在设计数据结构时考虑变量顺序、状态变量打包等优化方案;避免不必要的外部调用。
权限管理:采用 Ownable 模块管理关键地址(如多签地址)的配置,并设计管理员接口以便后续调整。