From 857b393eb49479ee3cc2f7a438fc79c2ef04c3bd Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 11 May 2021 12:28:59 +0200 Subject: [PATCH 1/3] proto-signing: Add makeCosmoshubPath helper --- packages/proto-signing/src/index.ts | 1 + packages/proto-signing/src/paths.spec.ts | 26 ++++++++++++++++++++++++ packages/proto-signing/src/paths.ts | 15 ++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 packages/proto-signing/src/paths.spec.ts create mode 100644 packages/proto-signing/src/paths.ts diff --git a/packages/proto-signing/src/index.ts b/packages/proto-signing/src/index.ts index e6490c7d..3136762c 100644 --- a/packages/proto-signing/src/index.ts +++ b/packages/proto-signing/src/index.ts @@ -16,6 +16,7 @@ export { } from "./registry"; export { DirectSecp256k1HdWallet, DirectSecp256k1HdWalletOptions } from "./directsecp256k1hdwallet"; export { DirectSecp256k1Wallet } from "./directsecp256k1wallet"; +export { makeCosmoshubPath } from "./paths"; export { decodePubkey, encodePubkey } from "./pubkey"; export { AccountData, diff --git a/packages/proto-signing/src/paths.spec.ts b/packages/proto-signing/src/paths.spec.ts new file mode 100644 index 00000000..17fd85b6 --- /dev/null +++ b/packages/proto-signing/src/paths.spec.ts @@ -0,0 +1,26 @@ +import { Slip10RawIndex } from "@cosmjs/crypto"; + +import { makeCosmoshubPath } from "./paths"; + +describe("paths", () => { + describe("makeCosmoshubPath", () => { + it("works", () => { + // m/44'/118'/0'/0/0 + expect(makeCosmoshubPath(0)).toEqual([ + Slip10RawIndex.hardened(44), + Slip10RawIndex.hardened(118), + Slip10RawIndex.hardened(0), + Slip10RawIndex.normal(0), + Slip10RawIndex.normal(0), + ]); + // m/44'/118'/0'/0/123 + expect(makeCosmoshubPath(123)).toEqual([ + Slip10RawIndex.hardened(44), + Slip10RawIndex.hardened(118), + Slip10RawIndex.hardened(0), + Slip10RawIndex.normal(0), + Slip10RawIndex.normal(123), + ]); + }); + }); +}); diff --git a/packages/proto-signing/src/paths.ts b/packages/proto-signing/src/paths.ts new file mode 100644 index 00000000..bf4dd185 --- /dev/null +++ b/packages/proto-signing/src/paths.ts @@ -0,0 +1,15 @@ +import { HdPath, Slip10RawIndex } from "@cosmjs/crypto"; + +/** + * The Cosmos Hub derivation path in the form `m/44'/118'/0'/0/a` + * with 0-based account index `a`. + */ +export function makeCosmoshubPath(a: number): HdPath { + return [ + Slip10RawIndex.hardened(44), + Slip10RawIndex.hardened(118), + Slip10RawIndex.hardened(0), + Slip10RawIndex.normal(0), + Slip10RawIndex.normal(a), + ]; +} From 717d249a40fbc262aa02d91946026b98363d4360 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 11 May 2021 12:30:02 +0200 Subject: [PATCH 2/3] stargate: Re-export makeCosmoshubPath helper --- packages/stargate/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stargate/src/index.ts b/packages/stargate/src/index.ts index 4f3a074f..34c5785b 100644 --- a/packages/stargate/src/index.ts +++ b/packages/stargate/src/index.ts @@ -1,5 +1,5 @@ export { StdFee } from "@cosmjs/amino"; -export { Coin, coin, coins, parseCoins } from "@cosmjs/proto-signing"; +export { Coin, coin, coins, makeCosmoshubPath, parseCoins } from "@cosmjs/proto-signing"; export { Account, accountFromAny } from "./accounts"; export { From 3eeb13aa8ddbf79a57002b71a4457e09c1e9714d Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 11 May 2021 12:31:05 +0200 Subject: [PATCH 3/3] Update CHANGELOG for makeCosmosHubPath --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d339db85..6aba247c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ and this project adheres to ## [Unreleased] +### Added + +- @cosmjs/proto-signing: Export `makeCosmoshubPath` helper. +- @cosmjs/stargate: Export `makeCosmoshubPath` helper. + ## [0.25.1] - 2021-05-06 ### Added