本系列文章是針對 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
截止本文未完成