04-06
04-06

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 模块管理关键地址(如多签地址)的配置,并设计管理员接口以便后续调整。