尝试做个博客系统,比如Hive.blog(steemit.com),可以发布博客,可以修改博客文章,可以浏览查看博客文章,显示博客列表,当然,博客文章的内容是要存储在以太坊公链上。
这个博客系统主要是想将solidity和智能合约通过实践来融会贯通,因为是个人尝试去做,不可能做的像hive.blog(steemit.com)那样完整,只是实现其基本的功能即可。
首先第一个模块,也就是核心的博客新增、修改和获取,由三个函数功能来实现,分别为,
新增博客文章
修改博客文章
获取博客文章
我在使用 keccak256()时,发现提示出错如下,
TypeError: Invalid type for argument in function call. Invalid implicit conversion from string memory to bytes memory requested. This function requires a single bytes argument. Use abi.encodePacked(...) to obtain the pre-0.5.0 behaviour or abi.encode(...) to use ABI encoding.
按照提示将 keccak256() 修改为 keccak256(abi.encode())即可。
编译测试后,通过。
文章这里,原理比较简单,就是根据id和title来进行判断,其中id为用户的账号,title就是博客文章的标题,判断当前用户下是否已经存在该相同的文章(title),如果有则提示已经存在相应文章,没有则可记录录入,即同一用户下的文章名称不能重复;
修改文章这里,用文章名来进行查找文章,即当前用户下,根据文章名称来寻找,如果有则表示存在符合条件文章,反之则表示不存在该篇文章。
当然,以上只是作为自己学习和测试使用,实际中判断和具体实现要比之复杂些,但掌握了如上,举一反三,其实也都可以实现的。
智能合约的代码如下图,
下一步,我打算将 用户注册、登陆和博客文章系统结合起来,尝试去实现一个较为完整的基于以太坊的区块链博客系统。