Skip to content

Commit 2519c34

Browse files
authored
feat(legacy): add DTC chain and tokens (OneKeyHQ#120)
* feat(legacy): add DTC chain and tokens * chore(legacy): bump version to 3.10.2
1 parent eb12d12 commit 2519c34

7 files changed

+109
-7
lines changed

legacy/firmware/ethereum_networks.c

+8-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "ethereum_networks.h"
55
#include "ethereum.h"
66

7-
#define NETWORKS_COUNT 7
7+
#define NETWORKS_COUNT 8
88

99
static const EthereumNetworkInfo networks[NETWORKS_COUNT] = {
1010
{
@@ -46,7 +46,13 @@ static const EthereumNetworkInfo networks[NETWORKS_COUNT] = {
4646
{
4747
.chain_id = 137,
4848
.slip44 = 966,
49-
.symbol = "MATIC", /* Polygon */
49+
.symbol = "POL", /* Polygon */
50+
.name = "",
51+
},
52+
{
53+
.chain_id = 9798,
54+
.slip44 = 9798,
55+
.symbol = "DTT",
5056
.name = "",
5157
},
5258
};

legacy/firmware/ethereum_networks_onekey.h.mako

+3
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ def align_suffix(n):
3535
% for n in networks:
3636
case ${align_chain_id(n)}: suffix = ${align_suffix(n)} break; /* ${n.name} */ ${BKSL}
3737
% endfor
38+
case ${"{:>{w}}".format(9798, w=max_chain_id_length)}: suffix = " DTT"; break; /* DTC */ ${BKSL}
3839
default: suffix = " UNKN"; break; /* unknown chain */ ${BKSL}
3940
}
4041

@@ -43,6 +44,7 @@ static bool is_ethereum_slip44(uint32_t slip44) {
4344
% for slip44 in sorted(set(n.slip44 for n in networks)):
4445
case ${slip44}:
4546
% endfor
47+
case 9798:
4648
return true;
4749
default:
4850
return false;
@@ -54,6 +56,7 @@ static int32_t ethereum_slip44_by_chain_id(uint64_t chain_id) {
5456
% for n in networks:
5557
case ${align_chain_id(n)}: return ${align_slip44(n)}; /* ${n.name} */
5658
% endfor
59+
case ${"{:>{w}}".format(9798, w=max_chain_id_length)}: return ${"{:>{w}}".format(9798, w=max_slip44_length)}; /* DTC */
5760
default: return SLIP44_UNKNOWN; /* unknown chain */
5861
}
5962
}

legacy/firmware/ethereum_onekey.h

+3
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ bool ethereum_parse_onekey(const char *address, uint8_t pubkeyhash[20]);
8383
case 42170: \
8484
chain_name = "Arbitrum Nova"; \
8585
break; \
86+
case 9798: \
87+
chain_name = "DTC"; \
88+
break; \
8689
default: \
8790
chain_name = "EVM"; \
8891
break; /* unknown chain */ \

legacy/firmware/ethereum_tokens.c

+82-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#include <string.h>
66
#include "ethereum.h"
77

8-
#define TOKENS_COUNT 24
8+
#define TOKENS_COUNT 33
99

1010
static const EthereumTokenInfo tokens[TOKENS_COUNT] = {
1111
{
@@ -224,6 +224,87 @@ static const EthereumTokenInfo tokens[TOKENS_COUNT] = {
224224
.chain_id = 137,
225225
.name = "",
226226
},
227+
{
228+
.symbol = "HLT",
229+
.decimals = 2,
230+
.address = {.size = 20,
231+
.bytes = "\xE5\x2a\x73\x68\x28\xc7\x82\xC2\xa4\xA3\x45\xbB"
232+
"\xE8\x05\x2a\xed\x01\x0f\xc8\x2D"},
233+
.chain_id = 9798,
234+
.name = "",
235+
},
236+
{
237+
.symbol = "BV",
238+
.decimals = 2,
239+
.address = {.size = 20,
240+
.bytes = "\x8E\x79\x85\x0C\x50\xE5\x25\xeB\x6B\xa6\x3e\x60"
241+
"\x1E\x7b\x41\x88\x8A\x1c\x91\x02"},
242+
.chain_id = 9798,
243+
.name = "",
244+
},
245+
{
246+
.symbol = "dUSDT",
247+
.decimals = 6,
248+
.address = {.size = 20,
249+
.bytes = "\x36\xE6\x50\x4c\x96\x8f\x5C\x2A\x31\x0B\x6A\xF7"
250+
"\xB9\x7B\xC2\x2c\xdd\x34\x02\xcc"},
251+
.chain_id = 9798,
252+
.name = "",
253+
},
254+
{
255+
.symbol = "dBTC",
256+
.decimals = 8,
257+
.address = {.size = 20,
258+
.bytes = "\xE8\x95\xc5\x77\xD7\x47\xbB\x5d\xbB\xc1\xF0\x6c"
259+
"\xb4\x4d\x60\x67\x68\x0b\xE4\xbe"},
260+
.chain_id = 9798,
261+
.name = "",
262+
},
263+
{
264+
.symbol = "dETH",
265+
.decimals = 18,
266+
.address = {.size = 20,
267+
.bytes = "\x8B\x71\x60\xC1\xE9\xfD\xb6\x89\xA0\x60\xFF\x09"
268+
"\x19\xE8\x49\x15\xB0\xdF\xa0\x4a"},
269+
.chain_id = 9798,
270+
.name = "",
271+
},
272+
{
273+
.symbol = "DOS",
274+
.decimals = 2,
275+
.address = {.size = 20,
276+
.bytes = "\x74\x5C\x11\xFb\x47\x83\xBd\x00\xA8\x8a\x0B\x99"
277+
"\x42\x02\x62\xf4\x09\xFA\x8B\xb8"},
278+
.chain_id = 9798,
279+
.name = "",
280+
},
281+
{
282+
.symbol = "CNV",
283+
.decimals = 2,
284+
.address = {.size = 20,
285+
.bytes = "\x89\x9f\x0B\x9d\x67\xDD\x1B\x83\x3f\xda\xa9\x0c"
286+
"\x8b\x09\xea\x61\x6d\x0e\x9E\x98"},
287+
.chain_id = 9798,
288+
.name = "",
289+
},
290+
{
291+
.symbol = "FEC",
292+
.decimals = 4,
293+
.address = {.size = 20,
294+
.bytes = "\xb8\x8a\xd7\x67\xB4\x16\x19\x7e\x62\x93\x9d\xEc"
295+
"\x20\x74\x31\xb5\x61\xA9\x38\x3B"},
296+
.chain_id = 9798,
297+
.name = "",
298+
},
299+
{
300+
.symbol = "STC08375",
301+
.decimals = 0,
302+
.address = {.size = 20,
303+
.bytes = "\x6d\x88\x5b\x0B\x37\xC6\x2B\xe0\xc7\x2E\xcd\x6a"
304+
"\x61\xAf\x2b\xfF\xf6\x81\x41\x9e"},
305+
.chain_id = 9798,
306+
.name = "",
307+
},
227308
};
228309

229310
const EthereumTokenInfo UNKNOWN_TOKEN = {

legacy/firmware/ethereum_tokens_onekey.c.mako

+9
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@ const TokenType tokens[TOKENS_COUNT] = {
88
% for t in sorted(erc20, key=lambda t: t.chain_id):
99
{${"{:>2}".format(t.chain_id)}, ${c_str(t.address_bytes)}, " ${ascii(t.symbol)}", ${t.decimals}}, // ${t.chain} / ${t.name}
1010
% endfor
11+
{9798, "\xE5\x2a\x73\x68\x28\xc7\x82\xC2\xa4\xA3\x45\xbB\xE8\x05\x2a\xed\x01\x0f\xc8\x2D", " HLT", 2}, // DTC / HLT
12+
{9798, "\x8E\x79\x85\x0C\x50\xE5\x25\xeB\x6B\xa6\x3e\x60\x1E\x7b\x41\x88\x8A\x1c\x91\x02", " BV", 2}, // DTC / BV
13+
{9798, "\x36\xE6\x50\x4c\x96\x8f\x5C\x2A\x31\x0B\x6A\xF7\xB9\x7B\xC2\x2c\xdd\x34\x02\xcc", " dUSDT", 6}, // DTC / dUSDT
14+
{9798, "\xE8\x95\xc5\x77\xD7\x47\xbB\x5d\xbB\xc1\xF0\x6c\xb4\x4d\x60\x67\x68\x0b\xE4\xbe", " dBTC", 8}, // DTC / dBTC
15+
{9798, "\x8B\x71\x60\xC1\xE9\xfD\xb6\x89\xA0\x60\xFF\x09\x19\xE8\x49\x15\xB0\xdF\xa0\x4a", " dETH", 18}, // DTC / dETH
16+
{9798, "\x74\x5C\x11\xFb\x47\x83\xBd\x00\xA8\x8a\x0B\x99\x42\x02\x62\xf4\x09\xFA\x8B\xb8", " DOS", 2}, // DTC / DOS
17+
{9798, "\x89\x9f\x0B\x9d\x67\xDD\x1B\x83\x3f\xda\xa9\x0c\x8b\x09\xea\x61\x6d\x0e\x9E\x98", " CNV", 2}, // DTC / CNV
18+
{9798, "\xb8\x8a\xd7\x67\xB4\x16\x19\x7e\x62\x93\x9d\xEc\x20\x74\x31\xb5\x61\xA9\x38\x3B", " FEC", 4}, // DTC / FEC
19+
{9798, "\x6d\x88\x5b\x0B\x37\xC6\x2B\xe0\xc7\x2E\xcd\x6a\x61\xAf\x2b\xfF\xf6\x81\x41\x9e", " STC08375", 0}, // DTC / STC08375
1120
};
1221

1322
static const TokenType _UnknownToken = { 0, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff", " UNKN", 0 };

legacy/firmware/ethereum_tokens_onekey.h.mako

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#include <stdint.h>
88

99
<% erc20_list = list(erc20) %>\
10-
#define TOKENS_COUNT ${len(erc20_list)}
10+
#define TOKENS_COUNT ${len(erc20_list) + 9}
1111

1212
typedef struct {
1313
uint64_t chain_id;

legacy/firmware/version.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
#define ONEKEY_VER_MAJOR 3
1010
#define ONEKEY_VER_MINOR 10
11-
#define ONEKEY_VER_PATCH 1
11+
#define ONEKEY_VER_PATCH 2
1212

13-
#define ONEKEY_VERSION "3.10.1"
14-
#define ONEKEY_VERSION_HEX 0x3A01
13+
#define ONEKEY_VERSION "3.10.2"
14+
#define ONEKEY_VERSION_HEX 0x3A02

0 commit comments

Comments
 (0)