From c6112913b950357647bf50e6f6e4eb48efdda4fe Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Wed, 22 Jun 2022 09:05:34 +0200 Subject: [PATCH] Rename encodeInt to encodeUvarint --- .../src/tendermint34/encodings.spec.ts | 23 ++++++++++++------- .../src/tendermint34/encodings.ts | 19 +++++++++------ .../tendermint-rpc/src/tendermint34/hasher.ts | 11 +++++++-- .../src/tendermint35/encodings.spec.ts | 23 ++++++++++++------- .../src/tendermint35/encodings.ts | 19 +++++++++------ .../tendermint-rpc/src/tendermint35/hasher.ts | 11 +++++++-- 6 files changed, 72 insertions(+), 34 deletions(-) diff --git a/packages/tendermint-rpc/src/tendermint34/encodings.spec.ts b/packages/tendermint-rpc/src/tendermint34/encodings.spec.ts index afea0600..b4921d3b 100644 --- a/packages/tendermint-rpc/src/tendermint34/encodings.spec.ts +++ b/packages/tendermint-rpc/src/tendermint34/encodings.spec.ts @@ -1,6 +1,13 @@ import { ReadonlyDate } from "readonly-date"; -import { encodeBlockId, encodeBytes, encodeInt, encodeString, encodeTime, encodeVersion } from "./encodings"; +import { + encodeBlockId, + encodeBytes, + encodeString, + encodeTime, + encodeUvarint, + encodeVersion, +} from "./encodings"; describe("encodings", () => { describe("encodeString", () => { @@ -13,14 +20,14 @@ describe("encodings", () => { }); }); - describe("encodeInt", () => { + describe("encodeUvarint", () => { it("works", () => { - expect(encodeInt(0)).toEqual(Uint8Array.from([0])); - expect(encodeInt(1)).toEqual(Uint8Array.from([1])); - expect(encodeInt(127)).toEqual(Uint8Array.from([127])); - expect(encodeInt(128)).toEqual(Uint8Array.from([128, 1])); - expect(encodeInt(255)).toEqual(Uint8Array.from([255, 1])); - expect(encodeInt(256)).toEqual(Uint8Array.from([128, 2])); + expect(encodeUvarint(0)).toEqual(Uint8Array.from([0])); + expect(encodeUvarint(1)).toEqual(Uint8Array.from([1])); + expect(encodeUvarint(127)).toEqual(Uint8Array.from([127])); + expect(encodeUvarint(128)).toEqual(Uint8Array.from([128, 1])); + expect(encodeUvarint(255)).toEqual(Uint8Array.from([255, 1])); + expect(encodeUvarint(256)).toEqual(Uint8Array.from([128, 2])); }); }); diff --git a/packages/tendermint-rpc/src/tendermint34/encodings.ts b/packages/tendermint-rpc/src/tendermint34/encodings.ts index ec5b0727..b4b1b32f 100644 --- a/packages/tendermint-rpc/src/tendermint34/encodings.ts +++ b/packages/tendermint-rpc/src/tendermint34/encodings.ts @@ -161,18 +161,21 @@ export function encodeString(s: string): Uint8Array { } // See https://github.com/tendermint/go-amino/blob/v0.15.0/encoder.go#L79-L87 -export function encodeInt(n: number): Uint8Array { - // eslint-disable-next-line no-bitwise - return n >= 0x80 ? Uint8Array.from([(n & 0xff) | 0x80, ...encodeInt(n >> 7)]) : Uint8Array.from([n & 0xff]); +export function encodeUvarint(n: number): Uint8Array { + return n >= 0x80 + ? // eslint-disable-next-line no-bitwise + Uint8Array.from([(n & 0xff) | 0x80, ...encodeUvarint(n >> 7)]) + : // eslint-disable-next-line no-bitwise + Uint8Array.from([n & 0xff]); } // See https://github.com/tendermint/go-amino/blob/v0.15.0/encoder.go#L134-L178 export function encodeTime(time: ReadonlyDateWithNanoseconds): Uint8Array { const milliseconds = time.getTime(); const seconds = Math.floor(milliseconds / 1000); - const secondsArray = seconds ? [0x08, ...encodeInt(seconds)] : new Uint8Array(); + const secondsArray = seconds ? [0x08, ...encodeUvarint(seconds)] : new Uint8Array(); const nanoseconds = (time.nanoseconds || 0) + (milliseconds % 1000) * 1e6; - const nanosecondsArray = nanoseconds ? [0x10, ...encodeInt(nanoseconds)] : new Uint8Array(); + const nanosecondsArray = nanoseconds ? [0x10, ...encodeUvarint(nanoseconds)] : new Uint8Array(); return Uint8Array.from([...secondsArray, ...nanosecondsArray]); } @@ -184,8 +187,10 @@ export function encodeBytes(bytes: Uint8Array): Uint8Array { } export function encodeVersion(version: Version): Uint8Array { - const blockArray = version.block ? Uint8Array.from([0x08, ...encodeInt(version.block)]) : new Uint8Array(); - const appArray = version.app ? Uint8Array.from([0x10, ...encodeInt(version.app)]) : new Uint8Array(); + const blockArray = version.block + ? Uint8Array.from([0x08, ...encodeUvarint(version.block)]) + : new Uint8Array(); + const appArray = version.app ? Uint8Array.from([0x10, ...encodeUvarint(version.app)]) : new Uint8Array(); return Uint8Array.from([...blockArray, ...appArray]); } diff --git a/packages/tendermint-rpc/src/tendermint34/hasher.ts b/packages/tendermint-rpc/src/tendermint34/hasher.ts index 65ba6627..a02d2f81 100644 --- a/packages/tendermint-rpc/src/tendermint34/hasher.ts +++ b/packages/tendermint-rpc/src/tendermint34/hasher.ts @@ -1,6 +1,13 @@ import { Sha256, sha256 } from "@cosmjs/crypto"; -import { encodeBlockId, encodeBytes, encodeInt, encodeString, encodeTime, encodeVersion } from "./encodings"; +import { + encodeBlockId, + encodeBytes, + encodeString, + encodeTime, + encodeUvarint, + encodeVersion, +} from "./encodings"; import { Header } from "./responses"; // hash is sha256 @@ -55,7 +62,7 @@ export function hashBlock(header: Header): Uint8Array { const encodedFields: readonly Uint8Array[] = [ encodeVersion(header.version), encodeString(header.chainId), - encodeInt(header.height), + encodeUvarint(header.height), encodeTime(header.time), encodeBlockId(header.lastBlockId), diff --git a/packages/tendermint-rpc/src/tendermint35/encodings.spec.ts b/packages/tendermint-rpc/src/tendermint35/encodings.spec.ts index afea0600..b4921d3b 100644 --- a/packages/tendermint-rpc/src/tendermint35/encodings.spec.ts +++ b/packages/tendermint-rpc/src/tendermint35/encodings.spec.ts @@ -1,6 +1,13 @@ import { ReadonlyDate } from "readonly-date"; -import { encodeBlockId, encodeBytes, encodeInt, encodeString, encodeTime, encodeVersion } from "./encodings"; +import { + encodeBlockId, + encodeBytes, + encodeString, + encodeTime, + encodeUvarint, + encodeVersion, +} from "./encodings"; describe("encodings", () => { describe("encodeString", () => { @@ -13,14 +20,14 @@ describe("encodings", () => { }); }); - describe("encodeInt", () => { + describe("encodeUvarint", () => { it("works", () => { - expect(encodeInt(0)).toEqual(Uint8Array.from([0])); - expect(encodeInt(1)).toEqual(Uint8Array.from([1])); - expect(encodeInt(127)).toEqual(Uint8Array.from([127])); - expect(encodeInt(128)).toEqual(Uint8Array.from([128, 1])); - expect(encodeInt(255)).toEqual(Uint8Array.from([255, 1])); - expect(encodeInt(256)).toEqual(Uint8Array.from([128, 2])); + expect(encodeUvarint(0)).toEqual(Uint8Array.from([0])); + expect(encodeUvarint(1)).toEqual(Uint8Array.from([1])); + expect(encodeUvarint(127)).toEqual(Uint8Array.from([127])); + expect(encodeUvarint(128)).toEqual(Uint8Array.from([128, 1])); + expect(encodeUvarint(255)).toEqual(Uint8Array.from([255, 1])); + expect(encodeUvarint(256)).toEqual(Uint8Array.from([128, 2])); }); }); diff --git a/packages/tendermint-rpc/src/tendermint35/encodings.ts b/packages/tendermint-rpc/src/tendermint35/encodings.ts index ec5b0727..b4b1b32f 100644 --- a/packages/tendermint-rpc/src/tendermint35/encodings.ts +++ b/packages/tendermint-rpc/src/tendermint35/encodings.ts @@ -161,18 +161,21 @@ export function encodeString(s: string): Uint8Array { } // See https://github.com/tendermint/go-amino/blob/v0.15.0/encoder.go#L79-L87 -export function encodeInt(n: number): Uint8Array { - // eslint-disable-next-line no-bitwise - return n >= 0x80 ? Uint8Array.from([(n & 0xff) | 0x80, ...encodeInt(n >> 7)]) : Uint8Array.from([n & 0xff]); +export function encodeUvarint(n: number): Uint8Array { + return n >= 0x80 + ? // eslint-disable-next-line no-bitwise + Uint8Array.from([(n & 0xff) | 0x80, ...encodeUvarint(n >> 7)]) + : // eslint-disable-next-line no-bitwise + Uint8Array.from([n & 0xff]); } // See https://github.com/tendermint/go-amino/blob/v0.15.0/encoder.go#L134-L178 export function encodeTime(time: ReadonlyDateWithNanoseconds): Uint8Array { const milliseconds = time.getTime(); const seconds = Math.floor(milliseconds / 1000); - const secondsArray = seconds ? [0x08, ...encodeInt(seconds)] : new Uint8Array(); + const secondsArray = seconds ? [0x08, ...encodeUvarint(seconds)] : new Uint8Array(); const nanoseconds = (time.nanoseconds || 0) + (milliseconds % 1000) * 1e6; - const nanosecondsArray = nanoseconds ? [0x10, ...encodeInt(nanoseconds)] : new Uint8Array(); + const nanosecondsArray = nanoseconds ? [0x10, ...encodeUvarint(nanoseconds)] : new Uint8Array(); return Uint8Array.from([...secondsArray, ...nanosecondsArray]); } @@ -184,8 +187,10 @@ export function encodeBytes(bytes: Uint8Array): Uint8Array { } export function encodeVersion(version: Version): Uint8Array { - const blockArray = version.block ? Uint8Array.from([0x08, ...encodeInt(version.block)]) : new Uint8Array(); - const appArray = version.app ? Uint8Array.from([0x10, ...encodeInt(version.app)]) : new Uint8Array(); + const blockArray = version.block + ? Uint8Array.from([0x08, ...encodeUvarint(version.block)]) + : new Uint8Array(); + const appArray = version.app ? Uint8Array.from([0x10, ...encodeUvarint(version.app)]) : new Uint8Array(); return Uint8Array.from([...blockArray, ...appArray]); } diff --git a/packages/tendermint-rpc/src/tendermint35/hasher.ts b/packages/tendermint-rpc/src/tendermint35/hasher.ts index 65ba6627..a02d2f81 100644 --- a/packages/tendermint-rpc/src/tendermint35/hasher.ts +++ b/packages/tendermint-rpc/src/tendermint35/hasher.ts @@ -1,6 +1,13 @@ import { Sha256, sha256 } from "@cosmjs/crypto"; -import { encodeBlockId, encodeBytes, encodeInt, encodeString, encodeTime, encodeVersion } from "./encodings"; +import { + encodeBlockId, + encodeBytes, + encodeString, + encodeTime, + encodeUvarint, + encodeVersion, +} from "./encodings"; import { Header } from "./responses"; // hash is sha256 @@ -55,7 +62,7 @@ export function hashBlock(header: Header): Uint8Array { const encodedFields: readonly Uint8Array[] = [ encodeVersion(header.version), encodeString(header.chainId), - encodeInt(header.height), + encodeUvarint(header.height), encodeTime(header.time), encodeBlockId(header.lastBlockId),