From efb272e50d806b9a29240aaa3b0f5e5475ae62aa Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Mon, 2 Mar 2020 12:23:03 +0100 Subject: [PATCH] Check builder format in SigningCosmWasmClient.upload --- packages/sdk/src/signingcosmwasmclient.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/sdk/src/signingcosmwasmclient.ts b/packages/sdk/src/signingcosmwasmclient.ts index 2dc60779..aa89a894 100644 --- a/packages/sdk/src/signingcosmwasmclient.ts +++ b/packages/sdk/src/signingcosmwasmclient.ts @@ -2,6 +2,7 @@ import { Sha256 } from "@iov/crypto"; import { Encoding } from "@iov/encoding"; import pako from "pako"; +import { isValidBuilder } from "./builder"; import { CosmWasmClient, GetNonceResult, PostTxResult } from "./cosmwasmclient"; import { makeSignBytes } from "./encoding"; import { findAttribute, Log } from "./logs"; @@ -32,6 +33,15 @@ function singleAmount(amount: number, denom: string): readonly Coin[] { return [{ amount: amount.toString(), denom: denom }]; } +function prepareBuilder(buider: string | undefined): string { + if (buider === undefined) { + return ""; // normalization needed by backend + } else { + if (!isValidBuilder(buider)) throw new Error("The builder (Docker Hub image with tag) is not valid"); + return buider; + } +} + const defaultFees: FeeTable = { upload: { amount: singleAmount(25000, "ucosm"), @@ -105,7 +115,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { /** Uploads code and returns a receipt, including the code ID */ public async upload(wasmCode: Uint8Array, meta: UploadMeta = {}, memo = ""): Promise { const source = meta.source || ""; - const builder = meta.builder || ""; + const builder = prepareBuilder(meta.builder); const compressed = pako.gzip(wasmCode, { level: 9 }); const storeCodeMsg: MsgStoreCode = {