查看原文
其他

Blockstack Dev 讨论 | 形成商业闭环,让项目真正落地

一块链习 一块Plus社区 2020-11-11

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


《 Blockstack 从开发入门到技术实战》 是一块链习联合 Blockstack 中国技术社区负责人、底层代码贡献者 Gavin 老师共同打造的全球首个 Blockstack 开发课程。



目前第一期课程已经进行到第四周,同学们会在班级群讨论学习中遇到的难题或不解。另外每周六晚 8 点,都会进行课程内容知识拓展——作业点评会和在线答疑。

现在将第三周班级群日常优质的讨论内容和曹帅助教对第 四 课的作业点评分享给大家。


Q&A


01

廖师虎:现在创建群组一直出现这个,再也没成功过。

       

        

Gavin老师:首先确保mongodb是空的,

       

        

然后npm install 再 npm start启动radiks-feature-usergroup 分支的demo,打开之后发现应用可以直接打开,不需要登陆。

       

       

这个是因为浏览器中存储了我们第五课feature-radiks demo的账户数据,但是此处对应的mongodb还是空的。

       

       

因为需要经过登陆流程才能执行 const currentUser = await User.createWithCurrentUser();语句,将用户信息写入radiks-server,那如果这个时候我们尝试着建立分组Blockstack。

       

       


就会出现图中右下角的报错,因为radiks-server里面没有这个人,导致了浏览器localstorage里面的信息和radiks-server里面对不上,所以就报错了。

 

这个错误也同样会在邀请其他用户这里出现,比如你想邀请gavin.id,但是gavin.id从来没向radiks-server写入过自己的用户数据,所以无法完成分组邀请。这个背后的原理是需要用到gavin.id的公钥来生成新的钥匙,这个在第四节课定向授权分享和第六节课的usergroup流程图里面都有讲过详细的流程。

 

那么这时候需要登出并清理内存。


               

清理过后会出现一个error,重新刷新一下就可以。error是由于react里面的userSession突然被我们删掉了导致的。


               

登陆流程就不说了,登陆过后可以去看一下mongodb。

       

        

多了一条BlockstackUser的条目,这就代表这个用户可以创建分组并且可以被邀请了。

       

    

 

再进行创建的时候就会在调试窗口看到整个创建的流程了,没有报错了。


               

最终状态为上图,创建成功之后会在上方新建出一个分栏。

       

        

最终的mongo图,里面多了一个UserGroup,就是第六节课末尾讲的那个Model。

 

02

KuoYeh:开发时,发现必须要nginx设置cors为*,才能登入,这样安全上会有疑虑,有没有cors要allow那些网址的列表,只将cor开放给这些网域,增加安全性.

 

Gavin 老师:可以。因为现在Blockstack只有两个钱包链接,一个是browser.blockstack.org,再一个就是localhost:8888,你把这两个allow就可以了。

 

03

亚东:POX,POB都没听过,Blockstack也发过币么,有这两个共识算法的资料么?

 

雅珣班长:https://github.com/blockstack/stacks-blockchain/blob/develop/sip/sip-001-burn-election.md 对proof of burn 提案感兴趣的可以看这个 SIP001 POB提案。

 

https://mp.weixin.qq.com/s/NtFBtolLjYMyeia8G1_ZOA

 

https://github.com/blockstack/stacks-blockchain/tree/develop/sip  Blockstack SIP 提案仓库。

 

https://github.com/blockstack/stacks-blockchain/blob/develop/sip/sip-007-stacking-consensus.md Blockstack SIP 007 POX提案。

 

04

rzexin:我在激活验证码时,遇到这样的错误,不知是啥情况呢?

            

Gavin 老师:说明你localstorage里面没有对应usergroupid的密钥。             

可以去这里面看一下有关localstorage里面的信息。

 

rzexin:噢,要怎么才会有呢?

 

Gavin 老师:这块我认为是比较难理解的,我代码里面写了个usergrouprecord类,正常流程操作是会有的。

 

rzexin:噢,是不是必须得用'radiks-gavin-test'才行?我改成radiks了.

 

Gavin 老师:用radiks-gavin-test吧,这个版本暂时要比官方的新一点。

 

06

春树:TypeError: Class constructor BaseWidget cannot be invoked without 'new'

这种错误一般配置在什么地方啊?

 

冯浩松助教:看描述 实例化 BaseWidget 的时候要用 new 关键字。

 

Gavin 老师:有一种可能,就是你的产品的域名变了,比如原来是127.0.0.1:3000,现在变成了localhost:3000,这两个域名对应的密钥是不同的。也有可能是你的端口因为占用的原因变成了3001,这也会导致钥匙变了。

 

07

 

樊金辉:

             

奇怪 运行Blockstack_demo,一直报这个错,无法保存。

             

mode.js 的 sign函数出错,这是为什么?

 

Gavin 老师:我遇到过。

 

樊金辉:貌似和无法获取signKey 以及group有关,我点击下面的创建group,报错发生了变化。

 

另外发现一个经常遇到的问题是登录比较慢,我注销后重登录,刷新页面过了几分钟了,还没出先选择id的界面。

 

Gavin 老师:这个问题有可能是被墙了,你单纯save也会遇到这个问题吗?

 

樊金辉:是的,单纯save 也会。我本地做的改动是替换了id

 const message = new Message({

      from : "gavin.id",

      content : "I love Blockstack",

      flag: true

    });

把from的值替换为我的id,没做其他修改。

             

发现数据库多了一条记录,包含有signingKey的信息,只是目前登录还在loading。

 

Gavin 老师:你这个问题是因为你的localstorage里面没有radiks想要的钥匙导致的,第六节课有讲到这个问题。

 

樊金辉:可以了,fanqiang后可以登录了,目前也可以发布了,不知是不是我点击下面的createusergroup有关。


             

 

Gavin 老师:是的,有些按钮是我做测试用的。

 

 

 

作业点评


作业内容

第四课的作业相对上几次比较开放,让大家去分析研究基于 Blockstack 开发的应用。

 

优秀作业


.01 江华

江华同学选择了 xordrive 来分析,分析很细致,认真使用了产品,也留意到了应用和 gaia 的交互细节。

 

尤其是在网盘的行业痛点分析中,结合了互联网行业中网盘产品的发展背景给出了自己的看法。

              

总结的很好,这里可以尝试用不同的商业思路去分析,去中心化的储存有哪些机会。如此去想,那么像 ipfs 或者 sia 这样的项目就是我们需要对标或者思考的产品,而不是中心化的百度云等等。


在思考或者构思产品的时候就不会被现有的模式局限了思维。

              

这里江华同学提到了上述两种分布式存储的项目,现在的项目其实也面临着如何商业化落地的问题。虽然有代币经济,也有治理结构,但整体在产品层面还没有形成商业闭环。


基于 Blockstack 开发的应用,在技术和用户体验的优势之外,如果加上智能合约。还是有很多可行的商业模式的。


扩展思路 

- 智能合约作为最简单的账本,可以帮助使用者与服务提供者或使用者之间结算。

  

- 从产品角度,是打通了产品支付和结算的这一层,让收费更简单。

  

- 回到之前的商业模式里,我们其实可以让现如今百度的一些第三方分享出售的资源站的流程和产品整合起来,提供一个能分享收取结算费用的平台。

  

- 还可以通过智能合约实现资源交易或资源悬赏等更有趣的玩法,开发者的盈利模式就是在这些交易中抽取一部分作为服务费即可。

 

.02廖师虎

               


廖同学很用心的把产品流程图画了出来,清晰的标注了应用的整个业务流程时序图。

 

选择了 sigle 产品,是一个去中心化的 Blog 应用,他认为 去中心化的 Blog 可以解决不同平台的内容引用问题。

             

在基于智能合约的商业模式上也有不错的建议,因为之前有设计和实现过一个去中心化的内容工具和内容平台。

 

拓展思路

- 去中心化 Blog (Sigle)其实相当于帮助用户快速搭建一个自己的内容展示工具,不用担心审查和内容丢失的风险。但实际上 Blog 作为一款工具类的应用,比较难产生不错的商业模式,如果能做成类似于 WordPress 的网站解决方案,也算是一个不错的选择。

 

- 再一个方向就是成为去中心化内容平台,其抗审查的特点,是优势也是劣势,如果我们想做一个内容平台,在思考产品形态的时候一定要想清楚产品和其他互联网产品不同的地方。


那么对于一个去中心化的 Blog 平台,我们首要的就是发挥其不受审查的优势,但同时要能够引入一些去中心化的审查机制,因为并不是所有的内容都是符合普世价值观的。

 

在这里,智能合约能做什么呢?

 

可以帮我们完成激励和惩罚的记账,同时我们可以尝试着设计一套用户参与的审查机制,来保证去中心化的 Blog 的内容在有限度的范围内内容自由。通过投票或者抵押的方式,来保证用户产生的内容有价值。

 

总而言之,分析产品的同时,也要去思考产品为什么会出现,如果没有 APP mining ,产品如何通过正向的现金流维持自身的运转,在技术方案有一个明确的目标之前,先去思考清楚产品的商业逻辑。


每一课作业都由助教批改并评选出优秀作业,第四课的优秀作业名单如下:




更多阅读:

Blockstack Dev 周记 | 区块链的精髓在这些白皮书里

| Blockstack Dev 分享|DID的前世今生看这篇就够了

Blockstack Dev讨论 |提升DApp用户体验 


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


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

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