查看原文
其他

第一届 Blocksatck Hackathon 赛后采访

一块+ 一块Plus社区 2020-11-11

一块链习是首家区块链技术学习社区,提供最系统的区块链技术课程学习,定期出品有深度的技术观察 + 评论。


5月16日至5月30日,第一届 Blockstack Hackathon 顺利举行,历时两周,共8个精英团队参赛。
 
作为《Blockstack从开发入门到技术实战》课程的结业考试,此次黑客松要求参赛者通过设计构思以及代码实现一个基于Blockstack的去中心化产品。旨在让大家在实战中更加深入地理解Blockstack技术栈与去中心化产品的联系,充分实践课程学到的技术知识。
 
此次大赛中,8个战队基于 Blocksatck 完成了 8 个项目,在这里我们对所有参赛项目信息做了个汇总。
 
 VisualNext 团队
VisualNext开发独特视频互动技术,结合人工智能、智能辨识、视频点击等,打破传统单面向的视频信息传递,藉由点击有兴趣的物件,并弹出物件的相关信息、购买页面等,达成视频的新维度——互动即是内容。
 
 密侃团队
一款私密聊天软件,希望帮助每位用户保护自己的信息交流隐私。
 
 C位出道团队
通过构建一个去中心化数据集市,通过区块链的加密性来保证数据的隐私,实现数据资产化。
 
 KnowStack 团队
真正掌控自己分享数据的去中心化知识分享平台,用户可以通过知识分享获取收益。
 
 D-Memory 团队
纪念逝去记忆的去中心化的Dapp,利用区块链技术防止数据被删除,几十年后,也许不经意找到几十年前存储记忆盒子,还可以拾起,回忆一番。
 
 Tally 团队
一个基于 Blockstack 的开源的去中心化记账平台。为用户提供安全的、自我掌控的账本解决方案,构建一个投资理财的生态。
 
 XBoard 团队
 
一个去中心化的任务管理/团队协作应用,在确保用户体验的同时,充分保护个人/团队的隐私。
 
 I-books 团队
去中心化书友的港湾,专注旧书转增,新书交易,阅读体验分享和在线阅读。
 

为保证评选的公正性和全面性,课程组特别邀请六位评委,从技术难度,产品完整度,商业价值等三个方面进行综合评估。

 
 
最终由沈国晔带领的VisualNext 团队,由春树,一休哥,王扬,Vivian 组成的Tally 团队获得亚军。


赛后,我们对两组团队进行了采访,希望给各位开发者未来基于Blocksatck 开发自己的去中心化应用带来一些启示。
 
                    

VisualNext

怎么想到要做这样一个项目的?


沈国晔:我们的项目是希望将区块链与视频结合,创造出更完善的视频生态系,请参考下图。
              
我们原先就有在做 to B的生意,有些营收,下一步希望能够将产品与区块链的技术做结合,让C端也能够来使用我们的产品,未来也希望能够跟智能合约做结合,创造更有趣的视频生态系。


在这次线上比赛,你是怎样安排进度的?

 
沈国晔:这次比赛为了能够提升完整度,我们的目标是将现有的产品与Blockstack做结合。

所以花了很多时间在调整开放环境与Production的环境上,包括MongoDB的架设,DB资料的备份,Architecture如何安排未来才能有最好的扩展性......等等,可以参考下图。

架构设计好后,Blockstack.js的文件很清晰,就像一般js库一般非常容易上手。
             

在比赛中过程中遇到什么困难是怎样克服的?


沈国晔:目前Radiks-server没有ssl ca, pem, domain的设定,因此目前只能与前端 code摆在同一台server, 如此会导致当很多人使用服务时, auto scale新机器时mongoDB会有问题。

目前只能将radiks-server 与 前端code摆在同一台server,如此若是流量大时还是会碰到以上问题,未来希望官方能提供radiks-server https设定让Dapp扩展性更好。
 


期待Blockstack 接下来有哪些改进?

 
沈国晔:
a. radiks-server https的支持。
b. 国内能够正常使用Blockstack服务,不需VxN。
c. 智能合约与Blockstack.js之间的连接更完善,才能让我们创造更有趣的Dapp。
 


这次用Blocksatck 开发是一种什么样的体验?有什么收获?


沈国晔:体验非常好,就像是使用一般前端的library一样,只要熟悉Javascript就可以上手,收获也非常丰富,除了Blockstack之外,也学习到很多区块链与密码学的相关知识,未来更能够将去中心化与可信机制运用在产品开发当中。
 
 

Tally


怎么想到要做这样一个项目的?


春树:我们每个人都提出了几个项目。但这些项目都没有引起某种共鸣。当提到家庭账本的时候,全小组成员,似乎都比较赞成。毕竟是一个具有强实用性的应用。
 
只有10几天时间,目前感觉也只有记账本容易实现一些。利用Blockstack的应用在mychart上也验证。当时看技术储备基本上是足够的。
 
区块链的本质就是一个账本,我们想要做的也是一个账本。它基于Blockstack id来实现去中心化的账本,记账人无需担心账本会泄露给中心化平台,因为账本掌握在自己的手里。
 
让我们期待 Tally change our life change our world。



在这次线上比赛,你们是怎么分工的?


春树:毕竟陌生刚组建团队,很多东西只能猜测去了解团队成员喜好和技能。
关于分工,大家也没有详细商议,只是初步根据相关了解,猜测大家熟悉技能,做一个简易分工,随时调整。

主要是这样:
一休哥:产品经理,负责原型设计、商业计划、产品测试。
vivian:logo设计。
春树:组长,负责全面统筹,包括产品落地、代码实现。
王扬:负责业务逻辑代码实现。


确定了项目后,进度是怎样推进的呢?


春树:首先是数据结构定义。程序其实就是处理数据,我们需要解决什么样子数据。最终我们四处找例子,一休哥不知道在哪儿编了一个JSON做完参考。你一言我一句的,我们最终敲定了应用基础与边界————数据结构。
 
接下来是原型设计。最终原型设计一休哥做一个PPT完成了。说实话就现在看原型图其实比后面项目落地呈现要好得多,更加清爽一些,不杂乱。
 
             
 
vivian设计出来了第一个logo,挺漂亮的,break even寓意也不错,收支相抵(某种意义上是记账精髓),也是目前正在使用logo。某种意义上Tally项目名字也是源于这个logo。
 
             
 
然后是设计流程,因为前一段时间作业不断练习流程图,几分钟就搞定了流程图。我们这个项目目前看实用需要基本放弃了radkis(也可能是为了偷懒)。如果不是为了团队项目方便交流,这么简单流程基本可以不画。
              
下面就是开始代码用实现PPT了。

 

为了节约时间,我选择了“开箱即用”的antd Pro。当我利用可视化模块编程,东拼西凑的,把几个页面给拼出来。结果发现布局到页面,搭配Blockstack用不了。

最终也只是弄出来一个设计原型。当然我现在知道死在什么地方了,antd Pro要配合dvajs使用。王扬看了代码第一版后,直接表示这是什么JS语法。
 
既然antd Pro搞不了,就放弃这个Pro吧,用UMI创建,直接自己组装加个路由。中途还通过Real同学在语雀上找了本老版antd教程,一边看一边学搭建。平时都是学的antd官方文档很多地方并不是十分细腻。其实最终还是死在了dvajs上。
 
当时为了解决下级组件向上级组件传递数据问题,还写了一段radux的代码。但是因为自己手写回调解决传递问题了。就没用现成的store。
 
开启B计划的时候,距离截至日只有7天了。而且我们不可能有大块时间来写代码。逻辑层各种功能实现代码当时还不方便去写。
 
只能布局——>页面——>组件,一个一个套起来写,目录都不知道分了几层了。最终新的架构push了。活脱脱的一个俄罗斯套娃(在一些私下交流中,我也拿着项目计划书,找人提一些意见,听到最容易理解的话,就是这个我能看懂。)
 


在比赛中,遇到了什么问题,是怎么解决的呢?


春树:上面那些坑基本是围绕数据传递一些基本问题,当正式开启了Blockstack gaia的应用的时候,还是遇到一些问题。

比如权限,publish_data.在作为技术验证时候mychart套用模板,没出什么问题,结果tally全新“架构”不行了。找了好久没发现问题。最后在高老师提醒下找到问题结症。还是需要复习。
 
另外还有loading的坑,这个关键坑一直坑了我好久,listfile判断也用了,putfile前提判断也用了,都无效。最终在冯教提醒下,加入异常机制,一句error搞定了,这还是基础薄啊。
 
最后还有头像url的坑,至今未解决。到底什么引入有问题?才能让person正常化。
 
页面十几天,逻辑2小时。经过不停的填坑,最终页面这块的录入,显示,保存上传没什么问题了,最后我和老王合计合计统计层面上的逻辑,2小时搞定了。

页面代码量大冗长,需要思考的地方不多,逻辑代码主要需要思绪清晰,细节细分,烧脑。不过我们这个项目这些逻辑还算简单。
 
最后commit,在弄图形展示和老王的下载功能后,基本上这期项目计划书需要实现功能我们基本上全部完成了(部分日期,类别搜索功能其实我们没实现,但是我回去把项目计划书给改了)。

还加上了real同学建议的搜索清除功能。虽然类别自定义功能感觉很不人性化(让用户自己改JSON)但是也有啊。
 
但是整个项目终于不算只是停留在PPT上了,我们做出来了雏形。


期待Blockstack 接下来有哪些改进?


春树:Blockstack官方是否可以做一个统一广告推送插件,让开发者自己选择接入或启用。本身Blockstack上面的dapp开发者基本都是一些中小开发者,在早期让他们实现一个盈利循环体系其实是困难的,如果官方或者抱团形成类似成熟广告推送模式。
 
一休哥:在这期间我在官网注册的BlockstackID丢了,从浏览器里无法加载出来之前注册过的账号,由于之前没有备份该账号的信息,如何让用户能够快捷地找回账号?或者更加友好地引导用户进行账号备份以免账号丢失?
 


这次用Blocksatck 开发是一种什么样的体验?有什么收获?


一休哥:基于Blockstack的开发非常方便,如果有前端开发经验,可以说上手无门槛。
 
从这次开发过程中,我了解了基于Blockstack进行Dapp开发的流程,可以独立进行一些简单Dapp的开发。
 
春树:三个产品经理带一个后端工程师开发纯前端应用。 我不知道什么时候总是用这句话自嘲。好歹我们最终把这个项目初步实现了,并没有停留在图纸上。
 
纵观整个项目,还好是我们起初路线清晰,目标明确。这个目标其实一早我们就定好了。我们一步一步走过了,很多时候其实我也想过放弃,但是这么简单一个项目自己都放弃了,我一直害怕这个项目最终只是一个PPT。
 
万事其实只要做了,总可能由0变1的,如果不做,那永远就是0。经过一段时间学习与练习,这次培训我有很多的提高。希望小伙伴在未来生活、工作、学习中有更多提高。
 

TO BE CONTINUED

第一届Blockstack Hackthon 挑战赛结束了,团队仍在继续开发和完善自己的产品。这也是我们的初衷,这只是一个开始,希望未来能看到你们的去中心化应用正式上线!





更多阅读:

央行数字货币(DC/EP)技术的无责任猜想

Blockstack Dev 周记 | 让数据隐私回归个人

Blockstack Dev 分享 | Web3.0时代的数据主权

扫码关注公众号,回复“1”加入开发者社群


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存