Skip to content

Commit 1daf3d5

Browse files
authored
Upgrade to v0.7.0 (#56)
* renaming fields * workaround for nano S word splitting * format shares as plain integer (no decimal point) * updating test cases * bump version number * update test screenshots
1 parent 87a7c2e commit 1daf3d5

115 files changed

Lines changed: 18878 additions & 18922 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ COIN=oasis
4848
endif
4949

5050
APPVERSION_M=1
51-
APPVERSION_N=6
52-
APPVERSION_P=2
51+
APPVERSION_N=7
52+
APPVERSION_P=0
5353

5454
DEFINES += CBOR_NO_FLOATING_POINT
5555

app/src/consumer/parser_consumer.c

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,11 @@ __Z_INLINE parser_error_t parser_getType(const parser_context_t *ctx, char *outV
8383
snprintf(outVal, outValLen, "Reclaim escrow");
8484
return parser_ok;
8585
case stakingAmendCommissionSchedule:
86+
#if defined(TARGET_NANOS)
87+
snprintf(outVal, outValLen, "Amend commission schedule");
88+
#else
8689
snprintf(outVal, outValLen, "Amend commission schedule");
90+
#endif
8791
return parser_ok;
8892
case registryDeregisterEntity:
8993
snprintf(outVal, outValLen, "Deregister Entity");
@@ -145,6 +149,35 @@ __Z_INLINE parser_error_t parser_printQuantity(const quantity_t *q,
145149
return parser_ok;
146150
}
147151

152+
__Z_INLINE parser_error_t parser_printShares(const quantity_t *q,
153+
char *outVal, uint16_t outValLen,
154+
uint8_t pageIdx, uint8_t *pageCount) {
155+
// upperbound 2**(64*8)
156+
// results in 155 decimal digits => max 78 bcd bytes
157+
158+
// Too many digits, we cannot format this
159+
LESS_THAN_64_DIGIT(q->len)
160+
161+
char bignum[160];
162+
union {
163+
// overlapping arrays to avoid excessive stack usage. Do not use at the same time
164+
uint8_t bcd[80];
165+
char output[160];
166+
} overlapped;
167+
168+
MEMZERO(overlapped.bcd, sizeof(overlapped.bcd));
169+
MEMZERO(bignum, sizeof(bignum));
170+
171+
if (!format_quantity(q, overlapped.bcd, sizeof(overlapped.bcd), bignum, sizeof(bignum))) {
172+
return parser_unexpected_value;
173+
}
174+
175+
fpstr_to_str(overlapped.output, sizeof(overlapped.output), bignum, 0);
176+
number_inplace_trimming(overlapped.output);
177+
pageString(outVal, outValLen, overlapped.output, pageIdx, pageCount);
178+
return parser_ok;
179+
}
180+
148181
__Z_INLINE parser_error_t parser_printRate(const quantity_t *q,
149182
char *outVal, uint16_t outValLen,
150183
uint8_t pageIdx, uint8_t *pageCount) {
@@ -279,7 +312,7 @@ __Z_INLINE parser_error_t parser_getItemTx(const parser_context_t *ctx,
279312
}
280313
case 1: {
281314
snprintf(outKey, outKeyLen, "Amount");
282-
return parser_printQuantity(&parser_tx_obj.oasis.tx.body.stakingTransfer.xfer_tokens,
315+
return parser_printQuantity(&parser_tx_obj.oasis.tx.body.stakingTransfer.amount,
283316
outVal, outValLen, pageIdx, pageCount);
284317
}
285318
case 2: {
@@ -296,7 +329,7 @@ __Z_INLINE parser_error_t parser_getItemTx(const parser_context_t *ctx,
296329
}
297330
case 4: {
298331
snprintf(outKey, outKeyLen, "Address");
299-
return parser_printAddress(&parser_tx_obj.oasis.tx.body.stakingTransfer.xfer_to,
332+
return parser_printAddress(&parser_tx_obj.oasis.tx.body.stakingTransfer.to,
300333
outVal, outValLen, pageIdx, pageCount);
301334
}
302335
}
@@ -310,7 +343,7 @@ __Z_INLINE parser_error_t parser_getItemTx(const parser_context_t *ctx,
310343
}
311344
case 1: {
312345
snprintf(outKey, outKeyLen, "Amount");
313-
return parser_printQuantity(&parser_tx_obj.oasis.tx.body.stakingBurn.burn_tokens,
346+
return parser_printQuantity(&parser_tx_obj.oasis.tx.body.stakingBurn.amount,
314347
outVal, outValLen, pageIdx, pageCount);
315348
}
316349
case 2: {
@@ -336,7 +369,7 @@ __Z_INLINE parser_error_t parser_getItemTx(const parser_context_t *ctx,
336369
}
337370
case 1: {
338371
snprintf(outKey, outKeyLen, "Amount");
339-
return parser_printQuantity(&parser_tx_obj.oasis.tx.body.stakingEscrow.escrow_tokens,
372+
return parser_printQuantity(&parser_tx_obj.oasis.tx.body.stakingEscrow.amount,
340373
outVal, outValLen, pageIdx, pageCount);
341374
}
342375
case 2: {
@@ -353,7 +386,7 @@ __Z_INLINE parser_error_t parser_getItemTx(const parser_context_t *ctx,
353386
}
354387
case 4: {
355388
snprintf(outKey, outKeyLen, "Address");
356-
return parser_printAddress(&parser_tx_obj.oasis.tx.body.stakingEscrow.escrow_account,
389+
return parser_printAddress(&parser_tx_obj.oasis.tx.body.stakingEscrow.account,
357390
outVal, outValLen, pageIdx, pageCount);
358391
}
359392
}
@@ -367,8 +400,8 @@ __Z_INLINE parser_error_t parser_getItemTx(const parser_context_t *ctx,
367400
}
368401
case 1: {
369402
snprintf(outKey, outKeyLen, "Shares");
370-
return parser_printQuantity(&parser_tx_obj.oasis.tx.body.stakingReclaimEscrow.reclaim_shares,
371-
outVal, outValLen, pageIdx, pageCount);
403+
return parser_printShares(&parser_tx_obj.oasis.tx.body.stakingReclaimEscrow.shares,
404+
outVal, outValLen, pageIdx, pageCount);
372405
}
373406
case 2: {
374407
// ??? displayIdx == 1 && parser_tx_obj.oasis.tx.has_fee
@@ -384,7 +417,7 @@ __Z_INLINE parser_error_t parser_getItemTx(const parser_context_t *ctx,
384417
}
385418
case 4: {
386419
snprintf(outKey, outKeyLen, "Address");
387-
return parser_printAddress(&parser_tx_obj.oasis.tx.body.stakingReclaimEscrow.escrow_account,
420+
return parser_printAddress(&parser_tx_obj.oasis.tx.body.stakingReclaimEscrow.account,
388421
outVal, outValLen, pageIdx, pageCount);
389422
}
390423
}

app/src/consumer/parser_impl_con.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -370,54 +370,54 @@ __Z_INLINE parser_error_t _readBody(parser_tx_t *v, CborValue *rootItem) {
370370
CHECK_CBOR_MAP_LEN(&bodyField, 2)
371371
CHECK_CBOR_ERR(cbor_value_enter_container(&bodyField, &contents))
372372

373-
CHECK_PARSER_ERR(_matchKey(&contents, "xfer_to"))
373+
CHECK_PARSER_ERR(_matchKey(&contents, "to"))
374374
CHECK_CBOR_ERR(cbor_value_advance(&contents))
375-
CHECK_PARSER_ERR(_readAddressRaw(&contents, &v->oasis.tx.body.stakingTransfer.xfer_to))
375+
CHECK_PARSER_ERR(_readAddressRaw(&contents, &v->oasis.tx.body.stakingTransfer.to))
376376
CHECK_CBOR_ERR(cbor_value_advance(&contents))
377377

378-
CHECK_PARSER_ERR(_matchKey(&contents, "xfer_tokens"))
378+
CHECK_PARSER_ERR(_matchKey(&contents, "amount"))
379379
CHECK_CBOR_ERR(cbor_value_advance(&contents))
380-
CHECK_PARSER_ERR(_readQuantity(&contents, &v->oasis.tx.body.stakingTransfer.xfer_tokens))
380+
CHECK_PARSER_ERR(_readQuantity(&contents, &v->oasis.tx.body.stakingTransfer.amount))
381381
CHECK_CBOR_ERR(cbor_value_advance(&contents))
382382
break;
383383
}
384384
case stakingBurn: {
385385
CHECK_CBOR_MAP_LEN(&bodyField, 1)
386386
CHECK_CBOR_ERR(cbor_value_enter_container(&bodyField, &contents))
387387

388-
CHECK_PARSER_ERR(_matchKey(&contents, "burn_tokens"))
388+
CHECK_PARSER_ERR(_matchKey(&contents, "amount"))
389389
CHECK_CBOR_ERR(cbor_value_advance(&contents))
390-
CHECK_PARSER_ERR(_readQuantity(&contents, &v->oasis.tx.body.stakingBurn.burn_tokens))
390+
CHECK_PARSER_ERR(_readQuantity(&contents, &v->oasis.tx.body.stakingBurn.amount))
391391
CHECK_CBOR_ERR(cbor_value_advance(&contents))
392392
break;
393393
}
394394
case stakingEscrow: {
395395
CHECK_CBOR_MAP_LEN(&bodyField, 2)
396396
CHECK_CBOR_ERR(cbor_value_enter_container(&bodyField, &contents))
397397

398-
CHECK_PARSER_ERR(_matchKey(&contents, "escrow_tokens"))
398+
CHECK_PARSER_ERR(_matchKey(&contents, "amount"))
399399
CHECK_CBOR_ERR(cbor_value_advance(&contents))
400-
CHECK_PARSER_ERR(_readQuantity(&contents, &v->oasis.tx.body.stakingEscrow.escrow_tokens))
400+
CHECK_PARSER_ERR(_readQuantity(&contents, &v->oasis.tx.body.stakingEscrow.amount))
401401
CHECK_CBOR_ERR(cbor_value_advance(&contents))
402402

403-
CHECK_PARSER_ERR(_matchKey(&contents, "escrow_account"))
403+
CHECK_PARSER_ERR(_matchKey(&contents, "account"))
404404
CHECK_CBOR_ERR(cbor_value_advance(&contents))
405-
CHECK_PARSER_ERR(_readAddressRaw(&contents, &v->oasis.tx.body.stakingEscrow.escrow_account))
405+
CHECK_PARSER_ERR(_readAddressRaw(&contents, &v->oasis.tx.body.stakingEscrow.account))
406406
CHECK_CBOR_ERR(cbor_value_advance(&contents))
407407
break;
408408
}
409409
case stakingReclaimEscrow: {
410410
CHECK_CBOR_MAP_LEN(&bodyField, 2)
411411
CHECK_CBOR_ERR(cbor_value_enter_container(&bodyField, &contents))
412412

413-
CHECK_PARSER_ERR(_matchKey(&contents, "escrow_account"))
413+
CHECK_PARSER_ERR(_matchKey(&contents, "shares"))
414414
CHECK_CBOR_ERR(cbor_value_advance(&contents))
415-
CHECK_PARSER_ERR(_readAddressRaw(&contents, &v->oasis.tx.body.stakingReclaimEscrow.escrow_account))
415+
CHECK_PARSER_ERR(_readQuantity(&contents, &v->oasis.tx.body.stakingReclaimEscrow.shares))
416416
CHECK_CBOR_ERR(cbor_value_advance(&contents))
417417

418-
CHECK_PARSER_ERR(_matchKey(&contents, "reclaim_shares"))
418+
CHECK_PARSER_ERR(_matchKey(&contents, "account"))
419419
CHECK_CBOR_ERR(cbor_value_advance(&contents))
420-
CHECK_PARSER_ERR(_readQuantity(&contents, &v->oasis.tx.body.stakingReclaimEscrow.reclaim_shares))
420+
CHECK_PARSER_ERR(_readAddressRaw(&contents, &v->oasis.tx.body.stakingReclaimEscrow.account))
421421
CHECK_CBOR_ERR(cbor_value_advance(&contents))
422422
break;
423423
}

app/src/consumer/parser_txdef_con.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,22 +105,22 @@ typedef struct {
105105
// Union type will depend on method
106106
union {
107107
struct {
108-
address_raw_t xfer_to;
109-
quantity_t xfer_tokens;
108+
address_raw_t to;
109+
quantity_t amount;
110110
} stakingTransfer;
111111

112112
struct {
113-
quantity_t burn_tokens;
113+
quantity_t amount;
114114
} stakingBurn;
115115

116116
struct {
117-
address_raw_t escrow_account;
118-
quantity_t escrow_tokens;
117+
address_raw_t account;
118+
quantity_t amount;
119119
} stakingEscrow;
120120

121121
struct {
122-
address_raw_t escrow_account;
123-
quantity_t reclaim_shares;
122+
address_raw_t account;
123+
quantity_t shares;
124124
} stakingReclaimEscrow;
125125

126126
struct {

tests/cpp/tx_parser.cpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,6 @@ TEST(TxParser, EmptyBuffer) {
3333
ASSERT_EQ(err, parser_cbor_unexpected_EOF) << parser_getErrorDescription(err);
3434
}
3535

36-
TEST(TxParser, OldAddressFormat) {
37-
parser_context_t ctx;
38-
39-
std::string context = "oasis-core/consensus: tx for chain ";
40-
std::string cborString = "pGNmZWWiY2dhcwBmYW1vdW50QGRib2R5omd4ZmVyX3RvWCBkNhaFWEyIEubmS3EVtRLTanD3U+vDV5fke4Obyq83CWt4ZmVyX3Rva2Vuc0Blbm9uY2UAZm1ldGhvZHBzdGFraW5nLlRyYW5zZmVy";
41-
auto buffer = utils::prepareBlob(context, cborString);
42-
buffer.push_back(0);
43-
44-
auto err = parser_parse(&ctx, buffer.data(), buffer.size());
45-
ASSERT_EQ(err, parser_cbor_unexpected) << parser_getErrorDescription(err);
46-
}
47-
4836
TEST(TxParser, MissingLastByte) {
4937
parser_context_t ctx;
5038

0 commit comments

Comments
 (0)