From a8e3e87f698b0fd9923a527451159c2da0d4a6c7 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Fri, 28 Feb 2020 15:13:11 +0100 Subject: [PATCH 1/2] Allow setting source and builder in .upload() --- packages/sdk/src/index.ts | 1 + .../sdk/src/signingcosmwasmclient.spec.ts | 19 ++++++++++++++++++- packages/sdk/src/signingcosmwasmclient.ts | 16 +++++++++++++--- packages/sdk/types/index.d.ts | 1 + packages/sdk/types/signingcosmwasmclient.d.ts | 8 +++++++- scripts/wasmd/deploy_erc20.js | 2 +- 6 files changed, 41 insertions(+), 6 deletions(-) diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index 2f343f2f..425cad66 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -32,5 +32,6 @@ export { SigningCallback, SigningCosmWasmClient, ExecuteResult, + UploadMeta, UploadReceipt, } from "./signingcosmwasmclient"; diff --git a/packages/sdk/src/signingcosmwasmclient.spec.ts b/packages/sdk/src/signingcosmwasmclient.spec.ts index 6a4208ea..56cb6171 100644 --- a/packages/sdk/src/signingcosmwasmclient.spec.ts +++ b/packages/sdk/src/signingcosmwasmclient.spec.ts @@ -4,7 +4,7 @@ import { assert } from "@iov/utils"; import { Secp256k1Pen } from "./pen"; import { RestClient } from "./restclient"; -import { SigningCosmWasmClient } from "./signingcosmwasmclient"; +import { SigningCosmWasmClient, UploadMeta } from "./signingcosmwasmclient"; import { getRandomizedHackatom, makeRandomAddress, pendingWithoutWasmd } from "./testutils.spec"; import { Coin } from "./types"; @@ -50,6 +50,23 @@ describe("SigningCosmWasmClient", () => { expect(compressedSize).toBeLessThan(wasm.length * 0.5); expect(codeId).toBeGreaterThanOrEqual(1); }); + + it("can set builder and source", async () => { + pendingWithoutWasmd(); + const pen = await Secp256k1Pen.fromMnemonic(faucet.mnemonic); + const client = new SigningCosmWasmClient(httpUrl, faucet.address, signBytes => pen.sign(signBytes)); + const wasm = getRandomizedHackatom(); + + const meta: UploadMeta = { + source: "https://crates.io/api/v1/crates/cw-nameservice/0.1.0/download", + builder: "confio/cosmwasm-opt:0.6.2", + }; + const { codeId } = await client.upload(wasm, meta); + + const codeDetails = await client.getCodeDetails(codeId); + expect(codeDetails.source).toEqual(meta.source); + expect(codeDetails.builder).toEqual(meta.builder); + }); }); describe("instantiate", () => { diff --git a/packages/sdk/src/signingcosmwasmclient.ts b/packages/sdk/src/signingcosmwasmclient.ts index efb76b21..2dc60779 100644 --- a/packages/sdk/src/signingcosmwasmclient.ts +++ b/packages/sdk/src/signingcosmwasmclient.ts @@ -51,6 +51,13 @@ const defaultFees: FeeTable = { }, }; +export interface UploadMeta { + /** The source URL */ + readonly source?: string; + /** The builder tag */ + readonly builder?: string; +} + export interface UploadReceipt { /** Size of the original wasm code in bytes */ readonly originalSize: number; @@ -96,7 +103,10 @@ export class SigningCosmWasmClient extends CosmWasmClient { } /** Uploads code and returns a receipt, including the code ID */ - public async upload(wasmCode: Uint8Array, memo = ""): Promise { + public async upload(wasmCode: Uint8Array, meta: UploadMeta = {}, memo = ""): Promise { + const source = meta.source || ""; + const builder = meta.builder || ""; + const compressed = pako.gzip(wasmCode, { level: 9 }); const storeCodeMsg: MsgStoreCode = { type: "wasm/store-code", @@ -104,8 +114,8 @@ export class SigningCosmWasmClient extends CosmWasmClient { sender: this.senderAddress, // eslint-disable-next-line @typescript-eslint/camelcase wasm_byte_code: Encoding.toBase64(compressed), - source: "", - builder: "", + source: source, + builder: builder, }, }; const fee = this.fees.upload; diff --git a/packages/sdk/types/index.d.ts b/packages/sdk/types/index.d.ts index 6a0b7d20..b1cd5985 100644 --- a/packages/sdk/types/index.d.ts +++ b/packages/sdk/types/index.d.ts @@ -31,5 +31,6 @@ export { SigningCallback, SigningCosmWasmClient, ExecuteResult, + UploadMeta, UploadReceipt, } from "./signingcosmwasmclient"; diff --git a/packages/sdk/types/signingcosmwasmclient.d.ts b/packages/sdk/types/signingcosmwasmclient.d.ts index 51513bd9..9510b2fa 100644 --- a/packages/sdk/types/signingcosmwasmclient.d.ts +++ b/packages/sdk/types/signingcosmwasmclient.d.ts @@ -11,6 +11,12 @@ export interface FeeTable { readonly exec: StdFee; readonly send: StdFee; } +export interface UploadMeta { + /** The source URL */ + readonly source?: string; + /** The builder tag */ + readonly builder?: string; +} export interface UploadReceipt { /** Size of the original wasm code in bytes */ readonly originalSize: number; @@ -40,7 +46,7 @@ export declare class SigningCosmWasmClient extends CosmWasmClient { getNonce(address?: string): Promise; getAccount(address?: string): Promise; /** Uploads code and returns a receipt, including the code ID */ - upload(wasmCode: Uint8Array, memo?: string): Promise; + upload(wasmCode: Uint8Array, meta?: UploadMeta, memo?: string): Promise; instantiate( codeId: number, initMsg: object, diff --git a/scripts/wasmd/deploy_erc20.js b/scripts/wasmd/deploy_erc20.js index 12db4239..4401d53d 100755 --- a/scripts/wasmd/deploy_erc20.js +++ b/scripts/wasmd/deploy_erc20.js @@ -72,7 +72,7 @@ async function main() { const client = new SigningCosmWasmClient(httpUrl, faucet.address, signBytes => pen.sign(signBytes)); const wasm = fs.readFileSync(__dirname + "/contracts/cw-erc20.wasm"); - const uploadReceipt = await client.upload(wasm, "Upload ERC20 contract"); + const uploadReceipt = await client.upload(wasm, {}, "Upload ERC20 contract"); console.info(`Upload succeeded. Receipt: ${JSON.stringify(uploadReceipt)}`); for (const initMsg of [initMsgHash, initMsgIsa, initMsgJade]) { From 2520e476623ffc5326b559e86f8f1ba09265fb5f Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Fri, 28 Feb 2020 15:45:55 +0100 Subject: [PATCH 2/2] Update nameservice and set verification information --- scripts/wasmd/contracts/checksums.sha256 | 2 +- scripts/wasmd/contracts/cw-nameservice.wasm | Bin 103304 -> 102206 bytes scripts/wasmd/deploy_nameservice.js | 41 ++++++++++++-------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/scripts/wasmd/contracts/checksums.sha256 b/scripts/wasmd/contracts/checksums.sha256 index d31818e8..a7afcb40 100644 --- a/scripts/wasmd/contracts/checksums.sha256 +++ b/scripts/wasmd/contracts/checksums.sha256 @@ -1,2 +1,2 @@ aff8c8873d79d2153a8b9066a0683fec3c903669267eb806ffa831dcd4b3daae cw-erc20.wasm -8427fcbf9e6c15d0e0dea0afe75640d997a6854d03c3aa1c8bdf1a9787a35681 cw-nameservice.wasm +d5dde423d321f7d3793a9b1667d06ac86c7f57dfbd2534a9c790963e1c2955ed cw-nameservice.wasm diff --git a/scripts/wasmd/contracts/cw-nameservice.wasm b/scripts/wasmd/contracts/cw-nameservice.wasm index 33f14cc870fccf3658eb1039d05a75a6ef3c6031..d202c747164d532ba43d5ee8f9e0077ded4cd016 100644 GIT binary patch delta 10950 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 delta 12186 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 pen.sign(signBytes)); const wasm = fs.readFileSync(__dirname + "/contracts/cw-nameservice.wasm"); - const uploadReceipt = await client.upload(wasm, "Upload Name Service contract"); + const uploadReceipt = await client.upload(wasm, codeMeta, "Upload Name Service code"); console.info(`Upload succeeded. Receipt: ${JSON.stringify(uploadReceipt)}`); - for (const initMsg of [initFree, initLuxury]) { - const memo = `Create an nameservice instance for ${initMsg.name}`; - const contractAddress = await client.instantiate(uploadReceipt.codeId, initMsg, initMsg.name, memo); - console.info(`Contract instantiated for ${initMsg.name} at ${contractAddress}`); + for (const { label, initMsg } of [free, luxury]) { + const memo = `Create an nameservice instance "${label}"`; + const contractAddress = await client.instantiate(uploadReceipt.codeId, initMsg, label, memo); + console.info(`Contract "${label}" instantiated at ${contractAddress}`); } }