Skip to content

Commit f8d6053

Browse files
authored
Update block hex to be 8 bytes in length (release 0.1) (#157)
Update block hex to be 8 bytes in length (#156) Our current implementation returns `0x0` for nonce on a block response. However the expectation is an 8byte - Update `eth.ts` to use `0x0000000000000000` for nonce - Update tests Signed-off-by: Nana-EC <[email protected]>
1 parent 26649c1 commit f8d6053

File tree

2 files changed

+21
-46
lines changed

2 files changed

+21
-46
lines changed

packages/relay/src/lib/eth.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ const createHash = require('keccak');
4141
export class EthImpl implements Eth {
4242
static emptyHex = '0x';
4343
static zeroHex = '0x0';
44+
static zeroHex8Byte = '0x0000000000000000';
4445
static emptyArrayHex = '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';
4546
static zeroAddressHex = '0x0000000000000000000000000000000000000000';
4647
static emptyBloom = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
@@ -767,7 +768,7 @@ export class EthImpl implements Eth {
767768
logsBloom: EthImpl.emptyBloom, //TODO calculate full block boom in mirror node
768769
miner: EthImpl.zeroAddressHex,
769770
mixHash: EthImpl.emptyArrayHex,
770-
nonce: EthImpl.zeroHex,
771+
nonce: EthImpl.zeroHex8Byte,
771772
number: EthImpl.numberTo0x(blockResponse.number),
772773
parentHash: blockResponse.previous_hash.substring(0, 66),
773774
receiptsRoot: EthImpl.emptyArrayHex,

packages/relay/tests/lib/eth.spec.ts

Lines changed: 19 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import {expectUnsupportedMethod} from '../helpers';
3232
const cache = require('js-cache');
3333

3434
import pino from 'pino';
35-
import { Transaction } from '../../src/lib/model';
35+
import { Block, Transaction } from '../../src/lib/model';
3636
const logger = pino();
3737

3838
const Relay = new RelayImpl(logger);
@@ -48,6 +48,20 @@ const validateHash = (hash: string, len?: number) => {
4848
return !!hash.match(regex);
4949
};
5050

51+
const verifyBlockConstants = (block: Block) => {
52+
expect(block.baseFeePerGas).equal(EthImpl.zeroHex);
53+
expect(block.difficulty).equal(EthImpl.zeroHex);
54+
expect(block.extraData).equal(EthImpl.emptyHex);
55+
expect(block.miner).equal(EthImpl.zeroAddressHex);
56+
expect(block.mixHash).equal(EthImpl.emptyArrayHex);
57+
expect(block.nonce).equal(EthImpl.zeroHex8Byte);
58+
expect(block.receiptsRoot).equal(EthImpl.emptyArrayHex);
59+
expect(block.sha3Uncles).equal(EthImpl.emptyArrayHex);
60+
expect(block.stateRoot).equal(EthImpl.emptyArrayHex);
61+
expect(block.totalDifficulty).equal(EthImpl.zeroHex);
62+
expect(block.uncles).to.deep.equal([]);
63+
};
64+
5165
describe('Eth calls using MirrorNode', async function () {
5266
this.timeout(10000);
5367

@@ -334,17 +348,7 @@ describe('Eth calls using MirrorNode', async function () {
334348
expect((result.transactions[1] as string)).equal(contractHash1);
335349

336350
// verify expected constants
337-
expect(result.baseFeePerGas).equal(EthImpl.zeroHex);
338-
expect(result.difficulty).equal(EthImpl.zeroHex);
339-
expect(result.extraData).equal(EthImpl.emptyHex);
340-
expect(result.miner).equal(EthImpl.zeroAddressHex);
341-
expect(result.mixHash).equal(EthImpl.emptyArrayHex);
342-
expect(result.nonce).equal(EthImpl.zeroHex);
343-
expect(result.receiptsRoot).equal(EthImpl.emptyArrayHex);
344-
expect(result.sha3Uncles).equal(EthImpl.emptyArrayHex);
345-
expect(result.stateRoot).equal(EthImpl.emptyArrayHex);
346-
expect(result.totalDifficulty).equal(EthImpl.zeroHex);
347-
expect(result.uncles).to.deep.equal([]);
351+
verifyBlockConstants(result);
348352
});
349353

350354
it('eth_getBlockByNumber with match and details', async function () {
@@ -369,17 +373,7 @@ describe('Eth calls using MirrorNode', async function () {
369373
expect((result.transactions[1] as Transaction).hash).equal(contractHash1);
370374

371375
// verify expected constants
372-
expect(result.baseFeePerGas).equal(EthImpl.zeroHex);
373-
expect(result.difficulty).equal(EthImpl.zeroHex);
374-
expect(result.extraData).equal(EthImpl.emptyHex);
375-
expect(result.miner).equal(EthImpl.zeroAddressHex);
376-
expect(result.mixHash).equal(EthImpl.emptyArrayHex);
377-
expect(result.nonce).equal(EthImpl.zeroHex);
378-
expect(result.receiptsRoot).equal(EthImpl.emptyArrayHex);
379-
expect(result.sha3Uncles).equal(EthImpl.emptyArrayHex);
380-
expect(result.stateRoot).equal(EthImpl.emptyArrayHex);
381-
expect(result.totalDifficulty).equal(EthImpl.zeroHex);
382-
expect(result.uncles).to.deep.equal([]);
376+
verifyBlockConstants(result);
383377
});
384378

385379
it('eth_getBlockByNumber with no match', async function () {
@@ -465,17 +459,7 @@ describe('Eth calls using MirrorNode', async function () {
465459
expect((result.transactions[1] as string)).equal(contractHash1);
466460

467461
// verify expected constants
468-
expect(result.baseFeePerGas).equal(EthImpl.zeroHex);
469-
expect(result.difficulty).equal(EthImpl.zeroHex);
470-
expect(result.extraData).equal(EthImpl.emptyHex);
471-
expect(result.miner).equal(EthImpl.zeroAddressHex);
472-
expect(result.mixHash).equal(EthImpl.emptyArrayHex);
473-
expect(result.nonce).equal(EthImpl.zeroHex);
474-
expect(result.receiptsRoot).equal(EthImpl.emptyArrayHex);
475-
expect(result.sha3Uncles).equal(EthImpl.emptyArrayHex);
476-
expect(result.stateRoot).equal(EthImpl.emptyArrayHex);
477-
expect(result.totalDifficulty).equal(EthImpl.zeroHex);
478-
expect(result.uncles).to.deep.equal([]);
462+
verifyBlockConstants(result);
479463
});
480464

481465
it('eth_getBlockByHash with match and details', async function () {
@@ -501,17 +485,7 @@ describe('Eth calls using MirrorNode', async function () {
501485
expect((result.transactions[1] as Transaction).hash).equal(contractHash1);
502486

503487
// verify expected constants
504-
expect(result.baseFeePerGas).equal(EthImpl.zeroHex);
505-
expect(result.difficulty).equal(EthImpl.zeroHex);
506-
expect(result.extraData).equal(EthImpl.emptyHex);
507-
expect(result.miner).equal(EthImpl.zeroAddressHex);
508-
expect(result.mixHash).equal(EthImpl.emptyArrayHex);
509-
expect(result.nonce).equal(EthImpl.zeroHex);
510-
expect(result.receiptsRoot).equal(EthImpl.emptyArrayHex);
511-
expect(result.sha3Uncles).equal(EthImpl.emptyArrayHex);
512-
expect(result.stateRoot).equal(EthImpl.emptyArrayHex);
513-
expect(result.totalDifficulty).equal(EthImpl.zeroHex);
514-
expect(result.uncles).to.deep.equal([]);
488+
verifyBlockConstants(result);
515489
});
516490

517491
it('eth_getBlockByHash with no match', async function () {

0 commit comments

Comments
 (0)