火星链 火星链
Ctrl+D收藏火星链

DAPP:区块链钱包多平台签名方案

作者:

时间:1900/1/1 0:00:00

本篇技术文章源自于Nervos每周三举办的DevMeetup,作者为秘猿科技NervosAppChain技术总监段扬扬。---可能很多人都玩过区块链DApp,如加密猫,当你看到一只特别可爱的猫,想要购买时,通常你会看到需要下载安装MetaMask的提示。MetaMask是一款基于PC浏览器的插件钱包,要想下载安装成功,你还需要懂一点科学上网的知识,安装成功后,就可以通过唤起MetaMask插件钱包完成支付交易。

但是,如果你想在手机上玩加密猫,就会发现因为没有MetaMask钱包而无法继续游戏。或许你的手机里还有imToken等手机钱包,令人遗憾的是如果你通过手机浏览器打开加密猫游戏,依然是无法自动唤醒imToken等钱包进行签名支付。多平台签名问题和痛点

所以你会发现,DApp有很多承载方式,有基于PC浏览器的应用,也有手机原生APP应用。同样的,钱包也有很多承载方式,有诸如imToken手机客户端钱包,也有诸如以太坊官方钱包那样基于PC客户端钱包,也有诸如MyEtherWallet的开源web版钱包,还有各种各样的冷钱包。冷钱包很好理解,假设我的手机是一个没有联网的硬件,我需要签名支付的话,只需要拿一根USB线和电脑连接一下,就可以签名了,整个过程私钥都不会暴露在联网的环境中。也就是说如果你想在PC浏览器和手机上达到相同的DApp体验效果,并且不用频繁切换钱包账号,更不用来回相互转账,目前来看是做不到的。在PC端你可以用MetaMask钱包,在手机端则需要你在手机钱包中打开才能体验完整的DApp。想想支付宝和微信支付一站式的跨平台体验,你是否会有这样的念头,难道就没有一款钱包可以解决一站式多平台的签名痛点吗?更不幸的是MetaMask在自己的官方博客上提到,不建议用户把大量的资金放到这类插件钱包中,插件钱包是不安全的。也许此刻你会苦笑,我只是一个普通的小白用户,只想要一款可以多平台签名交易并且安全的钱包,难道这小小的要求都得不到满足吗?别急,我们不妨分析一下目前的现状和可能的解决方案。如果能有一种钱包可以解决所有平台DApp签名问题的话,那么就可以保证体验是一致的,而且移动端钱包的好处是私钥永远保存在手机本地,安全性比浏览器的钱包或插件钱包的安全性都要好;其次用户不需要安装各种各样的钱包来处理来自不同平台交易。所以如何平衡安全和易用性,以及全平台一致的体验,是多平台签名方案需要解决的问题。这是我们目前看到的行业诉求,于是我们开始调研并且尝试给出我们的解决方案。手机端扫码方案

中储京科与建设银行“区块链物流金融平台”实现跨链流转:8月20日消息,中储京科与建设银行首笔线上数字化仓单融资业务成功落地。基于区块链联盟链构建的共识机制,中储京科“货兑宝”平台与中国建设银行“区块链物流金融平台”实现了首笔数字仓单全线上跨链流转,经办行中国建设银行青岛市城阳支行成功为融资客户青岛德赛克贸易有限公司发放区块链电子仓单质押贷款。(东方网)[2021/8/20 22:26:48]

现有的互联网应用或许可以给我们提供一些借鉴思路,下图左边是手机端支付宝的支付页面。对于支付宝我们都很熟悉,如果是在手机端用支付宝支付的话,应用会自动唤起支付宝,然后直接在支付宝完成支付流程就可以了。如果是电脑端淘宝网页上支付的话,淘宝付款页面会出现一个二维码,只要打开手机支付宝,扫二维码,在手机里完成支付,然后支付结果就会传到淘宝网,整个支付过程就完成了,体验非常好,而且也非常安全。

图片右边是网易邮箱的服务,以前在PC端浏览器上登陆网易邮箱时,需要输入账号和密码,后来网易觉得这样不是很安全,输入账号和密码也比较繁琐,并且万一密码丢失该怎么办?考虑到每个人都有智能手机,而且手机相对个人来说是私密的,安全性很高,所以他们就在浏览器端登陆的时候给出一个二维码,用手机端的邮箱APP扫一下二维码,手机端完成验证鉴权,然后PC浏览器上的网页邮箱就自动登录成功了。现有互联网产品的解决思路是,既然在浏览器端无法解决保证更好的安全性,那就通过更安全的移动端扫码的方式来弥补这个缺憾。顺着这个思路往下想,假如你在PC浏览器上玩加密猫,现在想下单买一只可爱的猫,过去的方式是必须通过科学上网,安装MetaMask,创建一个钱包账号,然后从你的imToken或其他钱包转一些ETH到MetaMask钱包,最后签名支付才能购买。那有没有一种方式,直接把加密猫的交易数据通过二维码的方式呈现出来,手机钱包扫一下,在手机上完成整个签名交易流程,然后再把交易数据发到链上,最后把交易结果回传到浏览器网页端,这样整个体验就会非常好。这个方案我们有想过,但是后来一想,有问题!什么问题呢?如果普通转账交易是没问题,交易数据比较少,但如果是部署一个合约呢?这是一个普通的合约,功能就说简单的存储和读取数据,data字段就这么多,换成二维码,你会发现如此密集的二维码,绝大部分的APP根本就扫不出来,显然直接扫码这条路是走不通的。

全国政协委员骆沙鸣:建议在“十四五”国家信息化规划中增加区块链技术研究和应用布局的专项规划:5月12日,在由中国信息通信研究院、人民政协报文化传媒有限公司联合主办的以新基建、新布局、新动能为主题的第二场云座谈上,全国政协委员、台盟中央常委泉州市政协副主席骆沙鸣建议:营造区块链普及应用的社会氛围和生态环境;在“十四五”国家信息化规划中增加区块链技术研究和应用布局的专项规划,在全国布局区块链产业园区,支持主营区块链企业成长;制造业植入区块链能够有效支撑构建“工业信用”,保障企业数据安全,以区块链技术打通企业转型升级中的堵点痛点;从区块链创新应用、技术、标准、制度上加紧区块链专利布局和运营;积极推进区块链和经济社会融合发展,助力完善公共服务,营造企业发展的国际化、法治化一流营商环境;推广支持区块链应用政策创新,比如,将区块链服务实体经济项目列入首台套目录,以区块链促进产业转型升级;通过大力发展现代供应链发和区块链技术的应用,营造良好的“信任链”网络诚信社会。(科技日报)[2020/5/13]

后来我们在公司内部的Hackathon尝试了另一个方法,既然数据比较复杂且比较大,不能直接用二维码扫描传到手机,那么能不能用一个服务器作为中继来转发数据呢。还是原来的DApp,先把复杂的交易数据传到中继服务器上,然后返回给DApp一个请求接口,通过这个HTTP请求接口客户端就可以访问到完整的交易数据,DApp拿到请求接口地址后,将请求地址生成一个二维码。钱包APP扫描二维码,获取到请求地址,并从这个请求地址上获取交易数据,钱包用本地私钥完成签名并转发到链上,最后再把区块链返回的交易hash发送给中继服务器,由于DApp和中继服务端是长连接,DApp就可以获取到交易hash,并根据交易hash处理后续的业务流程。这是一个不错的想法,至少解决了一些问题,但是却引申出了另外的问题。DApp的全称是去中心化应用,如果加入中继服务器,那么不管是DApp本身还是钱包都会非常依赖中继服务器,一旦服务出现异常或者不可用,整个签名过程就会受阻。一个去中心化应用反而要强依赖中心化服务器,这和区块链的去中心化理念就出现了矛盾。手机钱包充当服务器方案

动态 | 华为与富滇银行签署战略合作协议 探索区块链等行业前沿技术:10月23日消息,“昆明·选择不凡 华为云城市峰会2019”在昆明洲际酒店举行。富滇银行股份有限公司与华为技术有限公司签订战略合作协议。双方将在云计算、人工智能、大数据等信息化基础设施,联合创新实验室,区块链等行业前沿技术探索,以及人才培养等领域进行合作,以共同推动富滇银行数字化转型和智能升级。(科创板日报)[2019/10/23]

为了解决DApp和钱包强依赖中心服务器的问题,那么我们就想到了手机能不能成为服务器。如果手机和电脑在同一个局域网内,那么就可以通过IP相互直接访问,既然电脑能成为server,手机也可以是server。手机作为一个server,DApp发交易就是给这个server直接发请求,手机拿到交易数据后签名并转发数据至区块链,然后再把链返回的交易hash发送给DApp。这样解决了中心化和去中心化的矛盾,但是有一个问题就是电脑和手机必须在同一个局域网里,要不然没办法无法请求数据。

手机作为一个server是一个不常见的方式,通常只有近距离快速传送大文件的时候或者小范围的点对点通信时会使用这种方式,这种方式不适合做扩展,手机换个局域网或者换成4G的时候,它的IP就会改变,那么DApp就需要频繁更改连接的IP地址。当你没有办法做到好的兼容的时候,这也许是一个的不错思路。WalletConnect

行业内有很多团队也在尝试解决这个问题,WalletConnect是其中一个比较有名的解决方案。它也是使用一个中继服务,而且这个中继服务做的事情比上文提到的要更多。简单来说,首先,DApp和中继服务器最初会有一次握手,并建立长时间的session连接通道,然后DApp会生成用于未来加密交易数据的对称密钥,DApp会把加密后的交易数据发送到中继服务器上,并得到服务器返回的交易数据请求地址。

区块链在10大金融领域应用前景值得关注:据第一财经报道,目前区块链概念被过度消费,但仍有10大金融领域应用前景引发关注。整体而言,区块链技术目前在10大金融领域显示出应用前景,分别是资产证券化、保险、供应链金融、场外市场、资产托管、大宗商品交易、风险信息共享机制、贸易融资、银团贷款、股权交易交割。波士顿咨询公司董事总经理何大勇在接受采访时表示:“除比特币以外,区块链在其他场景的大规模应用还未到商用阶段。”他认为,在多方参与、复杂交易、涉及到信任的场景下,区块链技术才能派上用场,例如银行贸易融资与证券清算等领域。[2018/4/4]

然后DApp将请求地址、对称密钥和sessionID打包并生成二维码,手机钱包扫描二维码并提取其中的数据请求地址和对称密钥,然后钱包从该接口地址上获取交易数据密文,并用对称密钥解密得到交易数据明文。进而在手机钱包内完成交易确认、签名和转发,最后将从链上得到交易hash发给中继服务器。由于DApp和中继服务器是长连接,所以中继服务器在拿到交易hash后,会推送给DApp,然后DApp就可以根据交易hash到区块链上查询交易的执行情况。WalletConnect和上文讨论的做法思路是一致的,只不过它更近一步,通过对称密钥对交易数据加密,安全性更好,中继服务器就是一个交易数据转发的地方,二维码则是DApp与手机钱包的信息沟通媒介,承载更轻量级的数据。这个方案中可能还有一个服务器,叫做Push服务。如果有Push服务,那么DApp后续再发送交易数据给中继服务器,就不需要再通过二维码扫描,而是直接将数据推给至Push服务,然后由Push服务推送消息给手机钱包,手机钱包再去签名并发送至链上,并把交易hash告知中继服务。当然如果没有Push服务器,整个流程同样是可以走通的,只不过需要手机钱包扫码触发获取交易数据请求,然后再完成后续流程。需要说明的是WalletConnect并不提供公共的Push服务,只提供公共的中继服务,对于DApp或者钱包运营方来说,需要维护一个中心化的Push服务器,虽然体验和安全非常好,但是解决思路有点麻烦。WalletConnect向以太坊基金会提出了希望将这一套数据规范做成EIP协议,目前协议还在讨论中,还没有定下来。AppLink

乌克兰中央银行将国家货币转移到区块链上:乌克兰国家银行正在扩大其区块链团队的工作范围,将该国的国家货币“hyrvnia”转移到一个区块链上。据CoinDesk上周报道称,乌克兰的分布式实验室正在构建。分布式实验室的创始人证实,该公司至少在一定程度上“负责该机构的架构、区块链研究和开发和安全分析”。[2017/12/4]

还有一个方法,要比上一个方案稍微简单一些。做过移动端开发的朋友可能都知道DeepLink,或者简单说是AppLink。我们都知道在浏览器上打开一个网站链接地址就可以跳转到想要的网页,但是对于智能手机而言,每个App都是一个信息孤岛,相互之间是没有一个简单的通讯机制。举个简单的例子,淘宝和微信相互屏蔽,在百度上搜不到微信里的东西。App之间的信息是割裂状态。因此,Google和苹果作为操作系统提供方,就希望从操作系统层面上解决这个问题,于是就有了AppLink。任何一个App只要在AppLink服务上按一定的协议规范注册,那么其他App就可以通过AppLink服务与之连接并通信。比如,我在PC浏览器上想要买一只猫,购买页面会呈现出一个交易二维码,我用iPhone的系统相机扫描这个二维码,只要这个二维码内容是在我的操作系统AppLink中注册过的,那么就可以唤起手机钱包页面,完成后续的签名支付流程。但是这个服务并没有被广泛使用,原因有很多,最重要的原因是App之间不愿共享数据,它们更希望用户一直留在App内部,增加用户的使用黏性。而且安卓的碎片化比较严重,国内很多手机厂商更改了操作系统底层代码,这样就没有办法提供很好的一致体验。所以该方案在一些比较小的场景内是可以实现的,不适合所有的场景。这个数据协议也被提交到了以太坊基金会,希望可以建立一个ERC标准,目前处于草案过程,并没有达成共识。MyEtherWallet

最后一个案例很有意思,有个网页版钱包叫MyEtherWallet,提出了一种通过建立P2P安全通道完成签名交易的方案。过去在MyEtherWallet上创建一个钱包,私钥、助记词等信息都是由钱包生成,并存在浏览器存储空间中。但是私钥存在网页端其实是不安全的,网页虽然本身有一定的存储功能,但是安全性和手机比还是弱很多,那如何解决这个安全问题呢?MyEtherWallet最近出了一个手机APP叫NEWconnect,前段时间开始公测了。他们开发了一个手机端钱包NEWconnect,它虽然有钱包的很多功能,但是不作为一个独立的钱包角色,而是和网页版钱包配合使用。例如用户在网页端要转一笔1.5eth的帐,用户在网页端生成交易,手机端通过P2P的方式直接与网页点对点连接,并自动弹出确认交易页面,手机端完成签名交易后,将结果通过P2P通信通道回传给网页端,网页端更新并显示交易处理后的数据。这个方案的体验很好,也很安全。由于是私密的P2P通信通道,交易数据不会轻易被盗取,能够完美地解决上面提到的问题。但是该方案同样存在扩展困难的问题,只能在封闭系统中流转数据。P2P本身就是点对点通信,如果扩展开来,则需要一整套通道建立流程和加密机制,但是这种思路确实值得借鉴。

依然在路上

整个行业到现在也还没有最终的解决方案,我们也在做各种调研和尝试,即使在Hackathon上做了一个初级的解决方案,但还不能尽善尽美。行业的诉求和痛点很多人都发现了,并且在尝试积极解决,但是目前整个行业还未达成共识方案。现在很多区块链服务和互联网服务在体验上还有很多差距,互联网服务是中心化的,有很多中心化的方式去解决体验和安全的问题。而区块链应用是去中心化的,钱包和DApp也是去中心化的,如果我们用中继服务去做,就相当于把去中心化的问题用一种中心化的方式来解决,我们先不讨论好与不好,至少不会是最优的解决方案。安全性也是需要重点考虑的,二维码呈现的交易数据很容易被篡改,中继服务提供的交易请求也很容易被拦截,如果是互联网应用的话,可以通过中心化的方式校验数据,但是对于去中心化的应用,如何做到安全和去中心化的平衡,还需要进一步讨论。我们可以在GooglePlay和AppStore上发现大量的钱包软件,彼此之间的体验千差万别,但是始终没有能做到像支付宝那样解决多平台的签名支付问题。为此我们也还在调研和做MVP验证,希望未来可以有一套兼顾安全、体验和去中心化的解决方案。

标签:APP区块链DAPDAPPFLAPPY区块链存证怎么弄区块链dapp开发例子Bonkey dAPP

比特币最新价格热门资讯
NOVA:星物种 | 「智链ChainNova」要为企业提供一站式服务及行业解决方案

尽管区块链技术还处于早期阶段,但在企业级区块链平台这一赛道,早已挤满了诸如IBM、亚马逊、腾讯、百度、阿里等各大互联网巨头.

1900/1/1 0:00:00
NFT:《OK,格洛丽》:一个加密货币+AI 的恐怖世界

戴伟讨论的事情与黑客攻击无关,直接切入到了堡垒内部。如果格洛丽没有遭到黑客攻击,但却直接进化成了一个强AI,并且记录考夫曼的数据输出,揣度考夫曼的心意,劝说考夫曼将财产赠与自己,或者用财产来休憩.

1900/1/1 0:00:00
区块链:美国俄亥俄州接受比特币支付税款,或成为美国首例

据bitcoin.com报道,美国俄亥俄州将于本周为企业提供比特币支付税款的业务。该州财务部门称:“俄亥俄州已经成为美国首个接受加密货币的州,也是世界上首个接受加密货币的政府.

1900/1/1 0:00:00
OIN:定义加密钱包安全性的“三有一无”要素

一、加密钱包的必要性近年来区块链技术的迅速发展,使得加密资产逐渐走入大众的视线。目前2000多亿美元的加密资产市值,超过2000种的加密资产,侧面反映着全球加密资产规模正在高速增长.

1900/1/1 0:00:00
区块链:星球日报 | 比特币跌破5600美元关口;嘉楠耘智IPO申请已失效;“京东互保” 引入区块链技术

头条比特币暴跌,部分稳定币出现大幅溢价今日凌晨比特币跌至近一年新低,今日凌晨约12点29分,BTC跌破6000美元.

1900/1/1 0:00:00
STO:科创板来袭,政策频出之下的STO何去何从?

本文来自神州数字,作者:孙茳涛,转载请注明作者和来源。任何人的个人努力在时代大潮面前都会显得微不足道,所以,在任何时候都应当顺应时代大潮,否则只会被埋葬在时代洪流之中,STO的探索者尤其应当关注.

1900/1/1 0:00:00