Skip to content

Commit 8e7f600

Browse files
committed
feat(instantiate): spike, instantiate on revive. Doesn't import deployed contract
1 parent f9bb777 commit 8e7f600

File tree

4 files changed

+29
-15
lines changed

4 files changed

+29
-15
lines changed

snapshots.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
// Copyright 2022-2024 use-ink/contracts-ui authors & contributors
2-
// SPDX-License-Identifier: GPL-3.0-only
3-
41
module.exports = {
52
__version: '13.13.3',
63
'Storage Types Contract': {

src/lib/getContractFromPatron.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ function getFromPatron(field: string, hash: string) {
2929

3030
export function getContractFromPatron(codeHash: string): Promise<File> {
3131
const metadataPromise = getFromPatron('metadata', codeHash);
32-
const wasmPromise = getFromPatron('wasm', codeHash);
32+
const wasmPromise = getFromPatron('contract_binary', codeHash);
3333
return Promise.all([metadataPromise, wasmPromise]).then(([metadataResponse, wasmResponse]) => {
3434
const result = Buffer.from(wasmResponse as ArrayBuffer).toString('hex');
3535

src/services/chain/contract.ts

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
InstantiateData,
1212
SubmittableExtrinsic,
1313
} from 'types';
14+
import { stringToU8a, compactAddLength, u8aToU8a } from '@polkadot/util';
1415

1516
export function createInstantiateTx(
1617
api: ApiPromise,
@@ -25,7 +26,7 @@ export function createInstantiateTx(
2526
storageDepositLimit,
2627
}: Omit<InstantiateData, 'name'>,
2728
): SubmittableExtrinsic<'promise'> {
28-
const wasm = metadata?.info.source.wasm;
29+
const wasm = u8aToU8a(metadata?.json.source.contract_binary);
2930
const isValid = codeHash || !!wasm;
3031

3132
if (isValid && metadata && isNumber(constructorIndex) && metadata && argValues) {
@@ -38,15 +39,27 @@ export function createInstantiateTx(
3839
value,
3940
};
4041

41-
const codeOrBlueprint = codeHash
42-
? new BlueprintPromise(api, metadata, codeHash)
43-
: new CodePromise(api, metadata, wasm && wasm.toU8a());
44-
42+
const parsed_wasm = compactAddLength(wasm.slice(0));
43+
// const codeOrBlueprint = codeHash
44+
// ? new BlueprintPromise(api, metadata, codeHash)
45+
// : new CodePromise(api, metadata, wasm && wasm);
4546
const transformed = transformUserInput(api.registry, constructor.args, argValues);
4647

47-
return constructor.args.length > 0
48-
? codeOrBlueprint.tx[constructor.method](options, ...transformed)
49-
: codeOrBlueprint.tx[constructor.method](options);
48+
const data = constructor.toU8a(transformed);
49+
50+
const tx = api.tx.revive.instantiateWithCode(
51+
value!,
52+
gasLimit!,
53+
storageDepositLimit!,
54+
parsed_wasm,
55+
data,
56+
salt,
57+
);
58+
59+
return tx;
60+
// return constructor.args.length > 0
61+
// ? tx[constructor.method](options, ...transformed)
62+
// : tx[constructor.method](options);
5063
} else {
5164
throw new Error('Error creating instantiate tx');
5265
}

src/ui/components/instantiate/Step2.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ export function Step2() {
6464

6565
const [isUsingSalt, toggleIsUsingSalt] = useToggle(true);
6666

67+
const wasm = metadata?.info.source.wasm;
68+
6769
const params: Parameters<typeof api.call.contractsApi.instantiate> = useMemo(() => {
6870
return [
6971
accountId,
@@ -72,7 +74,9 @@ export function Step2() {
7274
: api.registry.createType('Balance', BN_ZERO),
7375
getGasLimit(isCustom, refTime.limit, proofSize.limit, api.registry),
7476
getStorageDepositLimit(storageDepositLimit.isActive, storageDepositLimit.value, api.registry),
75-
codeHashUrlParam ? { Existing: codeHashUrlParam } : { Upload: metadata?.info.source.wasm },
77+
codeHashUrlParam
78+
? { Existing: codeHashUrlParam }
79+
: { Upload: metadata?.json.source.contract_binary }, // TODO: update type
7680
inputData ?? '',
7781
isUsingSalt ? salt.value : '',
7882
];
@@ -96,7 +100,7 @@ export function Step2() {
96100
useEffect((): void => {
97101
async function dryRun() {
98102
try {
99-
const result = await api.call.contractsApi.instantiate(...params);
103+
const result = await api.call.reviveApi.instantiate(...params);
100104

101105
// default is no revert
102106
let convertedFlags = api.registry.createType('ContractReturnFlags', 0);
@@ -123,7 +127,7 @@ export function Step2() {
123127
gasRequired: result.gasRequired,
124128
storageDeposit: result.storageDeposit,
125129
// debugMessage is Bytes, must convert to Text
126-
debugMessage: api.registry.createType('Text', result.debugMessage.toU8a()),
130+
// debugMessage: api.registry.createType('Text', result.debugMessage.toU8a()),
127131
result: instantiateResult,
128132
});
129133

0 commit comments

Comments
 (0)