Mempool联合创始人林哲明:BSV的应用程序架构设计及误区
摘要: 在9月7日举办的“BSV开发与商业生态大会”上,Mempool联合创始人林哲明表示,未来BSV将成为唯一的公链。
9月7日,Bitcoin Association(比特币协会)与OKEx、链得得联合在中国北京举办了一场BSV开发与商业生态大会,嘉楠耘智、wework作为协办方鼎力支持了此次活动。
这次活动是Bitcoin Association(下文简称BA)设置中国区域负责人以来的首次线下亮相,同时也是Bitcoin SV在中国地区的第一场官方活动。
在活动上,Mempool联合创始人林哲明就BSV的应用程序架构设计及误区话题发表演讲。
在谈到双花交易问题时,他表示并不是指这个网络上不能有双花,这是很重要的一点。很多做应用的开发者认为,“真正的比特币网络交易就应该是拒绝双花,不能允许它存在”。而作为矿工必须坚守自己认为最真实的账本,所以我们不会允许像别人宣传的那样说——“根据节点代码,你收到那个速度最快的来自攻击者的区块,你应该把自己的算力切到它那边去,去跟随着攻击者的区块走”。
他认为在比特币网络世界里面,矿工自然形成了一个小世界网络,每一个矿工节点和其它矿工基本上都保持着良好的连接,任何一条信息最多经过两次跳跃,就能够完成在矿工中的传播,这意味矿工之间的网络将成为下一代互联网的核心骨干基础设施。
从账本维度,林哲明对BSV进行了分析,使用了UTXO结构的BSV使得账本的验证难度随着交易量呈现对数级别增长,当交易量扩张时,验证成本增速只可能越来越慢。这使得BSV或将成为唯一的公链
经过编辑整理,林哲明的演讲全文如下:Mempool联合创始人 林哲明
在这里,要感谢比特币协会给我这个机会。首先自我介绍一下,我是来自Mempool的林哲明,我的另一个身份是BSV社区的矿工哲亮。除了一直在挖矿外,还搭建了一个矿池,甚至开发了自己的数字钱包,整个过程我乐在其中,感觉像是承包了这条产业链。
矿工是如何保护比特币账本安全?矿池是区块链行业的核心基础设施。挖矿这件事情,可能很多人的理解存在一个误区:矿工在深山老林里面偷电,然后买一些机器放在那运行,就保护了比特币的安全。事实上,真正保护比特币账本安全靠的是具有打包权的服务器对网络持续的监测,防御对比特币网络的攻击。
其中一个经典的例子就是BCH硬分叉事件,Craig博士领导并使用Bitcoin SV节点,反抗来自Bitcoin ABC试图修改比特币协议的攻击。这个保护账本的动作其实很简单,就是使用invalidateblock的方式,拒绝试图攻击的区块。在这种情况下,矿工用自己的算力投票,来保护比特币真正的账本。
由此延伸一下,在现实生活的区块链世界里,最早比特币出来的时候,存在“经过六个区块确认后就会比较安全”的这么一个说法。这也是为什么很多人在使用钱包、交易所转账、入账时都很注意确认数的原因。确认就是你的交易已经被某个矿工打包在区块里,写在了这个矿工眼里最可能成为最长链一部分的某一个账本里。六个确认是为了应对区块链上面随时会出现可能的分叉。如果出现分叉是否会影响用户资金的安全?这点需要注意,实际在比特币领域,区块并非一个重要核心理念,反之交易才是最重要的因素——每一个交易都带有交易发送方的数字签名,它是一个合法的数字证明,且是依靠交易来保证的,而不是依靠区块。
由于每位矿工都独立地验证交易信息的合法性并将其广播给其他矿工,所以矿工在不同交易版本的选择上发挥巨大作用。在这个流程背后存在着经济驱动,当交易更快送达至其他矿工时,矿工打包的区块也可以更高效传达到了其他矿工手里,这就降低了矿工自身的孤块率。
假设突然出现了一个双花交易,矿工会将这个交易和其他矿工手里收到的交易进行对比,看其是否会被其它矿工所接受,如果这笔交易有99%的算力都认可他的话,可以认为它在下一个区块写入账本的可能性是高达99%。事实上,某笔交易在网络上面并没有收到有双花通知的话,则可以认为这个交易应该是能够被写入账本的,这就是我们讲的零确认交易概念。
所以,零确认交易并不是指这个网络上不能有双花,这是很重要的一点。很多做应用的开发者认为,“真正的比特币网络交易就应该是拒绝双花,不能允许它存在”,其实这并不必要,关键只在于,需要收款方能够确定地知道——自己收到的交易是否不存在双花的可能性,就是完成任务了。
如果存在双花的可能性的话,只有可能是这个交易的人在作弊导致的这个原因,因为只有他能够签名出另外一个版本的交易,所以从开发者的视角来看这个问题的话:
第一,把交易作为核心的原则进行控制,而不是看区块确认,区块确认其实不重要。
第二,在收到交易以后,应该尽快把这个交易和其他所有的矿工进行交叉的确认,确认这个网络上是否存在另外一个版本的交易。尤其是第二点,很多开发者并没有做到,他们都还依赖于广播这么一个概念。
假设一个前提,某个交易在网络上没有发现同时存在的双花交易,但是10分钟以后我们发现出了一个新的块,这个块出现了一笔双花交易,覆盖了原先的交易,这就是大家所说的矿工双花攻击网络。某个矿工恶意打包了一个区块,这个区块双花了用户的币。但这个双花过程是可以被其他矿工检测到的,因为每一笔写入账本的交易,是经过了所有矿工确认并认可的。但是在网络上突然无征兆地出现了另外一个块的交易导致双花,使得现有的交易不合法了,那只可能说明比特币网络受到了来自恶意矿工的攻击。
回到刚才的问题,我们矿工用什么样的方式来保护比特币的账本呢?就是通过检测可能出现的双花交易,并且拒绝掉包含着不应被其它矿工认可的交易版本所在的那个区块来完成的。
在这时候网络会不可避免出现分叉,因为我们作为诚实的矿工,必须坚守自己认为最真实的账本,所以我们不会允许像别人宣传的那样说——“根据节点代码,你收到那个速度最快的来自攻击者的区块,你应该把自己的算力切到它那边去,去跟随着攻击者的区块走”,这是一个很大的概念误区。
如果对对挖矿的概念不太了解的人,就可能会误以为双花BSV的成本很低,只需要用全网百分之一点几的算力就可以发动攻击,带着所有不明真相的BSV账本分叉,对账本进行任意修改。如果是这样的话,攻击者大可以放马过来试一下。我们作为矿工会坚守看到的诚实账本,不管背后有多少算力。我们会坚持直到自己破产为止,所以这并非简单一句话说,我只要快速的对交易进行6次确认,所有其它的账本、交易所全部都跟着我了。
对于交易所来说,假设在网络上看到了两个不同版本的账本,一个账本是诚实的,但拿到的算力暂时比较低,另外一个版本是攻击的账本,上面有很多非法的双花交易,那你应该选择哪个账本,是选择算力更大的账本还是选择一个诚实的账本?这个问题留给所有的交易所,留给所有的应用开发者,相信他们会有自己的判断。
广播交易的弊端现在很多开发者都依赖广播,但它事实上是一个给很多人带来了幻觉的魔术。作为一个矿工,跟其他矿工广播自己收到了什么交易,就像突然间所有矿工都听到了广播,并记在账本上,转帐顺利达成,这是大家以为的。
但是在比特币世界里,其实不存在大家想像的这种广播。每个节点只保持与其它6-7个节点的连接,假设矿工收到了一个交易,也只能跟6-7个其它节点进行交易的传递,它并非一个广播,但现在很多人把它错误理解为广播。
实际上并不存在一个方法,你只需网络大吼一声,就能够保证它传达至网络上连入的所有的其它节点而没有错误。所以,在做开发的时候,需要提醒自己不能依靠P2P网络广播的方式来传递交易。这种方式把实际成本转嫁到了接收方手里,对接收方来说首先需要监听并过滤掉当前网络上的每一条信息,然后找出跟自己相关的那条信息,才能最终确认自己收到的钱。
打一个比方,就好像我要转账给Lise小姐,然后我在我的支票上面写上了Lise小姐收,然后把它往地上一丢,跟Lise小姐说我钱转给你了,已经丢出去了,什么时候收到,看有谁捡到这个支票以后能传到你手里。这个做法与比特币设计理念背道而驰,本质上我们使用比特币是因为它能够更节约成本,不能通过如此低效率的方式来完成交易传递。
真正的比特币交易过程应该是付款人将交易签完名直接发到收款人手里,收款人把这个交易转发给接触到的矿工,让矿工帮忙检测网络上是否存在双花,并把该交易写入矿工账本里。
之前我从巴厘岛的CambrianSV会议回来,发现很多开发者并没有真正的意识到如何正确使用比特币网络,这或许是一个大问题。如果每个交易都还是依赖于P2P网络广播,然后大家再从另外一个接口,用另一套程序去监听消息的传递,最后才收入交易的话,整个流程效率极低,这种做法在我们将来实现GB级别甚至TB级别区块的时候,难度和成本也非常高。
因此,所有的开发者可以尝试完全摒弃掉广播交易的做法,只有这样才能够实现比特币的扩容,才能够帮助区块达到TB级别。
所有的钱包包括我自己的打点钱包到最后都会面临一个问题:随着用户使用频次提升,成千上万个比特币历史使用地址对性能是一个巨大的挑战。钱包开发方需要监听网络,在面对如此多的收款地址,保证每份资金能够安全无误地转出、转入和记账。未来可以预见很多钱包将逐渐摒弃这种收款模式,而所有交易都是点对点的,我们也将提供一系列基础设施,包括PKI、CA,来协助用户完成点对点、直接的交易。
矿工网络--下代互联网核心基础设施那未来比特币网络如何做到这一点呢?
很多人认为矿工的挖块就是刷哈希,事实上矿工的目标并不是以最快的速度出块,而是需要让其它矿工接受自己的工作成果。谁出的块诚实、速度快、传播性好,匹配了当前网络效率,那么就会被其它矿工所接受,在你的账本版本上投票。
矿工们为了减少损失,提高收益,会尽可能的提高和其它矿工的连通性。一方面,尽快把刚出的区块收到手里,并开始挖下一个区块。另一方面,在自己打包出区块时,尽快把区块传递给其它的矿工,让别人在自己的区块上工作。在比特币网络世界里面,矿工自然形成了一个小世界网络,每一个矿工节点和其它矿工基本上都保持着良好的连接,任何一条信息最多经过两次跳跃,就能够完成在矿工中的传播,这意味矿工之间的网络将成为下一代互联网的核心骨干基础设施。
而用户和服务提供商通过SPV(简单支付验证)节点和矿工之间的小世界网络保持紧密连接,全世界可能有几十上百号矿工,你可以选择一个离你最近、速度最快的矿工进行连接,然后你可以委托他们帮你把消息传递给你的目标的用户,这是作为基础设施的矿工网络可以为大家提供的服务。
矿工和用户之间的每一个连接全部由公钥进行控制和识别的,在接下来的IPV6地址背后由于CGA的加持,都会具备公钥和私钥。通过这种方式,极大改善我们当前互联网的连接,每一个参与者通过自己的电脑,委托矿工,在通过矿工网络,在四跳之内将信息传递给目标服务器!在当前,十跳已经是很快的结果了,尤其通过中国网站里,用户要访问美国服务器,需要层层往上找到边界网关服务器,再层层往下去翻到目的地址,这中间的过程没有十几跳是完不成的。在可以预见的未来,所有的浏览器、所有的用户、所有的手机都可以使用SPV的方式和矿工保持直接连接。
但直接连接并不是像大家想的那样,连接上矿工服务器并开一个连接,就可以传递数据了,矿工也自然的帮我转播交易了。不是这样的,因为交易的转播是有成本的,天下没有免费的午餐。如果你发出的交易是带手续费的,为了赚取手续费矿工会接受交易。但是有很多的交易,矿工是拿不到手续费的,这时候就需要一个叫做支付通道的技术,来额外的向矿工支付成本。
这就要说到我的矿池产品, Mempool会对开发者正式开放支付通道技术,让开发者使用支付通道为自己的交易打包付一些微小的费用。有人抱怨说,在比特币网络上传照片、传视频,传各种各样的东西很贵,在打包不同种类的交易时,Mempool具备了一定的自主权,可以实现更低费率来接受这样的交易,这是我们的一大优势。
第二大优势就是,在支付通道下,每一个消息传递都是有数字签名的,它和现有HTTP和API等最大区别就在于,用户可以为数据本身甚至数据传递定价。将来你或许可以付钱给矿工,付一笔小费用,同时告知矿工去用公钥取回对应服务器上的信息。矿工通过传递这个被签名的信息来赚取他的服务费。
这一系列是接下来会在BSV网络上发生的事情。作为开发者我们不能只看眼前,而是想到接下来会发生什么事情,未来是否会出现以比特币协议作为基础协议的浏览器,不再是HTTP,是否会会出现用户自身客户端就有钱包可以通过签发交易的方式来传递信息?在这个基础上,我们才可以去设想、构筑未来比特币的应用。
为什么我要强调支付通道这么一个技术呢?这又涉及了另外一个开发的误区——认为将一切东西放在链上,问题就解决了。
其实上链的成本一直存在的,除非对数据安全性的要求高到愿意付出高昂的成本,否则并不需要把所有数据全都放在链上。
举一个大视频云存储的例子,我可以找多个的云存储服务商,我把我的视频分段切片后放在他们的服务器上,并且让他们使用哈希上链的方式来保证他们提供数据的完整性。我可以通过向他们查询哈希的方式获得原始数据。
在这种情况下,用户可以以极低的成本获得高可用性的数据,其一,有好几个服务商,其二,这里的数据的完整性有一个唯一的标准,用户可以举证对方给的数据是错的,因为这个数据的哈希存在链上,可被证明。
在这种情况下你并不需要特别在意你的数据是不是真的放在了链上。我们要以更高效的方式去使用比特币的账本空间,而这个账本空间的成本永远是存在那的。我们以一个更高效的方法来用它,来降低服务和应用的成本。而不是想着既然上传费用这么便宜,我把东西都丢到链上去就好了,真正适合放在链上的数据往往具备这么几个特征:
1、具有公开的价值。私人数据放在链上是用于存储,但是放在链上的数据绝大部分是用于和其他的商业伙伴进行共享。
2、这部分数据的完整性、真实性的校验的需求是很强的。你需要证明在某时某地确实存在这样的一份数据,它就具备着存储的价值。
之前在BSV上面出现的一个叫做RateSV应用,将交易所的分钟级别的交易数据传到了链上,作为企业结算、报税的一个参考数据,这就很好的使用了这两个特点。很有价值的数据需要公开,需要存在性证明。用户需要明白的是究竟要用区块链去解决一个什么问题。
BSV或将成为唯一的公链那为什么说BSV一定能成为唯一的公链?因为它的成本是最低的,人们现在看到的公链等都存在两个维度,一个维度是应用维度,一个维度是账本维度。在应用维度就是你所谓的应用场景,它可以做什么事情,并不强制要求底层的链一定得是什么形态才能完成应用场景,事实上只要具备智能合约的功能,账本公开、可审计、可查就行了。在账本维度,Token的转移全都需要在账本上进行表现、存储、验证,哪个账本的成本最低,又能满足用户需求的话,这个账本将会最终胜出。在这种情况下,找不到另外一个成本更低的账本来替代比BSV 账本。
拿打点钱包来说,打点钱包现在支持接收BTC,这个过程是在是在BSV上完成的,用户在转帐BTC的时候可以转到打点钱包的BTC地址,然后我们给用户发一个等额的BTC,这是写在BSV账本上的,用BSV的账本完成了BTC在不同用户的不同地址之间的转帐。链上完成,公开可查证,中间没有猫腻,更关键的是手续费极低。在接下来的迭代版本里,打点钱包将发布BTC发红包的功能。用户可以用1分钱的代价来转BTC。
那为什么BSV的成本是最低的呢?因为使用了UTXO的结构,UTXO的结构就是用户钱包里面的钱是不记名的,只需要验证钱从一个地方转到另外一个地方的转帐过程是不是合法就可以了。每次转帐的时候会花掉一些合法的UTXO,生成了新的UTXO,转帐完成,验证过程就结束了,非常简单、高效。只对钱本身有效,跟用户、跟背后的账户没有一点关系,巧妙的把用户的钱的余额计算转变成了在个人本地就可以完成的过程。不用借助其他人的帮助,用户以极低的成本了解自己的钱包里有多少币可以用。
在基于账户系统里面的账本里面,你要想验证一个钱从一个账户转到另外一个账户,需要对这个账户背后是否有相应数量的币进行验证,这是个成本高昂的过程。很多其它的共识体系,PBFT、DAG等等的共识体系,每一个交易的验证成本都比比特币交易的验证成本要高很多,只要交易量一大必然导致成本极速上升的,也就无法承载大量的交易。但是在交易量极大的时候,UTXO账本的验证难度随着交易量仅仅是对数级别的,随着交易量增长,验证成本增速只可能越来越慢。因此比特币的账本可以有能力承载起一切交易、一切事物。
所以,在这种情况下矿工额外的安全开销被平摊到海量的交易上面的时候,你会发现在海量交易下每一个交易成本上升只有一点点,但是每一个交易都很安全,这些微小的验证费用又能够支撑得起矿工的安全成本。
因此开发者要更清晰的看一看接下来可能会发生的事情,系统要如何去设置和其他的用户、开发者和应用保持更好的联系,不能再依靠广播、交易、过滤,把自己需要的东西保存下来,我建议每一个开发者都应该现在开始使用SPV模型。
我的分享就到这里,谢谢大家。
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。