标签归档:区块链研习

区块链研习 | 区块链能创造信用吗?

雷锋网(公众号:雷锋网(公众号:雷锋网))AI金融评论按:本文作者为中国信息通信研究院(工信部电信研究院)专家敖萌博士,雷锋网(公众号:雷锋网)独家特约文章,雷锋网(公众号:雷锋网)与信通院子公司泰尔英福(微信号Teleinfo_)联合首发。未来,敖萌博士原创的区块链系列文章还将继续刊出,敬请关注! 

(在听一个区块链微课时,有专家提出“信任不等于信用,信任是人际关系,信用是资金融通”。这句话指出了很多区块链应用的误区,本期就详细探讨一下这个问题。)

本系列的开篇,在介绍区块链是什么的时候,提到了这样一句话:“区块链的价值在于,没有任何一个中心能够控制这个系统,数据一旦产生便不可更改,这产生了强大的信任。因此人们常说区块链是一台创造信任的机器。

区块链能创造信任,那么能创造信用吗?

首先,我们看一下“信任”的概念,信任是一个复杂的概念,很多学科都涉及到这个概念,但是至今没有一个统一的定义。

在区块链中,我们认为信任是指:区块链中的节点运行者相信区块链上面的数据是确定的。换句话说,就是区块链中的节点运行者信任区块链上的数据。

信用的含义则是:在经济活动中能够履行承诺。而在经济学中,信用往往是债务

那么,从“信任数据”能否推导到“信用”?需要看具体问题具体分析:

情况一:假设Alice和Bob在以太坊上构建了一个智能合约,Bob将10个ETH转移到该合约的地址上,约定3天后,Alice调用这个合约,就可以得到这10个ETH。那么,在这个经济活动中,3天后Alice调用这个合约,Bob的承诺就会被以太坊自动执行。这里,信任以太坊上的数据就能得出Bob会履行承诺的结论

情况二:如果Bob一开始没有10个ETH呢?简单说,我没钱,你能咋地?这样我们就要看这个函数是怎样编写的,是否专门处理了这个情况?

从智能合约的角度来说,一个完善的智能合约,应该考虑到所有异常的情况(违约情况)——Bob没有在3天内把10个ETH转移到合约地址中。我们就可以这样编写:如果合约账户上不足10个ETH,先转走全部余额,剩下的等合约地址中有的时候再处理,等等。

这里,在智能合约编写的时候,实质上是把Bob未来的全部可能性都考虑进去,然后写成了一个程序上完善的合约。从这个完善的合约上看,该合约是一定能被履行的。但是对于Alice而言,她所期望的履行方式仅仅是正常的情况,而不包括违约情况。

因此,信任数据推导出信任合约,但是合约中只有一部分是真实期望的结果,另一部分(违约情况处理)并不是真实期望的结果,整个过程也没有产生100%的信用。

于是,问题又回到了和现实社会相同的情况,我们判断一个主体X是否有足够的信用,需要收集大量和X相关的数据,然后通过一些数学手段和数学模型,来分析它的信用情况。

而在区块链中,我们只完成了前一半的一小部分——我们有区块链上和X相关的数据,并且这些数据是确定的(很难讲数据是真实的,只能用“确定”这个词)。其他的都不在区块链上,甚至我们有的可能只是X履约的历史数据,而X的其他数据都无法从区块链上获取到。那么,从信用模型角度,这个数据量就很少了。

因此,区块链不能创造信用,它只能创造信任。

依靠信用的交易活动,在区块链上的风险,和在现实世界上的风险没有区别,甚至可能更高一点(这些交易活动依赖的智能合约可能有bug)。但是,不依靠信用的交易活动,是可以充分相信的。

情况三:仍以Alice和Bob的交易为例,Bob当前没有10个ETH,但是他有10000个EOS。Alice和Bob之间编写的智能合约中,Bob首先把10000个EOS转移到合约地址上,3天后,如果Bob给合约地址充了10个ETH,则Alice 获得10个ETH,10000个EOS全部转移回Bob账户;如果合约地址上的ETH不足10个,则将10000个EOS转给Alice。

在这个合约中,合约正常执行的情况和违约情况都能够在以太坊上正常处理,并且违约情况也是Alice能够接受的,那么,信任以太坊上的数据就能得出Bob会履行承诺的结论。但是,情况一和情况三一样,这种履行承诺,我认为不能称之为“创造”了信用。

雷锋网

区块链研习 | V神理想之:DAO可到,非常道

雷锋网(公众号:雷锋网)AI金融评论按:本文作者为中国信息通信研究院(工信部电信研究院)专家敖萌博士,雷锋网独家特约文章,雷锋网(公众号:雷锋网)与信通院子公司泰尔英福(微信号Teleinfo_)联合首发。未来,敖萌博士原创的区块链系列文章还将继续刊出,敬请关注! 

上一篇文章谈了区块链是变革生产关系的技术。本篇就从生产关系这个角度,来看看Vitalik(以太坊创始人,V神)的理想:Decentralized Autonomous Organization,即“去中心化的自治组织”(DAO)。我个人理解DAO是现代公司制度的一个去中心化形式。

回顾一下公司制度的历史,在工业革命初期,大多数工业企业都是业主式,资本家创办一家企业,所有权和经营权合一。这是因为工业革命初期的机器技术并不复杂,所需的固定资产规模还很小。

随着技术的进步,机器使用的扩大化,特别是蒸汽机大规模使用后,固定资产的规模也大大增加。这样导致的结果是,单个资本无法适应大机器工业的发展,股份公司制度应运而生,被引入工业制造业。 

当股份公司制度进入工业制造业以后,资本规模又进一步扩大,技术发展进一步加快,出现了大型企业和资本集中现象。这些大型公司,既是工业革命的成果代表,也是工业化的助推者。正是这样,公司制度作为一种重要的生产关系,推动了资本主义市场经济和工业革命的发展。

现代公司制度是一种重要的生产关系形式,它也是生产力发展到一定阶段自发出现的,反过来现代公司制度又促进了生产力的发展。在现代公司制度中,财务制度和人事制度是维持组织运行中最重要的两个方面,现代的这些制度都由公司章程、公司与员工的劳动合同等确立,并由法律保障,强制执行。

而在区块链世界中,智能合约就是现实世界中合同的体现,对应的公司章程、员工合同等,这些都可以通过智能合约来实现,制度可以代码化。而在财务方面,区块链作为价值互联网,自带了完整的金融体系,也可实现。

现代公司制度直接迁移到区块链世界中,对应的就是一整套虚拟化的智能合约。用智能合约在区块链上开公司,已经不是一个梦想了。很多企业都在区块链上开始尝试。然而,仅仅是在区块链上实现一个现实公司,显然不是区块链魅力所在。

 

ICO(Initial Coin Offerings首次代币发行)就是在区块链上开公司的最简单的形式。但是,这种形式开设的公司仍然是中心化的。整个公司是被一个核心团队控制,也正因为如此,很多虚假的项目、“空气币”都进行了ICO,导致很多人被骗。 

Vitalik对此现象,提出了DAOICO的概念,将他的理想DAO(去中心化的自治组织)和ICO(首次代币发行)进行了结合。利用一个智能合约锁定ICO募集到的代币,按照预期的项目进度,在每个不同的项目进度点,解锁一定的代币,作为项目开发者的报酬。

这种方式可以有效的防止核心团队进行诈骗——因为如果团队什么都没做出来,或者做出来的东西并没有得到出资方的认可(通过智能合约事先编写好的投票方式),团队就得不到任何代币,到了一定的时间,所有的代币都会退回给原始投资人。

实际上,在ICO乱象爆发之前,Vitalik就在以太坊上进行过DAO的尝试。这个DAO项目本质上是在以太坊上实现了一个类似风险投资公司的功能。普通投资人可以将代币充入DAO合约中,然后这个合约可以对其他项目投资,而投资决策是由全体投资人投票决定,利用“众智”思想,降低投资的风险。

然而,当时由于这个DAO的智能合约存在一个技术漏洞,导致了大量的代币被黑客转移。最终Vitalik通过以太坊的硬分叉,拿回来丢失的代币,这件事也导致了以太坊分裂成了以太坊官方(ETH)和以太坊经典(ETC)两条链。

DAO是一件非常具有创造性的尝试,DAO本质上一种颠覆了现代公司制度的新型的生产关系——去中心化合作关系。由于区块链技术的出现,带来了新型的生产关系的可能。

其实,随着互联网技术的发展,个人与公司之间的关系也发生着重要的变化。以媒体行业为例,在互联网出现之前,内容创造者需要依附于公司,才能传播自己想要表达的内容。而进入了互联网时代,各种传播平台出现了,于是内容创造者们可以利用平台,通过自媒体实现内容的传播。

随着信息技术的发展,个人有可能从公司制度牢笼中解放出来,而区块链技术则大大提升了这种可能性。可以想象一下,未来区块链成为一个大型的平台,在这个平台上,任何项目都可以通过智能合约,以任务悬赏的形式将工作内容拆分并发布,有能力有意愿的个人可以根据自己的情况,自由的选择接受任务,实现真正的自由职业。

DAO是一种去中心化生产关系的理想,DAO可以到达,但是到达DAO的道路是曲折不平的。

雷锋网

区块链研习 | 详解三大主要跨链技术,如何推动价值网络的实现

2017年以来,区块链项目井喷状出现。截至2017年底,GitHub上的项目数超过8万,另据coinmarketcap数据显示,目前已有token种类达到1506个,总市值超过4000亿美元。

但是在区块链项目数量呈现加速上升态势的同时,后续没有相应的配套措施,导致现在大部分的区块链项目之间无法互联互通。

“相当于,每个区块链项目都是独立的价值网络,引用信息化行业的一个名词就是‘信息孤岛’,我们期待可以之间可以打通价值的传递,并在价值互连基础上,实现不同跨链的合约。“雷锋网获悉,近日上海召开的区块链应用(DApp)研讨会上,阿希链CTO钱汉涛表达了这番观点。

据雷锋网了解,在接下来的演讲中,他主要为观众介绍了三种典型的跨链技术:公证人机制、侧链/中继器模式、哈希锁定模式。并从支持的跨链类型,采用的信任模式,是否支持跨链的资产交换与转移,能否支持跨链合约和资产抵押等方面对三种模式进行了对比分析。

最后他还提到,仅有跨链互连是不够的,此外还应该想办法实现,如何在大规模应用的时候降低成本。

跨链技术是实现价值网络的关键,清华信息技术研究院和互联网产业研究院副院长邢春晓与钱汉涛都表示,跨链将会是2018年的一个研究重点。

以下演讲正文,雷锋网作了不改变原意的编辑:

解构三种跨链技术

行业非常需要跨链的技术,接下来重点介绍三种相对成熟(当然仍存在一些问题)的方案,分别是公证人机制、侧链/中继器模式、哈希锁定模式。这几类也在以太坊创始人vitalik为R3撰写的报告中被提及,另外可能还有一些更新的模式没有收入进来。

第一种是公证人机制(Notary schemes)。这种模式很好理解,和现实世界很类似。假设A和B是不能进行互相信任的,那就引入A和B都能够共同信任的第三方充当公证人作为中介。这样的话,A和B就间接可以互相信任。具有代表性的方案是Interledger,它本身不是一个账本,不寻求任何的共识。相反它提供了一个顶层加密托管系统称之为“连接者”,在这个中介机构的帮助下,让资金在各账本间流动。这种方案的好处是非常简单,也很好理解,缺点同时也很明显。这种模式和区块链的去中心化的理念存在一些冲突,所以很多人不认为它是区块链,而更多是一种中心化的产物。

第二种是目前跨链技术应用比较多、相对复杂的侧链或者中继器模式(Sidechains/relays)。一般来说,主链不知道侧链的存在,而侧链必须要知道主链的存在。RootStock 是一个建立在比特币区块链上的智能合约分布式平台。它的目标是,将复杂的智能合约实施为一个侧链,为核心比特币网络增加价值和功能。

中继器模式比较有代表性的是polkadot中继链。而中继是链与链之间的通道,如果通道本身是区块链,那就是中继链。这个项目是采用技巧性的办法,即多重签名的机制,把主链资产进行锁定,在侧链上锚定、执行,在侧链上的交易是通过多重签名共同投票决定交易是否有效。

另外一个是Cosmos HUB,这个项目是hub及各个空间通过区块链间通信协议进行沟通,链接协议进行协定。从PPT来看,可能大家会觉得在中继器的模式更复杂,COSMOS更简单,但实际上完全相反,COSMOS后面需要更多的主链和一系列办法。

第三就是哈希锁定(Hash-locking)。哈希锁定起源于比特币闪电网络,闪电网络本身是一种小额的快速支付的手段,后来它的关键技术哈希时间锁合约被应用到跨链技术上来。虽然哈希锁定实现了跨链资产的交换,但是没有实现跨链资产的转移,更不能实现这种跨链合约,所以它的应用场景是相对比较受限的。

跨链技术对比

接下来,将从支持的跨链类型,信任模式,是否支持跨链的资产交换和资产转移,以及能否支持跨链合约和资产抵押,简单对比一下这三种模式。

从跨链类型上看,公证人模式是双向的跨链,而中继器/侧链模式有的是支持全部,有的是支持单向,而哈希锁定其实是一种依赖关系。

从信任模型上看,公证人模式需要多处公证人的证实,这也是最为诟病的地方,公证人是第三方、特权机构,很容易成为整个系统中信任环节中最弱的那一环。

公证人模式和中继器/侧链模式均能支持跨链资产交换及转移,跨链合约和资产抵押。而哈希锁支持的功能比较少,能够支持跨链资产交换,大部分场景能够支持资产抵押,但不支持跨链资产转移和合约。

事实上,跨链资产交换和资产转移的意义比较重大,现今网络运行速度较低,手续费很高,而通过跨境资产转移,我们可构建一个更高效、低成本的网络。实现跨境资产转移的直接结果,就是跨链智能合约实现,既然所有的资产已经转到同一个链上,那么智能合约的实现是非常容易的。

最后,我认为,仅仅有跨链互连是不够的,因为跨链是通信技术的要求,让所有资产在链之间能够高效的流转,但在大规模应用时,还需要考虑方案的成本问题,包括时间成本。

雷锋网

区块链研习 | 区块链的热血不止在技术,更要看清生产关系

雷锋网AI金融评论按:本文作者为中国信息通信研究院(工信部电信研究院)专家敖萌博士,雷锋网独家特约文章,雷锋网(公众号:雷锋网)与信通院子公司泰尔英福(微信号Teleinfo_)联合首发。未来,敖萌博士原创的区块链系列文章还将继续刊出,敬请关注! 

从事技术研究的人员,在刚开始接触区块链时,往往喜欢用分布式数据库来理解区块链。

确实,从技术角度看,区块链有很多和分布式数据库相似的地方,比如可以存储数据、多节点数据一致性、拥有智能合约(触发器)等等。两者的区别在于分布式数据库通常是中心化的,而区块链是一种去中心化的技术。

 

技术人员通常集中关注事物的技术表面,而忽略了技术带来的其他方面的改变。在经济学中,生产力和生产关系是非常重要的两个概念。

技术人员习惯从生产力角度考察问题,而忽略了生产关系角度。而在区块链和分布式数据的区别中,正是由于去中心化和中心化的技术区别,导致了两者在生产关系角度上的区别。

在生产力一侧,数据库从单机数据库发展到分布式数据库,虽然性能方面有了很大的提升,但所有的机器依然是在一个主体的控制之下,技术上只需要考虑偶发的错误即可。

在生产关系一侧,区块链技术的出发点就是为了改变生产关系。区块链天生就是为了解决多个主体间合作记账的问题,技术上必须考虑可能出现的节点故意破坏数据一致性的情况(也就是常说的拜占庭容错)。所以我们说区块链技术提供了在新的生产关系下,不同主体合作开展业务的新能力。

生产力的发展促进了生产关系的衍进,例如人们在生产活动过程中结成的相互关系,包括生产、分配、交换和消费等诸多关系在内的生产关系体系。

仅仅这样概念性的描述,很难让人理解生产关系的改变能够带来哪些重要的变革。下面我用互联网到移动互联网的发展过程来分析一下,就会更加容易理解为什么很多人都看好能够改变生产关系的技术了。


互联网早期时代,人们接入网络的终端设备主要是个人电脑,但是电脑比较笨重,所以人们只能在固定的地点才能上网。由于不能实现随时随地上网,互联网更像是一种获取信息的工具,浏览器则是人们使用网络的主要入口。

而到了移动互联网时代,从技术角度看,接入网络的终端变得更加小巧,上网更加便捷,这样的直接影响是移动互联网改变了人与人之间的关系(主要是消费关系)——消费者和互联网服务商之间可以随时随地保持沟通,同时还增加了位置信息等关键的数据。于是,移动互联网时代,诞生了很多新的商业模式,从技术上看,各种APP也取代了浏览器成为人们使用网络的主要工具。

从互联网到移动互联网,这种技术看上去变化不大,依然是TCP/IP网络,只是从有线变成了无线,但是商业模式上发生了重大变化,新型的商业模式层出不穷。纠其根本原因就在于移动互联网直接改变了生产关系(主要是消费关系)。


区块链技术在生产关系层面上能够改变的更多,从生产、分配、交换到消费,人们经济活动的全过程都可能被区块链技术所改变,这种改变在未来将裂变出更多新的商业模式,从而颠覆传统。

综上,分布式数据库和区块链看上去相似,实则完全不同。两者之间的差异,就好像移动互联网和传统互联网之间的差异一样。一个全新的时代,将会随着区块链技术的发展而到来,这也就是为什么很多区块链行业人员热血沸腾的原因。 

雷锋网

区块链研习 | 留给币圈创业者的字母已经不多了

雷锋网AI金融评论按:本文作者为中国信息通信研究院(工信部电信研究院)专家敖萌博士,雷锋网(公众号:雷锋网(公众号:雷锋网))独家特约文章,雷锋网与信通院子公司泰尔英福(微信号Teleinfo_)联合首发。未来,敖萌博士原创的区块链系列文章还将继续刊出,敬请关注! 

本系列文章已经介绍了ICO(Initial Coin Offerings 首次代币发行)、IFO(Initial Fork Offerings 首次分叉发行)、IHO(Initial Hybrid Offerings 首次混合发行),每种代币发行模式都创造出了一大堆山寨币。有道是:“币圈一日,人间一年”,代币再多在创业者眼中也是毛毛雨,于是他们又发明了一个代币发行机制——IMO(Initial Miner Offerings) 首次矿机发行。

IMO,首次矿机发行,含义是什么呢?顾名思义,就是通过发行矿机的方式来发行代币。公司或团队构造一种特定的区块链,使用特定的算法,只能采用该公司或团队自行发售的专用矿机,才能挖到这种区块链上的代币。换句话说,想加入这个币的矿工圈子,必须先买它的矿机。

我们还用赌场的故事来重新解读一下这个代币发行模式。

简单回顾一下赌场的设定:赌场里面只能使用筹码,赌场管理者并不回收筹码,筹码可以在赌徒中自由流动,如果赌场非常好玩,就会有越来越多的赌徒来玩,同时如果筹码的总数量不变,筹码的价格可能就会升高。

看完了赌场的设定,我们来看看IMO的玩法。赌场的管理者采用某种特定的金属制造筹码,并且这种筹码只能通过赌场管理者自己制造的模具来生产。每天管理者都拿出固定数量的金属原材料,有模具的赌徒,就可以领取一些,利用赌场管理者发行的特定模具,自己生产筹码,用来在赌场里玩或者拿去和别的赌徒交易。

赌场管理者通过售卖模具,回收了资金。对于买了模具的赌徒来说,拥有模具的数量占总体模具数量的比例越高,他的生产能力就越强,每天能够领取的原材料就会比别人多,生产出来的筹码就比别人多。

这就是最简单的IMO的内涵。

但是,IMO通常没有那么简单。比如,光有筹码,如果赌场的可玩性越来越差,那么筹码也不会升值。模具卖不出去,怎么办?

于是赌场管理者想出来一些新的主意,比如他卖的模具必须搭售一定的赌具。赌具放在赌场里,才能去领取金属原材料生产筹码。于是,赌场里面的花样越来越多,赌场能提供的服务也就越来越好,这样即聚集了人气,也升值了筹码,皆大欢喜。

但是,这里面有一个核心问题:为什么只有赌场经营者能够生产制造筹码的模具?

原因很简单:因为闭源。赌场的经营者把赌场的运营方式、制造币的方法列为最高机密。只有通过他们自己生产的模具,才能制造出币来。

本系列开篇第一篇文章就提到过:“区块链的价值在于,没有任何一个中心能够控制这个系统,数据一旦产生便不可更改,这产生了强大的信任。因此人们常说区块链是一台创造信任的机器。这便是区块链的最大魅力所在。

对于一个闭源的系统,由一个公司或团队控制者币的发行,显然已经违背了区块链最初的“去中心化”的愿景。开源的系统,所有人都可以审查系统的代码,进而对系统产生信任。而IMO方式运行的区块链,由于矿机挖矿的算法必须保密,因此,很难产生信任。

不可否认,IMO中,常常使用一些有实际意义的工作来代替比特币中没有实际意义的穷举HASH运算方式来进行挖矿,使得在挖矿过程中电能没有被白白的浪费掉。但是,也正是由于这种有实际意义的工作是由经营者对工作量进行评价的,因此失去了公平性。

总而言之,IMO这种模式,也许能够创造一种有意义的数字货币,但这种数字货币更像是由一家公司直接发行的数字积分(比如Q币)。这种数字货币和区块链的关系恐怕就是君子之交淡若水了。

雷锋网

区块链研习 | 继ICO、IFO,最新的 IHO 又是什么?

雷锋网AI金融评论按:本文作者为中国信息通信研究院(工信部电信研究院)专家敖萌博士,雷锋网(公众号:雷锋网)独家特约文章,雷锋网与信通院子公司泰尔英福(微信号Teleinfo_)联合首发。未来,敖萌博士原创的区块链系列文章还将继续刊出,敬请关注! 

很多区块链的从业者都感叹,“链圈一日,人间一月”。意思是区块链的发展飞快,一天的速度堪比其他技术一个月的。而很多玩数字货币的人,则更胜一筹,直接感叹“币圈一日,人间一年”。

的确,币圈的人除了在技术上进行了很多创新外,在其他方面也进行了大量的创新。比如本篇要讲到的IHO,就是一个鲜活的例子。

 

上一篇讲到了IFO。回顾一下——IFO(Initial Fork Offerings)。矿工团队在创造分叉的同时,可以在分叉发生的区块中,利用自己的特权,分配一些货币给自己或其他人(直接写成CoinBase交易即可),然后再开放让所有人都可以参与挖矿。

用赌场故事比喻IFO,就是用老赌场分店的名义开一个新赌场,同时直接给老赌徒分配等额的新筹码,精准的吸引客户,迅速积累人气。

那么IHO是什么呢?IHO(Initial Hybrid Offerings),首次混合发行。即矿工团队在创造新币的时候,直接给多种老币的用户分配新币的方式,就是首次混合发行。用赌场的故事来讲一下,就很好理解了。

 

由于赌博行情异常火爆,市面上已经出现了很多个赌场。有的赌场人气旺,有的赌场玩法多,有的赌场赌局快,总之赌场多多,花样多多。

想开新赌场的人,如果贸然开,除了技术方面的问题外,还面临着人气问题。因为前一段时间用老赌场名义开的分店太多,搞的大家都不知道该去哪个分店玩了。于是,聪明的股东有创造性的提出了混合分店的概念,就像驴马杂交生出骡子一样,开一个新的分店,号称是A赌场和B赌场的子赌场。把A、B两家赌场的玩法综合一下,各自的优点吸收一下,然后开一个新的赌场。原来持有A、B两家赌场筹码的老赌徒们,只要来这里登记一下手里的老筹码数量,就可以免费获得新的赌场筹码。

IHO可以直接聚集多家的原有客户,比IFO更快速的积累人气。自从一个月以前IHO横空出世以来,相继又出现了很多IHO的新币。币圈的发展真是应了“币圈一日,人间一年”的感叹。

其实从本质上来看,IHO并没有逃出IFO的逻辑框架,应该算是IFO的进一步发展。从ICO到IFO到IHO,新币发行方式的变化从凝聚股东从头创业逐渐转变为直接复制老店争抢客户。IHO可以称之为IFO2.0。

客户怎样看呢?对于绝大部分客户来说,凭空得到一些新的代币,看上去不是一件坏事儿。因此,很多币圈的人,把IFO、IHO分配的新币戏称为“糖果”,新币的发行让老用户像小朋友一样排排坐等着分糖果就好了。

对于原有币的开发者和维护者来说,新币的出现,可以让开发者很快熟悉新的币种,为新币的升级和维护作出贡献(很多开发者都持有老币,他们可以直接分到糖果,因此为了糖果的升值,他们自然有动力去做贡献)。而维护者或者说是矿工,则非常容易能够切换到新的币种进行挖矿或者收取交易手续费。因此,从经济学角度来看,利用IFO或IHO发行新币,难度很低,同时用户基数大,也方便进行炒作。

但是,利用这些方法产生新币,很难在区块链技术上进行重大的改进。然而,一旦有重大改进的新区块链技术带来的新币出现后,利用IHO就可以迅速的把新技术吸纳到老体系中。

总之,区块链利用开源和数据公开透明的特性来确立了区块链的信用,使区块链成为创造信用的机器。也正是开源和数据公开透明的特性,让区块链系统可以迅速的被复制,不仅仅是技术被复制,连客户也被复制了。

雷锋网

区块链研习 | 什么是IFO

雷锋网AI金融评论按:本文作者为中国信息通信研究院(工信部电信研究院)专家敖萌博士,雷锋网独家特约文章,雷锋网(公众号:雷锋网)与信通院子公司泰尔英福(微信号Teleinfo_)联合首发。未来,敖萌博士原创的区块链系列文章还将继续刊出,敬请关注! 

在本系列讲区块链分叉的文章中,介绍了IFO的概念——IFO(Initial Fork Offerings)。矿工团队在创造分叉的同时,可以在分叉发生的区块中,利用自己的特权,分配一些货币给自己或其他人(直接写成CoinBase交易即可),然后再开放让所有人都可以参与挖矿。 

那么,IFO的内涵是什么呢? 

我曾讲过一个赌场的故事,用来讲述ICO的内涵。现在,同样用赌场的故事来解释IFO的内涵。 

有一个人开了一间赌场,每个赌徒要来赌场玩,必须先换一些筹码,才能参与赌场内的赌局。这间赌场的筹码是用一种特殊的金属特殊的工艺制造的,这些赌具只能用这种筹码玩。赌场一开始的时候造了一万个,以后再也造不出来了。赌场不提供筹码兑换现金的服务,但筹码可以在玩家之间流通。赌场内所有赌局都是实时利用筹码结算的。这间赌场由于服务特别好,赌具特别好,入场费也非常低,总之一切都特别好,于是越来越多的赌徒都慕名而来,跑到这间赌场来玩,赌局额度也越来越大,筹码的价格也一路水涨船高。

随着来玩的人越来越多,赌场提供的这些项目已经不太能满足玩家的需求了。有些股东认为如果能开展一些新的项目,势必能吸引很多玩家去玩。但是遗憾的是,赌场的股东太多了,要升级赌场,需要大部分股东的同意。而由于每个股东思考问题的方式不同,导致很难达成一致,因此赌场一直没有升级。 

这时,迫切想升级赌场的股东如果能够新开一家赌场,按照自己的想法从最底层设计开始,重新建设整个赌场,是能够解决开展新项目、扩大赌场规模等问题的。但是,这样做有两个问题:一是需要投入很高的设计成本,比如需要重新设计整个赌场的建筑物,设计整个赌场的布局,设计赌局等;二是新的赌场人气太差,赚钱太慢,投资方根本不愿意等待。

于是,聪明的股东想到了一个新办法,用老赌场分店的名义开一个新赌场。

 

首先,新赌场的设计直接沿用老赌场的设计,只是做一点小的改造,比如赌场面积扩大几倍,多填几个赌桌等。这样最大程度的节约了设计开发成本。 

其次,用老赌场分店的名义,老赌场的赌徒,凭手里的原有老赌场的筹码,到新赌场给管理员看一下登个记,就可以到直接领一份等量的新赌场筹码,而不需要付出任何代价。反正对于新赌场而言,和老赌场一样不提供筹码兑换现金的服务,但筹码可以在玩家之间流通。

这样,赌场营销的成本也降到了最低,精准的找到了那些原本就喜欢玩的赌徒,而不需要大量的市场宣传。老赌徒闲着也是闲着,很愿意进去试试,于是瞬间有了很高的人气,营造出了火热的赌场的感觉。

赌徒们来到新的赌场,试了试手,觉得新赌场不错,于是就愿意花钱买更多的筹码来玩。这时,只能从赌场经营者手里买筹码了。对于投资赌场的人来说,出售筹码可以迅速收回投资,盈利速度飞快。于是,赌徒高兴,投资人高兴,赌场工作人员赚到了钱也高兴,大家都高兴。

这种开新赌场的方式,就叫做IFO。从老赌场分叉出来一个新赌场,很形象。

这样赚钱太容易了,于是老赌场的很多大小股东都动心了。一时间,市场上出现了很多的老赌场分店。这些新赌场到底改进了哪些项目,改进的技术如何,是需要时间来检验的。但现在更重要的是,有了大量的人气,有很多人开始投资这些新的赌场的筹码,这就是现在出现的IFO乱象。

雷锋网

区块链研习 | 详解零知识证明的四大基础技术,如何与以太坊发生反应

雷锋网按:原文标题为《zkSNARKs in a nutshell》,作者是以太坊智能合约语言Solidity的发明人Christian Reitwiessner。译者杨文涛,授权转载自作者知乎专栏

摘要:

zkSNARKs(zero-knowledge succint non-interactive arguments of knowledge)的成功实现让我们印象深刻,因为你可以在不执行,甚至在不知道执行具体内容的情况下确定某个计算的结果是否正确——而你唯一知道的信息就是它正确地完成了。但是不幸的是,大多数关于 zkSNARKs 的解释都浮于表面,并暗示只有最聪明的人才能懂得它的工作原理。实际上,zkSNARKs 可以总结为 4 个简单的技术,本篇博客将会逐一解释这些技术。任何懂得 RSA 加密系统工作原理的人都会对当前使用的 zkSNARKs 有一个更好的理解和认识。

我们当前使用的 zkSNARKs 包含 4 个主要部分:

A) 编码成一个多项式问题(Polynomial problem)

把需要验证的程序编写成一个二次的多项式方程:t(x) h(x) = w(x) v(x),当且仅当程序的计算结果正确时这个等式才成立。证明者需要说服验证者这个等式成立。

B) 简单随机抽样

验证者会选择一个私密评估点 s 来将多项式乘法和验证多项式函数相等的问题简化成简单乘法和验证等式 t(s)h(s) = w(s)v(s) 的问题。这样做不但可以减小证明的大小,还可以大量地减少验证所需的时间。

C) 同态编码 / 加密(Homomorphic encoding / encryption)

译者注:在1978年,Ron Rivest,Leonard Adleman,以及 Michael L. Dertouzos 就以银行为应用背景提出了同态加密的概念,当时使用的单词是 homomorphism,也就是和抽象代数的同态是一个单词。现在一般都使用 homomorphic encryption,国内密码学圈子基本也都称作同态加密。Ron Rivest 和 Leonard Adleman 分别就是著名的RSA算法中的 R 和 A(还有一位是 Adi Shamir)。

补充(来自白老师):同胚和同态在数学上不是一个意思。同胚指连续变形下的不变性,同态指映射下代数运算关系的保持性。

我们使用一个拥有一些同态属性的(并不是完全同态的,至少在实际使用中有一些不是同态的)编码 / 加密函数 E。这个函数允许证明者在不知道 s 的情况下计算 E(t(s)), E(h(s)), E(w(s)), E(v(s)),她只知道 E(s) 和一些其他有用的加密信息。

D) 零知识(Zero Knowledge)

证明者通过乘以一个数来替换 E(t(s)), E(h(s)), E(w(s)), E(v(s)) 的值,这样验证者就可以在不知道真实的编码值的情况下验证他们正确的结构了。

困难的问题在于对一个随机的私密数 k(k 不等于 0)来说,校验 t(s)h(s) = w(s)v(s) 和校验 t(s)h(s) k = w(s)v(s) 几乎是完全一样的,而不同点则是如果你只接收到了 (t(s)h(s) k) 和 w(s)v(s) 那么从中获取到 t(s)h(s) 或者 w(s)v(s) 的值就几乎不可能了。

当然,这些都只是基础的部分,是为了让读者更地的理解 zkSNARKs 的本质,接下来将开始详细讲解这些知识点。

RSA 和 零知识证明

现在让我们快速回想一下 RSA 是如何工作的,先不管那些琐碎的细节。想想看,我们经常用一个数字对一些数字取模,而并不是所有的整数。这里的等式 “a + b ≡ c (mod n)” 等价于 “(a + b) % n = c % n”。注意,“(mod n)” 这个部分并不是应用在 “c” 上面的,而是应用在 “≡” 以及相同等式所以其他的 “≡” 上面。虽然这样非常难以阅读,但是我保证尽量少用他们。接着让我们回到 RSA:

证明者提供了下面的数字:

p,q:两个随机的私密素数

n := p q

d:1 < d < n – 1 的随机数

e:d e ≡ 1 (mod (p-1)(q-1))

公钥是 (e, n),私钥是 d。素数 p 和 q 可以丢弃,但是不能暴露。

消息 m 通过下面的公式加密:

 

c = E(m) 通过下面的公式解密:

 

因为  ,并且 m 的指数就是对 (p-1)(q-1) 这一组数取模,这样我们就得到了 (译者注:可以由费马小定理和中国剩余定理推出)。而且 RSA 的安全性是基于假设:n 不能被轻易有效的因式分解,d 不能通过 e 计算得到(如果我们知道 p 和 q 的话,就可以轻易得到我们想要的值)。

RSA 的一个牛逼的特性是同态乘法。通常来讲,如果你可以交换两个操作的顺序而不影响计算结果,那么我们就说这两个操作是同态的。在同态加密中,这就是你可以对加密数据进行计算的一个属性。完全同态加密是存在的,但是现在还没有应用到实际中,它能够对任何基于加密数据的程序完成计算。在这里对于 RSA 来说,我们只谈论 group multiplication。更准确的说就是:  ,用文字描述就是:两个加密信息的乘积等于两个信息乘积的加密。

这个同态的特性已经有一些乘法的零知识证明了:证明者知道一些私密的数字 x 和 y,并计算出了它们的乘积,但是只给验证者发送加密的版本:a = E(x), b = E(y) 以及 c = E(x y)。验证者检验等式 (a b) % n ≡ c % n 是否成立,此时验证者只知道加密版的乘积以及乘积是否被正确的计算,但是她不知道两个乘数和真正的乘积。如果你用加法来替代乘法,那就是一个主要操作为添加余额的区块链方向了。

交互式验证

我们已经对零知识这个概念有了一定的了解了,现在让我们着重看一下 zkSNARKs 的另一个主要的特性:简明性(succinctness)。之后你会看到这个简明性是 zkSNARKs 更牛逼的部分,因为零知识部分的实现就是因为这一特定编码,而这个特定的编码是一个有限形式的同态编码。

SNARKs 是 succinct non-interactive arguments of knowledge 的缩写。一般都通用设置之所以叫做交互式协议,是因为这里有一个证明者和一个验证者,证明者想要通过交换信息的方式让验证者相信一个表达式(比如 f(x) = y)。一般来说,没有证明者可以让验证者相信一个错误的表达式(可靠性),而且对于证明者来说一定存在一个确定的策略让验证者相信任何真实的表达式(完整性)。SNARKs 各个部分的的意义如下:

  • Succinct:比起真正需要计算的长度来说,我们发送的信息大小是很小的。

  • Non-interactive:没有或者只有很少很少的交互。对于 zkSNARKs 来说就是在证明者向验证者发送一条信息之后的过程。此外,SNARKs 还常常拥有叫做『公共验证者』的属性,它的意思是在没有再次交互的情况下任何人都可以验证,这对于区块链来说是至关重要的。

  • Arguments:验证者只对计算能力有限的证明者有效。拥有足够计算能力的证明者可以创造出关于错误表达式的(注意,只要拥有足够的计算能力,任何公钥加密系统都可以被破解)证明和参数。这也叫做『计算可靠性』,相对的还有『完美可靠性』。

  • of Knowledge:对于证明者来说在不知道一个叫做证据(witness)(比如一个哈希函数的原象或者一个确定 Merkle-tree 节点的路径)的情况下,构造出一组参数和证明是不可能的。

如果你添加了零知识的前缀,那么在交互中你就需要一个性质,即验证者除了知道表达式的正确与否之外其他一无所知。尤其是验证者不能知道 witness string ——稍后我们会详细解释这是什么。

关于零知识的部分相对正式的定义(仍然缺乏一些细节)就是:存在一个模拟器,它可以生成一些设置字段,但是却不知道私密的 witness,它还可以和验证者交互 — 但是外部的观察者却不能分辨出哪个与验证者进行的交互,哪个是与证明者进行的交互。

NP 和 简化的复杂性理论

为了了解 zkSNARKs 能用于哪些问题和计算,我们不得不基于复杂的理论定义一些说法。如果你不知道什么是 “witness” 的话,那么即使『读』完零知识证明你也不会知道它是什么,并且你也不会了解到为什么 zkSNARKs 只适用于特定的多项式问题,如果真是这样的话,那么你就可以跳过本节了。

P 和 NP

首先,我们限制函数只能输出 0 和 1,并称这样的函数为问题(problems)。因为你可以单独的查询一个长长的结果的每一位(bit),所以这不是一个真正的限制,但是这样可以让定理变的简单一点。现在我们想衡量解决一个给定的问题(计算函数)到底有多『难』。对于一个数学函数 f 的特定机器的实现 M,给定一个输入 x,我们可以计算出这个函数 f 需要的步数 — 这就叫做 x 在 M 上的执行时间,这里的『步数』其实不太重要。因为程序对于更大的输入往往会需要更多的步数,而这个执行时间则是用输入值的大小或者说长度(bit 的数量)来衡量。这就是例如『  算法』的来源 — 这就是一个当输入值大小为 n 时,至多需要  个步数的算法。这里的『程序』和『算法』广义上是相同的。

执行时间至多为  的程序也叫做 “polynomial-time programs”(多项式时间问题)。

在复杂性理论中有两个主要的类别,他们就是 P 问题和 NP 问题:

P 问题是具有多项式时间的一类问题

虽然 k 的指数对于一些问题来说确实非常大,但是实际上对于那些非人造的,k 不大于 4 的 P 问题仍然被认为是可以『解决的』的问题。要确认一笔比特币的交易就是一个 P 问题,因为经过评估它需要一个多项式时间(并且只能输出 0 和 1)。简单的说就是,如果你只是计算一些值而不去『搜索』,那么这个问题就是 P 问题。但是如果你不得不搜索一些东西,那么你就会进入到另一个叫做 NP 问题的类别中。

NP 类问题

几乎所有的 NP 类问题都是 zkSNARKs,今天在实际中使用的 zkSNARKs 在通常意义上讲都属于 NP 问题。而我们目前还不知道的是,有没有不属于 NP 问题的 zkSNARKs 存在。

所有的 NP 问题都有一个特定的结构,这个特定的结构来自于 NP 问题的定义:

  • NP 问题是 L(含有多项式时间的程序 V)的一类问题, 这个程序 V 可以在给定一个多项式尺度的叫做因子的 witness 的情况下验证这个因子。更正式的说就是:
    当且仅当一些多项式尺度的字符串 w(被称作 witness)满足 V(x, w) = 1 时,L(x) = 1 成立。

P = NP ?

如果你将 NP 问题定义为长度为 0 的 witness strings,那么你会发现这就是 P 问题。因此 每个 P 问题其实都是 NP 问题。在复杂性理论研究中有一个主要的任务就是发掘出这两类问题的不同 — 即一个不属于 P 的 NP 问题。在这里似乎是很显然的,但是如果你可以再一般情况下证明它,那么你可以获得 1 百万美元。额外说一句,如果你可以反向证明,即 P 和 NP 是等价的,也可以获得那笔奖金。而数字货币领域有朝一日能够证明的概率很大。我这么说的原因是,比起一个哈希函数的碰撞或者根据地址找到私钥来说,找到一个工作难题解决办法的证明显然更容易一点。这些都是 NP 问题,因为你刚已经证明了 P = NP,那么对于这些 NP 问题来说就一定存在一个多项式时间的程序。但是本文就不讨论了,虽然大部分研究者都认为 P 问题和 NP 问题并不是等价的。

NP 完全问题

让我们再回到 SAT。这个看起来简单的问题有个有趣的特性就是它并不仅是 NP 问题,还是 NP 完全问题。『完全』这个词在这里和『图灵完备』是一个意思。这意味着它是 NP 中最难的问题,但是更重要的是 NP 完全的定义——任何 NP 问题的输入都可以用下面的方法转换成一个同样的 SAT 的输入:

所有 NP 问题 L 都有一个在多项式时间可计算的『还原函数(reduction function)』f:

  • L(x) = SAT(f(x))

这样的一个还原函数不能被看成一个编译器:编译器是可以将一些编程语言写的源代码等价的转换成另一种编程语言的机器,也就是拥有语义行为的机器语言。因为 SAT 是 NP 完全的,所以这样一个还原对于任何可能的 NP 问题都是存在的,比如给定一个合适的 block hash,验证一笔比特币交易是否合法。这里还可以将一笔交易转换成一个布尔函数的还原函数,因此当且仅当这个交易是合法的时候这个布尔函数就是可满足的。

还原示例

为了弄明白这样一个还原的方法,让我们先考虑评估多项式的问题。首先,让我们定义一个由整数常量,变量,加法,减法,乘法和(正确匹配的)括号构成的多项式(类似于布尔函数)。现在让我们考虑下面的问题:

  • 如果 f 是一个变量都来自于集合 {0, 1} 的多项式,并且其中包含一个零项,那么 PolyZero(f) := 1

现在我们就可以构建出一个从 SAT 到 PolyZero 的还原方法了,同时这也说明了 PolyZero 也是一个 NP 完全问题(验证它是否属于 NP 就当是留给你们的小练习啦)。

有些人可能会假设将 r((f ∧ g)) 定义为 r(f) + r(g),但是那样的话多项式的结果就会超出集合 {0, 1} 了。

使用函数 r,((x ∧ y) ∨¬x) 被转换成了 (1 – (1 – (1 – x))(1 – (1 – y))(1 – (1 – x))。

注意,对于 r 来说,每一个替换规则都满足了之前声明的目的,因此 r 也正确的实现了还原:

  • 当且仅当 r(f) 含有集合 {0, 1} 中的一个 0 时,SAT(f) = PolyZero(r(f)) 或者说 f 是可满足的

Witness preserving

从这个例子中你可以看出还原函数只定义了如何转换输入,但是当你仔细看的时候(或者阅读完如何完成一个可用的还原证据之后)你就会知道如何将一个可用 witness 和 输入一起转换。在我们的例子中,我们只定义了如何将函数转换为多项式,但是不知道如何将我们解释的证据转换成满足赋值的 witness。这个 witness 在同一时间转换对于交易来说不是必要的,但是通常都会包含。而这对于 zkSNARKs 来说是至关重要的,因为对于证明者来说他唯一的任务就是让验证者相信有这样一个 witness 存在,并且还不会暴露任何有关 witness 的信息。

Quadratic Span Programs

在上一部分中,我们看到了 NP 问题的计算是如何被相互化简的,尤其是那些 NP 完全问题,那些 NP 完全问题基本上又都再次形成了其他的 NP 问题——包括交易验证问题。那么对我们来说找到一个对所有 NP 问题都通用的 zkSNARKs 就变的很容易了:我们只需要选择适合的 NP 完全问题。所以如果我们想展示如何使用 zkSNARKs 来验证交易的话,那么展示如何处理这个确定的 NP 完全问题就是一个有效的方法,并且比从理论上解释更容易让人接受。

接下来就是基于论文GGPR12(这里面链接的技术报告比原文的干货更多)来谈了,这篇论文的作者发现了一个叫做 Quadratic Span Programs(QSP)的问题,这个问题完全就是为 zkSNARKs 准备的。一个 Quadratic Span Program 是由一组多项式和寻找给定多项式倍数的线性组合任务构成。此外,输入字符串的每个单独的 bit 都限制了你能够使用的多项式。详细来说(通常来讲 GSPs 限制不是那么严格,但是我们就是需要这种强限制的版本,因为后面我们会用到)就是:

对于输入长度为 n 的在域 F 上的 QSP 问题由下面这些部分构成:

这里的任务很粗糙,就是给多项式乘以一个因子并把它们加起来(也叫做『线性组合』)使得它们的总和是 t 的倍数。对于每一个二进制输入字符串 u 来说,函数 f 限制了可以被使用的多项式,或者更严格的讲就是它们必须是线性组合的因子。正式的表示就是:

注意,在这里当 2n 小于 m 时,选择元组 a 和 b 仍然是有很大的自由度的。这就意味着 QSP 只对特定大小的输入是有价值的——这个问题可以通过使用非均匀复杂度来解决,非均匀复杂度这个话题今天我们不会深入的讲解,我们只需要知道当输入值很小时,我们的密码学也能良好运转。

这里我们不会讨论如何将通用计算和线路问题简化成 QSP 问题,因为这对于我们了解基本概念没有任何帮助,我们只需要知道 QSP 是 NP 完全(或者说比一些非均匀分布的像 NP/poly 问题更完全)的就好了。实际上,这个简化是一个『工程』部分——必须要使用一种很聪明的方法才能让 QSP 问题尽可能的小并且有一些其他的优良特性。

zkSNARK 详解

现在让我们来详细的描述一下 QSP 上的 zkSNARK。它在开始设置阶段会执行每一个单独的 QSP。在 zCash 中,交易验证者的线路是固定的,因此 QSP 的多项式也是固定的,这个 QSP 在设置阶段只允许被执行一次,然后在所有的只有输入 u 不同的交易上复用。这个开始的设置会生成一个公共参考串(common reference string,CRS),验证者选择一个随机且私密的域元素,并在这个点加密多项式的值。验证者使用一些特定的加密方法 E 并在 CRS 中

如何使用零知识来简单估计一个多项式

首先让我们先来看一种简单的情况,即一个多项式在私密点上的加密估值,而不是完整的 QSP 问题。

这里的这个示例告诉我们验证者并不需要求出完整的多项式来证明这一点,仅仅使用配对函数就可以了。下一步我们就要添加零知识的部分了,这样验证者就不能构建任何关于 f(s) 值了,甚至连 E(f(s)) 这种加密信息也不行。

好的,现在我们总算知道了一点关于在验证者不知道那个值的情况下,证明者是如何在一个加密的私密点上面计算出多项式加密值的。接下来让我们把这些应用到 QSP 问题中吧。

QSP 问题的 SNARK

  

最后一个等式用来检验是否使用了正确的多项式(这一部分还没有讲到,不过其他的例子会说到它)。要注意的是,我们所有的加密值,证明者只需要知道 CRS 就可以全部推算出来。

而验证者现在要做的还有这些:

假设证明者提供了一个正确的证明,让我们检验一下等式是否满足。左边和右边的部分分别是:

添加零知识

在输入和 Witness 大小之间取一个折中的值

就像你在上面这些小节中看到的一样,我们的证明由一个群(就是一个椭圆曲线)的 7 个元素组成。而且验证者的工作就是检验一些配对函数的等式是否成立以及计算  这样一个跟随输入大小的线性任务。最主要的是,在这个验证过程中,既不需要 witness 字符串的大小,又不需要计算工作量来验证 QSP(没有 SNARKs)。这就意味着 SNARKs 的校验是个很复杂的问题,而简单的问题往往都是一样的。造成这个结果的主要原因则是,因为我们只在一个单独的点上面检验了多项式的一致性,而不是全部的点。多项式可以变的非常非常复杂,但是一个点始终是一个点。而唯一能影响到验证结果的参数就是安全性的等级(比如群的大小)和输入值的最大尺寸。

减小第二个参数是可行的,将输入值的一部分移动到 witness 中:我们不验证函数 f(u, w),u 是输入,w 是 witness,而是做一次 hash,然后验证:

 

这样就意味着我们可以用一个 hash 来代表输入 h(u) 了(这样就会变的更短),除了验证 f(x, w),我们还需要验证某个值 x 的 hash 等于 H(u)(这样的话,那 x 极有可能就等于 u 了)。这样就将原始输入 u 移动到 witness 字符串中了,这样虽然会增大 witness 的大小,但是输入值的大小就减小为一个常数了。

这简直太厉害了,因为这意味着我们可以在常数时间内完成对任何复杂表达式的检验。

zkSNARKs 和 Ethereum 关系紧密

因为验证计算是 Ethereum 区块链的核心,所以 zkSNARKs 和 Ethereum 关系紧密相连。有了 zkSNARKs,我们不但可以完成任何人都可证实的私密的计算,而且还可以高效的完成。

虽然 Ethereum 使用了一个图灵完备的虚拟机,但是当前在 Ethereum 上实现一个 zkSNARK 还是不可能的。从概念上讲,验证者的任务似乎很简单,但是配对函数是真的很难计算,而且在单个区块中还会消耗更多的 gas。椭圆曲线的乘法相对来讲已经非常复杂了,而配对函数将这个复杂度又增加了一个级别。

像 zCash 这种现存的 zkSNARK 系统对每一个任务都使用的是同样的问题,circuit 计算。在 zCash 中,就是交易验证。在 Ethereum 上,zkSNARKs 将不会只单单做一个计算问题,而是让所有的人都能够在不发布一个新的区块链的情况下构建他们自己的 zkSNARK 系统。每一个添加到 Ethereum 上的 zkSNARK 系统都需要进行一个新的私密的可信任的准备阶段(一些可以复用,一些不能),比如生成一个新的 CRS。像为一个『通用虚拟机』添加 zkSNARK 系统将会变的可能。这样的话当你使用一个新的实例时,你就不需要重新设置了,因为你将不再需要为 Ethereum 上新的智能合约发布一个新的区块链。

如何在Ethereum 上启用 zkSNARKs 

在 Ethereum 上启用 zkSNARKs 有很多种方式。所有的方式都可以为配对函数和椭圆曲线操作(其他必要的操作都很简单)减小真实的损耗,因此我们也要减小这些操作消耗的 gas。

  • 提升(确保)EVM 的性能

  • 只在确定的配对函数和椭圆曲线乘法上提升 EVM 的性能

第一项在长期显然会得到很好的回报,但是实现起来难度比较大。我们现在已经在对 EVM 添加一些新的功能和限制了,例如更好的支持及时编译以及在现存实现下最小改动的解释器的实现。当然也不排除直接用 eWASM 来替换 EVM。

第二项则可以通过强制所有的 Ethereum 客户端执行一个确定的配对函数和确定的椭圆曲线乘法的叫做预编译合约的东西来实现。这样做的好处就是实现起来既简单又快速。而缺点呢则是这样做我们就会固定在一个确定的的配对函数和一个确定的椭圆曲线上。所有 Ethereum 上新的客户端都不得不再实现一遍这个预编译合约。所有,如果有什么新的进展,或者有人可以找到更好的 zkSNARKs 的方法,更好的配对函数,更好的椭圆曲线,又或者发现了椭圆曲线,配对函数和 zkSNARK 的一些缺点,那么我们就会添加到新的预编译合约中。

雷锋网

区块链研习 | 什么是跨链?

雷锋网AI金融评论按:本文作者为中国信息通信研究院(工信部电信研究院)专家敖萌博士,雷锋网独家特约文章,雷锋网与信通院子公司泰尔英福联合发布。未来,敖萌博士原创的区块链系列文章还将继续刊出,敬请关注! 

随着区块链技术的火热,出现了大量的区块链企业,也出现了大量不同的链。随之而来的是一个新技术的诞生——跨链技术

跨链,顾名思义,就是通过一个技术,能让价值跨过链和链之间的障碍,进行直接的流通。那么怎样理解跨链呢? 

区块链是分布式总账的一种。一条区块链就是一个独立的账本,两条不同的链,就是两个不同的独立的账本,两个账本没有关联。本质上价值没有办法在账本间转移,但是对于具体的某个用户,用户在一条区块链上存储的价值,能够变成另一条链上的价值,这就是价值的流通。 

这样说比较晦涩,我们用换汇来理解就方便了。人民币是一个独立的货币,美元是另一个独立的货币。人民币无法直接变成美元,美元也无法直接变成人民币。因此,美元无法直接进入人民币账本,人民币也无法直接进入美元账本。需要有人愿意买入人民币/美元,卖出美元/人民币,才能完成货币的兑换,实现价值的跨账本流动。

Alice有100美元,她来到了中国,需要使用人民币进行交易。于是她必须找到愿意和她兑换外币的人,例如Bob,Alice将100美元卖给Bob,Bob收到了Alice给他的100美元,按照当时的汇率,给了Alice 657人民币。

从账本上看,整个外币兑换的过程是这样子的。


首先Alice在美元的账本上有100美元,Bob在美元的账本上有0美元;

Alice在人民币账本上有0元,Bob在人民币账本上有657元。

然后Alice在美元的账本上转账给Bob 100美元,

Bob在人民币的账本上转账给Alice 657元人民币。

于是,Alice原本在美元账本上的账户中的100美元的价值就转移到了Alice在人民币账本上的账户中,体现为657元人民币。

在这个过程中,Bob在人民币账本上的的657元人民币的价值就转移到了Bob在美元账本上的账户中,体现为了100美元。

整个兑换过程中,在两个账本上同时发生了转账交易。


在整个兑换的过程中,人民币账本上的人民币总数没有变化,仍是657元;美元账本上的美元总数也没有变化,仍是100美元。变化的是两个账本上货币的持有人。

转账前:


Alice
Bob
账本总额
人民币账本
0
657
657
美元账本
100
0
100

转账后:


Alice
Bob
账本总额
人民币账本
657
0
657
美元账本
0
100
100

跨链本质上和货币兑换是一样的。跨链并没有改变每个区块链上的价值总额,只是不同的持有人之间进行了一个兑换而已。 

综上,跨链技术的核心要素之一是:帮助一条链上的用户Alice找到另一条链上的愿意进行兑换的用户Bob。从业务角度看,跨链技术就是一个交易所,让用户能够到交易所里进行跨链交易。

进行数字货币的交易所很早就出现了,最早交易所进行的是法币(国家发行的货币)与比特币之间的兑换。后来随着数字货币的种类越来越多,很多交易所也开始进行不同类型数字货币之间的兑换。交易所开展的不同类型数字货币之间的兑换,就是一种跨链价值转移的实现。严格来说,币币交易所就是一个跨链技术的实现。

 

由于不同的币种在不同的区块链上。而区块链本身又是为了解决信任问题而产生的,那么不同的区块链间的用户如何确保自己的权益不被损害?

Alice要找Bob把比特币兑换为以太币,如果Alice把比特币转给了Bob,而Bob没有把以太币转给Alice,该怎么办? 

这时,交易所的另一个作用就显现出来了:利用自身的信用来提供兑换交易时信任的传递。具体操作方法来说,通常就是Alice把比特币转给交易所,Bob把以太币转给交易所,然后交易所再把以太币转给Alice,比特币转给Bob。通过交易所中间代持一次数字货币,实现信任的传递,使得Alice和Bob之间的交易能够进行下去。整个信任的传递就是Alice信任交易所,Bob信任交易所,于是Alice和Bob之间建立了信任。

但是,这里又诞生了一个新的问题。交易所也是由某个人或者机构运行的,他的信用足够吗?

交易所会不会带着Alice和Bob的比特币和以太币直接跑路?

答案是:真的有可能耶!

单个人或者机构的信用都不足以支撑大额交易。因此,出现了无中心交易所技术——用区块链技术解决跨链时的信用难题。

当交易所由多个主体共同运行,或者干脆是一个公有链,任何人都能参与到这个交易所的运行中,那么,跑路的风险就大大降低了。

于是,引出了无中心跨链技术的一个难题:怎么让多个主体来共同控制一个账户?

针对不同的区块链,存在不同的解决方案。绝大部分区块链都支持多签名的钱包,利用多签名钱包可以实现这个任务。另外,还可以通过密码学办法,利用分组计算,实现私钥的拆分,进而实现多个主体通过投票方式来控制一个账户。这个问题已经属于技术上非常复杂的问题了,感兴趣的同学,可以去看相关跨链技术的源码。

雷锋网

区块链研习 | DAG网络:Blockless无区块概念将解决区块链交易性能问题

雷锋网AI金融评论按:本文译自BTCManager.com。雷锋网AI金融评论报道,作为一种计算机领域的拓补数据结构,DAG(Directed Acyclic Graph,有向无环图)在第一次被提出来结合应用在区块链时,是为了解决比特币区块生成效率低下的问题。基于链式的存储结构,比特币网络平均的出块时间在十分钟左右。而变成区块DAG后,在区块打包时间不变的情况下,可以在网络中并行打包区块,在网络中容纳更多的交易同时进行。而在本文中介绍的DAG与Byteball系统结合的提议,则引入了无区块Blockless的概念,称将极大提升交易效率。

即使是对于普罗大众来说,在接触到虚拟加密货币的时候,就能感受到其显现出区块链相关的技术趋势。在其中最为显著的成果是比特币,同时以太坊也因其独特的技术优势获得不少关注,但实际上,区块链的发展前景远远比这辽阔得多。

在比特币在资本市场呼风唤雨之前,已经有几个版本不同的虚拟加密货币诞生了。但是比特币拥有它们所没有的,就是去中心化的伟大梦想。引入了不可篡改等区块链特性的分布式分类账本,比特币在全球范围内迅速风靡,获得了许多推崇。 

然而,随着时间的推移,我们的确看到了在比特币和区块链中出现了一些问题。尽管它依然保持了不可篡改和去中心化的特性,一个巨大的问题已然凸显出来:由于区块链先天运作机制而产生的交易时间过长的问题。在Byteball区块链平台上,一项新技术通过在顶层设计中增添新的特性,来为这个比特币中产生的问题提供解决方案。

这个新技术即为Directed Acyclic Graph (DAG)有向无环图组织模型。与区块链的工作机制不同的是,区块链需要矿工来完成工作量证明(PoW)来执行每一笔交易,而DAG能摆脱区块链的限制来完成这样的操作。相反的是,在DAG中一笔交易接着另外一笔,这意味着一笔交易能够对下一笔交易提供证明,由此一直排序下去。这些交易之间的连接就是DAG,就像区块通过哈希值来向整条区块链提供它们的名字一样。

无区块概念与相邻交易验证机制

通过使用这样一个系统,交易时间的将会变得微不足道,比特币也能得到良好的运作环境。在区块链的运营机制中,每笔交易要花费十分钟的时间。而通过DAG,由于每笔交易都与下一笔交易相连,且矿工被排除在外,交易时长会随着越来越多用户加入系统而缩短。

在DAG系统中,剔除矿工的设置能够避免像区块链系统中某一个矿池集合全网50%算力的威胁,与双重攻击的隐忧。那么,DAG是如何规避这样的威胁的呢?没有了区块链中的工作量证明共识机制,DAG的交易指令能够通过这么多起交易向外扩散,正因为每一笔交易都已经极快地扩散通知至全网,大部分双重支付的攻击尝试将会被系统捕捉到并立即拒绝执行。

以防在DAG网络中的并行支路上同时进行双重支付攻击,Byteball系统启用了由可信目击者(trusted witness)来运作的“主链”(main chain)。用户将能够从被验证过的和信赖的“目击者”中进行挑选,而这一条主链的记录会被认证为唯一有效的。

和以太坊相比较,DAG网络虽然不具备智能合约强制执行的特性,但它能为用户提供一个相对简单、清晰易辨的架构,以太坊的系统则要更为复杂许多。这不仅使得用户能更容易去理解他们的虚拟货币什么时候和怎么样进行支付,而非依靠着一个满是程序员和合约的世界。从这个角度来看,可以把DAG网络看出是一个智能合约缺席执行者和旁观者的版本。

如果DAG能得到更为广泛的应用,它在几乎每个级别都能显露出比区块链更优的特性。在目前区块链系统中,随着交易时长这样的问题显现出来,用户可能会尝试选择如DAG这样更为技术超前的系统。这将会是虚拟加密货币交易在未来的发展趋势吗?也许在目前,对这些新兴技术并重开发才最明智。

雷锋网

雷锋网