利用IPFS构建短视频区块链应用开发经历(十二)重构与模块化设计

本系列文章是针对 https://blog.csdn.net/weixin_43668031/article/details/83962959 内容的实现所编写的。开发经历包括思考过程、重构和推翻重来。
本节讲述经过大半年的停更此项目,架构发生变化。
在这大半年时间里完成了非统一数据的视频站,也是真正意义上的IPFS上的原生Dapp应用 https://github.com/bill080307/VideoShare。也正是因为这个项目,能让我由浅而深的学习知识。
在这里插入图片描述
本项目的主要变动

1. 改名DikTok

本项目将改名为 DikTok ,意在Tiktok on Dapp。

2. 智能合约变更

前文里有讲解 videos状态变量albums状态变量,目前考虑当前版本中仅包含对 videos状态变量 完全实现,albums状态变量 仅做部分实现,功能不全。
前文讲解过IPFS上存数据和ETH上存数据的不同,经过纠结,现将所有的可变长字段,可以自定义机构字段全部放到IPFS上。主要包括原先的针对用户的昵称、简介、头像,针对视频的标题、简介、评论等。
用户结构体如下:

    struct User {
        string  user_hash;
        uint videoNums;
        uint albumNums;
        mapping (uint => uint) videos;
        mapping (uint => uint) albums;
    }

而user_hash 可以放一个在ipfs空间上的目录或者文件。


视频结构体如下

    struct Video {
        string video_hash;
        uint duration;
        uint timestamp;
        address payable author;
        uint commentsNum;
        uint gratuityNum;
        uint lableNum;
        uint16 language;
        uint8 permission;
        mapping (uint => Lable) lables;
        mapping (uint => Gratuity) gratuitys;
        mapping (uint => Comment) comments;
    }

video_hash 放ipfs空间上的目录或者文件。
具体的智能合约协议访问 https://github.com/bill080307/douyinWithEth/blob/master/DikTok.sol

3. 页面模块化设计

这一点其实一开始就想做的,但是限于技术能力一直没有实施,根据设计将完成部分模块设计再来统一页面。
1.UserCard
用户展示面板。
在这里插入图片描述
代码: https://github.com/bill080307/douyinWithEth/blob/master/src/components/UserCard.vue
2.VideoCard
视频展示面板:
在这里插入图片描述
代码:https://github.com/bill080307/douyinWithEth/blob/master/src/components/VideoCard.vue
3.CommentCard
截止本文未完成
4.PlayerCard
截止本文未完成
5.FunctionCard
截止本文未完成

原创文章 29 获赞 21 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43668031/article/details/103550182