From 4076975f7f39f13062be62b8a47684afdcc09f74 Mon Sep 17 00:00:00 2001 From: yanguoyu <841185308@qq.com> Date: Thu, 19 May 2022 17:41:25 +0800 Subject: [PATCH] fix: Fix unmatched cheque lockHash --- ...652945662504-UpdateOutputChequeLockHash.ts | 42 +++++++++++++++++++ .../src/database/chain/ormconfig.ts | 4 +- .../src/services/tx/transaction-generator.ts | 2 + 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 packages/neuron-wallet/src/database/chain/migrations/1652945662504-UpdateOutputChequeLockHash.ts diff --git a/packages/neuron-wallet/src/database/chain/migrations/1652945662504-UpdateOutputChequeLockHash.ts b/packages/neuron-wallet/src/database/chain/migrations/1652945662504-UpdateOutputChequeLockHash.ts new file mode 100644 index 0000000000..88d34e167e --- /dev/null +++ b/packages/neuron-wallet/src/database/chain/migrations/1652945662504-UpdateOutputChequeLockHash.ts @@ -0,0 +1,42 @@ +import { In, MigrationInterface, QueryRunner } from "typeorm"; +import { scriptToHash } from '@nervosnetwork/ckb-sdk-utils' +import { ScriptHashType } from "models/chain/script"; +import Output from "../entities/output"; + +export class UpdateOutputChequeLockHash1652945662504 implements MigrationInterface { + name = 'UpdateOutputChequeLockHash1652945662504' + + public async up(queryRunner: QueryRunner): Promise { + const errLockHash = [ + scriptToHash({ + args: '0x' + '0'.repeat(80), + codeHash: process.env.TESTNET_CHEQUE_SCRIPT_CODEHASH!, + hashType: process.env.TESTNET_CHEQUE_SCRIPT_HASHTYPE! as ScriptHashType + }), + scriptToHash({ + args: '0x' + '0'.repeat(80), + codeHash: process.env.MAINNET_CHEQUE_SCRIPT_CODEHASH!, + hashType: process.env.MAINNET_CHEQUE_SCRIPT_HASHTYPE! as ScriptHashType + }) + ] + const chequeOutput = await queryRunner.connection + .getRepository(Output) + .createQueryBuilder('output') + .where({ lockHash: In(errLockHash) }) + .getMany() + const updated = chequeOutput.map(output => { + output.lockHash = scriptToHash({ + args: output.lockArgs, + hashType: output.lockHashType, + codeHash: output.lockCodeHash + }) + return output + }) + await queryRunner.manager.save(updated) + } + + public async down(): Promise { + // do nothing + } + +} diff --git a/packages/neuron-wallet/src/database/chain/ormconfig.ts b/packages/neuron-wallet/src/database/chain/ormconfig.ts index 736898be8f..51dad2fc38 100644 --- a/packages/neuron-wallet/src/database/chain/ormconfig.ts +++ b/packages/neuron-wallet/src/database/chain/ormconfig.ts @@ -46,6 +46,7 @@ import { AddMultisigConfig1646817547204 } from './migrations/1646817547204-AddMu import { AddMultisigOutput1649729996969 } from './migrations/1649729996969-AddMultisigOutput' import { UpdateAddressDescription1650984779265 } from './migrations/1650984779265-UpdateAddressDescription' import { RemoveDuplicateBlake160s1651133703535 } from './migrations/1651133703535-RemoveDuplicateBlake160s' +import { UpdateOutputChequeLockHash1652945662504 } from './migrations/1652945662504-UpdateOutputChequeLockHash' export const CONNECTION_NOT_FOUND_NAME = 'ConnectionNotFoundError' @@ -107,7 +108,8 @@ const connectOptions = async (genesisBlockHash: string): Promise