ex与0x地址的关系
exchain中有两种地址格式,一种是ex前缀处的地址,例如:ex1ya7dn2rr8nx07tx9ksq8gvz5utvarrh0knjnjn
;另一个地址以0x开头,例如:0x8AF3B04B0400B16911B512360122148056D562
。带有0x和ex的地址前缀来自同一个助记符,他们地址下的余额相同,两个地址下的所有者的okt的数量相同。将助记符导入元掩码后,可以恢复以0x开头的地址;使用okexchaincli查看以0x和ex开头的地址。您可以在dex网页和移动客户端上使用exchain查看地址前缀。
如何使用
以ex开头的地址可直接用于移动客户端、网页或okexchainCl上的操作,如传输、存款和投票地址从0x开始,目前只能用于Metamask上的传输操作。
注
:使用ex的地址前缀只能将资金转移到地址前缀为ex,不能交叉转账。
相互转换
0x前缀的地址和ex前缀的地址来自同一个助记词,可以转换为每个助记词其他地址以0x开头为十六进制格式,以太坊当前使用以下地址格式地址前缀为0x,格式规范来自btc协议BIP173(bech32),目前btc和cosmos使用此格式地址。
两种格式的地址可以相互转换,转换方法:使用okexchain java sdkokexchain javascript sdk方法转换地址从convertAddressFromHexToBech32和convertAddressFromBech32ToHex转换地址
旧版okexchain前缀地址转为新版ex前缀地址
javascript-sdk
crypto.convertOKExChainAddressToExAddress("okexchain1vlzgq74y6hm9crhkkhdjy77uvyqa0zdusu258y")
在jssdk中,有ex开头地址与0x地址互转方法。调用方式:
1,ex地址转为0x地址
crypto.convertBech32ToHex(okexchain地址)
例如:let hexAddress = crypto.convertBech32ToHex("ex1ya7dn2rr8nx07tx9ksq8gvz5utvarrh0knjnjn")
2,0x地址转为ex地址
crypto.convertHexToBech32(0x地址);
例如:let bech32Address = crypto.convertHexToBech32("0x277CD9a8633ccCFF2Cc5B400743054e2d9d18eEf")
实现详情:
https://github.com/okx/okexchain-javascript-sdk/blob/master/src/crypto/index.js
Java-SDK
- 链接
- 可以通过方法convertFromOkexchainBech32ToExBech32以及convertFromOkexchainValToExVal进行okexchain地址和ex地址的相互转换
- 参考示例
string hexAddr = convertAddressFromBech32ToHex("okexchain1vlzgq74y6hm9crhkkhdjy77uvyqa0zdusu258y
");
convertAddressFromHexToBech32("ex", hexAddr);
go-sdk
- 链接
- 可以通过方法AccAddrPrefixConvert进行okexchain地址和ex地址转换
- 通过ValAddrPrefixConvert进行validator地址转换
- 参考示例
AccAddrPrefixConvert("okexchain", "okexchain1vlzgq74y6hm9crhkkhdjy77uvyqa0zdusu258y
", "ex")
ValAddrPrefixConvert("okexchainvaloper", "okexchainvaloper1vlzgq74y6hm9crhkkhdjy77uvyqa0zdu3c6tmx", "exvaloper")