1703875586
区块链项目开发指南 1.2 去中心化自治组织
1703875587
1703875588
一般来说,被签署的文件可以代表组织,而且政府能对它们产生影响。根据组织类型的不同,组织可能有股东,也可能没有股东。
1703875589
1703875590
去中心化自治组织(Decentralized Autonomous Organization,DAO)是由计算机程序代表的组织(即组织根据程序中写明的规则运行),完全透明,完全由股东控制,不受政府影响。
1703875591
1703875592
为了达到这些目标,我们需要把DAO作为DApp来开发。因此,我们可以说DAO是DApp的一个子类。
1703875593
1703875594
Dash和DAC是DAO的一些例子。
1703875595
1703875596
1703875597
什么是去中心化自治公司(DAC)?
1703875598
1703875599
DAC和DAO尚无很明显的差别。很多人认为它们是一样的,有些人则在DAO为股东谋取利益时将DAC定义为DAO。
1703875600
1703875601
1703875602
1703875603
1703875605
区块链项目开发指南 1.3 DApp中的用户身份
1703875606
1703875607
DApp的主要优点之一是它一般能保证用户的匿名性,但是许多应用要求用户必须经过身份验证这个过程才能使用应用。因为DApp中没有中央机构,验证用户身份成了一个挑战。
1703875608
1703875609
在中心化应用中,人们要求用户提交特定的扫描文件、OTP验证等,再验证用户身份。该过程称为Know Your Customer(KYC)。但是由于DApp中没有人负责验证用户身份,所以DApp不得不自己验证用户身份。DApp显然不能理解和验证扫描文档,也不能发送短信,因此需要用户提供那些它们可以理解和验证的数字标识。主要问题是几乎没有DApp有数字身份,只有少数人知道如何得到数字身份。
1703875610
1703875611
数字身份有多种形式。目前最受推崇、最热门的形式就是数字证书。数字证书(也称为公钥证书或者标识证书)是一个用来证明公钥所有权的电子文档。基本上,一个用户拥有私钥(private key)、公钥(public key)和数字证书(digital certificate)。私钥是秘密的,用户不应当与其他人分享;公钥可以与其他人分享;数字证书包含公钥和谁拥有公钥的信息。显然,生产这种证书并不难,因此数字证书总是由用户可以信任的授权机关颁发。数字证书有一个加密部分是用证书颁发机构(certificate authority)的私钥加密的。为了验证证书的真实性,我们只需要使用证书颁发机构的公钥解码该部分,如果成功解码,那么证书就是合法的。
1703875612
1703875613
即使用户成功获得了数字身份并得到DApp验证,还是有一个关键问题,那就是有各种各样的数字证书颁发机构。为了验证一个数字证书,我们需要该证书颁发机构的公钥。掌握所有证书颁发机构的公钥、更新/添加新的证书颁发机构的公钥是很困难的。因此,数字身份验证程序通常在客户端里,这样可以方便更新。但仅把验证程序转移到客户端并不能彻底解决问题,因为有很多颁发数字证书的机构,跟踪所有机构并把它们加到客户端是很麻烦的。
1703875614
1703875615
1703875616
为什么用户不验证彼此的身份?
1703875617
1703875618
在现实生活中,用户做交易时,通常会自己验证对方的身份或者可以请一个机构来验证身份,这个想法也可以应用到DApp中。在进行交易之前,用户可以手动验证彼此的身份,这个想法适用于人们彼此进行交易的DApp。假设有一个DApp是去中心化的社交网络,显然可以通过这种方式验证身份信息。假设一个DApp是用来买卖商品的,在支付之前买卖双方可以验证彼此的身份,尽管这个想法看起来是可行的,但是在实践中很难实现,因为你可能并不想每次进行交易的时候都验证身份,也不是每个人都知道如何验证身份。例如,假设有一个DApp是打车软件,用户显然不想每次叫出租车之前都进行身份验证。但如果只是偶尔交易,也知道怎样验证身份,就可以按程序验证身份。
1703875619
1703875620
由于这些原因,我们目前剩下的可选择方案是,由提供客户端的公司派人手动验证用户身份。例如,创建一个比特币账户不需要身份证明,但是当提取比特币并兑换成货币时,交易所会要求提供身份证明。客户端可以忽略未经验证的用户,不让他们使用,也可以对已经身份验证的用户开放使用。这个解决办法也会产生一些小问题,即如果转换客户端,会发现交互的用户不一样了,因为不同的客户端有不同的验证用户集。因此,所有用户可能决定只使用一个特定客户端。但这不是一个很大的问题,因为如果客户端不能有效验证用户,用户就可以方便地转向另一个客户端,而且不丢失关键数据,因为关键数据的存储是去中心化的。
1703875621
1703875622
1703875623
在应用中验证用户身份的想法是,使用户在进行一些欺诈行为之后难以逃脱,防止有欺诈/犯罪背景的用户使用应用,以及为网络中的其他用户提供相信某个用户就是他自称的人的方法。用什么过程来验证用户身份并不重要,用户总有办法伪装成其他人;用数字身份或者用扫描文件进行验证并不重要,因为二者都可能被盗或者被重复使用。重要的是让用户难以伪装成其他人,并收集足够的数据追踪用户,证明该用户进行了一些欺诈行为。
1703875624
1703875625
1703875626
1703875627
1703875629
区块链项目开发指南 1.4 DApp中的用户账户
1703875630
1703875631
许多应用需要用户账户功能。与账户相关的数据只能由账户所有者进行修改。DApp和中心化应用不一样,DApp没有以用户名和以密码为基础的账户功能,因为密码不能证明账户中的数据变化是由账户所有者发出的请求导致的。
1703875632
1703875633
有多种方法能实现DApp中的用户账户,最热门的方式是使用公钥-私钥对(public-private key pair)来代表一个账户。公钥的哈希(hash)是账户的唯一身份。为了改变账户中的数据,用户需要用私钥签名。我们假设用户会安全地存储私钥。如果用户丢失私钥,就永远不能访问账户了。
1703875634
[
上一页 ]
[ :1.703875585e+09 ]
[
下一页 ]