Add TransactionType and adapt parser to parse them

This commit is contained in:
pscott
2021-04-15 15:25:46 +02:00
parent b09ba946d5
commit 48562ccfc7
2 changed files with 14 additions and 0 deletions

View File

@@ -263,7 +263,14 @@ static parserStatus_e processTxInternal(txContext_t *context) {
if (context->commandLength == 0) {
return USTREAM_PROCESSING;
}
// EIP 2718: TransactionType might be present before the TransactionPayload.
if (*context->workBuffer > 0x00 && *context->workBuffer < 0x7f) {
context->txType = *context->workBuffer;
context->workBuffer++;
PRINTF("TX TYPE: %u\n", context->txType);
}
if (!context->processingField) {
PRINTF("PROCESSING FIELD\n");
bool canDecode = false;
uint32_t offset;
while (context->commandLength != 0) {

View File

@@ -53,6 +53,12 @@ typedef enum rlpTxField_e {
TX_RLP_DONE
} rlpTxField_e;
// EIP 2718 TransactionType
typedef enum txType_e {
LegacyTransaction = 1,
BerlinTransaction = 2
} txType_e;
typedef enum parserStatus_e {
USTREAM_PROCESSING,
USTREAM_SUSPENDED,
@@ -93,6 +99,7 @@ typedef struct txContext_t {
ustreamProcess_t customProcessor;
txContent_t *content;
void *extra;
uint8_t txType;
} txContext_t;
void initTx(txContext_t *context,