From d679650368f55eb33ed3b05c638522dcf93a352a Mon Sep 17 00:00:00 2001 From: Alexey Immoreev Date: Fri, 2 Jun 2023 18:04:28 +0400 Subject: [PATCH] Refactor: factor out empty hash code (#1222) --- backend/src/cron/tasks.ts | 5 ++--- backend/src/router/account/by-id.ts | 3 ++- backend/src/router/contract/by-id.ts | 3 ++- common/src/utils/constants.ts | 2 ++ .../src/components/blocks/BlockDetails.tsx | 3 ++- .../transactions/__tests__/common.tsx | 21 ++++++++++--------- 6 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 common/src/utils/constants.ts diff --git a/backend/src/cron/tasks.ts b/backend/src/cron/tasks.ts index b3351b75d..d380b3cab 100644 --- a/backend/src/cron/tasks.ts +++ b/backend/src/cron/tasks.ts @@ -29,6 +29,7 @@ import { import * as nearApi from "@/backend/utils/near"; import { SECOND, MINUTE } from "@/backend/utils/time"; import * as RPC from "@/common/types/rpc"; +import { EMPTY_CODE_HASH } from "@/common/utils/constants"; import { wait } from "@/common/utils/promise"; export const latestBlockCheck: RegularCheckFn = { @@ -580,9 +581,7 @@ const updatePoolInfoMap = async ( finality: "final", }); - // 'code_hash' === 11111111111111111111111111111111 is when the validator - // does not have a staking-pool contract on it (common on testnet) - if (account.code_hash === "11111111111111111111111111111111") { + if (account.code_hash === EMPTY_CODE_HASH) { return { fee: null, delegatorsCount: null, diff --git a/backend/src/router/account/by-id.ts b/backend/src/router/account/by-id.ts index 4953e281e..e4b8ce59c 100644 --- a/backend/src/router/account/by-id.ts +++ b/backend/src/router/account/by-id.ts @@ -9,6 +9,7 @@ import { commonProcedure } from "@/backend/router/trpc"; import { validators } from "@/backend/router/validators"; import * as nearApi from "@/backend/utils/near"; import { ignoreIfDoesNotExist } from "@/backend/utils/near"; +import { EMPTY_CODE_HASH } from "@/common/utils/constants"; const getLockupAccountId = async ( accountId: string @@ -166,7 +167,7 @@ export const procedures = { return { id, isContract: nearCoreAccount - ? nearCoreAccount.code_hash !== "11111111111111111111111111111111" + ? nearCoreAccount.code_hash !== EMPTY_CODE_HASH : false, created: accountInfo.created, storageUsed: accountDetails.storageUsage, diff --git a/backend/src/router/contract/by-id.ts b/backend/src/router/contract/by-id.ts index 55a8b3fe2..5d8def4af 100644 --- a/backend/src/router/contract/by-id.ts +++ b/backend/src/router/contract/by-id.ts @@ -9,6 +9,7 @@ import { div } from "@/backend/database/utils"; import { commonProcedure } from "@/backend/router/trpc"; import { validators } from "@/backend/router/validators"; import * as nearApi from "@/backend/utils/near"; +import { EMPTY_CODE_HASH } from "@/common/utils/constants"; const queryContractFromIndexer = async (accountId: string) => { // find the latest update in analytics db @@ -119,7 +120,7 @@ export const procedure = commonProcedure }) .catch(nearApi.ignoreIfDoesNotExist); // see https://github.com/near/near-explorer/pull/841#discussion_r783205960 - if (!account || account.code_hash === "11111111111111111111111111111111") { + if (!account || account.code_hash === EMPTY_CODE_HASH) { return null; } const [contractInfo, accessKeys] = await Promise.all([ diff --git a/common/src/utils/constants.ts b/common/src/utils/constants.ts new file mode 100644 index 000000000..afa3079b1 --- /dev/null +++ b/common/src/utils/constants.ts @@ -0,0 +1,2 @@ +// Code hash an account has when it has no code deployed +export const EMPTY_CODE_HASH = "11111111111111111111111111111111"; diff --git a/frontend/src/components/blocks/BlockDetails.tsx b/frontend/src/components/blocks/BlockDetails.tsx index 374721ce6..01c0f3e69 100644 --- a/frontend/src/components/blocks/BlockDetails.tsx +++ b/frontend/src/components/blocks/BlockDetails.tsx @@ -5,6 +5,7 @@ import { useTranslation } from "next-i18next"; import { Row, Col } from "react-bootstrap"; import { Block } from "@/common/types/procedures"; +import { EMPTY_CODE_HASH } from "@/common/utils/constants"; import { AccountLink } from "@/frontend/components/utils/AccountLink"; import { BlockLink } from "@/frontend/components/utils/BlockLink"; import { @@ -189,7 +190,7 @@ export const BlockDetails: React.FC = React.memo(({ block }) => { /> } text={ - block.prevHash === "11111111111111111111111111111111" ? ( + block.prevHash === EMPTY_CODE_HASH ? ( "Genesis" ) : ( diff --git a/frontend/src/components/transactions/__tests__/common.tsx b/frontend/src/components/transactions/__tests__/common.tsx index 653bcd4e4..c17855c9f 100644 --- a/frontend/src/components/transactions/__tests__/common.tsx +++ b/frontend/src/components/transactions/__tests__/common.tsx @@ -1,4 +1,5 @@ import { Receipt, TransactionOld } from "@/common/types/procedures"; +import { EMPTY_CODE_HASH } from "@/common/utils/constants"; export const TRANSACTIONS: TransactionOld[] = [ // no action has deposit @@ -242,11 +243,11 @@ export const TRANSACTIONS: TransactionOld[] = [ ]; export const TRANSACTION_WITH_SUCCESSFUL_RECEIPT: TransactionOld = { - hash: "T1111111111111111111111111111111111111111111", + hash: `T${EMPTY_CODE_HASH}`, signerId: "signer.test", receiverId: "receiver.test", status: "success", - blockHash: "B111111111111111111111111111111111111111111", + blockHash: `B${EMPTY_CODE_HASH}`, blockTimestamp: +new Date(2019, 1, 1), actions: [ { @@ -305,7 +306,7 @@ export const TRANSACTION_WITH_SUCCESSFUL_RECEIPT: TransactionOld = { tokensBurnt: "612157772373200000000", }, predecessorId: "signer.test", - id: "R1111111111111111111111111111111111111111111", + id: `R${EMPTY_CODE_HASH}`, receiverId: "receiver.test", }, outcome: { @@ -315,11 +316,11 @@ export const TRANSACTION_WITH_SUCCESSFUL_RECEIPT: TransactionOld = { }; export const TRANSACTION_WITH_MANY_RECEIPTS: TransactionOld = { - hash: "T1111111111111111111111111111111111111111111", + hash: `T${EMPTY_CODE_HASH}`, signerId: "signer.test", receiverId: "receiver.test", status: "success", - blockHash: "B111111111111111111111111111111111111111111", + blockHash: `B${EMPTY_CODE_HASH}`, blockTimestamp: +new Date(2019, 1, 1), actions: [ { @@ -474,7 +475,7 @@ export const TRANSACTION_WITH_MANY_RECEIPTS: TransactionOld = { tokensBurnt: "2087691790109200000000", }, predecessorId: "signer.test", - id: "R1111111111111111111111111111111111111111111", + id: `R${EMPTY_CODE_HASH}`, receiverId: "receiver.test", }, outcome: { @@ -484,11 +485,11 @@ export const TRANSACTION_WITH_MANY_RECEIPTS: TransactionOld = { }; export const TRANSACTION_WITH_FAILING_RECEIPT: TransactionOld = { - hash: "T1111111111111111111111111111111111111111111", + hash: `T${EMPTY_CODE_HASH}`, signerId: "signer.test", receiverId: "receiver.test", status: "failure", - blockHash: "B111111111111111111111111111111111111111111", + blockHash: `B${EMPTY_CODE_HASH}`, blockTimestamp: +new Date(2019, 1, 1), actions: [ { @@ -514,7 +515,7 @@ export const TRANSACTION_WITH_FAILING_RECEIPT: TransactionOld = { }, ], outcome: { - blockHash: "B111111111111111111111111111111111111111111", + blockHash: `B${EMPTY_CODE_HASH}`, logs: ["000028066 listings not found"], nestedReceipts: [ { @@ -555,7 +556,7 @@ export const TRANSACTION_WITH_FAILING_RECEIPT: TransactionOld = { tokensBurnt: "338053723011200000000", }, predecessorId: "signer.test", - id: "R1111111111111111111111111111111111111111111", + id: `R${EMPTY_CODE_HASH}`, receiverId: "receiver.test", }, outcome: {