全球已经兴起了多个基于区块链的数字身份项目,侧重点各有不同,值得关注的项目有uport、Civic、Evernym、AirPlatform、Indy、SelfKey等,认识和挖掘这些项目可以帮助我们数字身份的应用形态。
Civic 项目由连续创业者 Vinny Lingham 领导,是一个基于以太坊的身份验证去中心化应用。在 Civic 去中心化生态系统中,用户需要验证自己的身份,之后请求接受方(例如销售服务的公司)才能接受该用户为客户。为此,验证者通过交叉引用政府数据库的文档验证用户的声明。一旦验证者证实了用户的身份,他们就用默克尔树根值来认证这段信息,而默克尔树就拿用户的声明来做默克尔树的叶子节点。
Civic 实现无密码登录的原理:
根据civic 白皮书翻译:(白皮书全英文,翻译有难度)
使用者用密码+生理性锁(指纹等)在civic上注册,获得认证。完全认证过后,civic提供对数据的认证证明到区块链然后使得数据的收件人(要求验证身份的地方)可以确认PII的授权和拥有权。
安全认证平台允许用户和认证要求者之间自愿的信息交换。
pll (个人认证信息)
以太坊:
以太坊(Ethereum)是一个有智能合约功能的公共区块链平台。允许任何人在平台上建立通过区块链技术运行的去中心化应用。就像比特币一样不受任何人控制的开放源项目,但与比特币不同的是,它解决了扩展性不足的问题,它十分灵巧简便,极具适应性。
以太坊开发语言主要有:python ,c++, go
以太坊虚拟机
作为一种比较新的利用比特币技术的开发项目,以太坊致力于实施全球去中心化且无所有权的的数字技术计算机来执行点对点合约。简单来说就是,以太坊是一个你无法关闭的世界计算机。
它是一个可编程的区块链,用户可以按照自己的意愿创建复杂的操作。为不同的区块链应用提供服务。简单来说,以太坊就是一系列协议,核心是以太坊虚拟机(“EVM”),可以执行任何复杂的代码。
以太坊工作
以太坊的基本单元是账户。它有两种账户类型,一个是外有账户(EOA),由私人密码控制,用户掌握了账户就掌握私钥;另一个是合约账户,由合约代码来控制,只能由一个EOA账号来操作,“智能合约”就是合约账号中的代码,当一个交易被发送到该账户时,合约中的代码就会被执行。用户可以通过把代码部署到区块链中来创建一个新合约,也即创建了一个新的合约账户。
目前已有200多个应用在以太坊上开发,最大特点是智能合约,一旦执行就没有人可以更改阻止它的执行。
CVC 是Civic项目的以太坊代币。Civic是一个基于区块链和生物识别的多因素身份认证系统,可以在移动端无需用户名和密码的情况下进行准确安全的用户身份识别,目前已经开发出手机app和API等功能用于对接商业应用。CVC在ICO阶段采用基于自己的身份认证系统的排队和限额投资方式,避免了投资大户让筹码分布非常广泛,并且避免了ICO阶段造成对以太坊网络的阻塞,受到社区广泛的好评。 CVC总量10亿枚,ICO价格为0.1美金。
https://blog.csdn.net/pony_maggie/article/details/74538902
P2P网络
在P2P网络中,Merkle Tree用来确保从其他节点接受的数据块没有损坏且没有被替换,甚至检查其他节点不会欺骗或者发布虚假的块。大家所熟悉的BT下载就是采用了P2P技术来让客户端之间进行数据传输,一来可以加快数据下载速度,二来减轻下载服务器的负担。BT即BitTorrent,是一种中心索引式的P2P文件分分析通信协议[7]。
要进下载必须从中心索引服务器获取一个扩展名为torrent的索引文件(即大家所说的种子),torrent文件包含了要共享文件的信息,包括文件名,大小,文件的Hash信息和一个指向Tracker的URL[8]。Torrent文件中的Hash信息是每一块要下载的文件内容的加密摘要,这些摘要也可运行在下载的时候进行验证。大的torrent文件是Web服务器的瓶颈,而且也不能直接被包含在RSS或gossiped around(用流言传播协议进行传播)。一个相关的问题是大数据块的使用,因为为了保持torrent文件的非常小,那么数据块Hash的数量也得很小,这就意味着每个数据块相对较大。大数据块影响节点之间进行交易的效率,因为只有当大数据块全部下载下来并校验通过后,才能与其他节点进行交易。
就解决上面两个问题是用一个简单的Merkle Tree代替Hash List。设计一个层数足够多的满二叉树,叶节点是数据块的Hash,不足的叶节点用0来代替。上层的节点是其对应孩子节点串联的hash。Hash算法和普通torrent一样采用SHA1。其数据传输过程和第一节中描述的类似。
Pow 共识:工作量证明,利益分配
Pos 共识: 解决pow 资源浪费问题
同时解决51% 攻击的问题
区块链的运行:
括区块链中公开记账、创建创世区块、 交易、打包 Transaction、广播交易
区块链的核心技术组成 无论是公链还是联盟链,至少需要四个模块组成:P2P 网络协议、分布式一致性算法(共识机 制)、加密签名算法、账户与存储模型。
1.P2P 网络协议
2 分布式一致性算法
在经典分布式计算领域,我们有 Raft 和 Paxos 算法家族代表的非拜占庭容错算法,以及具有拜 占庭容错特性的 PBFT 共识算法。
3 加密签名算法
我们还会使用到最核心的,也是区块链 Token 系统的基石:公私钥密码算法。
在比特币大类的代码中,基本上使用的都是 ECDSA。ECDSA 是 ECC 与 DSA 的结合,整个签 名过程与 DSA 类似,所不一样的是签名中采取的算法为 ECC(椭圆曲线函数)。
从技术上看,我们先从生成私钥开始,其次从私钥生成公钥,最后从公钥生成地址,以上每一步 都是不可逆过程,也就是说无法从地址推导出公钥,从公钥推导到私钥。
4.账户与交易模型
从一开始的定义我们知道,仅从技术角度可以认为区块链是一种分布式数据库,那么,多数区块 链到底使用了什么类型的数据库呢?
我在设计元界区块链时,参考了多种数据库,有 NoSQL 的 BerkelyDB、LevelDB,也有一些币 种采用基于 SQL 的 SQLite。
这些作为底层的存储设施,多以轻量级嵌入式数据库为主,由于并不涉及区块链的账本特性,这 些存储技术与其他场合下的使用并没有什么不同。
区块链的账本特性,通常分为 UTXO 结构以及基于 Account-Balance 结构的账本结构,我们也 称为账本模型。UTXO 是“unspent transaction input/output”的缩写,翻译过来就是 指“未花费的交易输入输出”。
这个区块链中 Token 转移的一种记账模式,每次转移均以输入输出的形式出现。而在 Balance 结构中,是没有这个模式的。
区块链项目思路:
确定区块链的类型:公证型区块链还是价值型
以太坊与HyperLedger相同点:
都是提供区块链业务实现的平台,业务实现都是通过智能合约来完成,以达到最大的灵活性和对底层的不修改。
以太坊是:EVM虚拟机,Solidity合约语言
HyperLedger是: Shim链码容器, 用GO编写合约。
官方版本都使用GO语言实现
与传统网络服务不同的是:区块链开发不再以面向服务为主要关注点,而是面向账本和交易。
目前开发人力资源储备不足
目前比较成熟的技术体系有:比特币及衍生技术体系,以太坊,超级账本HyperLedger fabric,比特股Bitshares,瑞波Ripple,未来币NXT。
其中列出的前三个项目是最有影响力的区块链项目。比特币以及衍生技术多以C++语言进行开发;以太坊支持大部分主流语言,官方以Golang为主,也有其他分支的项目如Rust语言的Parity钱包;超级账本目前以Golang为主。
https://blog.csdn.net/omnispace/article/details/80142595
欢迎对区块链感兴趣的同学,一起谈论,有项目经验的,能分享一下项目,谢谢!
本文来源于各种学习文档,视频,新闻 ,算是对区块链有一个初步了解