查看原文
其他

Blockstack Dev 周记 | 拿好DID,出发下一代互联网

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

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


为了让更多华人能够入门区块链开发,开发出一个属于自己的去中心化应用。Blockstack 中国技术社区负责人、底层代码贡献者 Gavin 老师和一块链习共同打造全球第一档《 Blockstack 从开发入门到技术实战》课程。


我们基于课程发起了一个每天围绕一个「Blockstack」话题讨论的线上打卡活动。第一期课程已经进行到第三周,我们将第二周同学们的优质打卡内容分享给大家,一起来看看他们的精彩观点。


Day 06

圈外的开发者想进入区块链,你认为需要考虑哪些问题?为什么呢?

学俊:理解去大中心化的思想,先能接收这种认知后,再去学习摸索可能会比较适合切入。我的感觉是如果不理解就容易抓不到核心,这种情况下学习再多也赶不上新出的框架过技术。

青豆:首先应该知道区块能未来做哪些改变,认可这种新的系统机制没有,然后去找一些靠谱区块链公司去尝试一下吧,最后确定自己的目标和价值观,然后好好工作,天天学习。
 

Day 07

共识机制有哪些?是否有完美的共识机制?可以分析下优缺也可以结合Blockstack项目来具体分析。

 
一休一休哥:区块链中,常见的共识机制有POW(工作量证明:多劳多得)、POS(股权证明:持有越多,获得越多)、DPOS(股份授权证明)等等。
 
这些共识机制都意在解决特定的问题。比如POW门槛极低,只需要有矿机,就可以参与共识,它更注重的是去中心化与安全,缺点也是明显的,那就是性能低而且能源消耗大。

POS以及由其演变而来的DPOS看到了POW性能问题,参与记账有准入门槛,记账人少了,在一定程度上提升了共识达成的时间,但同时带来的问题牺牲了去中心化,与区块链思想相悖。
 
Blockstack结合了POW与POS的优点,独创发明了POX(Proof of Transfer)共识,具备一定阈值以上的STX HODLER,可以将其持有的STX锁定一个周期(以支持矿工的工作),来参与网络的共识,并指定一个比特币地址来收取(来自矿工给予的)奖金。
 
不过POX是在Stacks Chains 2.0中的实现,目前还未上线,该共识机制还有待观察。
 
没有完美的共识算法,只有根据不同的诉求,寻找一个平衡,不同的场景,使用更加合理、安全的共识算法,比如 Layer 1的公链,我认为就应该是POW的,保证资产安全和完全去中心化的。

Layer 2上的链,可以在性能上做多种尝试,以满足其丰富的商业应用场景,为了确保资产安全,Layer2 可以把其核心重要的数据存回Layer 1上,因为Layer 1足够去中心化和安全。
 
李林波:如同没有任何一个系统是安全的一样,也没有任何一个共识机制是完美的。
 
POW:干的越多,收的越多。
POS:持有越多,获得越多。
 
现实情况应该结合具体场景来选择有利的机制,而且新的共识机制也在发展。Blockstack新的共识在某种程度上加强了 STX 持币者对于整个系统生态的重要性,对成为Blockstack节点的用户应该挺有意义的。
 
KuoYeh:

POS:优点:快速,TPS好,缺点:缺少挖矿的成本,coin价值较难评价。

POW:优点:有挖矿成本可做coin基本价值,缺点:耗能、通常TPS不高。

Blockstack做为web2.5的概念,让user感觉能有中心化服务的速度,又能有去中心化的隐私。
 
Jason:共识机制有POW、POS、DPOS等等,不同的共识机制各有优缺点,Blockstack使用的是比特币网络,采用的是POW共识,提供了足够的去中心化,但是牺牲了性能,有大量能源消耗。

POS通过抵押数字货币获取打包算力,不需要拼算力,但容易造成大户持币拿利息,不利于流动性。DPOS是在POS基础上,所有持币人可以投票原则少数节点,来代表完成交易验证和打包,优点是得到更高的性能,但对去中心化做出了妥协。
 
 
 Day 08

课程已经进行快两周啦,你感觉Gavin老师讲课怎么样呢?这门课程内容是否达到你的预期?

 
一休一休哥:Gavin老师耐心,很有亲和力,声音也好听,技术过硬,不愧是第一个来自中国的Blockstack员工。这门课程循序渐进,深入浅出,稍有一点技术背景,我觉得学起来不会吃力。
 
在课程安排上,也是考虑到了上班族的时间,很合理。我都是晚上来学习,打卡,觉得很充实。
 
签到提到的开放性问题,也是非常非常棒的话题,这可以让学生打开思路,把想法记录下来,很有意义。
 
建议方面的话,目前还没有哦,因为老师们都做得超棒~
 
王扬:讲的很好,条理清晰循序渐进。希望了解下比特币之上的那一层Blockstack虚拟机的原理,是如何和比特币交互的,以及做了怎样的设计,使得这个设计能够扩展,更换不同的底层链。

 
Day 09

DID是Blockstack中的重要角色,可以介绍一下什么是DID?它为什么重要呢?在Blockstack中如何使用?


一休一休哥:DID,全称为Decentralized Identifiers,去中心化的身份,其本质是一种自主权身份(SSI:self-sovereign identity),它是下一代互联网的最重要的基础设施之一。
 
DID是建立在一个分布式点对点网络下的个人数字身份,当网络中的每个点建立连接,交换凭据并使用分布式账本验证收到的凭据上的数字签名时,就相互建立了信任。

你可以控制与他人共享的内容,无论是整个凭证,还是部分凭证(称为“声明”) ,或从凭证中衍生的零知识证明(ZKP)。你将真正成为你的SSI钱包以及钱包中各种凭证的主权所有者:没有人可以在未经你的同意下将它们拿走
 
在这样的网络中,我们的信息、资产将由自己来掌控,我们的信息都使用自己的私钥加密,没有私钥无法打开、查看,任何应用想要获取我们的信息,需要得到我们的授权。

我们来决定谁可以查看我们的信息,谁可以使用我们的信息。在这样的网络里,我们的身份DID有了一种全新的定义——自我主权身份(Self-Sovereign Identity,SSI)。
 
就像人们通过一纸出生证明开始物质生活一样,人们也应该通过自主权身份开始数字生活。Blockstack ID,就是起点,广义的Blockstack ID它不只是一个标识,它是你的用户身份,它包括了你在网络中的足迹、数据,这些数据,都是与侠义的Blockstack ID(就是一个标识)关联的。
 
李林波:DID 旨在形成 Web3.0 时代数字身份的标准规范。

DID 分布式身份(Decentralized IDentifier),它表示全球唯一的标识符,不需要中心化的注册机构,它通过分布式帐本技术(Distributed Ledger Technology,DLT)或其他形式的去中心化网络进行注册。DID 提供了一种新的数字公民身份,由个人自主控制。
 
Blockstack中利用DID作为公钥的唯一标识符。公钥可能会改变,但是DID唯一不变。BNS中的每个名称都有一个关联的DID。BNS的DID格式为:
did:stack:v0:{address}-{index}
Where:
* {address} is an on-chain public key hash (e.g. a Bitcoin address).
* {index} refers to the nth name this address created.
 
学俊:DID查到是指分布式身份。更类似一套标准。类似现在的三方登录一样,大家如果按照标准来完成身份认证,会提高效率自己打破数据孤岛(例如我们以后只用身份证就可以直接办理所有业务,而不是用身份证再去注册等等)。
 
亚东:DID就是分布式身份验证,它通过比特币这类非对称加没加的形式来将用户身份跟用户数据做绑定。通过这样的密码学机制来完成数据的加密。

它的重要之处在于数据由于非对称加密解密的方案完成中心化系统与数据非中心化保护。Blockstack就是基于DID的,Blockstack brower 以及比特币地址完成DID这样用户身份数据的处理。
 
KuoYeh:以往身份系统由中心化机构决定,身份不是由用户自己控制,Gaia实现了基于Blockstack DID体系下的私有数据存储。
 
Jason:DID是去中心化身份,它是Web3.0发展的重要实践。它的重要性体现在:允许用户完全控制其数据,保护其隐私。在Blockstack中,Blockstack ID就是DID的体现。


Day 10

Blockstack发明了一个新的智能合约语言Clarity,那么,Clarity有哪些特点呢?与Solidity有哪些区别?

 
青豆:Clarity听说具有可提前预测性能,漏洞等,减少了后期的不缺定性,和后期出现bug的处理复杂性。solidity图灵完备,但是出现攻击和漏洞处理起来特别复杂,缓慢。

发布新的语言对Blockstack长远考虑是好的,短期是具有挑战的。Blockstack目标就是一个长远的发展考虑,走的很稳,希望一切入大家所想,厚积薄发。优势慢慢提现出来!
 
一休一休哥:Clarity是Blockstack2.0的智能合约语言,据说它最厉害的地方,是通过数学的方式,在你在开发,并且发布智能合约之前就告诉你,你的智能合约到底有没有问题(性能、开销、安全性),可以说是一种非常精确的语言,可以避免开发人员踩坑,大大减少合约审计成本。
 
Clarity 是一种可判定语言,如果你可以确定地从代码本身知道程序将产生怎样的执行效果,那么这种编程语言就是可判定的。Clarity 有意被设计为图灵不不完备,因为它避免了“图灵复杂性”。

这与Solidity不同,后者是不可判定的、图灵完备语言,图灵完备性指,具备顺序、判断和循环三种执行逻辑,并能够在理论上能够实现所有复杂计算的算法的性质,因此容易受到循环逻辑炸弹等类型的黑客攻击。
 
不过,开发语言对于平台来说,是把双刃剑。因为如果不单独设计一个新的语言、VM,可能就无法满足自己的需求,至少受现有语言的束缚;不过这样带来的问题是,增加了开发者的学习门槛。有没有可能使用现有的语言(如Rust)来编写智能合约?通过IDE工具来给智能合约做这样的检查?
 
KuoYeh:类似lisp语法,主要是设计让开发者避开智能合约最常见的合约漏洞,solidity很难做到随机性,clarity可用vrf ,clarity合约code有node发布并执行,不会有EVM这样的中介进一步弱化错误发生。
 
Jason:Clarity是一种可判定、解释性的语言,其语义能让我们更清晰地窥见智能合约的行为、开销与性能。Solidity,是一种不可判定的语言,不可能准确地知道合约准确的执行情况,容易出现漏洞。


识别小程序,阅读完整优质话题讨论,
还能一起参与打卡哦!



更多阅读:

Blockstack Dev 分享 | 最详细DID身份授权流程

Blockstack Dev 讨论 | 帮你少走弯路的教程在这里

Blockstack Dev 周记 | “Blockstack 是基础设施最完善的平台”



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


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

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