├── .gitignore
├── README.md
├── README_cn.md
└── logos
├── BigONE.png
├── BigONE.svg
├── BigONE_nobg.png
├── Binance.png
├── Binance.svg
├── ExinCore
├── ExinCore.png
├── ExinCore.svg
└── ExinCore_opaque.png
├── ExinOne.png
├── ExinOne.svg
├── ExinPay.png
├── ExinPay.svg
├── FCoin.png
├── Huobi.png
├── Huobi.svg
├── Mixin.png
├── Mixin.svg
├── OKEX.svg
└── okex.png
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .idea
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |

2 |
3 |
4 |
5 |
6 | # ExinCore
7 |
8 | ExinCore is a decentralized **instant exchange platform** built on [Mixin Network](https://mixin.one), to use ExinCore, just send a asset transfer to ExinCore, ExinCore will auto use API to trade in exchange like `Binance`, `Huobi Global`, `BigOne`, `Okex`, `FCoin`, ruturn to pay account after exchange, complete within 1 second.
9 |
10 | All order and trade data are encoded in the Mixin snapshots' memo field, the memo is base64 encoded MessagePack.
11 |
12 | ExinCore is available to professional users with programming skills, general user enjoy the Instant-Exchange service, and the OTC service at [ExinOne](https://exinone.com).
13 |
14 | ## Features
15 |
16 | - **Safe**: decentralized exchange, keeping assets by yourself, and no need to trust ExinCore.
17 | - **High Liquidity**: all pairs will connect to the best liquidity exchange to ensure trade at right market price.
18 | - **Free**: Mixin Network is a free and lightning fast peer-to-peer transactional network for digital assets.
19 | - **Fast**: API to exchanges trade, complete the transaction within 1 second.
20 | - **Cross-chain**:ExinCore can support all assets supported by the Mixin Network, now support `BTC` `ETH` `BCH` `EOS` `USDT` and so on.
21 |
22 | ## Create Order
23 |
24 | To exchange 10 USDT to BTC, send a 10 USDT transfer to ExinCore (61103d28-3ac2-44a2-ae34-bd956070dab1) with base64 encoded MessagePack data as the memo. [A example to test](https://exinone.com/exincore/test).
25 |
26 | ### Transfer
27 |
28 | Reference the Mixin Network API Document:
29 |
30 | https://developers.mixin.one/api/alpha-mixin-network/transfer/
31 |
32 | ### Memo Encode Example
33 |
34 | **Golang**
35 |
36 | Install the package:
37 | ```shell
38 | // You can use other msgpack implementations.
39 | $ go get -u github.com/vmihailenco/msgpack
40 | ```
41 |
42 | Example:
43 | ```go
44 | import (
45 | "encoding/base64"
46 | "github.com/satori/go.uuid"
47 | "github.com/vmihailenco/msgpack"
48 | )
49 |
50 | type OrderAction struct {
51 | A uuid.UUID // asset uuid
52 | }
53 |
54 | // Pack memo
55 | packUuid, _ := uuid.FromString("c6d0c728-2624-429b-8e0d-d9d19b6592fa")
56 | pack, _ := msgpack.Marshal(OrderAction{A: packUuid,})
57 | memo := base64.StdEncoding.EncodeToString(pack)
58 | // gaFBxBDG0McoJiRCm44N2dGbZZL6
59 |
60 | // Parse memo
61 | parsedpack, _ := base64.StdEncoding.DecodeString(memo)
62 | orderAction := OrderAction{}
63 | _ = msgpack.Unmarshal(parsedpack, &orderAction)
64 | // c6d0c728-2624-429b-8e0d-d9d19b6592fa
65 |
66 | ```
67 | Also you can use some packages:
68 | * [Kurisu-package/exincore-go](https://github.com/Kurisu-package/exincore-go)
69 |
70 | **PHP**
71 |
72 | Install the package:
73 |
74 | ```shell
75 | $ composer require ramsey/uuid
76 | $ composer require rybakit/msgpack
77 | ```
78 |
79 | Example:
80 |
81 | ```php
82 | Uuid::fromString('c6d0c728-2624-429b-8e0d-d9d19b6592fa')->getBytes(),
91 | ]));
92 | // gaFBxBDG0McoJiRCm44N2dGbZZL6
93 |
94 | // Parse memo
95 | $uuid = Uuid::fromBytes(
96 | MessagePack::unpack(base64_decode($memo))['A']
97 | )->toString();
98 | // c6d0c728-2624-429b-8e0d-d9d19b6592fa
99 | ```
100 |
101 | Also you can use some packages
102 | * php: [kurisu/exincore-php-sdk](https://github.com/Kurisu-package/exincore-php-sdk)
103 | * laravel: [kurisu/laravel-exincore-sdk](https://github.com/Kurisu-package/laravel-exincore-sdk)
104 |
105 | **Python**
106 |
107 | Install the package:
108 |
109 | ```shell
110 | $ pip install u-msgpack-python
111 | ```
112 |
113 | Example:
114 |
115 | ```python
116 | import uuid
117 | import umsgpack
118 | import base64
119 |
120 | # Pack memo
121 | memo = base64.b64encode(umsgpack.packb({
122 | "A": uuid.UUID("{c6d0c728-2624-429b-8e0d-d9d19b6592fa}").bytes
123 | }))
124 | # gaFBxBDG0McoJiRCm44N2dGbZZL6
125 |
126 | # Parse memo
127 | uuid = uuid.UUID(
128 | bytes=umsgpack.unpackb(base64.b64decode(memo))["A"]
129 | )
130 | # c6d0c728-2624-429b-8e0d-d9d19b6592fa
131 | ```
132 |
133 | **Ruby**
134 |
135 | Install the package:
136 |
137 | ```shell
138 | // You can use other msgpack implementations.
139 | $ sudo gem install msgpack
140 | $ sudo gem install easy-uuid
141 | ```
142 |
143 | Example:
144 |
145 | ```ruby
146 | require 'msgpack'
147 | require 'base64'
148 | require 'uuid'
149 |
150 | # Pack memo
151 | memo = Base64.encode64(MessagePack.pack({
152 | 'A' => UUID.parse("c6d0c728-2624-429b-8e0d-d9d19b6592fa").to_raw
153 | }))
154 | # gaFBxBDG0McoJiRCm44N2dGbZZL6
155 |
156 | # Parse memo
157 | uuid = UUID.parse(MessagePack.unpack(Base64.decode64(memo))["A"]).to_s
158 | # c6d0c728-2624-429b-8e0d-d9d19b6592fa
159 | ```
160 |
161 | **Node.js**
162 |
163 | Install the package:
164 |
165 | ```shell
166 | $ npm install msgpack5
167 | ```
168 |
169 | Example:
170 |
171 | ```javascript
172 | const msgpack = require('msgpack5')();
173 |
174 | // Pack memo
175 | const bytes = Buffer.from(
176 | 'c6d0c728-2624-429b-8e0d-d9d19b6592fa'.replace(/-/g, ''),
177 | 'hex'
178 | );
179 | const memo = msgpack
180 | .encode({
181 | A: bytes,
182 | })
183 | .toString('base64');
184 |
185 | console.log(memo); // gaFBxBDG0McoJiRCm44N2dGbZZL6
186 |
187 | // Parse memo
188 | const buf = Buffer.from(memo, 'base64');
189 | const hexStr = Buffer.from(msgpack.decode(buf).A).toString('hex');
190 | const uuid = `${hexStr.slice(0,8)}-${hexStr.slice(8,12)}-${hexStr.slice(12,16)}-${hexStr.slice(16,20)}-${hexStr.slice(20)}`;
191 | console.log(uuid); // c6d0c728-2624-429b-8e0d-d9d19b6592fa
192 | ```
193 |
194 | ## Instant Exchange Return
195 |
196 | ExinCore will send asset to the pay account with base64 encoded MessagePack data as the memo.
197 |
198 | ```go
199 | type OrderAction struct {
200 | C integer // code
201 | P string // price, only type is return
202 | F string // ExinCore fee, only type is return
203 | FA string // ExinCore fee asset, only type is return
204 | T string // type: refund(F)|return(R)|Error(E)
205 | O uuid.UUID // order: trace_id
206 | }
207 |
208 | memo = base64.StdEncoding.EncodeToString(msgpack(OrderAction{
209 | C: 1000,
210 | P: "0.46372",
211 | F: "0.000023",
212 | FA: uuid.FromString("c6d0c728-2624-429b-8e0d-d9d19b6592fa"),
213 | T: "F"
214 | O: uuid.FromString("37af6bd0-ecb8-11e8-9be4-3be93718305e"),
215 | }))
216 |
217 | memo = base64.StdEncoding.EncodeToString(msgpack(OrderAction{
218 | C: 1000,
219 | T: "F"
220 | O: uuid.FromString("37af6bd0-ecb8-11e8-9be4-3be93718305e"),
221 | }))
222 | ```
223 |
224 | **Parameter Description**
225 |
226 | |Parameter|Description|
227 | |:---|:---|
228 | |C |[Code](#Code)|
229 | |P |The Exchange price includ exchange fee|
230 | |F |The amount of ExinCore fee|
231 | |FA |The UUID of ExinCore fee asset|
232 | |T |Transfer type. `F` is refund, refund will not happen if the memo is not valid base64 encoded MessagePack data. `R` is return after exchange success. `E` is error, such as insufficient funds pool, it will retry until successful.|
233 | |O |Order ID, the same as `trace_id`|
234 |
235 | ## API of Get Instant Exchange List
236 |
237 | Get the ExinCore the support list of instent exchange with `base_asset `(optional), `exchange_asset`(optional)
238 |
239 | ```
240 | GET https://exinone.com/exincore/markets?base_asset=815b0b1a-2764-3736-8faa-42d694fa620a
241 |
242 | {
243 | "code": 0,
244 | "data": [
245 | {
246 | "base_asset": "815b0b1a-2764-3736-8faa-42d694fa620a",
247 | "base_asset_symbol": "USDT",
248 | "exchange_asset": "c6d0c728-2624-429b-8e0d-d9d19b6592fa",
249 | "exchange_asset_symbol": "BTC",
250 | "minimum_amount": "1",
251 | "maximum_amount": "100",
252 | "exchanges": ["Huobi Global"],
253 | "price": "5372"
254 | }
255 | ],
256 | "message": "success"
257 | }
258 | ```
259 |
260 | **Parameter Description**
261 |
262 | |Parameter|Description|
263 | |:---|:---|
264 | |base\_asset |The UUID of pay asset|
265 | |base\_asset\_symbol |The symbol of pay asset|
266 | |exchange\_asset |The UUID of exchange asset|
267 | |exchange\_asset\_symbol |The symbol of exchange asset|
268 | |minimum\_amount |The minimum of pay asset|
269 | |maximum\_amount |The maximum of pay asset|
270 | |exchanges |The exchange platforms|
271 | |price |The trade price, `exchange_asset` price/`base_asset` price, for reference only, subject to actual transaction price|
272 |
273 | ## Fee
274 |
275 | - 0.2% of the filled part
276 | - Deduct from the exchange asset
277 | - Not support the *ExinOne Point Card* (EPC)
278 |
279 | ## Code
280 |
281 | |Code |Type |Description |
282 | |:-- |:-- |:-- |
283 | |1000 |return |Successful Exchange |
284 | |1001 |refund |The order not found or invalid |
285 | |1002 |refund |The request data is invalid |
286 | |1003 |refund |The market not supported |
287 | |1004 |refund |Failed exchange |
288 | |1005 |return\|refund |Partial exchange |
289 | |1006 |error |Insufficient pool|
290 | |1007 |refund |Below the minimum exchange amount |
291 | |1008 |refund |Exceeding the maximum exchange amount |
292 |
293 | ## Contact
294 |
295 | - Wechat:ThorbJ
296 | - Email :thorb@exin.one
297 |
298 | ## Base On
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 | ## Application
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
--------------------------------------------------------------------------------
/README_cn.md:
--------------------------------------------------------------------------------
1 |
2 | 
3 |
4 |
5 |
6 |
7 | # ExinCore
8 |
9 | ExinCore 是基于 [Mixin Network](https://mixin.one) 的去中心化数字资产闪兑平台。只需要发送一笔包含拟兑换的数字币 UUID 转账给 ExinCore 账户,ExinCore 就对自动将交易通过 API 提交给相应的交易所(目前支持 `币安` `火币全球` `BigOne` `Okex` `FCoin` ),完成后将兑换后的数字币原路转回,整个过程不到 1 秒即可完成兑换。所有交易数据均编码后上链。
10 |
11 | ExinCore 主要提供给具备开发能力的专业用户使用,普通用户使用 [ExinOne](https://exinone.com) 即可以享受去中心化的闪兑服务,ExinOne 同时还提供法币交易服务。
12 |
13 |
14 | ## 优势
15 |
16 | - **安全**:去中心化交易,不托管资产,自己保管钱包,无需信任 ExinCore
17 | - **流动性好**:每一个交易对都会对接流动性最好的交易所,确保市场价成交
18 | - **便宜**:不同于链上转账,在 Mixin Networkd 转账无需手续费,交易手续费也仅收取 0.2%
19 | - **快**:收到订单之后,我们会立即利用自由资金池在交易所交易,1 秒之内即可完成整个交易转账过程
20 | - **跨链**:理论上 ExinCore 可以支持所有 Mixin Network 支持的公链所有币,目前已经支持`BTC` `ETH` `BCH` `EOS` `USDT`等主流币种之间的兑换
21 |
22 |
23 | ## 创建订单
24 |
25 | 将 10 USDT 兑换为 BTC,只需要在 Mixin Network 上将 10 USDT 转给 ExinCore (61103d28-3ac2-44a2-ae34-bd956070dab1) 并携带经过 Base64 编码的 MessagePack 格式 Memo。[点击体验用例](https://exinone.com/exincore/test)
26 |
27 | ### 转账
28 |
29 | 请参考 Mixin Network 开发文档:
30 |
31 | https://developers.mixin.one/api/alpha-mixin-network/transfer/
32 |
33 | ### Memo 编码示例
34 |
35 | **Golang**
36 |
37 | 引入包:
38 | ```
39 | // 可自行选择 msgpack 的实现
40 | go get -u github.com/vmihailenco/msgpack
41 | ```
42 |
43 | 编码:
44 | ```go
45 | import (
46 | "encoding/base64"
47 | "github.com/satori/go.uuid"
48 | "github.com/vmihailenco/msgpack"
49 | )
50 |
51 | type OrderAction struct {
52 | A uuid.UUID // asset uuid
53 | }
54 |
55 | // 打包 memo
56 | packUuid, _ := uuid.FromString("c6d0c728-2624-429b-8e0d-d9d19b6592fa")
57 | pack, _ := msgpack.Marshal(OrderAction{A: packUuid,})
58 | memo := base64.StdEncoding.EncodeToString(pack)
59 | // gaFBxBDG0McoJiRCm44N2dGbZZL6
60 |
61 | // 解包 memo
62 | parsedpack, _ := base64.StdEncoding.DecodeString(memo)
63 | orderAction := OrderAction{}
64 | _ = msgpack.Unmarshal(parsedpack, &orderAction)
65 | // c6d0c728-2624-429b-8e0d-d9d19b6592fa
66 | ```
67 |
68 | 可以考虑使用封装的 Package:
69 | * [Kurisu-package/exincore-go](https://github.com/Kurisu-package/exincore-go)
70 |
71 | **PHP**
72 |
73 | 引入包:
74 |
75 | ```
76 | composer require ramsey/uuid
77 | composer require rybakit/msgpack
78 | ```
79 |
80 | 编码:
81 |
82 | ```php
83 | require 'vendor/autoload.php';
84 |
85 | use Ramsey\Uuid\Uuid;
86 | use MessagePack\MessagePack;
87 |
88 | // 打包 memo
89 | $memo = base64_encode(MessagePack::pack([
90 | 'A' => Uuid::fromString('c6d0c728-2624-429b-8e0d-d9d19b6592fa')->getBytes(),
91 | ]));
92 | // gaFBxBDG0McoJiRCm44N2dGbZZL6
93 |
94 | // 解包 memo
95 | $uuid = Uuid::fromBytes(
96 | MessagePack::unpack(base64_decode($memo))['A']
97 | )->toString();
98 | // c6d0c728-2624-429b-8e0d-d9d19b6592fa
99 | ```
100 |
101 | 可以考虑使用封装的 Package:
102 | * php: [kurisu/exincore-php-sdk](https://github.com/Kurisu-package/exincore-php-sdk)
103 | * laravel: [kurisu/laravel-exincore-sdk](https://github.com/Kurisu-package/laravel-exincore-sdk)
104 |
105 | **Python**
106 |
107 | 引入包:
108 |
109 | ```
110 | pip install u-msgpack-python
111 | ```
112 |
113 | 编码:
114 |
115 | ```python
116 | import uuid
117 | import umsgpack
118 | import base64
119 |
120 | # 打包 memo
121 | memo = base64.b64encode(umsgpack.packb({
122 | "A": uuid.UUID("{c6d0c728-2624-429b-8e0d-d9d19b6592fa}").bytes
123 | }))
124 | # gaFBxBDG0McoJiRCm44N2dGbZZL6
125 |
126 | # 解包 memo
127 | uuid = uuid.UUID(
128 | bytes=umsgpack.unpackb(base64.b64decode(memo))["A"]
129 | )
130 | # c6d0c728-2624-429b-8e0d-d9d19b6592fa
131 | ```
132 |
133 | **Ruby**
134 |
135 | 引入包:
136 |
137 | ```
138 | // 可自行选择 msgpack 的实现
139 | sudo gem install msgpack
140 | sudo gem install easy-uuid
141 | ```
142 |
143 | 编码:
144 |
145 | ```ruby
146 | require 'msgpack'
147 | require 'base64'
148 | require 'uuid'
149 |
150 | # 打包 memo
151 | memo = Base64.encode64(MessagePack.pack({
152 | 'A' => UUID.parse("c6d0c728-2624-429b-8e0d-d9d19b6592fa").to_raw
153 | }))
154 | # gaFBxBDG0McoJiRCm44N2dGbZZL6
155 |
156 | # 解包 memo
157 | uuid = UUID.parse(MessagePack.unpack(Base64.decode64(memo))["A"]).to_s
158 | # c6d0c728-2624-429b-8e0d-d9d19b6592fa
159 | ```
160 |
161 | **Node.js**
162 |
163 | 引入包:
164 |
165 | ```
166 | npm install msgpack5
167 | ```
168 |
169 | 编码:
170 |
171 | ```javascript
172 | const msgpack = require('msgpack5')();
173 |
174 | // 打包 memo
175 | const bytes = Buffer.from(
176 | 'c6d0c728-2624-429b-8e0d-d9d19b6592fa'.replace(/-/g, ''),
177 | 'hex'
178 | );
179 | const memo = msgpack
180 | .encode({
181 | A: bytes,
182 | })
183 | .toString('base64');
184 |
185 | console.log(memo); // gaFBxBDG0McoJiRCm44N2dGbZZL6
186 |
187 | // 解包 memo
188 | const buf = Buffer.from(memo, 'base64');
189 | const hexStr = Buffer.from(msgpack.decode(buf).A).toString('hex');
190 | const uuid = `${hexStr.slice(0,8)}-${hexStr.slice(8,12)}-${hexStr.slice(12,16)}-${hexStr.slice(16,20)}-${hexStr.slice(20)}`;
191 | console.log(uuid); // c6d0c728-2624-429b-8e0d-d9d19b6592fa
192 | ```
193 |
194 | ## 交易返回
195 |
196 | 交易后返回相应数字币,备注中返回相关交易信息:
197 |
198 | ```golang
199 | type OrderAction struct {
200 | C integer // code
201 | P string // price, only type is return
202 | F string // ExinCore fee, only type is return
203 | FA string // ExinCore fee asset, only type is return
204 | T string // type: refund(F)|return(R)|Error(E)
205 | O uuid.UUID // order: trace_id
206 | }
207 |
208 | memo = base64.StdEncoding.EncodeToString(msgpack(OrderAction{
209 | C: 1000,
210 | P: "0.46372",
211 | F: "0.000023",
212 | FA: uuid.FromString("c6d0c728-2624-429b-8e0d-d9d19b6592fa"),
213 | T: "F"
214 | O: uuid.FromString("37af6bd0-ecb8-11e8-9be4-3be93718305e"),
215 | }))
216 |
217 | memo = base64.StdEncoding.EncodeToString(msgpack(OrderAction{
218 | C: 1000,
219 | T: "F"
220 | O: uuid.FromString("37af6bd0-ecb8-11e8-9be4-3be93718305e"),
221 | }))
222 | ```
223 |
224 | **参数说明**
225 |
226 | |参数|描述|
227 | |:---|:---|
228 | |C|交易状态编码,详见下方[说明](#状态码)|
229 | |P|成交价格,包含交易所手续费,如果交易不成功则为0|
230 | |F|ExinCore 手续费|
231 | |FA|ExinCore 手续费资产|
232 | |T|转账类型,`F` 表示 refund 退币,如果 memo 不是合法编码数据将不会退币,`R` 表示 return兑换返回,`E` 表示 error 转账失败(比如突然资金池不足),将会以一笔小额 EPC 转账携带,资金池充裕后会重新发起转账|
233 | |O|订单ID,与发起转移转账的`trace_id`相同|
234 |
235 | ## 兑换列表API
236 |
237 | 获取 ExinCore 支持的闪兑换列表,及兑换限额,支持参数包括 `base_asset` (可选),`exchange_asset` (可选)
238 |
239 | ```
240 | GET https://exinone.com/exincore/markets?base_asset=815b0b1a-2764-3736-8faa-42d694fa620a
241 |
242 | {
243 | "code": 0,
244 | "data": [
245 | {
246 | "base_asset": "815b0b1a-2764-3736-8faa-42d694fa620a",
247 | "base_asset_symbol": "USDT",
248 | "exchange_asset": "c6d0c728-2624-429b-8e0d-d9d19b6592fa",
249 | "exchange_asset_symbol": "BTC",
250 | "minimum_amount": "1",
251 | "maximum_amount": "100",
252 | "exchanges": ["Huobi Global"],
253 | "price": "5372"
254 | }
255 | ],
256 | "message": "success"
257 | }
258 | ```
259 |
260 | **参数说明**
261 |
262 | |参数|描述|
263 | |:---|:---|
264 | |base\_asset|支付兑换的资产 UUID|
265 | |base\_asset\_symbol|支付兑换的资产|
266 | |exchange\_asset|兑换资产 UUID|
267 | |exchange\_asset\_symbol|兑换资产|
268 | |minimum\_amount|最少兑换数量 (base_asset) ,少于这个数字将退回|
269 | |maximum\_amount|最多兑换数量 (base_asset) ,多余这个数字将退回|
270 | |exchanges|交易平台,以实际成交为准|
271 | |price|兑换价格,`exchange_asset` 价格/`base_asset` 价格,仅供参考,以实际成交价为准|
272 |
273 | ## 手续费
274 |
275 | - 收取成交部分的0.2%
276 | - 从兑换后的数字币中扣除
277 | - 暂不支持手续费点卡 (EPC) 抵扣
278 |
279 | ## 状态码
280 |
281 | |状态码 |类型 | 描述 |
282 | |:-- |:-- |:-- |
283 | |1000 |return |交易成功 |
284 | |1001 |refund |订单不存在或者交易非法 |
285 | |1002 |refund |请求数据非法 |
286 | |1003 |refund |交易对不支持 |
287 | |1004 |refund |交易失败 |
288 | |1005 |return\|refund |部分成交 |
289 | |1006 |error |资金池不足 |
290 | |1007 |refund |低于最少兑换金额 |
291 | |1008 |refund |多于最大兑换金额 |
292 |
293 | ## 联系我们
294 |
295 | - 微信:ThorbJ
296 | - 邮箱:thorb@exin.one
297 |
298 | ## 基于
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 | ## 谁在用
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
--------------------------------------------------------------------------------
/logos/BigONE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExinOne/ExinCore/3ad5b65ee234504970df8b2d118918cff3e94b74/logos/BigONE.png
--------------------------------------------------------------------------------
/logos/BigONE.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/logos/BigONE_nobg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExinOne/ExinCore/3ad5b65ee234504970df8b2d118918cff3e94b74/logos/BigONE_nobg.png
--------------------------------------------------------------------------------
/logos/Binance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExinOne/ExinCore/3ad5b65ee234504970df8b2d118918cff3e94b74/logos/Binance.png
--------------------------------------------------------------------------------
/logos/Binance.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/logos/ExinCore/ExinCore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExinOne/ExinCore/3ad5b65ee234504970df8b2d118918cff3e94b74/logos/ExinCore/ExinCore.png
--------------------------------------------------------------------------------
/logos/ExinCore/ExinCore.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/logos/ExinCore/ExinCore_opaque.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExinOne/ExinCore/3ad5b65ee234504970df8b2d118918cff3e94b74/logos/ExinCore/ExinCore_opaque.png
--------------------------------------------------------------------------------
/logos/ExinOne.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExinOne/ExinCore/3ad5b65ee234504970df8b2d118918cff3e94b74/logos/ExinOne.png
--------------------------------------------------------------------------------
/logos/ExinOne.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/logos/ExinPay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExinOne/ExinCore/3ad5b65ee234504970df8b2d118918cff3e94b74/logos/ExinPay.png
--------------------------------------------------------------------------------
/logos/ExinPay.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/logos/FCoin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExinOne/ExinCore/3ad5b65ee234504970df8b2d118918cff3e94b74/logos/FCoin.png
--------------------------------------------------------------------------------
/logos/Huobi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExinOne/ExinCore/3ad5b65ee234504970df8b2d118918cff3e94b74/logos/Huobi.png
--------------------------------------------------------------------------------
/logos/Huobi.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/logos/Mixin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExinOne/ExinCore/3ad5b65ee234504970df8b2d118918cff3e94b74/logos/Mixin.png
--------------------------------------------------------------------------------
/logos/Mixin.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
576 |
--------------------------------------------------------------------------------
/logos/OKEX.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/logos/okex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExinOne/ExinCore/3ad5b65ee234504970df8b2d118918cff3e94b74/logos/okex.png
--------------------------------------------------------------------------------