2023/12/21 Update: This proposal has entered the voting stage. Please proceed to vote:https://dao.ckb.community/thread/vot-joygift-phase-1-sponsorship-proposal-joygift-48022
2023/12/21 更新: 这个提案已进入投票阶段,请前往投票:https://dao.ckb.community/thread/vot-joygift-phase-1-sponsorship-proposal-joygift-48022
1. Why JoyGift? (Why?)
Let’s rewind 3 years ago, Daniel Lv continuously sent out CKB red packets to the community for 30 days. We shared those red packets through multiple channels, allowing more people to learn about CKB. Unfortunately, the red packet tool was no longer maintained, and we haven’t received any CKB red packets for more than two years.
JoyGift aims to fill this gap, serving as a channel for users to send crypto assets as gifts to friends, community members, or fans to strengthen emotional connections. In the world of crypto, it’s not the amount that matters but the symbolism and emotional connection that the gift represents.
In China, red packets are a traditional gift form, an integral part of Chinese culture, and are usually given during celebrations like festivals, weddings, childbirth, promotions, and academic achievements. Red packets typically contain cash, symbolizing blessings and wealth. With the rise of mobile payments and social media, digital red packets have become increasingly popular.
With JoyGift, we hope to combine traditional red packet culture with modern blockchain technology, providing a safe, convenient, and fun experience for users. We also hope that JoyGift becomes an essential tool for the Nervos community. Here are some use cases for JoyGift:
- During AMAs, we can send CKB red packets to warm up the atmosphere. Users can experience the smoothness of JoyID while claiming red packets.
- During festivals or events, we can use CKB red packets to connect with users and convey emotions.
- When promoting Nervos in other communities, CKB red packets can serve as an icebreaker.
- When Cipher introduces JoyID to potential partners, he can send them a CKB red envelope for a firsthand experience.
2. Why Us? (Why you?)
We are from the CKBFans Chinese community, a group of passionate supporters and evangelists for CKB. Some of our team members have been involved in community building since before the CKB mainnet launch. We have witnessed Nervos grow from scratch to a more mature and complete blockchain infrastructure.
In the past, we have been committed to developing tools for CKB ecosystem applications to help users get started with CKB chain applications. Our delivered tool websites include:
- https://das.la (Batch .bit selection tool)
- https://seekdid.com (Batch .bit selection, registration, and market aggregation tool)
- https://ckbdapps.com (One-stop exploration of the CKB ecosystem)
We have extensive product development experience and a complete team, including product managers, UI designers, front-end developers, back-end developers, and testers. As community members, we understand the community’s needs and believe we are the best candidates to drive JoyGift’s development.
3. Why Now? (Why now?)
As crypto currencies become more popular, more people are getting involved with them. However, for many newcomers, crypto currencies are still unfamiliar and complex. We hope that CKB red packets in JoyGift will introduce more people to CKB in a fun and engaging way, promoting the growth of the CKB community.
This would have been difficult to achieve previously, as the barrier to entry for new users to have a CKB wallet was high. But JoyID has changed the game rules. Users can now create a wallet and interact with Dapps within 10 seconds using biometrics if their device supports Passkey.
In late September, I suggested to Cipher that they launch a red packet app alongside JoyID’s mainnet launch. Cipher agreed with the idea but threw the ball back to me, asking if our team could develop it. So, we began researching, designing, and developing JoyGift. We initially planned to launch alongside JoyID, but we had to spend more time polishing the user experience. After completing all user case tests, we launched a small-scale community beta test in early December and announced the public beta test on December 11th: JoyGift Testnet Now Live - Try It Out and Share Your Feedback!. We received positive feedback and plan to launch the mainnet on December 21st, hoping everyone can receive CKB red packets during Christmas and New Year.
During the community beta test, we have time to submit this CKB Community Fund DAO proposal, hoping to gain community support.
4. What Budget Are We Applying For, and Why Is This Budget Reasonable? (Budget)
Considering that the full functionality of JoyGift may require multiple version iterations to complete, submitting a sponsorship proposal for the entire project at once would make it more difficult for the community to evaluate. We decided to develop by version first, and then submit the proposal. This saves a lot of communication and time costs compared to launching a proposal without doing anything. This is because community users visualize the application and can make an objective evaluation of our application, while the former requires community members to brainstorm what our application looks like, and then come back to communicate based on what they imagined, which sometimes has a large deviation from the actual situation.
The sponsorship we are applying for is for the basic version of JoyGift currently running on the testnet. The requested amount is 8000U, at the time of the proposal, 1 CKB = 0.00326U, equivalent to 2386635 CKB . This cost will be used for the following purposes:
- Development cost of the basic version: We need to pay the labor costs of designers, developers, and testers. The server, shared between JoyGift and ckbdapps.com, will be monitored for operational status. If expansion is necessary, we will apply separately for related costs.
- Testing cost: Before the official launch, we need to conduct necessary tests to ensure the stability and security of the product.
- Promotion cost: We need to conduct a series of promotional activities to attract more users to use JoyGift. This includes sending red envelopes to the community.
We believe this budget is reasonable because it covers all the expenses of our project and ensures the smooth progress of JoyGift.
5. How Will We Carry Out This Work? What Are the Milestones? (How?)
We plan to carry out this project in stages, with clear goals and tasks for each stage. Here is our plan:
Stage 0: Design Phase (09/29-10/13)
In this phase, we researched the designs of several red packets on the market, combined with the characteristics of CKB, designed the first basic version of JoyGift, supports users to connect JoyGift with JoyID wallet, and successfully carried out CKB red packet creation, sharing, claiming red packets, viewing red packet details, viewing history, statistics of gifts under the wallet account, etc. Our designers spent a lot of effort designing the interaction details in each process and completed the interaction draft and visual effects.
Stage 1: Development Phase (10/13-12/10)
In this phase, we implemented the functions listed in the design phase one by one, including interface design, front-end component development, back-end database table design, business logic processing, execution of CKB transactions, business process joint adjustment, testing, etc.
In this phase, we encountered some challenges and would like to share them with the community how we solved them:
- How to prevent the sender from malicious actions: If the sender sends a CKB transaction when sending a red packet, and then sends the transaction’s tx to the server to bind his red packet and his transaction tx, then he may send a false tx to do evil—because after the red packet expires, if no one claims the gift, it will be fully refunded to the sender, so he can get the platform’s refund through doing evil. To prevent this kind of evil from happening, our solution is for the sender to sign the transaction, send the signed information to the server, and the server sends the CKB transaction. The red packet will take effect only after the transaction is confirmed on the Blockchain.
- How to prevent robots (scripts) from automatically receiving red packets: When receiving a red packet, we require users to sign to ensure real-person operation. JoyID’s signature information cannot be simulated by script code, which can effectively prevent people from using scripts to receive red packets;
- How to prevent the same device from claiming the same red packet multiple times: Considering that multiple JoyID accounts can be created on the same device, if necessary restrictions are not imposed, then in extreme cases, a red packet may be completely grabbed by a single real user, which JoyGift cannot accept. JoyGift aims to let red packets reach as many users as possible. For this, we have taken the following measures: when a user receives a red packet, they need to request JoyID wallet’s signature information with the current device information’s encrypted hash as a parameter, and the server checks the signature and checks whether the device has claimed the red packet.
How does the server verify the validity of the signature: During our development, JoyID’s signature verification algorithm only has a JS version. Our server is developed with Ruby and cannot be used directly. For this, our back-end development engineer wrote a set of JoyID signature verification algorithms in Ruby following the JS version.
These are the most impressive, and the others are not listed one by one.
Stage 2: Public Testing Phase (12/11-12/21, in progress)
After the function is completed and tested internally, we launched the community public test on December 11t, letting the community users test our product, we will also actively answer the community’s questions and solve the Bugs tested by community users.
Stage 3: Promotion Phase (tentatively 12/21)
After the basic functions are developed and tested by the community, we will officially deploy JoyGift to the mainnet production environment and start promoting JoyGift. We will release news on social media platforms, inviting users to try our service. We will also attract more users to use our service by giving away red packets.
Stage 4: Optimization Phase (12/25–)
Based on user feedback and usage, we will further optimize and improve JoyGift to improve user experience.
The above is the basic implementation plan of this proposal, and the completion of each stage can be regarded as a milestone.
6. Future Plans for JoyGift
Once the basic functionality of JoyGift stabilizes and we have a certain user base, we will consider expanding our service. We will develop new features, support more gameplay, and attract more users to use JoyGift. While meeting user needs, we also hope JoyGift becomes an operational tool for the Nervos community.
Since the content of the next version of JoyGift is not within the scope of this proposal, we will collect ideas from the community at the appropriate time. Everyone is welcome to share their ideas when the time comes.
Finally, thank you for taking the time to read this proposal, wishing you all the best!
1. 为什么我们要做JoyGift?(Why?)
让我们把时间拉回 3 年前,也许社区里的老人还记得,当时 Daniel Lv 在他的朋友圈里连续给社区下了 30 天的 CKB 红包雨,我们将他的红包分享到多个不同的渠道,让更多人有机会了解到 CKB,那段时光多么令人难忘啊!遗憾的是,好景不长,此后没多久,那个红包工具便不再维护了。我们已经两年多没有收到 CKB 红包了!
JoyGift 希望能接上这一棒,成为一个传递情感的渠道,用户可以通过 JoyGift 向朋友、社区或者粉丝发送加密资产作为礼物来增进彼此之间的情感。在加密数字货币的世界里,我们相信,送礼物的金额并不重要,重要的是礼物本身所象征的意义,它是一种情感连接的媒介。
在中国,红包是一种传统的礼物形式,也是中国文化中不可或缺的一部分,通常用于庆祝节日、结婚、生育、晋升、升学等喜庆场合。红包里面通常装着一定金额的现金,象征着祝福和财富。而且随着移动支付和社交媒体的普及,电子红包也越来越受到人们的欢迎。
在 JoyGift 中,我们希望将传统的红包文化和现代的区块链技术相结合,为用户提供更加安全、便捷、有趣的加密红包体验,我们也希望 JoyGift 能成为 Nervos 社区的一个重要的运营工具,以下是 JoyGift 的一些应用场景:
- 在 AMA 时,我们可以发 CKB 红包来暖场。用户在领取红包的同时可以体验 JoyID 的流畅。
- 在节日或活动,我们可以通过 CKB 红包来拉近用户的距离,传达彼此的情感。
- 当我们在其他社区推广 Nervos 时,CKB 红包可以起到很好的破冰作用。
- 当 Cipher 向潜在的合作伙伴介绍 JoyID 时,可以向对方发一个 CKB 红包来给对方直观的体验。
2. 为什么我们是合适人选?(Why you?)
我们来自 CKBFans 中文社区,顾名思义,我们是一群对 CKB 充满热情的支持者和布道者。我们的团队成员中有些人在 CKB 主网上线之前就开始关注并参与到社区建设中,一路走来,我们目睹 Nervos 作为区块链底层的基础设施从零开始正在向着更好、更完善的方向发展。
过去,我们一直致力于开发 CKB 生态应用的工具,以帮助用户更好地上手 CKB 链上的应用。我们已经交付的工具网站产品有:
- https://das.la (.bit 批量选号工具)
- https://seekdid.com (.bit 批量选号、注册、市场聚合工具)
- https://ckbdapps.com (一站式探索CKB生态)
我们有丰富的产品开发经验,我们的人员配备齐全,有产品经理、UI设计师、前端开发工程师、后端开发工程师、测试人员。同时,我们来自社区,最了解社区用户的需求,我们相信我们是推动JoyGift 发展的最佳人选。
3. 为什么我们现在要做 JoyGift?(Why now?)
随着数字货币的普及,越来越多的人开始接触和使用数字货币。然而,对于许多新手来说,数字货币仍然是一个陌生和复杂的领域。我们希望通过 JoyGift 的 CKB 红包,让更多的人以一种轻松有趣的方式接触和使用 CKB,从而推动 CKB 社区的发展。
这件事情在以前很难实现,因为要让新手用户拥有一个 CKB 钱包的门槛很高,即使我们有红包应用,也很难普及。但是 JoyID 的出现改变了游戏规则,用户只要其设备支持 Passkey,就可以通过生物识别在 10 秒钟内创建一个钱包并参与 Dapp 的互动。
于是,今年 9 月底,我向 Cipher 建议他们在 JoyID 主网上线时同时发布一个红包应用,让用户感受 10 秒钟开户进入加密世界,并立即拥有自己在加密世界的第一笔资产,这非常利于 JoyId 的宣传和普及。Cipher 认同这个建议,不过他把球踢给了我,问我们能不能做这件事情。于是我们团队就开始了 JoyGift 的调研、设计和开发工作,本想与 JoyId 同步上线,但其各个页面内部的交互细节很多,我们不得不花更多的精力来打磨,使得用起来更加丝滑流畅。终于,我们完成了所有功能的回归测试过后,在12月初启动社区内的小范围内测,于12月11日向社区公布了公测的消息:https://talk.nervos.org/t/joygift-testnet-now-live-try-it-out-and-share-your-feedback/7566 ,并获得不错的反馈。如果一切顺利的话,我们计划在 12 月 21 日正式上线主网,在圣诞、元旦双节到来之际,希望大家能收到 CKB 红包。
正好在社区公测的这段时间,我们有空来发起这份 CKB Community Fund DAO 的提案,希望能获得社区的支持。
4. 我们申请的预算是多少?为什么这个预算合理?(Budget)
考虑到 JoyGift 完整的功能也许需要多个版本迭代才能完成,一次性提交整个项目的赞助提案会给社区评估带来较大的困难。我们决定按版本先开发,再来提交提案。相较于什么东西都没有做就发起提案,这样可以节省很多沟通成本和时间成本。因为社区用户直观地看到了应用,并能对我们的应用做出客观的评价,而前者则需要社区成员脑补我们的应用是什么样子,再来根据他们想象的样子来交流,有时会和实际情况存在较大的偏差。
我们本次申请的赞助是针对目前在测试网上运行的 JoyGift 基础版本,申请金额为 8000U,提案发起时,1 CKB = 0.003352U,折合CKB数量为 2386635 CKB。这笔费用将用于以下几个方面:
- 基础版本开发费用: 我们需要支付设计师、开发人员、测试人员的劳动报酬。服务器等硬件设备 JoyGift 目前与ckbdapps.com 共用,我们会关注服务器的运行状态,在需要扩容时,我们再单独申请相关费用。
- 测试费用: 在正式上线之前,我们需要进行一些必要的测试,以确保产品的稳定性和安全性。
- 推广费用: 我们需要进行一系列的推广活动,以吸引更多的用户使用 JoyGift。包括向社区发红包等。
我们认为这个预算是合理的,因为它能够覆盖我们项目的所有费用,并且能够保证 JoyGift 能够顺利进行。
5. 我们如何开展这个工作?有哪些里程碑?(How?)
我们打算分阶段进行这个项目,每个阶段都有明确的目标和任务。以下是我们的计划:
第0阶段:设计阶段(09/29-10/13)
这一阶段我们调研了市面上多款红包的设计,结合 CKB 的特性设计了 JoyGift 的第一个基础版本,支持用户使用 JoyID 钱包连接 JoyGift 应用,并顺利进行 CKB 红包的创建、分享、领取红包、查看红包明细、查看历史记录、钱包账号下的礼物统计等等。我们的设计师花费了非常多的精力去设计每个流程里的交互细节,并完成交互稿和视觉效果图:
上图为我们的设计师提供的JoyGift 视觉稿。
第1阶段:开发阶段(10/13-12/10)
这阶段我们逐一实现设计阶段所列举的功能,包括接口设计、前端组件的开发、后端数据库表设计、业务逻辑处理、链上交易的执行、业务流程联调、功能回归测试等。
这一阶段我们遇到一些挑战,分享给社区我们是如何解决的。
- 如何避免发红包方作恶: 如果发红包的时候,由发送方发送链上交易,然后将交易的tx发送给服务端绑定他这个红包与他的交易tx,那么他就有可能发送一个虚假的tx来做恶——因为红包过期之后如果没有人领取,将全额退返给发送方,这样一来他就可以通过做恶来获得平台的退款。为了防止这种做恶的情况发生,我们的解决方案是由发送方对交易签名,将签名后的信息发给服务端,由服务端发起链上交易,交易上链了之后该红包才生效。
- 如何防止机器人(脚本)来自动领取红包: 领取红包时,我们要求用户进行签名,以确定真人操作,JoyID 的签名信息通过脚本代码无法模拟,可以有效防止有人使用脚本领取红包;
- 如何避免同一个设备多次领取同一个红包: 考虑到同一个设备可以创建多个 JoyID 账号,如果不进行必要的限制,那么极端情况下某一个红包可能被某一个实体用户全部领完,这是 JoyGift不能接受的。JoyGift 旨在让红包触达尽可能多的用户,为此,我们对采取了以下措施:用户领取红包时,要把当前的设备信息加密后的哈希一起作为参数请求 JoyID 钱包的签名信息,由服务端进行签名的校验,以及该设备是否领取过红包的校验。
- 服务端如何校验签名的有效性: 我们在开发时,JoyID 的签名验证算法只有 JS 版本,我们的服务器是用 Ruby 开发的,无法直接使用,为此,我们的后端开发工程师仿照 js 版本用 Ruby 写了一套 JoyID 的签名验证算法。
以上是印象比较深刻的,其他的就不一一列举了。
第2阶段:公测阶段(12/11-12/21,进行中)
功能完成内测之后,我们启动了社区的公测,让社区用户来检验我们的产品,同时我们也会积极解答社区的问题,并解决社区用户测出来的 Bug。以下是部分产品效果图:
第3阶段:推广阶段(暂定12/21)
在基础功能开发完成并经过社区测试后,我们将正式将 JoyGift 部署到主网生产环境,并开始推广JoyGift。我们将在社交媒体平台上发布新闻,邀请用户来试用我们的服务。我们还将通过赠送红包的方式,吸引更多的用户来使用我们的服务。
第4阶段:优化阶段(12/25–)
根据用户的反馈和使用情况,我们将对JoyGift进行进一步的优化和改进,以提高用户体验。
以上是本提案的基本实施计划,每个阶段的完成都可以视为一个里程碑。
6. JoyGift 未来的计划
在 JoyGift 的基础功能稳定,并且获得了一定的用户基础后,我们将考虑扩展我们的服务。我们会开发新的功能,支持更多的玩法,吸引更多用户来使用 JoyGift,在满足用户需求的同时,我们也希望 JoyGift 能成为 Nervos 社区的一个运营工具。
由于 JoyGift 下一个版本开发的内容不在本提案讨论的范围,我们将在适当的时候向社区征集你们希望实现的功能,欢迎大家到时候去说出你的IDEA。
最后,感谢你花时间阅读完本提案,祝你一切顺利。