在Devcon5上宣布了多币种支持特性后,我们很快就在?ENS管理器上实现了这一功能。
许多钱包也紧接着开始支持这一特性。
开发者们可以通过阅读?EIP?、文档以及我们的JavaScript?地址编码库来了解最新的实现细节。
在这篇文章中,我将介绍我们把多币种支持特性接入到自己app中的经验,为其他钱包开发者抛砖引玉,提供大致思路。
解析器
由于这个特性是全新的,许多以太坊库都尚未支持。
为了直接和解析器合约交互,你通过npm下载我们的合约,并导入以下abi。
import{abi}from
前以太坊联创抨击以太坊:技术不完善是以太坊社区追求合并的根本原因:9月26日消息,前以太坊联创兼 Cardano 创始人 Charles Hoskinson 在个人社交媒体上发布文章表示,以太坊核心开发者并不能客观看待 Cardano,此行为结果是挫伤整个行业发展、用户采用以及相互协作。
以太坊基金会社区经理 Hudson Jameson 对此做出回应称,Charles 曾在四年前构建 Cardano 时蓄意抹黑以太坊,以太坊开发者忽略 Cardano 是由于 Charles 言行恶劣。Charles 回复称,他承认四年前的言论,当时以太坊技术并不完善,现在也一样。这也是以太坊社区追求合并的根本原因。如果没有大规模链下基础设施,无法实现网络扩张。托管的、非流动性质押不可取。[2022/9/26 22:30:08]
'from'
中国网安区块链研发中心安红章:区块链核心技术有待突破:今日,中国网安区块链研发中心总经理安红章在经济日报上刊文称,区块链技术的集成应用在新的技术革新和产业变革中起着重要作用。区块链技术利用其去中心化、不可篡改、可追溯等特性,在疫情防控和复工复产中小试牛刀。相比人工智能、大数据、云计算等新技术,区块链技术在疫情中的应用尚处起步阶段。区块链技术正在积极寻找适当的商业应用场景,核心技术问题仍有待突破。由于缺乏跨地域数据共享、技术协同平台,不同省市的区块链技术标准不同,多方实体的数据协调难度大。区块链应成为解决省际流动人员健康数据互信问题的关键技术,因此应推动区块链的基础设施建设。[2020/5/6]
formatsByCoinType
声音 | 众诚保险董事长:随着区块链技术的发展,会深刻影响保险行业的发展格局:11月 23日,2019国际金融论坛在广州正式开幕。在“科技创新与技术变革的影响”圆桌会议上,众诚保险党委书记、董事长吴保军表示:随着区块链技术的发展,会深刻影响保险行业的发展格局。在区块链技术的驱动下,保险行业的商业模式、产品形态、服务方式、运营管理等方方面面都发生了巨大变化,保险科技将重塑保险业的竞争生态,“跨界”、“融合”、“生态”、“场景”等将创造出无限的想象空间。(新浪财经)[2019/11/24]
{coinType:0,decoder:,encoder:,name:'BTC'}
Fromnowon,weonlyuseformatsByName.
声音 | 迅雷陈磊:持续在区块链技术上的研发与投入,力争抓住这一历史机遇:北京时间11月14日晚,迅雷(NASDAQ:XNET)公布了2019年第三季度未经审计财报。财报显示,迅雷第三季度营业收入为4380万美元。
陈磊在财报中表示:“近期,国内强调把区块链作为核心技术自主创新的重要突破口,加快推动区块链技术和产业创新发展。在这个机会和挑战并存的时期,我们期待区块链行业的加速发展,并将持续在区块链技术上的研发与投入,力争抓住这一历史机遇。”
截止今年9月份,迅雷在区块链领域已经申请了115项专利,该专利拥有数在全球范围内名列前十,且大多集中在区块链的核心底层技术领域。目前迅雷链已经服务了包括中国版权保护中心、南方新媒体、壹基金、泰国那黎宣大学等在内的三十多家政企机构,在版权保护、溯源、公益、保险、交通、基因、供应链、新零售等十几个领域实现了应用落地。[2019/11/14]
下面我们只使用?formatsByName?函数。
获取支持的币种列表
或许你想接入自己的支持的币种列表。如果你想直接接入我们已经实现了编解码的代币,你应该通过以下代码构造这个币种列表。
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翻译&校对:?安仔&阿剑
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。