本系列文章是针对 https://blog.csdn.net/weixin_43668031/article/details/83962959 内容的实现所编写的。开发经历包括思考过程、重构和推翻重来。
到目前为止,已经完成了智能合约的编写,主要分为结构体的定义和操作方法的编写,
一共有7种结构体:
结构体 | 含义 |
---|---|
User | 用户 |
Video | 视频 |
Videofile | 视频文件 |
Comment | 评论、弹幕 |
Lable | 标签 |
Gratuity | 打赏记录 |
Album | 专辑 |
一共26种操作方法:我把他们分成4个类别
操作分类 | 方法 | 作用 | 备注 | 参数 | 返回 |
---|---|---|---|---|---|
用户操作 | setMyInfo | 设置我的信息 | setMyInfo(昵称,简介,头像) | 无返回 | |
用户操作 | setMyNickname | 设置我的昵称 | setMyNickname(昵称) | 无返回 | |
用户操作 | setMyProfile | 设置我的简介 | setMyProfile(简介) | 无返回 | |
用户操作 | setMyAvatar | 设置我的头像 | setMyAvatar(头像) | 无返回 | |
用户操作 | getUserInfo | 获取用户信息 | 无需消耗 | getUserInfo(用户地址) | nickname=昵称, profile=简介, avatar=头像, videoNums=用户发布的数量 |
视频操作 | publish | 发布视频 | publish(标题,封面,视频信息,视频介绍,时长,文件对象,文件信息,大小,宽度,高度,帧率) | articleId=视频id | |
视频操作 | setVideoPermission | 设置视频权限 | setVideoPermission(视频ID,权限数值) | 无返回 | |
视频操作 | setVideo | 重新设置视频封面和视频信息 | setVideo(视频ID,封面,视频信息 | 无返回 | |
视频操作 | setVideoInfo | 重新设置标题和视频简介 | setVideoInfo(视频ID,标题,视频信息) | 无返回 | |
视频操作 | addVideofile | 添加一个视频文件 | addVideofile(视频ID,文件对象,文件信息,文件大小,宽度,高度,帧率) | 无返回 | |
视频操作 | setFilePermission | 设置视频文件的权限 | setFilePermission(视频ID,文件ID,权限数值) | 无返回 | |
视频操作 | getVideo | 获取视频 | 无需消耗 | getVideo(视频ID) | title=标题, cover=封面, videoinfo=视频信息, info=视频简介, duration=时长, timestamp=时间戳, author=作者地址, commentsNum=评论数量, gratuityNum=打赏数量, gratuitySum=打赏总金额 |
视频操作 | getVideoFile | 获取视频信息 | 无需消耗 | getVideoFile(视频ID,文件ID) | filename=文件地址, fileinfo=文件信息, size=大小, width=宽度, height=高度, fps=帧率, fileNum=文件个数 |
其他内容操作 | makeLable | 创建标签 | makeLable(视频ID,标签) | 无返回 | |
其他内容操作 | getVideoLable | 获取标签 | 无需消耗 | getVideoLable (视频ID,标签ID) | lable=标签内容,times=标签次数 |
其他内容操作 | makeComment | 发布一个评论/弹幕 | makeComment(视频ID,视频时间,评论内容) | 无返回 | |
其他内容操作 | changeCommen | 修改评论/弹幕 | changeCommen(视频ID,评论ID,视频时间,评论内容) | 无返回 | |
其他内容操作 | getVideoComment | 查看评论/弹幕 | 无需消耗 | getVideoComment (视频ID,评论ID) | content=内容, timestamp=时间戳, videotimestamp=视频时间, author=作者地址 |
其他内容操作 | reward | 打赏 | 需要指定金额 | reward(视频ID) | 无返回 |
其他内容操作 | getGratuitys | 查看打赏 | 无需消耗 | getGratuitys (视频ID, 打赏ID) | author=作者, gratuity=打赏数量 |
专辑操作 | createAlbum | 创建专辑 | createAlbum(专辑标题,封面,专辑信息) | albumnum=专辑ID | |
专辑操作 | editAlbum | 编辑专辑 | editAlbum(专辑ID,标题,封面,专辑信息) | 无返回 | |
专辑操作 | createAlbumVideo | 插入视频 | createAlbumVideo(专辑ID,视频ID) | videonum=视频的专辑序号 | |
专辑操作 | updateAlbumVideo | 更新视频 | updateAlbumVideo(专辑ID,专辑序号,视频ID) | 无返回 | |
专辑操作 | getAlbum | 获取专辑 | 无需消耗 | getAlbum(专辑ID) | title=标题, cover=封面, info=信息, author=作者, videonum=视频数量, durationSum=持续时间 |
专辑操作 | getAlbumVideo | 获取专辑内的视频 | 无需消耗 | getAlbumVideo(专辑ID,视频的专辑序号) | videoId=视频ID, title=标题, cover=封面, videoinfo=视频信息, info=视频简介, duration=时长, timestamp=时间戳, author=作者地址, commentsNum=评论数量, gratuityNum=打赏数量, gratuitySum=打赏金额 |
上述两张表格包含了合约全部的信息(header),相当于SDK的概念了,在前端应用或者和合约交互的时候需要注意这些方法
注:其中表格备注栏中,“需要指定金额”,指的是打赏金额,在调用合约时需要额外传入费用参数,当然可以打赏0元,付一个手续费,就是赞。
“无需消耗”,一般是get方法,从区块链中读取数据,这不需要消耗手续费。
其余方法都是需要消耗手续费的,需要向区块链中写入数据或者更改数据。