技术教程 | ENS:为你的钱包添加多币种支持_COIN:COI

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

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

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

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

解析器

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

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

import{abi}from

尚福林:区块链技术信息平台建设取得了进展:10月24日消息,十三届全国政协经济委员会主任尚福林在第三届上海外滩峰会上说,金融科技与数字技术融合发展,是践行金融供给侧结构性改革的举措。利用区块链易追溯、难篡改的特性,有助于中小微企业解决一些难题,针对此的一些信息平台建设也取得了成绩进展。(证券时报)[2021/10/24 6:10:02]

'from'

formatsByCoinType

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

Fromnowon,weonlyuseformatsByName.

声音 | 河南省委书记:推进区块链等技术创新与产业应用:河南省委书记王国生12月24日在该省召开的省委经济工作会议上表示,河南要把制造业高质量发展作为主攻方向。他提出,要深入推进以智能化为引领的“三大改造”,持续推进重点产业转型升级,加快传统产业延链补链、提质发展,全面提升企业设计、制造、工艺、管理水平,形成竞争新优势。大力发展数字经济,推进人工智能、物联网、大数据、区块链等技术创新与产业应用,培育新能源及网联汽车、新一代人工智能等一批千亿级新兴产业集群。(科技日报)[2019/12/26]

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

获取支持的币种列表

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

动态 | 亚马逊在职位列表中修改广告金融技术团队的专注方向,取消对区块链技术的引用:此前,亚马逊在招募一名高级软件工程师加入“专注于区块链分布式账本的广告金融技术团队”,希望将其部分广告业务与区块链技术整合。但近期,亚马逊在职位列表中悄然取消了对区块链技术的引用,该广告团队专注于财务分类账、计费和对账系统,以提供跨国金融数据的数据透明度。(dailyhodl)[2019/8/9]

exportconstCOIN_LIST=Object.keys(formatsByName)

获取地址

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

动态 | 思特奇:持续对区块链 AI等新技术领域进行跟踪:据证券时报网报道,思特奇(300608 )8月22日在互动平台回复投资者提问时称,公司持续对区块链、AI等新技术领域进行跟踪,并开展专项研发活动。在区块链技术方面,正在研发的区块链服务平台,将利用区块链技术能够直接面向业务应用提供其独到的技术支撑能力,以平台化的技术架构,端到端纵向切分的行业应用,最大限度实现底层区块链技术抽象和复用,形成基于区块链的、跨行业的业务生态圈。[2018/8/22]

通过第一行代码,我们获取到了?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-6:695ms