INT:技术教程 | ENS:为你的钱包添加多币种支持_MangoMan Intelligent

在Devcon5上宣布了多币种支持特性后,我们很快就在?ENS管理器上实现了这一功能。

许多钱包也紧接着开始支持这一特性。

开发者们可以通过阅读?EIP?、文档以及我们的JavaScript?地址编码库来了解最新的实现细节。

在这篇文章中,我将介绍我们把多币种支持特性接入到自己app中的经验,为其他钱包开发者抛砖引玉,提供大致思路。

解析器

由于这个特性是全新的,许多以太坊库都尚未支持。

为了直接和解析器合约交互,你通过npm下载我们的合约,并导入以下abi。

import{abi}from

机构分析:尽管英国央行做出了保证,但通胀上升可能会令英国投资者感到不安:英国eToro公司的分析师本?莱德勒表示,随着政府逐步放宽疫情限制措施,英国通胀率的急剧飙升是不可避免的。通胀加剧会让一些投资者感到恐慌,因为他们将价格飙升视为利率即将上调的信号。

不过,莱德勒认为情况还没那么糟。英国央行一直表示最近的高通胀是过渡性的,是暂时的。因此,工资增长将低于物价增长,这也将在未来几个月抑制通胀走高。[2021/6/17 23:44:44]

'from'

formatsByCoinType

{coinType:0,decoder:,encoder:,name:'BTC'}

声音 | Ripple首席执行官:尽管面临口诛笔伐,但Libra带来的大量关注将利好未来金融:Ripple首席执行官Brad Garlinghouse接受采访时表示,尽管Facebook的Libra受到了各方言辞激烈的抨击,但其所获得的大量关注仍为金融的未来带来了积极影响。Garlinghouse称其赞同美国财政姆努钦的观点,即Libra这样的数字资产,以及其他不受监管的加密货币确实存在风险。 Garlinghouse还表示:“我认为Facebook与监管机构的对话已经开始了一段时间,想必他们已经清楚地听到了其中的一些保留意见,但我认为他们没有花时间去解决其中的一些问题。在我看来这属于‘硅谷傲慢’。” 他还指出,Facebook的Libra 协会没有任何银行成员,由于未能邀请传统玩家合作,Facebook实际上毁掉了这场‘派对’。[2019/7/19]

Fromnowon,weonlyuseformatsByName.

尽管印度政府多次警告 仍有许多人急于在交易平台注册:尽管政府多次发出警告,印度人仍然被加密货币吸引,急于在加密交易所开立账户。据 “印度时报”周四的报道,加密货币热潮越来越强导致在加密货币交易所等待注册的时间越来越长。来自印度最主要的加密货币交易所Unocoin的数据显示,2016年12月仅有1000人注册在该平台注册,然而这一数字上个月增长至平均每天10,000人。另一家当地的交易所Coinsecure也表示有大量的人在平台注册,其交易所在其网站上发布通知表示,目前有大量积压,所以交易所联系申请用户的时间预计会延迟10天以上,平均每天有大约4000个申请者注册。据悉,该公司也停止了未经验证的付款方式。[2018/1/6]

下面我们只使用?formatsByName?函数。

达鸿飞:基于区块链的数字货币新项目将消失 NEO专注于使用区块链等技术服务实体经济:NEO创始人达鸿飞在接受《香港经济日报》采访时没有否认他的平台与以太坊有相似之处,但强调NEO和以太坊之间最大的区别之一是NEO专注于使用区块链和其他新技术为实体经济服务。他表示,数字货币泡沫(如果存在)应该已经消失,因为市场上许多数字货币的价格已经低于其上市价格。这些币种所在的项目或企业都在使用区块链技术,这是因为他们对ICO模式感兴趣,认为这是筹集资金的新方式。这些区块链新项目将会消失,或者在三年内销声匿迹。[2018/4/18]

获取支持的币种列表

或许你想接入自己的支持的币种列表。如果你想直接接入我们已经实现了编解码的代币,你应该通过以下代码构造这个币种列表。

exportconstCOIN_LIST=Object.keys(formatsByName)

获取地址

下面是我们在自己的React组件中实现?getAddr?函数的超级简化版本。

通过第一行代码,我们获取到了?coinType?以及?encoder?函数。接下来会用到?coinType?和namehash参数从Resolver合约中获取到某种代币的具体地址。

第四行代码是把地址传给译码器之前先检查是否是空地址,如果是的话就直接返回。因为如果把一个空字符串直接传给编码器,就有可能抛出某些代币类型的错误。

第五行代码把地址的二进制表达形式传给编码函数,将地址以文本形式显示。

设置地址

以下是我们?setAddr?函数的简化版本。

和我们在?getAddr?函数中的处理一样,当地址为空时,我们提前返回这个结果,而不传给解码器。第五行直接用空字符串的二进制表示就行。

验证

验证地址是否符合对应币种的格式十分关键。

如果向?address-encoder?库随便传一个无效的文本,就会抛出错误。

本例中,我们捕获了这个错误并展示了出来。

BCH贴士

通常情况下,对同一条文本先解码再编码,依然会得到一样的文本。但比特币现金表现的不太一样(想要探究具体的技术原因,可以参考这条?

EIP?中的“CashAddr”),比特币现金在编码之后返回文本会加一个“bitcoincash”前缀。下面这个例子显示了原始文本、16进制表示以及查询时BCH编码后的规范表示形式(你可以在

测试用例中找到它)。

总结

在本文中,我们梳理了实现多币种支持的流程,介绍了需要留意的某些细节。事实上这和原来设置/获取地址的操作十分接近,只不过要多传一个?coinType?参数。此外,在涉及到验证和空字符串的问题上,要额外小心。

随着越来越多库支持多币种特性,以后钱包开发者将很轻松地添加这一功能。

原文链接:?https://medium.com/the-ethereum-name-service/how-to-integrate-ens-multi-coin-support-into-your-wallet-for-developers-8d3a8a37d1eb作者:?makoto_inoue翻译&校对:?安仔&阿剑

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

[0:0ms0-7:627ms