Blockstack Dev 讨论 | 帮你少走弯路的教程在这里
一块链习是首家区块链技术学习社区,提供最系统的区块链技术课程学习,定期出品有深度的技术观察 + 评论。
《 Blockstack 从开发入门到技术实战》 是一块链习联合 Blockstack 中国技术社区负责人、底层代码贡献者 Gavin 老师共同打造的全球首个 Blockstack 开发课程。
Q&A
01
Q: 王扬:请问一个关于gaia的问题,除了每个人存储,可以有一个属于Dapp本身的存储开放给所有用户访问吗?如果没有一个公开的存储,好多功能设计起来有点困难。
A:Gavin 老师: 感兴趣的去访问 www.github.com/blockstack/radiks
02
Q:李林波:老师,我想问下区块链可不可以实现撤销付款,比如我预付款给你,但是最后因为其他原因,撤回这笔款项,或者类似的功能,但是不需要第三方介入,直接就根据某比交易的状态进行自动处理。
A:Gavin 老师:你这个问题看难点我认为有两个,第一个是撤回怎么实现、第二个是撤回的条件怎么确定。
Q:李林波:不是很懂区块链的具体作业方式,第二个的话可以生成一条交易状态信息,之后根据双方交易的操作进行状态变更,就和一般的电商订单类似。
A:奶哥助教 :通过智能合约应该很好解决这个问题。
A:Gavin 老师:撤回其实就是把付给智能合约的钱打回给自己。但是怎么判定什么条件需要撤回,什么条件能够交易成功,就比较难了。链下的方式不安全,有一些链上的治理方案,像 ETH 的一些预测平台,大一点的像 Augur 就是一个预测平台。
比如说在 Augur 上你可以赌今年湖人队能不能夺冠,然后湖人夺冠了之后会在链上发起投票,大于一定比例通过后,交易就按照比例分配,链上投票会有一定激励。
03
Q: 樊金辉:老师,我想问下,如果我想做文件存储和共享类的应用,比如一个百度网盘的Blockstack版,是不是得自己搭建gaia服务器才行。如果提供一种加密数据的存储服务,用户间分享文件或资料是否可以支持STX的支付呢?
A:Gavin 老师:先回答第一个问题, 数据定向分享会在4、5节课讲。第二个问题需要使用到智能合约,Stacks 2.0版本完全可以支持,但是现在测试网还没有上线,相关demo还没有。用原有的Gaia不好实现的原因你可以思考一下,主要是密码学加密解密的过程的问题。
Q:樊金辉:另外DaPP在PC端是否可以脱离浏览器呢?是不是只要引入Blockstack.js就行,比如我后面使用electron做客户端应该可行吧。
A:Gavin老师:可以,但是有个问题是怎么让用户授权,可能就需要本地的应用传token给你的客户端,这块你需要跑一下数据流,必要的时候还需要自己看一下Blockstack.js的实现方法。
04
Q:学俊:老师,我有一个问题,如果一个Dapp拿到用户的数据以后,再把数据隐蔽的(类似加密和伪装)发到自己的中心化存储中进行持久化,理论上这种操作可行吗?能限制这种操作嘛?
A:Gavin 老师:明文数据是可行的,密文数据是不可行的。比如说动物王国,全是明文数据,可以去存啊。但是如果是密文的就不行了,今晚解锁的第三课里面有这个例子。
05
Q:yy:后续A用户如果想在这个应用上获取数据,就从Blockstack上的zonefile得到profile里的A用户自己登记的gaiahub的地址和授权。每个用户都不一样,如果用户没有运行自己的gaiahub,就默认存在官方提供的gaiahub?
A:Gavin 老师:差不多,zonefile里面存着profile,profile里面存着gaia地址的前缀,只要改了这两块就行。
06
Q:小丹:如果我的数据现在是放在Blockstack的gaiahub上的, 后面我搭建了自己的gaiahub, 已有的数据可以迁移过去吗?
A:曹帅助教:可以的。
07
Q:Ting A Lin:刚就改了下readme和换了图而己,本地还跑得好好的,然后netlify自动更新部署github后就又有地域问题,但我_headers/_redirects没动过还在啊。
A:一休一休哥:让netlify自动部署GitHub的代码的话,正确的方法应该是加一个netlify.toml文件。
Netlify应该是会自动读这个文件,来解决跨域问题。如果你是拖文件夹来部署,每次你都要手动删掉之前部署的(因为你上次部署时已经用了那个网址),然后手动修改新部署这个的网址,很麻烦。
Q:Ting A Lin:好建议,有没有netlify.toml文件来参考下?确实每次手动有点麻烦...
A:一休一休哥:# The following redirect is intended for use with most SPAs that handle
# routing internally.
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
[[headers]]
# Define which paths this specific [[headers]] block will cover.
for = "/*"
[headers.values]
Access-Control-Allow-Origin = "*"
其实就是把CORS文件夹里面的东西放进去了。
和package.json同级目录。
08
Q:键盘弹肖邦的春树:markdown怎么绘图呢,VScode插件,用什么?
A:冯浩松助教:
https://draw.io/https://www.lucidchart.com/
https://www.lucidchart.com/pages/what-is-a-flowchart-tutorial 流程图教程
A:小丹:
https://www.processon.com/我是用这个画的。助教推荐的也很好。
09
Q:KuoYeh: 奶哥-助教 感谢您昨天的分享,学习到很多,BIP44的第四层change层能否麻烦您再说明一下,谢谢。
A:奶哥助教:首先你要理解找零的概念,就是在你花费bitcoin的时候大概率会发生一次找零。
在现实生活中 ,你用100块钱 ,买20块钱的东西 ,然后会把89找零给你一样 。在钱包里 会管理很多地址,这时候就可以通过第四层来划分这两种场景 。
作业点评
第一课作业
1.作业内容
2.一些坑
2.1网络问题:
打开Blockstack 浏览器速度缓慢,https://browser.blockstack.org/
nom install 出现如下错误
2. 2跨域资源共享 CORS
原因:当你打开动物王国的时候,你的Dapp去请求了Blockstack Browser的网站,就造成了“跨域”,这是一种浏览器的本地安全策略。
解决办法:
/animal-kindom/cors 下的两个文件
拖到 /animal-kingdom / build /下,这样可以简单的解决该问题。
需要注意的是,我们看它的源码 Access-Control-Allow-Origin: 意味着任何网站可以请求你的Dapp,这可能会有安全隐患(CSRF)问题。
通过指定站点,或者白名单,可以提高安全性,避免跨站请求伪造的风险。(对作业来说不需要考虑,生产环境是需要考虑安全问题的)。
CORS详细介绍:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
2.3 Netlify 部署
手动部署 与 Github 部署:
手动部署就是在本地build 之后,上传build文件夹到netlify
Github部署 Netlify读取你的Github repo 进行部署,比较推荐这种方式,后续更新了 repo之后,Netlify 会收到通知,站点也会自动build 并更新,这叫做持续集成 continuous integration ,比较方便。
持续集成详细介绍:https://juejin.im/post/ 58f9ee860ce46300611be392
第二课作业
1.需要注意的点
1.1 Readme
Readme相当于是一个项目的自我介绍,好的Readme文档清晰明了,可以立刻让人对项目感兴趣。类似于人的名片。
https://github.com/matiassingers/awesome-readme
Readme没有严格的规定 但是有好的例子 这里的链接发给大家学习。
1.2 流程图
通过我对同学们作业的观察,有些同学对于流程图的规范,不是特别清晰。
流程图教程:
http://www.woshipm.com/pmd/2860180.html
https://www.lucidchart.com/pages/what-is-a-flowchart-tutorial
我本人强烈推荐第二个 Lucidchart 的教程,简单易懂。
同学优秀作业点评
1. Blockstack-my-vote 投票项目
2. Blockstack-Youtube
这位同学明显是非常用心的完成了作业 还画了原型图。
在 Readme 中对执行结果进行了截图,这也是一份好的Readme的要素之一(对于本次作业)。
3. Blockstack_fontawesome代码点评:
UI可以使用开源的UI库,例如 material design, ANTD, Bootstrap 等等。代码中 重复的部分可以封装成组件使用。
看出一些同学对于 React 还不是特别熟悉,建议先跟着一两个教程,再进行作业,会轻松很多(也少走一些弯路)。
1.3 react
https://zh-hans.reactjs.org/tutorial/tutorial.html
https://www.html.cn/create-react-app/docs/getting-started/
更多阅读:
| Blockstack Dev 周记 | “Blockstack 是基础设施最完善的平台”
| Blocksatck Dev 分享 | BTC 钱包技术都在这里了
扫码关注公众号,回复“1”加入开发者社群