目标: 根据 openocean (保留对其他渠道商的接入能力)提供的API,设计一个 Swap 模块的核心功能以及对应API

流程图:

https://excalidraw.com/#json=K2IMPmwLwOFgK5MWUIiKu,MQ_STN1TtLQkDYmY9I_rWg

数据库(Mongodb)设计

功能设计

  1. 获取 chain list

GET /api/v1/chains : 只使用 openocean supported chain 支持的 EVM chain

Response:

{
  data: [
    {
      name: 'Ethereum',
      code: 'eth',
      id: 1,
      address: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'
    },
    ...others
  ]
}

可以作为 常量 写在code里作为返回值, 或者存在数据库中

  1. 获取 chain支持的token list

GET /api/v1/{chain}/tokens

因为渠道商支持的token信息比较多,为了提高服务质量,我们需要:

  1. 自己维护一份数据作为代表列表, 优先从此数据库中获取对应的chain上支持的代币
  2. 定时从渠道商进行数据的维护和更新

具体方案:

  1. db查询: 查询一个chain上支持的token

  2. API 返回:

{
  data: [
    {
	    "logo": "xxxxx",
	    "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
		  "name": "USDC",
		  "symbol": "USDC",
		  "decimals": 6,
    },
    ....
  ]
}
  1. 获取 swap 信息

GET /api/v1/{chain}/swap