货币命名的一致性
不同的交易所在术语定义方面有一些模糊之处,对于新手交易者而言 可能会产生歧义。有些交易所将市场成为交易对,而另一些交易所则 将交易符号称为产品。对于CCXT开发库而言,每个交易所都包含一个 或多个交易市场,每个交易市场有一个ID和一个符号,大多数符号都是 由基础货币和报价货币对组成。
Exchanges → Markets → Symbols → Currencies
历史上对同一个交易对曾经使用过各种各样的符号名称。有些数字货币 (例如Dash)甚至名字都改过不止一次。为了在多个交易所之间保持 一致性,ccxt库使用以下已知的符号和货币的替代名称:
- XBT → BTC:XBT比较新,但是BTC在交易所中更常见,而且听起来更像比特币
- BCC → BCH:比特币现金分叉通常使用两个不同的名称:BCC和BCH。BCC有点 不明确,容易和BitConnect搞混。ccxt库会正确地将BCC换成BCH(有些交易所 和聚合器会混淆这两个名字)。
- DRK → DASH:DASH原来叫Darkcoin,然后改名为Dash
- BCHABC → BCH:在2018年11月15日,比特币现金再次分叉,因此,现在有BCH (BCH ABC) 和BSV (BCH SV)。
- BCHSV → BSV:这对应比台币现金的SV分叉,有些交易所称之为BSV,另一些交易所称之为BCHSV,ccxt使用前者。
- DSH → DASH:The DSH (Dashcoin) 和DASH (Dash)不是一个东西。有些交易所不恰当地将DASH 标记为DSH,ccxt库对此进行了修正(DSH → DASH),但是只有一个交易所混淆了这两种货币, 绝大多数交易所都正确地区分了这两种货币。记住DASH/BTC和DSH/BTC不一样。
- XRB → NANO:NANO是RaiBlocks的较新的代码,因此,CCXT统一API将在必要时 使用NANO替代较早的XRB。
- USD → USDT:有些交易所,例如Bitfinex、HitBTC等在其列表中将其命名为USD,但是 那些市场实际上交易的是USDT。混淆来自于3个字母的限制或者是其他原因。在实际交易 的货币是USDT而非USD时,CCXT库会将USD替换为USDT。注意,有些交易所同时有 USD和USDT。例如,Kraken有一个USDT/USD交易对。
货币命名冲突的解决流程
每个交易所都使用一个关联数组用于数字货币代码的替换,可以通过exchange.commonCurrencies
属性访问这个关联数组。有时用户可能会注意到混合大小写或者包含空格的奇怪的货币符号,
之所以使用这些名称是为了解决不同交易所使用一样的符号表示不同的货币而引起的冲突:
首先,我们采集不同交易所关于有疑问的货币代码的所有可用信息。交易所通常有其上市 货币的描述清单,可能在API中,也可能在文档里、知识库里或网站的其他地方。
当我们识别出每个货币代码所表示的数字货币后,我们查看其在CoinMarketCap上的主页。
具有最大市值的货币可以保留自己的货币代码。例如,HOT通常表示Holo或Hydro Protocol。 这种情况下Holo得以继续持有其代码HOT,Hydro Protocol将以其名称作为代码,也就是Hydro Protocol。 因此,可能会有这样的交易对:HOT/USD (表示Holo) 和 Hydro Protocol/USD,这表示不同的市场。
如果一个货币的市值未知,或者不足以决定胜出者,我们也考虑交易量以及其他因素。
当决定了胜出的货币之后,所有其他竞争货币的代码都会重新进行映射,并使用exchange.commonCurrencies
来进行替换。
不幸的是这还是一个进展中的工作,因为每天都在上市新的货币,也是不是会出现 新的交易所。因此,总之这是一个在快速变化的环境中的没有尽头的自我纠错过程, 我们也感谢你能报告你发现的冲突和不匹配之处。