diff --git a/typescript/package.json b/typescript/package.json index b1be0c883..936b81f28 100644 --- a/typescript/package.json +++ b/typescript/package.json @@ -28,7 +28,6 @@ "@keep-network/ecdsa": "development", "@keep-network/tbtc-v2": "development", "bcoin": "git+https://github.com/keep-network/bcoin.git#5accd32c63e6025a0d35d67739c4a6e84095a1f8", - "bcrypto": "git+https://github.com/bcoin-org/bcrypto.git#semver:~5.5.0", "bufio": "^1.0.6", "electrum-client-js": "git+https://github.com/keep-network/electrum-client-js.git#v0.1.1", "ethers": "^5.5.2", diff --git a/typescript/src/bitcoin.ts b/typescript/src/bitcoin.ts index a46a4792b..88284dcad 100644 --- a/typescript/src/bitcoin.ts +++ b/typescript/src/bitcoin.ts @@ -1,9 +1,7 @@ import bcoin, { TX, Script } from "bcoin" import wif from "wif" import bufio from "bufio" -import hash160 from "bcrypto/lib/hash160" -import sha256 from "bcrypto/lib/sha256-browser.js" -import { BigNumber } from "ethers" +import { BigNumber, utils } from "ethers" import { Hex } from "./hex" import { BitcoinNetwork, toBcoinNetwork } from "./bitcoin-network" @@ -525,7 +523,12 @@ export function createKeyRing( * @returns Hash as a 20-byte un-prefixed hex string. */ export function computeHash160(text: string): string { - return hash160.digest(Buffer.from(text, "hex")).toString("hex") + const sha256Hash = utils.sha256( + Hex.from(Buffer.from(text, "hex")).toPrefixedString() + ) + const hash160 = utils.ripemd160(sha256Hash) + + return Hex.from(hash160).toString() } /** @@ -534,8 +537,9 @@ export function computeHash160(text: string): string { * @returns Hash as a 32-byte un-prefixed hex string. */ export function computeHash256(text: Hex): Hex { - const firstHash: Buffer = sha256.digest(text.toBuffer()) - const secondHash: Buffer = sha256.digest(firstHash) + const firstHash = utils.sha256(text.toPrefixedString()) + const secondHash = utils.sha256(firstHash) + return Hex.from(secondHash) } diff --git a/typescript/src/electrum.ts b/typescript/src/electrum.ts index 022ccce2a..e942aac3b 100644 --- a/typescript/src/electrum.ts +++ b/typescript/src/electrum.ts @@ -13,8 +13,7 @@ import { } from "./bitcoin" import { BitcoinNetwork } from "./bitcoin-network" import Electrum from "electrum-client-js" -import sha256 from "bcrypto/lib/sha256-browser.js" -import { BigNumber } from "ethers" +import { BigNumber, utils } from "ethers" import { URL } from "url" import { Hex } from "./hex" import { backoffRetrier, RetrierFn } from "./backoff" @@ -557,5 +556,8 @@ export class Client implements BitcoinClient { * @returns Electrum script hash as a hex string. */ function computeScriptHash(script: string): string { - return sha256.digest(Buffer.from(script, "hex")).reverse().toString("hex") + const _script = Hex.from(Buffer.from(script, "hex")).toPrefixedString() + const hash256 = utils.sha256(_script) + + return Hex.from(hash256).reverse().toString() } diff --git a/typescript/typings.d.ts b/typescript/typings.d.ts index 7517bbb08..2558e6a79 100644 --- a/typescript/typings.d.ts +++ b/typescript/typings.d.ts @@ -3,8 +3,6 @@ * don't provide their own typings. */ declare module "bcoin" -declare module "bcrypto/lib/hash160" -declare module "bcrypto/lib/sha256-browser.js" declare module "bufio" declare module "electrum-client-js" declare module "wif" diff --git a/typescript/yarn.lock b/typescript/yarn.lock index 561d0069a..d305c9069 100644 --- a/typescript/yarn.lock +++ b/typescript/yarn.lock @@ -1522,7 +1522,7 @@ "@openzeppelin/upgrades" "^2.7.2" openzeppelin-solidity "2.4.0" -"@keep-network/keep-ecdsa@1.9.0-dev.1", "@keep-network/keep-ecdsa@>1.9.0-dev <1.9.0-ropsten": +"@keep-network/keep-ecdsa@>1.9.0-dev <1.9.0-ropsten": version "1.9.0-dev.1" resolved "https://registry.yarnpkg.com/@keep-network/keep-ecdsa/-/keep-ecdsa-1.9.0-dev.1.tgz#7522b47dd639ddd7479a0e71dc328a9e0bba7cae" integrity sha512-FRIDejTUiQO7c9gBXgjtTp2sXkEQKFBBqVjYoZE20OCGRxbgum9FbgD/B5RWIctBy4GGr5wJHnA1789iaK3X6A==