@layerzerolabs/lz-initia-cli 3.0.80 → 3.0.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/cli.cjs +25 -22
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.mjs +24 -22
- package/dist/cli.mjs.map +1 -1
- package/dist/index.cjs +25 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.mjs +24 -22
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -8
package/dist/cli.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs3 from 'fs';
|
|
2
2
|
import path4 from 'path';
|
|
3
3
|
import process from 'process';
|
|
4
|
-
import
|
|
4
|
+
import initia4 from '@initia/initia.js';
|
|
5
5
|
import { sha3_256 } from '@noble/hashes/sha3';
|
|
6
6
|
import { networkToChainType, ChainType, InitiaChain, networkToChain, networkToEnv, EndpointVersion } from '@layerzerolabs/lz-definitions';
|
|
7
7
|
import { getLogger, ensure0x } from '@layerzerolabs/lz-utilities';
|
|
@@ -29,14 +29,14 @@ function getInitiaClient(env, config) {
|
|
|
29
29
|
if (url === void 0) {
|
|
30
30
|
throw new Error(`No network url for ${env} found in lz-initia.config.ts`);
|
|
31
31
|
}
|
|
32
|
-
const lcd = new LCDClient(url);
|
|
32
|
+
const lcd = new initia4.LCDClient(url);
|
|
33
33
|
return lcd;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
// src/constant.ts
|
|
37
37
|
var InitiaObjectDeployerAddress = "0x1";
|
|
38
38
|
function isInitiaAccount(account) {
|
|
39
|
-
return account !== void 0 && account instanceof MnemonicKey;
|
|
39
|
+
return account !== void 0 && account instanceof initia4.MnemonicKey;
|
|
40
40
|
}
|
|
41
41
|
function getDeploymentPath(lzInitiaConfig, network, moduleName) {
|
|
42
42
|
const fullName = getFullName(lzInitiaConfig, moduleName);
|
|
@@ -63,7 +63,7 @@ async function resolveAddress(moduleKey, lzInitiaConfig, network, isOngoingModul
|
|
|
63
63
|
const deployToObject = lzInitiaConfig.modules[moduleKey]?.deployToObject ?? lzInitiaConfig.defaultDeployToObject ?? false;
|
|
64
64
|
if (!deployToObject) {
|
|
65
65
|
const deployer = getDeployerAccount(moduleKey, lzInitiaConfig, network);
|
|
66
|
-
return AccAddress.toHex(deployer.accAddress);
|
|
66
|
+
return initia4.AccAddress.toHex(deployer.accAddress);
|
|
67
67
|
}
|
|
68
68
|
const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleKey);
|
|
69
69
|
if (objectDeployer !== InitiaObjectDeployerAddress) {
|
|
@@ -87,8 +87,8 @@ async function resolveAddress(moduleKey, lzInitiaConfig, network, isOngoingModul
|
|
|
87
87
|
return genObjectAddress(moduleKey, lzInitiaConfig, network);
|
|
88
88
|
}
|
|
89
89
|
var createObjectAddress = (creatorAddress, seed) => {
|
|
90
|
-
const hexAddress = AccAddress.validate(creatorAddress) ? AccAddress.toHex(creatorAddress) : creatorAddress;
|
|
91
|
-
const creatorBytes = bcs.address().serialize(hexAddress).toBytes();
|
|
90
|
+
const hexAddress = initia4.AccAddress.validate(creatorAddress) ? initia4.AccAddress.toHex(creatorAddress) : creatorAddress;
|
|
91
|
+
const creatorBytes = initia4.bcs.address().serialize(hexAddress).toBytes();
|
|
92
92
|
const seedBytes = typeof seed === "string" ? Buffer.from(seed, "utf8") : seed;
|
|
93
93
|
const bytes = new Uint8Array([...creatorBytes, ...seedBytes, 254]);
|
|
94
94
|
return ensure0x(Buffer.from(sha3_256(bytes)).toString("hex"));
|
|
@@ -99,9 +99,11 @@ async function genObjectAddressForOfficial(network, lzInitiaConfig, moduleKey) {
|
|
|
99
99
|
const OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR = "initia_std::object_code_deployment";
|
|
100
100
|
const account = await client.auth.accountInfo(deployer.accAddress);
|
|
101
101
|
const sequenceNumber = account.getSequenceNumber();
|
|
102
|
-
const firstPart = bcs.string().serialize(OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR);
|
|
103
|
-
const
|
|
104
|
-
const
|
|
102
|
+
const firstPart = initia4.bcs.string().serialize(OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR);
|
|
103
|
+
const firstPartBytes = firstPart.toBytes();
|
|
104
|
+
const secondPart = initia4.bcs.u64().serialize(BigInt(sequenceNumber) + BigInt(2));
|
|
105
|
+
const secondPartBytes = secondPart.toBytes();
|
|
106
|
+
const seed = new Uint8Array([...firstPartBytes, ...secondPartBytes]);
|
|
105
107
|
const objectAddress = createObjectAddress(deployer.accAddress, seed);
|
|
106
108
|
return objectAddress;
|
|
107
109
|
}
|
|
@@ -234,9 +236,9 @@ function handleAccountNotFoundError(error, pkgName, context, network) {
|
|
|
234
236
|
if (address === void 0) {
|
|
235
237
|
return;
|
|
236
238
|
}
|
|
237
|
-
if (error.response.data.message.includes(`account ${AccAddress.fromHex(address)} not found`)) {
|
|
239
|
+
if (error.response.data.message.includes(`account ${initia4.AccAddress.fromHex(address)} not found`)) {
|
|
238
240
|
throw new Error(
|
|
239
|
-
`${error.response.data.message}, make sure you have funded the account ${AccAddress.fromHex(address)}(${address}) on ${network}`
|
|
241
|
+
`${error.response.data.message}, make sure you have funded the account ${initia4.AccAddress.fromHex(address)}(${address}) on ${network}`
|
|
240
242
|
);
|
|
241
243
|
}
|
|
242
244
|
}
|
|
@@ -380,7 +382,7 @@ function saveDeployment(deployer, moduleKey, pkgName, address, dest, network, by
|
|
|
380
382
|
JSON.stringify(
|
|
381
383
|
{
|
|
382
384
|
address,
|
|
383
|
-
deployer: AccAddress.toHex(deployer.accAddress),
|
|
385
|
+
deployer: initia4.AccAddress.toHex(deployer.accAddress),
|
|
384
386
|
name: moduleKeyWithVariant(moduleKey, variant),
|
|
385
387
|
moduleName: pkgName,
|
|
386
388
|
network,
|
|
@@ -431,38 +433,38 @@ function getBytecodesHash(bytecodes) {
|
|
|
431
433
|
}
|
|
432
434
|
async function createAccountDeploymentTx(client, deployer, modules, lzInitiaConfig, network) {
|
|
433
435
|
const msgs = [
|
|
434
|
-
new MsgPublish(
|
|
436
|
+
new initia4.MsgPublish(
|
|
435
437
|
deployer.accAddress,
|
|
436
438
|
modules.map((codeBytes) => codeBytes.toString("base64")),
|
|
437
|
-
MsgPublish.Policy.COMPATIBLE
|
|
439
|
+
initia4.MsgPublish.Policy.COMPATIBLE
|
|
438
440
|
)
|
|
439
441
|
];
|
|
440
|
-
const wallet = new Wallet(client, deployer);
|
|
442
|
+
const wallet = new initia4.Wallet(client, deployer);
|
|
441
443
|
const gasPrices = lzInitiaConfig.gasPrice?.[network] === void 0 ? void 0 : `${lzInitiaConfig.gasPrice[network]}uinit`;
|
|
442
444
|
const signedTx = await wallet.createAndSignTx({ msgs, gasPrices });
|
|
443
445
|
return signedTx;
|
|
444
446
|
}
|
|
445
447
|
async function createObjectDeploymentTx(client, deployer, modules, lzInitiaConfig, network, moduleKey, deployedAddress, actionType) {
|
|
446
448
|
const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleKey);
|
|
447
|
-
const metadataArg = bcs.vector(bcs.u8()).serialize(Uint8Array.from([])).toBase64();
|
|
448
|
-
const modulesArg = bcs.vector(bcs.vector(bcs.u8())).serialize(modules).toBase64();
|
|
449
|
-
const objectAddressArg = bcs.address().serialize(deployedAddress).toBase64();
|
|
449
|
+
const metadataArg = initia4.bcs.vector(initia4.bcs.u8()).serialize(Uint8Array.from([])).toBase64();
|
|
450
|
+
const modulesArg = initia4.bcs.vector(initia4.bcs.vector(initia4.bcs.u8())).serialize(modules).toBase64();
|
|
451
|
+
const objectAddressArg = initia4.bcs.address().serialize(deployedAddress).toBase64();
|
|
450
452
|
let functionArguments = actionType === "Deploy" /* Deploy */ ? [metadataArg, modulesArg] : [metadataArg, modulesArg, objectAddressArg];
|
|
451
453
|
if (objectDeployer !== InitiaObjectDeployerAddress) {
|
|
452
454
|
const seed = getFullName(lzInitiaConfig, moduleKey);
|
|
453
|
-
const seedArg = bcs.vector(bcs.u8()).serialize(Uint8Array.from(Buffer.from(seed))).toBase64();
|
|
455
|
+
const seedArg = initia4.bcs.vector(initia4.bcs.u8()).serialize(Uint8Array.from(Buffer.from(seed))).toBase64();
|
|
454
456
|
functionArguments = actionType === "Deploy" /* Deploy */ ? [seedArg, metadataArg, modulesArg] : [metadataArg, modulesArg, objectAddressArg];
|
|
455
457
|
}
|
|
456
|
-
const msg = new MsgExecute(
|
|
458
|
+
const msg = new initia4.MsgExecute(
|
|
457
459
|
deployer.accAddress,
|
|
458
|
-
AccAddress.fromHex(objectDeployer),
|
|
460
|
+
initia4.AccAddress.fromHex(objectDeployer),
|
|
459
461
|
"object_code_deployment",
|
|
460
462
|
actionType === "Deploy" /* Deploy */ ? `publish` : `upgrade`,
|
|
461
463
|
[],
|
|
462
464
|
functionArguments
|
|
463
465
|
);
|
|
464
466
|
const gasPrices = lzInitiaConfig.gasPrice?.[network] === void 0 ? void 0 : `${lzInitiaConfig.gasPrice[network]}uinit`;
|
|
465
|
-
const wallet = new Wallet(client, deployer);
|
|
467
|
+
const wallet = new initia4.Wallet(client, deployer);
|
|
466
468
|
const signedTx = await wallet.createAndSignTx({ msgs: [msg], gasPrices });
|
|
467
469
|
return signedTx;
|
|
468
470
|
}
|
package/dist/cli.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client.ts","../src/constant.ts","../src/address-resolver.ts","../src/loader.ts","../src/config-parser.ts","../src/subCommands/index.ts","../src/errors.ts","../src/move.ts","../src/deploy.ts","../src/options.ts","../src/subCommands/deploy.ts","../src/build.ts","../src/subCommands/build.ts","../src/cli.ts"],"names":["path","deploymentPath","fs","command","AccAddress","EndpointVersion","bcs","networkToEnv","createOption","glob","Command","$","findUpSync"],"mappings":"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","file":"cli.mjs","sourcesContent":["import { LzInitiaConfig } from '@/types'\nimport { LCDClient } from '@initia/initia.js'\n\nimport { Environment } from '@layerzerolabs/lz-definitions'\n\nexport function getInitiaClient(env: Environment, config: LzInitiaConfig): LCDClient {\n const url = config.network?.[env] as string | undefined\n if (url === undefined) {\n throw new Error(`No network url for ${env} found in lz-initia.config.ts`)\n }\n const lcd = new LCDClient(url)\n return lcd\n}\n","export const InitiaObjectDeployerAddress = '0x1'\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getInitiaClient } from '@/client'\nimport { getDeployerAccount, getFullName, getObjectDeployerFromConfig } from '@/config-parser'\nimport { InitiaObjectDeployerAddress } from '@/constant'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, MnemonicKey, bcs } from '@initia/initia.js'\nimport { sha3_256 } from '@noble/hashes/sha3'\n\nimport { EndpointVersion, Network, networkToEnv } from '@layerzerolabs/lz-definitions'\nimport { Deployment, ensure0x } from '@layerzerolabs/lz-utilities'\n\nexport function isInitiaAccount(account: object | undefined): account is MnemonicKey {\n return account !== undefined && account instanceof MnemonicKey\n}\n\nfunction getDeploymentPath(lzInitiaConfig: LzInitiaConfig, network: Network, moduleName: string): string {\n const fullName = getFullName(lzInitiaConfig, moduleName)\n return path.join(lzInitiaConfig.deploymentPath, network, `${fullName}.json`)\n}\n\nasync function checkIfObjectAddressExists(\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n address: string\n): Promise<boolean> {\n try {\n const client = getInitiaClient(networkToEnv(network, EndpointVersion.V2), lzInitiaConfig)\n const module = (await client.move.modules(address))[0]\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return module !== undefined\n } catch (e) {\n return false\n }\n}\n\nfunction getObjectAddressFromDeployment(\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n moduleName: string\n): string | undefined {\n const deploymentPath = getDeploymentPath(lzInitiaConfig, network, moduleName)\n if (!fs.existsSync(deploymentPath)) {\n return undefined\n }\n const deployment = JSON.parse(fs.readFileSync(deploymentPath, 'utf-8')) as Deployment\n return deployment.address\n}\n\n// Address resolver logic:\n// For account deployment, the module address is the deployer's account address\n// For object deployment:\n// If the module is ongoing module:\n// If use layerzero forked object deploy module, calculate the deterministic Object address.\n// Otherwise, look at the deployment file to get the object address. If the deployment file does not exist, calculate the Object address with sequence number.\n// If the module is ongoing module's dependency:\n// For official deploy-code-to-object module, the address is fetched from the deployment file. The dependency module should be deployed before the current module.\n// For Layerzero deploy-code-to-object module, check genObjectAddressForLayerzero function. We don't need to deploy the dependency module before the current module.\nexport async function resolveAddress(\n moduleKey: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n isOngoingModule: boolean\n): Promise<string> {\n const deployToObject =\n lzInitiaConfig.modules[moduleKey]?.deployToObject ?? lzInitiaConfig.defaultDeployToObject ?? false\n\n if (!deployToObject) {\n const deployer = getDeployerAccount(moduleKey, lzInitiaConfig, network)\n return AccAddress.toHex(deployer.accAddress)\n }\n const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleKey)\n if (objectDeployer !== InitiaObjectDeployerAddress) {\n return genObjectAddressForLayerzero(network, lzInitiaConfig, moduleKey)\n }\n const objectAddress = getObjectAddressFromDeployment(lzInitiaConfig, network, moduleKey)\n if (objectAddress !== undefined) {\n if (await checkIfObjectAddressExists(lzInitiaConfig, network, objectAddress)) {\n return objectAddress\n }\n if (!isOngoingModule) {\n throw new Error(\n `Deployment file found at: ${getDeploymentPath(lzInitiaConfig, network, moduleKey)} but object address ${objectAddress} does not exist. Dependent module ${moduleKey} should be deployed if using ${InitiaObjectDeployerAddress}::object_code_deployment.`\n )\n }\n } else if (!isOngoingModule) {\n throw new Error(\n `Deployment file not found at: ${getDeploymentPath(lzInitiaConfig, network, moduleKey)}. Make sure ${moduleKey} is deployed.`\n )\n }\n\n return genObjectAddress(moduleKey, lzInitiaConfig, network)\n}\n\nconst createObjectAddress = (creatorAddress: string, seed: Uint8Array | string): string => {\n const hexAddress = AccAddress.validate(creatorAddress) ? AccAddress.toHex(creatorAddress) : creatorAddress\n const creatorBytes = bcs.address().serialize(hexAddress).toBytes()\n\n const seedBytes = typeof seed === 'string' ? Buffer.from(seed, 'utf8') : seed\n\n const bytes = new Uint8Array([...creatorBytes, ...seedBytes, 254])\n\n return ensure0x(Buffer.from(sha3_256(bytes)).toString('hex'))\n}\n\nasync function genObjectAddressForOfficial(\n network: Network,\n lzInitiaConfig: LzInitiaConfig,\n moduleKey: string\n): Promise<string> {\n const client = getInitiaClient(networkToEnv(network, EndpointVersion.V2), lzInitiaConfig)\n const deployer = getDeployerAccount(moduleKey, lzInitiaConfig, network)\n const OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR = 'initia_std::object_code_deployment'\n const account = await client.auth.accountInfo(deployer.accAddress)\n const sequenceNumber = account.getSequenceNumber()\n const firstPart = bcs.string().serialize(OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR)\n // For Aptos, the second part of the seed is sequence number + 1, but for Initia, it is sequence number + 2, not sure why\n const secondPart = bcs.u64().serialize(BigInt(sequenceNumber) + BigInt(2))\n const seed = new Uint8Array([...firstPart.toBytes(), ...secondPart.toBytes()])\n const objectAddress = createObjectAddress(deployer.accAddress, seed)\n return objectAddress\n}\n\nfunction genObjectAddressForLayerzero(network: Network, lzInitiaConfig: LzInitiaConfig, moduleName: string): string {\n const deployer = getDeployerAccount(moduleName, lzInitiaConfig, network)\n const seed = getFullName(lzInitiaConfig, moduleName)\n const objectAddress = createObjectAddress(deployer.accAddress, new Uint8Array(Buffer.from(seed, 'utf8')))\n return objectAddress\n}\n\n// Object address generation algorithm\n// For official deploy-code-to-object module, the object address is decided by the deployer and the sequence number of the deployer account\n// For Layerzero deploy-code-to-object module, the object address is decided by the deployer and a custom seed. We will use the module name with variant as the seed.\nexport async function genObjectAddress(\n moduleKey: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network\n): Promise<string> {\n const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleKey)\n if (objectDeployer === InitiaObjectDeployerAddress) {\n return genObjectAddressForOfficial(network, lzInitiaConfig, moduleKey)\n }\n return genObjectAddressForLayerzero(network, lzInitiaConfig, moduleKey)\n}\n","import { LzInitiaConfig } from '@/types'\n\nexport function loadConfig(configPath: string): LzInitiaConfig {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const tsnode = require(moduleName) as typeof import('ts-node')\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n\n try {\n type ImportType = LzInitiaConfig | { default: LzInitiaConfig }\n const imported = require(configPath) as ImportType\n return 'default' in imported ? imported.default : imported\n } catch (e) {\n if (e !== null && typeof e === 'object' && 'code' in e && e.code === 'ERR_REQUIRE_ESM') {\n throw new Error(\n `Your project is an ESM project (you have \"type\": \"module\" set in your package.json) but your LayerZero config file uses the .js extension.`\n )\n }\n\n throw e\n }\n}\n","import { isInitiaAccount } from '@/address-resolver'\nimport { InitiaObjectDeployerAddress } from '@/constant'\nimport { loadConfig } from '@/loader'\nimport { LzInitiaConfig, StringConfigByNetwork } from '@/types'\nimport { MnemonicKey } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getConfigByNetwork<configType>(\n config: { [key in Network]?: configType } | configType,\n network: Network\n): configType {\n if (config === null) {\n throw new Error('Config is null')\n }\n if (typeof config === 'object') {\n return config[network as keyof typeof config] as configType\n }\n return config\n}\n\nfunction getObjectDeployer(configValue: StringConfigByNetwork, network: Network): string | undefined {\n return getConfigByNetwork<string | undefined>(configValue, network)\n}\n\nexport function getObjectDeployerFromConfig(config: LzInitiaConfig, network: Network, moduleName: string): string {\n const module = config.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting object deployer`)\n }\n const moduleObjectDeployer = getObjectDeployer(module.objectDeployer, network)\n const defaultObjectDeployer = getObjectDeployer(config.defaultObjectDeployer, network)\n // Priority: moduleObjectDeployer > defaultObjectDeployer > official deployer\n return moduleObjectDeployer ?? defaultObjectDeployer ?? InitiaObjectDeployerAddress\n}\n\nexport function getDeployerAccount(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MnemonicKey {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(\n `Module ${moduleName} not found. Make sure it is defined in lz-initia.config.ts and double check the key is the package name in Move.toml.`\n )\n }\n const moduleDeployer = isInitiaAccount(module.deployer) ? module.deployer : module.deployer?.[network]\n const defaultDeployer = isInitiaAccount(lzInitiaConfig.defaultDeployer)\n ? lzInitiaConfig.defaultDeployer\n : lzInitiaConfig.defaultDeployer?.[network]\n const deployer = moduleDeployer ?? defaultDeployer\n if (!deployer) {\n throw new Error(`deployer for module ${moduleName} not found`)\n }\n return deployer\n}\n\nexport function getFullName(config: LzInitiaConfig, moduleName: string): string {\n const variant = config.modules[moduleName]?.variant\n return variant !== undefined && variant.length > 0 ? `${moduleName}-${variant}` : moduleName\n}\n\nexport function combineBaseConfigRecursive(config: LzInitiaConfig): LzInitiaConfig {\n if (!config.baseModules || config.baseModules.length === 0) {\n return config\n }\n const baseConfigs = config.baseModules.map((baseModule) => combineBaseConfigRecursive(loadConfig(baseModule)))\n const result = baseConfigs.reduce<LzInitiaConfig>((acc, baseConfig) => {\n // merge defaultDeployer, defaultObjectDeployer, defaultDeployToObject, so that they won't be overwritten by current config\n for (const moduleKey in baseConfig.modules) {\n baseConfig.modules[moduleKey]!.deployer =\n baseConfig.modules[moduleKey]?.deployer ?? baseConfig.defaultDeployer\n baseConfig.modules[moduleKey]!.objectDeployer =\n baseConfig.modules[moduleKey]?.objectDeployer ?? baseConfig.defaultObjectDeployer\n baseConfig.modules[moduleKey]!.deployToObject =\n baseConfig.modules[moduleKey]?.deployToObject ?? baseConfig.defaultDeployToObject\n }\n return {\n ...acc,\n ...baseConfig,\n modules: {\n ...acc.modules,\n ...baseConfig.modules,\n },\n }\n }, config)\n return {\n ...config,\n modules: {\n ...result.modules,\n ...config.modules, // current modules has higher priority\n },\n }\n}\n","export { command as deploy } from './deploy'\nexport { command as build } from './build'\n","import { AxiosError, MoveContext } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nfunction isAxiosError(error: any): error is AxiosError {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return error?.response?.data?.message !== undefined\n}\n\nfunction handleDepMissingError(error: AxiosError, pkgName: string, context: MoveContext): void {\n if (error.response.data.message.includes('EPACKAGE_DEP_MISSING')) {\n throw new Error(\n `Deploy ${pkgName} failed with EPACKAGE_DEP_MISSING, make sure you have deployed the dependent module [${Object.keys(\n context\n )\n .filter((module) => module !== pkgName)\n .join(',')}]`\n )\n }\n}\n\nfunction handleAccountNotFoundError(error: AxiosError, pkgName: string, context: MoveContext, network: Network): void {\n const address = context[pkgName]?.addresses[pkgName]\n if (address === undefined) {\n return\n }\n if (error.response.data.message.includes(`account ${AccAddress.fromHex(address)} not found`)) {\n throw new Error(\n `${error.response.data.message}, make sure you have funded the account ${AccAddress.fromHex(address)}(${address}) on ${network}`\n )\n }\n}\n\nfunction handleSenderNotMatchError(error: AxiosError, pkgName: string): void {\n if (error.response.data.message.includes('MODULE_ADDRESS_DOES_NOT_MATCH_SENDER')) {\n throw new Error(\n `Deploy ${pkgName} failed with MODULE_ADDRESS_DOES_NOT_MATCH_SENDER, make sure you compile ${pkgName} with the deployer account address`\n )\n }\n}\n\nfunction handleOtherAxiosError(error: AxiosError): void {\n throw new Error(error.response.data.message)\n}\n\nexport function handleError(error: Error, pkgName: string, context: MoveContext, network: Network): void {\n if (isAxiosError(error)) {\n handleDepMissingError(error, pkgName, context)\n handleAccountNotFoundError(error, pkgName, context, network)\n handleSenderNotMatchError(error, pkgName)\n handleOtherAxiosError(error)\n }\n throw error\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport { resolveAddress } from '@/address-resolver'\nimport { LzInitiaConfig, ModuleAddresses, MoveContext, MoveToml } from '@/types'\nimport { parse } from 'smol-toml'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getRawMoveContextByPath(modulePath: string): MoveContext {\n const tomlPath = path.join(modulePath, 'Move.toml')\n if (!fs.existsSync(tomlPath)) {\n throw new Error(`Move.toml not found in ${tomlPath}`)\n }\n const toml = parse(fs.readFileSync(tomlPath, 'utf-8')) as unknown as MoveToml\n const { dependencies } = toml\n let result: MoveContext = { [toml.package.name]: toml } satisfies MoveContext\n if (dependencies !== undefined) {\n Object.keys(dependencies)\n .filter((key) => {\n return dependencies[key]?.local !== undefined\n })\n .forEach((key) => {\n const dependency = dependencies[key] as { local: string }\n const dependencyPath = path.join(modulePath, dependency.local)\n result = { ...getRawMoveContextByPath(dependencyPath), ...result } satisfies MoveContext\n })\n }\n return result\n}\n\nexport function parseAddresses(addresses: ModuleAddresses, network: Network): { [key in string]?: string } {\n if (addresses === undefined) {\n return {}\n }\n const result: { [key in string]?: string } = {}\n for (const key of Object.keys(addresses)) {\n const value = addresses[key]\n if (typeof value === 'string') {\n result[key] = value\n } else {\n const networkAddress = value[network]\n if (networkAddress === undefined) {\n throw new Error(`${key} address not found for network ${network}`)\n }\n result[key] = networkAddress\n }\n }\n return result\n}\n\nexport function getPkgName(moduleKey: string, lzInitiaConfig: LzInitiaConfig): string {\n const module = lzInitiaConfig.modules[moduleKey]\n if (!module) {\n throw new Error(`module ${moduleKey} not found in lz-initia.config.ts`)\n }\n const tomlPath = path.join(module.modulePath, 'Move.toml')\n if (!fs.existsSync(tomlPath)) {\n throw new Error(`Move.toml not found in ${tomlPath}`)\n }\n const toml = parse(fs.readFileSync(tomlPath, 'utf-8')) as unknown as MoveToml\n return toml.package.name\n}\n\nexport function genModuleKeyToPkgNameMap(lzInitiaConfig: LzInitiaConfig): { [key in string]?: string } {\n const result: { [key in string]?: string } = {}\n for (const moduleKey of Object.keys(lzInitiaConfig.modules)) {\n result[getPkgName(moduleKey, lzInitiaConfig)] = moduleKey\n }\n return result\n}\n\nexport async function getMoveContext(\n moduleKey: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network\n): Promise<MoveContext> {\n const module = lzInitiaConfig.modules[moduleKey]\n if (!module) {\n throw new Error(`module ${moduleKey} not found when getting Move context`)\n }\n // 1. Get module and all its dependencies' Move.toml recursively and store them in a MoveContext.\n const context = getRawMoveContextByPath(module.modulePath)\n const pkgNameToModuleKey = genModuleKeyToPkgNameMap(lzInitiaConfig)\n // 2. Resolve addresses in MoveContext.\n for (const pkgName of Object.keys(context)) {\n const toml = context[pkgName]!\n for (const addressKey of Object.keys(toml.addresses)) {\n const address = toml.addresses[addressKey]\n // Address priority: ongoing module config address > dependency config address > resolved address\n const presetAddresses = {\n ...parseAddresses(lzInitiaConfig.modules[pkgNameToModuleKey[pkgName]!]?.addresses, network), // dependency or current module config address\n ...parseAddresses(lzInitiaConfig.modules[moduleKey]?.addresses, network), // current module config address\n }\n // If address is '_', it means the address is not determined yet, so we need to resolve it.\n if (address === '_') {\n // If the address is preset in the config, use the preset address. Because they have higher priority.\n if (presetAddresses[addressKey] !== undefined && presetAddresses[addressKey] !== '') {\n toml.addresses[addressKey] = presetAddresses[addressKey]!\n } else {\n // If the address is not preset in the config, we need to resolve it.\n const isOnGoingModule = moduleKey === pkgNameToModuleKey[addressKey]\n try {\n if (pkgNameToModuleKey[addressKey] === undefined) {\n throw new Error(\n `Module ${addressKey} not found. Make sure it is defined in lz-initia.config.ts and double check the key is the package name in Move.toml.`\n )\n }\n toml.addresses[addressKey] = await resolveAddress(\n pkgNameToModuleKey[addressKey]!,\n lzInitiaConfig,\n network,\n isOnGoingModule\n )\n } catch (e) {\n if (isOnGoingModule) {\n throw new Error(`Fail to generate context for ${pkgName}. ${(e as Error).toString()}`)\n } else {\n throw new Error(\n `Fail to generate context for dependent module ${pkgName}. ${(e as Error).toString()}`\n )\n }\n }\n }\n }\n }\n }\n return context\n}\n","import fs from 'fs'\nimport * as crypto from 'node:crypto'\nimport path from 'path'\n\nimport { resolveAddress } from '@/address-resolver'\nimport { getInitiaClient } from '@/client'\nimport { getDeployerAccount, getFullName, getObjectDeployerFromConfig } from '@/config-parser'\nimport { InitiaObjectDeployerAddress } from '@/constant'\nimport { handleError } from '@/errors'\nimport { getMoveContext, getPkgName } from '@/move'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, LCDClient, MnemonicKey, MsgExecute, MsgPublish, Tx, TxError, Wallet, bcs } from '@initia/initia.js'\nimport { glob } from 'glob'\n\nimport { EndpointVersion, Network, networkToEnv } from '@layerzerolabs/lz-definitions'\n\nenum DeployActionType {\n Deploy = 'Deploy',\n Upgrade = 'Upgrade',\n Skip = 'Skip',\n}\n\nfunction deploymentPath(moduleKey: string, dest: string, network: Network, variant?: string): string {\n const deploymentPath = path.join(dest, network)\n return path.join(deploymentPath, `${moduleKeyWithVariant(moduleKey, variant)}.json`)\n}\n\nexport function saveDeployment(\n deployer: MnemonicKey,\n moduleKey: string,\n pkgName: string,\n address: string,\n dest: string,\n network: Network,\n bytecodeHash: string,\n hash: string,\n variant?: string,\n compatibleVersions = [EndpointVersion.V1, EndpointVersion.V2]\n): void {\n const destPath = deploymentPath(moduleKey, dest, network, variant)\n const deploymentDir = path.dirname(destPath)\n if (!fs.existsSync(deploymentDir)) {\n fs.mkdirSync(deploymentDir, { recursive: true })\n }\n fs.writeFileSync(\n destPath,\n JSON.stringify(\n {\n address,\n deployer: AccAddress.toHex(deployer.accAddress),\n name: moduleKeyWithVariant(moduleKey, variant),\n moduleName: pkgName,\n network,\n compatibleVersions,\n bytecodeHash,\n transactionHash: hash,\n },\n null,\n 2\n )\n )\n console.log(`Deployment saved to ${destPath}`)\n}\n\nasync function checkIfModuleExistedOnAddress(client: LCDClient, mvNames: string[], address: string): Promise<boolean> {\n try {\n // works for both account and object deployment\n const modules = (await client.move.modules(address))[0]\n // some of the modules exist means the module is deployed\n const isExisted = mvNames.some((moduleName) =>\n modules.map((module) => module.module_name).includes(moduleName.replace('.mv', ''))\n )\n return isExisted\n } catch (e) {\n // try-catch in case the address is not existed\n return false\n }\n}\n\n// if deployAddress is not existed, deploy\n// if deployAddress is existed and bytecodeHash is different, upgrade\n// if deployAddress is existed and bytecodeHash is the same, skip\nasync function getDeployActionType(\n client: LCDClient,\n moduleKey: string,\n mvNames: string[],\n dest: string,\n network: Network,\n bytecodeHash: string,\n deployAddress: string,\n variant?: string\n): Promise<DeployActionType> {\n const moduleExisted = await checkIfModuleExistedOnAddress(client, mvNames, deployAddress)\n if (moduleExisted) {\n const destPath = deploymentPath(moduleKey, dest, network, variant)\n if (fs.existsSync(destPath)) {\n const deployment = JSON.parse(fs.readFileSync(destPath, 'utf-8')) as {\n bytecodeHash: string\n address: string\n moduleName: string\n }\n if (deployment.bytecodeHash === bytecodeHash) {\n return DeployActionType.Skip\n }\n }\n return DeployActionType.Upgrade\n }\n return DeployActionType.Deploy\n}\n\nfunction moduleKeyWithVariant(moduleKey: string, variant?: string): string {\n return variant !== undefined && variant.length > 0 ? `${moduleKey}-${variant}` : moduleKey\n}\n\nfunction getBytecodesHash(bytecodes: Uint8Array[]): string {\n // sha256 hash of all bytecodes\n const hash = crypto.createHash('sha256')\n bytecodes.forEach((bytecode) => {\n hash.update(bytecode)\n })\n return hash.digest('hex')\n}\n\nasync function createAccountDeploymentTx(\n client: LCDClient,\n deployer: MnemonicKey,\n modules: Buffer[],\n lzInitiaConfig: LzInitiaConfig,\n network: Network\n): Promise<Tx> {\n // TODO policy from config\n const msgs = [\n new MsgPublish(\n deployer.accAddress,\n modules.map((codeBytes) => codeBytes.toString('base64')),\n MsgPublish.Policy.COMPATIBLE\n ),\n ]\n const wallet = new Wallet(client, deployer)\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}uinit`\n const signedTx = await wallet.createAndSignTx({ msgs, gasPrices })\n return signedTx\n}\n\nasync function createObjectDeploymentTx(\n client: LCDClient,\n deployer: MnemonicKey,\n modules: Buffer[],\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n moduleKey: string,\n deployedAddress: string,\n actionType: DeployActionType\n): Promise<Tx> {\n const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleKey)\n const metadataArg = bcs.vector(bcs.u8()).serialize(Uint8Array.from([])).toBase64()\n const modulesArg = bcs.vector(bcs.vector(bcs.u8())).serialize(modules).toBase64()\n const objectAddressArg = bcs.address().serialize(deployedAddress).toBase64()\n let functionArguments =\n actionType === DeployActionType.Deploy ? [metadataArg, modulesArg] : [metadataArg, modulesArg, objectAddressArg]\n if (objectDeployer !== InitiaObjectDeployerAddress) {\n const seed = getFullName(lzInitiaConfig, moduleKey)\n const seedArg = bcs\n .vector(bcs.u8())\n .serialize(Uint8Array.from(Buffer.from(seed)))\n .toBase64()\n functionArguments =\n actionType === DeployActionType.Deploy\n ? [seedArg, metadataArg, modulesArg]\n : [metadataArg, modulesArg, objectAddressArg]\n }\n const msg = new MsgExecute(\n deployer.accAddress,\n AccAddress.fromHex(objectDeployer),\n 'object_code_deployment',\n actionType === DeployActionType.Deploy ? `publish` : `upgrade`,\n [],\n functionArguments\n )\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}uinit`\n const wallet = new Wallet(client, deployer)\n const signedTx = await wallet.createAndSignTx({ msgs: [msg], gasPrices })\n return signedTx\n}\n\nexport async function deploy(\n moduleKey: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n variant?: string,\n deployToObject = false\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleKey]\n if (!module) {\n throw new Error(`module ${moduleKey} not found in lz-initia.config.ts`)\n }\n const env = networkToEnv(network, EndpointVersion.V2)\n const client = getInitiaClient(env, lzInitiaConfig)\n const deployer = getDeployerAccount(moduleKey, lzInitiaConfig, network)\n const context = await getMoveContext(moduleKey, lzInitiaConfig, network)\n const pkgName = getPkgName(moduleKey, lzInitiaConfig)\n const moduleDir = path.join(\n lzInitiaConfig.artifactsPath,\n `${moduleKeyWithVariant(pkgName, variant)}/bytecode_modules`\n )\n\n const mvNames: string[] = glob.sync('*.mv', { cwd: moduleDir })\n const moduleBuffers = mvNames.map((moduleName) => fs.readFileSync(path.join(moduleDir, moduleName)))\n const bytecodeHash = getBytecodesHash(moduleBuffers)\n const deployAddress = await resolveAddress(moduleKey, lzInitiaConfig, network, true)\n const actionType = await getDeployActionType(\n client,\n moduleKey,\n mvNames,\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n deployAddress,\n variant\n )\n if (actionType === DeployActionType.Skip) {\n console.warn(`Code of ${moduleKey} has not changed, skipping deploy`)\n return\n }\n try {\n const signedTx = deployToObject\n ? await createObjectDeploymentTx(\n client,\n deployer,\n moduleBuffers,\n lzInitiaConfig,\n network,\n moduleKey,\n deployAddress,\n actionType\n )\n : await createAccountDeploymentTx(client, deployer, moduleBuffers, lzInitiaConfig, network)\n const tx = await client.tx.broadcast(signedTx)\n const info = await client.tx.txInfo(tx.txhash)\n const publishedEvent = info.events.find(\n (event) =>\n event.type === 'move' &&\n event.attributes.find((attr) => attr.key === 'type_tag')?.value === '0x1::code::ModulePublishedEvent'\n )\n const publishModuleAttr = publishedEvent?.attributes.find((attr) => attr.key === 'data')\n const { module_id } = JSON.parse(publishModuleAttr!.value) as { module_id: string }\n const codeAddress = module_id.split('::')[0]\n if (((tx as TxError).code as number) !== 0) {\n throw new Error(tx.raw_log)\n }\n console.log(\n `${actionType} ${moduleKey} to ${deployToObject ? 'Object' : 'Account'}(${codeAddress}) succeeded on ${network}`\n )\n saveDeployment(\n deployer,\n moduleKey,\n pkgName,\n codeAddress,\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n tx.txhash,\n variant,\n lzInitiaConfig.compatibleVersions\n )\n } catch (e: unknown) {\n if (e instanceof Error) {\n handleError(e, moduleKey, context, network)\n } else {\n throw e\n }\n }\n}\n","import { CmdOptions } from '@/types'\nimport { createOption } from '@commander-js/extra-typings'\n\nimport { ChainType, InitiaChain, networkToChain, networkToChainType } from '@layerzerolabs/lz-definitions'\n\nexport function parseOptions(defaultOptions: CmdOptions, customOptions: CmdOptions): string[] {\n const options: CmdOptions = { ...defaultOptions, ...customOptions }\n const res: string[] = []\n for (const key of Object.keys(options)) {\n if (typeof options[key] === 'boolean') {\n if (options[key] === true) {\n res.push(key)\n }\n } else {\n res.push(key)\n res.push(options[key] as string)\n }\n }\n return res\n}\n\nexport const networkOptions = createOption('-n, --network <network>', 'network')\n .makeOptionMandatory(true)\n .argParser((network) => {\n const chainType = networkToChainType(network)\n if (chainType !== ChainType.INITIA) {\n throw new Error(\n `Only support ${Object.values(InitiaChain).join(', ')}, but got chain ${networkToChain(network)}`\n )\n }\n return network\n })\n","import { deploy } from '@/deploy'\nimport { networkOptions } from '@/options'\nimport { Command, createOption } from '@commander-js/extra-typings'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { LzInitiaConfig } from '../types'\n\nconst command = new Command()\n\nexport { command }\n\ncommand\n .name('deploy')\n .description('deploy Initia modules')\n .addOption(createOption('-m, --modules <modules...>', 'modules').makeOptionMandatory(true))\n .addOption(networkOptions)\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .addOption(\n createOption('-dto, --deploy-to-object', 'Deploy to Move Object. Default to false').makeOptionMandatory(false)\n )\n .action(\n async (\n options: { network: string; modules: string[]; variant?: string; deployToObject?: true },\n cmd: Command\n ) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n\n const { modules, variant, network, deployToObject: deployToObjectOpt } = options\n\n for (const module of modules) {\n const deployToObject =\n deployToObjectOpt ??\n context.modules[module]?.deployToObject ??\n context.defaultDeployToObject ??\n false\n await deploy(\n module,\n context,\n network as Network,\n variant ?? context.modules[module]?.variant,\n deployToObject\n )\n }\n }\n )\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getFullName } from '@/config-parser'\nimport { getMoveContext } from '@/move'\nimport { parseOptions } from '@/options'\nimport { CmdOptions, LzInitiaConfig, MoveToml } from '@/types'\nimport { glob } from 'glob'\nimport { $, ProcessOutput } from 'zx'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nexport function buildProcess(\n modulePath: string,\n addresses: { [key: string]: string },\n toml: MoveToml,\n customOptions: CmdOptions = {}\n): Promise<ProcessOutput> {\n const addressesParam = Object.keys(addresses)\n .map((key) => `${key}=${addresses[key]}`)\n .join(',')\n const defaultOptions = {\n '--skip-fetch-latest-git-deps': true,\n '--named-addresses': addressesParam,\n '--verbose': true,\n }\n const args = parseOptions(defaultOptions, customOptions)\n console.log(`initiad move build ${args.join(' ')}`)\n return $({\n cwd: modulePath,\n // pipe std error to avoid printing the compiling message which is not useful\n stdio: ['inherit', 'inherit', 'pipe'],\n quiet: true,\n })`initiad move build ${args}`\n}\n\nexport async function copyArtifacts(src: string, dest: string): Promise<void> {\n // remove existing artifacts, this is necessary to avoid leaving old artifacts\n if (fs.existsSync(dest)) {\n fs.rmSync(dest, { recursive: true })\n }\n fs.mkdirSync(dest, { recursive: true })\n const moduleDir = path.join(src, 'bytecode_modules')\n const modules = glob.sync('*.mv', { cwd: moduleDir })\n for (const module of modules) {\n const destByteCodePath = path.join(dest, 'bytecode_modules')\n if (!fs.existsSync(destByteCodePath)) {\n fs.mkdirSync(destByteCodePath, { recursive: true })\n }\n await $({\n verbose: false,\n quiet: true,\n })`cp ${path.join(moduleDir, module)} ${path.join(destByteCodePath, module)}`\n }\n}\n\nexport async function build(\n moduleKey: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n skipBuild = false,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleKey]\n if (!module) {\n throw new Error(`module ${moduleKey} not found in lz-initia.config.ts`)\n }\n const { modulePath } = module\n const context = await getMoveContext(moduleKey, lzInitiaConfig, network)\n // pkgName is the package name in Move.toml, moduleKey is the key in lz-initia.config.ts, they don't have to be the same.\n const pkgName = context[moduleKey]!.package.name\n const srcPath = path.join(modulePath, 'build', pkgName)\n const outputDir = getFullName(lzInitiaConfig, moduleKey)\n const outputPath = path.join(lzInitiaConfig.artifactsPath, outputDir)\n // put all dependencies' addresses into one array\n let addresses: { [key: string]: string } = {}\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n if (!(key in toml.addresses)) {\n throw new Error(`address not found for ${key}`)\n }\n addresses = { ...addresses, ...toml.addresses }\n }\n addresses = { ...addresses, ...context[pkgName]!.addresses }\n if (!skipBuild) {\n await buildProcess(modulePath, addresses, context[pkgName]!, {\n ...lzInitiaConfig.compileOptions,\n ...module.compileOptions,\n })\n }\n await copyArtifacts(srcPath, outputPath)\n}\n","import { build } from '@/build'\nimport { networkOptions } from '@/options'\nimport { Command, createOption } from '@commander-js/extra-typings'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { LzInitiaConfig } from '../types'\n\nconst command = new Command()\n\nexport { command }\n\ncommand\n .name('build')\n .description('build Initia program')\n .addOption(createOption('-m, --modules <modules...>', 'modules').makeOptionMandatory(true))\n .addOption(\n createOption(\n '-p, --module-paths <paths...>',\n 'module paths of modules, use the path in lz-initia.config.ts if not specify'\n ).makeOptionMandatory(false)\n )\n .addOption(networkOptions)\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .addOption(createOption('-sb, --skip-build', 'skip build').default(false))\n .action(\n async (\n options: {\n network: string\n modules: string[]\n modulePaths?: string[]\n variant?: string\n skipBuild: boolean\n },\n cmd\n ) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n const { skipBuild, modules, network, variant, modulePaths } = options\n // replace the modulePath in context with the modulePaths from command line\n if (modulePaths !== undefined) {\n for (let i = 0; i < modulePaths.length; i++) {\n const module = modules[i]\n const moduleConfig = context.modules[module]\n if (moduleConfig !== undefined) {\n moduleConfig.modulePath = modulePaths[i]\n }\n }\n }\n for (const module of modules) {\n await build(module, context, network as Network, skipBuild, variant ?? context.modules[module]?.variant)\n }\n }\n )\n","import fs from 'fs'\nimport path from 'path'\nimport process from 'process'\n\nimport { combineBaseConfigRecursive } from '@/config-parser'\nimport { loadConfig } from '@/loader'\nimport { Command } from '@commander-js/extra-typings'\nimport { sync as findUpSync } from 'find-up'\nimport { $ } from 'zx/core'\n\nimport { getLogger } from '@layerzerolabs/lz-utilities'\n\nimport * as subCommands from './subCommands'\n\nconst program = new Command()\n// iterate over subCommands and add them to the program\nconst logger = getLogger()\n\nprogram\n .name('lz-initia-cli')\n .description('Wrapper of Initia cli')\n .version('0.1.0')\n .action((_, command: Command) => {\n logger.info('Please specify a subcommand')\n command.help()\n })\n\nasync function checkIfInitiaInstalled(): Promise<void> {\n try {\n await $`initiad version`\n } catch (e) {\n throw new Error('Initia cli is not installed')\n }\n}\n\nfunction checkIfInitiaConfigExists(): string {\n const packagePath = findUpSync('package.json', { cwd: process.cwd() })\n if (packagePath === undefined) {\n throw new Error('package.json not found')\n }\n const configPath = path.join(path.dirname(packagePath), 'lz-initia.config.ts')\n if (!fs.existsSync(configPath)) {\n throw new Error('lz-initia.config.ts not found, please create one in the same directory as package.json')\n }\n return configPath\n}\n\nasync function main(): Promise<void> {\n await checkIfInitiaInstalled()\n const configPath = checkIfInitiaConfigExists()\n const config = loadConfig(configPath)\n Object.values(subCommands).forEach((subCommand: Command) => {\n subCommand.setOptionValue('__CONTEXT__', combineBaseConfigRecursive(config))\n program.addCommand(subCommand)\n })\n await program.parseAsync()\n}\n\nmain()\n .then(() => process.exit(process.exitCode))\n .catch((error: unknown) => {\n logger.error(error)\n console.trace(error)\n process.exit(1)\n })\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/constant.ts","../src/address-resolver.ts","../src/loader.ts","../src/config-parser.ts","../src/subCommands/index.ts","../src/errors.ts","../src/move.ts","../src/deploy.ts","../src/options.ts","../src/subCommands/deploy.ts","../src/build.ts","../src/subCommands/build.ts","../src/cli.ts"],"names":["initia","path","deploymentPath","fs","command","EndpointVersion","networkToEnv","createOption","glob","Command","$","findUpSync"],"mappings":"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","file":"cli.mjs","sourcesContent":["import { LzInitiaConfig } from '@/types'\n// eslint-disable-next-line import/default\nimport initia from '@initia/initia.js'\n\nimport { Environment } from '@layerzerolabs/lz-definitions'\n\nexport function getInitiaClient(env: Environment, config: LzInitiaConfig): initia.LCDClient {\n const url = config.network?.[env] as string | undefined\n if (url === undefined) {\n throw new Error(`No network url for ${env} found in lz-initia.config.ts`)\n }\n const lcd = new initia.LCDClient(url)\n return lcd\n}\n","export const InitiaObjectDeployerAddress = '0x1'\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getInitiaClient } from '@/client'\nimport { getDeployerAccount, getFullName, getObjectDeployerFromConfig } from '@/config-parser'\nimport { InitiaObjectDeployerAddress } from '@/constant'\nimport { LzInitiaConfig } from '@/types'\n// eslint-disable-next-line import/default\nimport initia from '@initia/initia.js'\nimport { sha3_256 } from '@noble/hashes/sha3'\n\nimport { EndpointVersion, Network, networkToEnv } from '@layerzerolabs/lz-definitions'\nimport { Deployment, ensure0x } from '@layerzerolabs/lz-utilities'\n\nexport function isInitiaAccount(account: object | undefined): account is initia.MnemonicKey {\n return account !== undefined && account instanceof initia.MnemonicKey\n}\n\nfunction getDeploymentPath(lzInitiaConfig: LzInitiaConfig, network: Network, moduleName: string): string {\n const fullName = getFullName(lzInitiaConfig, moduleName)\n return path.join(lzInitiaConfig.deploymentPath, network, `${fullName}.json`)\n}\n\nasync function checkIfObjectAddressExists(\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n address: string\n): Promise<boolean> {\n try {\n const client = getInitiaClient(networkToEnv(network, EndpointVersion.V2), lzInitiaConfig)\n const module = (await client.move.modules(address))[0]\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return module !== undefined\n } catch (e) {\n return false\n }\n}\n\nfunction getObjectAddressFromDeployment(\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n moduleName: string\n): string | undefined {\n const deploymentPath = getDeploymentPath(lzInitiaConfig, network, moduleName)\n if (!fs.existsSync(deploymentPath)) {\n return undefined\n }\n const deployment = JSON.parse(fs.readFileSync(deploymentPath, 'utf-8')) as Deployment\n return deployment.address\n}\n\n// Address resolver logic:\n// For account deployment, the module address is the deployer's account address\n// For object deployment:\n// If the module is ongoing module:\n// If use layerzero forked object deploy module, calculate the deterministic Object address.\n// Otherwise, look at the deployment file to get the object address. If the deployment file does not exist, calculate the Object address with sequence number.\n// If the module is ongoing module's dependency:\n// For official deploy-code-to-object module, the address is fetched from the deployment file. The dependency module should be deployed before the current module.\n// For Layerzero deploy-code-to-object module, check genObjectAddressForLayerzero function. We don't need to deploy the dependency module before the current module.\nexport async function resolveAddress(\n moduleKey: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n isOngoingModule: boolean\n): Promise<string> {\n const deployToObject =\n lzInitiaConfig.modules[moduleKey]?.deployToObject ?? lzInitiaConfig.defaultDeployToObject ?? false\n\n if (!deployToObject) {\n const deployer = getDeployerAccount(moduleKey, lzInitiaConfig, network)\n return initia.AccAddress.toHex(deployer.accAddress)\n }\n const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleKey)\n if (objectDeployer !== InitiaObjectDeployerAddress) {\n return genObjectAddressForLayerzero(network, lzInitiaConfig, moduleKey)\n }\n const objectAddress = getObjectAddressFromDeployment(lzInitiaConfig, network, moduleKey)\n if (objectAddress !== undefined) {\n if (await checkIfObjectAddressExists(lzInitiaConfig, network, objectAddress)) {\n return objectAddress\n }\n if (!isOngoingModule) {\n throw new Error(\n `Deployment file found at: ${getDeploymentPath(lzInitiaConfig, network, moduleKey)} but object address ${objectAddress} does not exist. Dependent module ${moduleKey} should be deployed if using ${InitiaObjectDeployerAddress}::object_code_deployment.`\n )\n }\n } else if (!isOngoingModule) {\n throw new Error(\n `Deployment file not found at: ${getDeploymentPath(lzInitiaConfig, network, moduleKey)}. Make sure ${moduleKey} is deployed.`\n )\n }\n\n return genObjectAddress(moduleKey, lzInitiaConfig, network)\n}\n\nconst createObjectAddress = (creatorAddress: string, seed: Uint8Array | string): string => {\n const hexAddress = initia.AccAddress.validate(creatorAddress)\n ? initia.AccAddress.toHex(creatorAddress)\n : creatorAddress\n const creatorBytes = initia.bcs.address().serialize(hexAddress).toBytes() as Uint8Array\n\n const seedBytes = typeof seed === 'string' ? Buffer.from(seed, 'utf8') : seed\n\n const bytes = new Uint8Array([...creatorBytes, ...seedBytes, 254])\n\n return ensure0x(Buffer.from(sha3_256(bytes)).toString('hex'))\n}\n\nasync function genObjectAddressForOfficial(\n network: Network,\n lzInitiaConfig: LzInitiaConfig,\n moduleKey: string\n): Promise<string> {\n const client = getInitiaClient(networkToEnv(network, EndpointVersion.V2), lzInitiaConfig)\n const deployer = getDeployerAccount(moduleKey, lzInitiaConfig, network)\n const OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR = 'initia_std::object_code_deployment'\n const account = await client.auth.accountInfo(deployer.accAddress)\n const sequenceNumber = account.getSequenceNumber()\n const firstPart = initia.bcs.string().serialize(OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR)\n const firstPartBytes = firstPart.toBytes() as Uint8Array\n // For Aptos, the second part of the seed is sequence number + 1, but for Initia, it is sequence number + 2, not sure why\n const secondPart = initia.bcs.u64().serialize(BigInt(sequenceNumber) + BigInt(2))\n const secondPartBytes = secondPart.toBytes() as Uint8Array\n const seed = new Uint8Array([...firstPartBytes, ...secondPartBytes])\n const objectAddress = createObjectAddress(deployer.accAddress, seed)\n return objectAddress\n}\n\nfunction genObjectAddressForLayerzero(network: Network, lzInitiaConfig: LzInitiaConfig, moduleName: string): string {\n const deployer = getDeployerAccount(moduleName, lzInitiaConfig, network)\n const seed = getFullName(lzInitiaConfig, moduleName)\n const objectAddress = createObjectAddress(deployer.accAddress, new Uint8Array(Buffer.from(seed, 'utf8')))\n return objectAddress\n}\n\n// Object address generation algorithm\n// For official deploy-code-to-object module, the object address is decided by the deployer and the sequence number of the deployer account\n// For Layerzero deploy-code-to-object module, the object address is decided by the deployer and a custom seed. We will use the module name with variant as the seed.\nexport async function genObjectAddress(\n moduleKey: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network\n): Promise<string> {\n const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleKey)\n if (objectDeployer === InitiaObjectDeployerAddress) {\n return genObjectAddressForOfficial(network, lzInitiaConfig, moduleKey)\n }\n return genObjectAddressForLayerzero(network, lzInitiaConfig, moduleKey)\n}\n","import { LzInitiaConfig } from '@/types'\n\nexport function loadConfig(configPath: string): LzInitiaConfig {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const tsnode = require(moduleName) as typeof import('ts-node')\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n\n try {\n type ImportType = LzInitiaConfig | { default: LzInitiaConfig }\n const imported = require(configPath) as ImportType\n return 'default' in imported ? imported.default : imported\n } catch (e) {\n if (e !== null && typeof e === 'object' && 'code' in e && e.code === 'ERR_REQUIRE_ESM') {\n throw new Error(\n `Your project is an ESM project (you have \"type\": \"module\" set in your package.json) but your LayerZero config file uses the .js extension.`\n )\n }\n\n throw e\n }\n}\n","import { isInitiaAccount } from '@/address-resolver'\nimport { InitiaObjectDeployerAddress } from '@/constant'\nimport { loadConfig } from '@/loader'\nimport { LzInitiaConfig, StringConfigByNetwork } from '@/types'\n// eslint-disable-next-line import/default\nimport initia from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getConfigByNetwork<configType>(\n config: { [key in Network]?: configType } | configType,\n network: Network\n): configType {\n if (config === null) {\n throw new Error('Config is null')\n }\n if (typeof config === 'object') {\n return config[network as keyof typeof config] as configType\n }\n return config\n}\n\nfunction getObjectDeployer(configValue: StringConfigByNetwork, network: Network): string | undefined {\n return getConfigByNetwork<string | undefined>(configValue, network)\n}\n\nexport function getObjectDeployerFromConfig(config: LzInitiaConfig, network: Network, moduleName: string): string {\n const module = config.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting object deployer`)\n }\n const moduleObjectDeployer = getObjectDeployer(module.objectDeployer, network)\n const defaultObjectDeployer = getObjectDeployer(config.defaultObjectDeployer, network)\n // Priority: moduleObjectDeployer > defaultObjectDeployer > official deployer\n return moduleObjectDeployer ?? defaultObjectDeployer ?? InitiaObjectDeployerAddress\n}\n\nexport function getDeployerAccount(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network\n): initia.MnemonicKey {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(\n `Module ${moduleName} not found. Make sure it is defined in lz-initia.config.ts and double check the key is the package name in Move.toml.`\n )\n }\n const moduleDeployer = isInitiaAccount(module.deployer) ? module.deployer : module.deployer?.[network]\n const defaultDeployer = isInitiaAccount(lzInitiaConfig.defaultDeployer)\n ? lzInitiaConfig.defaultDeployer\n : lzInitiaConfig.defaultDeployer?.[network]\n const deployer = moduleDeployer ?? defaultDeployer\n if (!deployer) {\n throw new Error(`deployer for module ${moduleName} not found`)\n }\n return deployer\n}\n\nexport function getFullName(config: LzInitiaConfig, moduleName: string): string {\n const variant = config.modules[moduleName]?.variant\n return variant !== undefined && variant.length > 0 ? `${moduleName}-${variant}` : moduleName\n}\n\nexport function combineBaseConfigRecursive(config: LzInitiaConfig): LzInitiaConfig {\n if (!config.baseModules || config.baseModules.length === 0) {\n return config\n }\n const baseConfigs = config.baseModules.map((baseModule) => combineBaseConfigRecursive(loadConfig(baseModule)))\n const result = baseConfigs.reduce<LzInitiaConfig>((acc, baseConfig) => {\n // merge defaultDeployer, defaultObjectDeployer, defaultDeployToObject, so that they won't be overwritten by current config\n for (const moduleKey in baseConfig.modules) {\n baseConfig.modules[moduleKey]!.deployer =\n baseConfig.modules[moduleKey]?.deployer ?? baseConfig.defaultDeployer\n baseConfig.modules[moduleKey]!.objectDeployer =\n baseConfig.modules[moduleKey]?.objectDeployer ?? baseConfig.defaultObjectDeployer\n baseConfig.modules[moduleKey]!.deployToObject =\n baseConfig.modules[moduleKey]?.deployToObject ?? baseConfig.defaultDeployToObject\n }\n return {\n ...acc,\n ...baseConfig,\n modules: {\n ...acc.modules,\n ...baseConfig.modules,\n },\n }\n }, config)\n return {\n ...config,\n modules: {\n ...result.modules,\n ...config.modules, // current modules has higher priority\n },\n }\n}\n","export { command as deploy } from './deploy'\nexport { command as build } from './build'\n","import { AxiosError, MoveContext } from '@/types'\n// eslint-disable-next-line import/default\nimport initia from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nfunction isAxiosError(error: any): error is AxiosError {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return error?.response?.data?.message !== undefined\n}\n\nfunction handleDepMissingError(error: AxiosError, pkgName: string, context: MoveContext): void {\n if (error.response.data.message.includes('EPACKAGE_DEP_MISSING')) {\n throw new Error(\n `Deploy ${pkgName} failed with EPACKAGE_DEP_MISSING, make sure you have deployed the dependent module [${Object.keys(\n context\n )\n .filter((module) => module !== pkgName)\n .join(',')}]`\n )\n }\n}\n\nfunction handleAccountNotFoundError(error: AxiosError, pkgName: string, context: MoveContext, network: Network): void {\n const address = context[pkgName]?.addresses[pkgName]\n if (address === undefined) {\n return\n }\n if (error.response.data.message.includes(`account ${initia.AccAddress.fromHex(address)} not found`)) {\n throw new Error(\n `${error.response.data.message}, make sure you have funded the account ${initia.AccAddress.fromHex(address)}(${address}) on ${network}`\n )\n }\n}\n\nfunction handleSenderNotMatchError(error: AxiosError, pkgName: string): void {\n if (error.response.data.message.includes('MODULE_ADDRESS_DOES_NOT_MATCH_SENDER')) {\n throw new Error(\n `Deploy ${pkgName} failed with MODULE_ADDRESS_DOES_NOT_MATCH_SENDER, make sure you compile ${pkgName} with the deployer account address`\n )\n }\n}\n\nfunction handleOtherAxiosError(error: AxiosError): void {\n throw new Error(error.response.data.message)\n}\n\nexport function handleError(error: Error, pkgName: string, context: MoveContext, network: Network): void {\n if (isAxiosError(error)) {\n handleDepMissingError(error, pkgName, context)\n handleAccountNotFoundError(error, pkgName, context, network)\n handleSenderNotMatchError(error, pkgName)\n handleOtherAxiosError(error)\n }\n throw error\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport { resolveAddress } from '@/address-resolver'\nimport { LzInitiaConfig, ModuleAddresses, MoveContext, MoveToml } from '@/types'\nimport { parse } from 'smol-toml'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getRawMoveContextByPath(modulePath: string): MoveContext {\n const tomlPath = path.join(modulePath, 'Move.toml')\n if (!fs.existsSync(tomlPath)) {\n throw new Error(`Move.toml not found in ${tomlPath}`)\n }\n const toml = parse(fs.readFileSync(tomlPath, 'utf-8')) as unknown as MoveToml\n const { dependencies } = toml\n let result: MoveContext = { [toml.package.name]: toml } satisfies MoveContext\n if (dependencies !== undefined) {\n Object.keys(dependencies)\n .filter((key) => {\n return dependencies[key]?.local !== undefined\n })\n .forEach((key) => {\n const dependency = dependencies[key] as { local: string }\n const dependencyPath = path.join(modulePath, dependency.local)\n result = { ...getRawMoveContextByPath(dependencyPath), ...result } satisfies MoveContext\n })\n }\n return result\n}\n\nexport function parseAddresses(addresses: ModuleAddresses, network: Network): { [key in string]?: string } {\n if (addresses === undefined) {\n return {}\n }\n const result: { [key in string]?: string } = {}\n for (const key of Object.keys(addresses)) {\n const value = addresses[key]\n if (typeof value === 'string') {\n result[key] = value\n } else {\n const networkAddress = value[network]\n if (networkAddress === undefined) {\n throw new Error(`${key} address not found for network ${network}`)\n }\n result[key] = networkAddress\n }\n }\n return result\n}\n\nexport function getPkgName(moduleKey: string, lzInitiaConfig: LzInitiaConfig): string {\n const module = lzInitiaConfig.modules[moduleKey]\n if (!module) {\n throw new Error(`module ${moduleKey} not found in lz-initia.config.ts`)\n }\n const tomlPath = path.join(module.modulePath, 'Move.toml')\n if (!fs.existsSync(tomlPath)) {\n throw new Error(`Move.toml not found in ${tomlPath}`)\n }\n const toml = parse(fs.readFileSync(tomlPath, 'utf-8')) as unknown as MoveToml\n return toml.package.name\n}\n\nexport function genModuleKeyToPkgNameMap(lzInitiaConfig: LzInitiaConfig): { [key in string]?: string } {\n const result: { [key in string]?: string } = {}\n for (const moduleKey of Object.keys(lzInitiaConfig.modules)) {\n result[getPkgName(moduleKey, lzInitiaConfig)] = moduleKey\n }\n return result\n}\n\nexport async function getMoveContext(\n moduleKey: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network\n): Promise<MoveContext> {\n const module = lzInitiaConfig.modules[moduleKey]\n if (!module) {\n throw new Error(`module ${moduleKey} not found when getting Move context`)\n }\n // 1. Get module and all its dependencies' Move.toml recursively and store them in a MoveContext.\n const context = getRawMoveContextByPath(module.modulePath)\n const pkgNameToModuleKey = genModuleKeyToPkgNameMap(lzInitiaConfig)\n // 2. Resolve addresses in MoveContext.\n for (const pkgName of Object.keys(context)) {\n const toml = context[pkgName]!\n for (const addressKey of Object.keys(toml.addresses)) {\n const address = toml.addresses[addressKey]\n // Address priority: ongoing module config address > dependency config address > resolved address\n const presetAddresses = {\n ...parseAddresses(lzInitiaConfig.modules[pkgNameToModuleKey[pkgName]!]?.addresses, network), // dependency or current module config address\n ...parseAddresses(lzInitiaConfig.modules[moduleKey]?.addresses, network), // current module config address\n }\n // If address is '_', it means the address is not determined yet, so we need to resolve it.\n if (address === '_') {\n // If the address is preset in the config, use the preset address. Because they have higher priority.\n if (presetAddresses[addressKey] !== undefined && presetAddresses[addressKey] !== '') {\n toml.addresses[addressKey] = presetAddresses[addressKey]!\n } else {\n // If the address is not preset in the config, we need to resolve it.\n const isOnGoingModule = moduleKey === pkgNameToModuleKey[addressKey]\n try {\n if (pkgNameToModuleKey[addressKey] === undefined) {\n throw new Error(\n `Module ${addressKey} not found. Make sure it is defined in lz-initia.config.ts and double check the key is the package name in Move.toml.`\n )\n }\n toml.addresses[addressKey] = await resolveAddress(\n pkgNameToModuleKey[addressKey]!,\n lzInitiaConfig,\n network,\n isOnGoingModule\n )\n } catch (e) {\n if (isOnGoingModule) {\n throw new Error(`Fail to generate context for ${pkgName}. ${(e as Error).toString()}`)\n } else {\n throw new Error(\n `Fail to generate context for dependent module ${pkgName}. ${(e as Error).toString()}`\n )\n }\n }\n }\n }\n }\n }\n return context\n}\n","import fs from 'fs'\nimport * as crypto from 'node:crypto'\nimport path from 'path'\n\nimport { resolveAddress } from '@/address-resolver'\nimport { getInitiaClient } from '@/client'\nimport { getDeployerAccount, getFullName, getObjectDeployerFromConfig } from '@/config-parser'\nimport { InitiaObjectDeployerAddress } from '@/constant'\nimport { handleError } from '@/errors'\nimport { getMoveContext, getPkgName } from '@/move'\nimport { LzInitiaConfig } from '@/types'\n// eslint-disable-next-line import/default\nimport initia from '@initia/initia.js'\nimport { glob } from 'glob'\n\nimport { EndpointVersion, Network, networkToEnv } from '@layerzerolabs/lz-definitions'\n\nenum DeployActionType {\n Deploy = 'Deploy',\n Upgrade = 'Upgrade',\n Skip = 'Skip',\n}\n\nfunction deploymentPath(moduleKey: string, dest: string, network: Network, variant?: string): string {\n const deploymentPath = path.join(dest, network)\n return path.join(deploymentPath, `${moduleKeyWithVariant(moduleKey, variant)}.json`)\n}\n\nexport function saveDeployment(\n deployer: initia.MnemonicKey,\n moduleKey: string,\n pkgName: string,\n address: string,\n dest: string,\n network: Network,\n bytecodeHash: string,\n hash: string,\n variant?: string,\n compatibleVersions = [EndpointVersion.V1, EndpointVersion.V2]\n): void {\n const destPath = deploymentPath(moduleKey, dest, network, variant)\n const deploymentDir = path.dirname(destPath)\n if (!fs.existsSync(deploymentDir)) {\n fs.mkdirSync(deploymentDir, { recursive: true })\n }\n fs.writeFileSync(\n destPath,\n JSON.stringify(\n {\n address,\n deployer: initia.AccAddress.toHex(deployer.accAddress),\n name: moduleKeyWithVariant(moduleKey, variant),\n moduleName: pkgName,\n network,\n compatibleVersions,\n bytecodeHash,\n transactionHash: hash,\n },\n null,\n 2\n )\n )\n console.log(`Deployment saved to ${destPath}`)\n}\n\nasync function checkIfModuleExistedOnAddress(\n client: initia.LCDClient,\n mvNames: string[],\n address: string\n): Promise<boolean> {\n try {\n // works for both account and object deployment\n const modules = (await client.move.modules(address))[0]\n // some of the modules exist means the module is deployed\n const isExisted = mvNames.some((moduleName) =>\n modules.map((module) => module.module_name).includes(moduleName.replace('.mv', ''))\n )\n return isExisted\n } catch (e) {\n // try-catch in case the address is not existed\n return false\n }\n}\n\n// if deployAddress is not existed, deploy\n// if deployAddress is existed and bytecodeHash is different, upgrade\n// if deployAddress is existed and bytecodeHash is the same, skip\nasync function getDeployActionType(\n client: initia.LCDClient,\n moduleKey: string,\n mvNames: string[],\n dest: string,\n network: Network,\n bytecodeHash: string,\n deployAddress: string,\n variant?: string\n): Promise<DeployActionType> {\n const moduleExisted = await checkIfModuleExistedOnAddress(client, mvNames, deployAddress)\n if (moduleExisted) {\n const destPath = deploymentPath(moduleKey, dest, network, variant)\n if (fs.existsSync(destPath)) {\n const deployment = JSON.parse(fs.readFileSync(destPath, 'utf-8')) as {\n bytecodeHash: string\n address: string\n moduleName: string\n }\n if (deployment.bytecodeHash === bytecodeHash) {\n return DeployActionType.Skip\n }\n }\n return DeployActionType.Upgrade\n }\n return DeployActionType.Deploy\n}\n\nfunction moduleKeyWithVariant(moduleKey: string, variant?: string): string {\n return variant !== undefined && variant.length > 0 ? `${moduleKey}-${variant}` : moduleKey\n}\n\nfunction getBytecodesHash(bytecodes: Uint8Array[]): string {\n // sha256 hash of all bytecodes\n const hash = crypto.createHash('sha256')\n bytecodes.forEach((bytecode) => {\n hash.update(bytecode)\n })\n return hash.digest('hex')\n}\n\nasync function createAccountDeploymentTx(\n client: initia.LCDClient,\n deployer: initia.MnemonicKey,\n modules: Buffer[],\n lzInitiaConfig: LzInitiaConfig,\n network: Network\n): Promise<initia.Tx> {\n // TODO policy from config\n const msgs = [\n new initia.MsgPublish(\n deployer.accAddress,\n modules.map((codeBytes) => codeBytes.toString('base64')),\n initia.MsgPublish.Policy.COMPATIBLE\n ),\n ]\n const wallet = new initia.Wallet(client, deployer)\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}uinit`\n const signedTx = await wallet.createAndSignTx({ msgs, gasPrices })\n return signedTx\n}\n\nasync function createObjectDeploymentTx(\n client: initia.LCDClient,\n deployer: initia.MnemonicKey,\n modules: Buffer[],\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n moduleKey: string,\n deployedAddress: string,\n actionType: DeployActionType\n): Promise<initia.Tx> {\n const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleKey)\n const metadataArg = initia.bcs.vector(initia.bcs.u8()).serialize(Uint8Array.from([])).toBase64()\n const modulesArg = initia.bcs.vector(initia.bcs.vector(initia.bcs.u8())).serialize(modules).toBase64()\n const objectAddressArg = initia.bcs.address().serialize(deployedAddress).toBase64()\n let functionArguments =\n actionType === DeployActionType.Deploy ? [metadataArg, modulesArg] : [metadataArg, modulesArg, objectAddressArg]\n if (objectDeployer !== InitiaObjectDeployerAddress) {\n const seed = getFullName(lzInitiaConfig, moduleKey)\n const seedArg = initia.bcs\n .vector(initia.bcs.u8())\n .serialize(Uint8Array.from(Buffer.from(seed)))\n .toBase64()\n functionArguments =\n actionType === DeployActionType.Deploy\n ? [seedArg, metadataArg, modulesArg]\n : [metadataArg, modulesArg, objectAddressArg]\n }\n const msg = new initia.MsgExecute(\n deployer.accAddress,\n initia.AccAddress.fromHex(objectDeployer),\n 'object_code_deployment',\n actionType === DeployActionType.Deploy ? `publish` : `upgrade`,\n [],\n functionArguments\n )\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}uinit`\n const wallet = new initia.Wallet(client, deployer)\n const signedTx = await wallet.createAndSignTx({ msgs: [msg], gasPrices })\n return signedTx\n}\n\nexport async function deploy(\n moduleKey: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n variant?: string,\n deployToObject = false\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleKey]\n if (!module) {\n throw new Error(`module ${moduleKey} not found in lz-initia.config.ts`)\n }\n const env = networkToEnv(network, EndpointVersion.V2)\n const client = getInitiaClient(env, lzInitiaConfig)\n const deployer = getDeployerAccount(moduleKey, lzInitiaConfig, network)\n const context = await getMoveContext(moduleKey, lzInitiaConfig, network)\n const pkgName = getPkgName(moduleKey, lzInitiaConfig)\n const moduleDir = path.join(\n lzInitiaConfig.artifactsPath,\n `${moduleKeyWithVariant(pkgName, variant)}/bytecode_modules`\n )\n\n const mvNames: string[] = glob.sync('*.mv', { cwd: moduleDir })\n const moduleBuffers = mvNames.map((moduleName) => fs.readFileSync(path.join(moduleDir, moduleName)))\n const bytecodeHash = getBytecodesHash(moduleBuffers)\n const deployAddress = await resolveAddress(moduleKey, lzInitiaConfig, network, true)\n const actionType = await getDeployActionType(\n client,\n moduleKey,\n mvNames,\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n deployAddress,\n variant\n )\n if (actionType === DeployActionType.Skip) {\n console.warn(`Code of ${moduleKey} has not changed, skipping deploy`)\n return\n }\n try {\n const signedTx = deployToObject\n ? await createObjectDeploymentTx(\n client,\n deployer,\n moduleBuffers,\n lzInitiaConfig,\n network,\n moduleKey,\n deployAddress,\n actionType\n )\n : await createAccountDeploymentTx(client, deployer, moduleBuffers, lzInitiaConfig, network)\n const tx = await client.tx.broadcast(signedTx)\n const info = await client.tx.txInfo(tx.txhash)\n const publishedEvent = info.events.find(\n (event) =>\n event.type === 'move' &&\n event.attributes.find((attr) => attr.key === 'type_tag')?.value === '0x1::code::ModulePublishedEvent'\n )\n const publishModuleAttr = publishedEvent?.attributes.find((attr) => attr.key === 'data')\n const { module_id } = JSON.parse(publishModuleAttr!.value) as { module_id: string }\n const codeAddress = module_id.split('::')[0]\n if (((tx as initia.TxError).code as number) !== 0) {\n throw new Error(tx.raw_log)\n }\n console.log(\n `${actionType} ${moduleKey} to ${deployToObject ? 'Object' : 'Account'}(${codeAddress}) succeeded on ${network}`\n )\n saveDeployment(\n deployer,\n moduleKey,\n pkgName,\n codeAddress,\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n tx.txhash,\n variant,\n lzInitiaConfig.compatibleVersions\n )\n } catch (e: unknown) {\n if (e instanceof Error) {\n handleError(e, moduleKey, context, network)\n } else {\n throw e\n }\n }\n}\n","import { CmdOptions } from '@/types'\nimport { createOption } from '@commander-js/extra-typings'\n\nimport { ChainType, InitiaChain, networkToChain, networkToChainType } from '@layerzerolabs/lz-definitions'\n\nexport function parseOptions(defaultOptions: CmdOptions, customOptions: CmdOptions): string[] {\n const options: CmdOptions = { ...defaultOptions, ...customOptions }\n const res: string[] = []\n for (const key of Object.keys(options)) {\n if (typeof options[key] === 'boolean') {\n if (options[key] === true) {\n res.push(key)\n }\n } else {\n res.push(key)\n res.push(options[key] as string)\n }\n }\n return res\n}\n\nexport const networkOptions = createOption('-n, --network <network>', 'network')\n .makeOptionMandatory(true)\n .argParser((network) => {\n const chainType = networkToChainType(network)\n if (chainType !== ChainType.INITIA) {\n throw new Error(\n `Only support ${Object.values(InitiaChain).join(', ')}, but got chain ${networkToChain(network)}`\n )\n }\n return network\n })\n","import { deploy } from '@/deploy'\nimport { networkOptions } from '@/options'\nimport { Command, createOption } from '@commander-js/extra-typings'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { LzInitiaConfig } from '../types'\n\nconst command = new Command()\n\nexport { command }\n\ncommand\n .name('deploy')\n .description('deploy Initia modules')\n .addOption(createOption('-m, --modules <modules...>', 'modules').makeOptionMandatory(true))\n .addOption(networkOptions)\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .addOption(\n createOption('-dto, --deploy-to-object', 'Deploy to Move Object. Default to false').makeOptionMandatory(false)\n )\n .action(\n async (\n options: { network: string; modules: string[]; variant?: string; deployToObject?: true },\n cmd: Command\n ) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n\n const { modules, variant, network, deployToObject: deployToObjectOpt } = options\n\n for (const module of modules) {\n const deployToObject =\n deployToObjectOpt ??\n context.modules[module]?.deployToObject ??\n context.defaultDeployToObject ??\n false\n await deploy(\n module,\n context,\n network as Network,\n variant ?? context.modules[module]?.variant,\n deployToObject\n )\n }\n }\n )\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getFullName } from '@/config-parser'\nimport { getMoveContext } from '@/move'\nimport { parseOptions } from '@/options'\nimport { CmdOptions, LzInitiaConfig, MoveToml } from '@/types'\nimport { glob } from 'glob'\nimport { $, ProcessOutput } from 'zx'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nexport function buildProcess(\n modulePath: string,\n addresses: { [key: string]: string },\n toml: MoveToml,\n customOptions: CmdOptions = {}\n): Promise<ProcessOutput> {\n const addressesParam = Object.keys(addresses)\n .map((key) => `${key}=${addresses[key]}`)\n .join(',')\n const defaultOptions = {\n '--skip-fetch-latest-git-deps': true,\n '--named-addresses': addressesParam,\n '--verbose': true,\n }\n const args = parseOptions(defaultOptions, customOptions)\n console.log(`initiad move build ${args.join(' ')}`)\n return $({\n cwd: modulePath,\n // pipe std error to avoid printing the compiling message which is not useful\n stdio: ['inherit', 'inherit', 'pipe'],\n quiet: true,\n })`initiad move build ${args}`\n}\n\nexport async function copyArtifacts(src: string, dest: string): Promise<void> {\n // remove existing artifacts, this is necessary to avoid leaving old artifacts\n if (fs.existsSync(dest)) {\n fs.rmSync(dest, { recursive: true })\n }\n fs.mkdirSync(dest, { recursive: true })\n const moduleDir = path.join(src, 'bytecode_modules')\n const modules = glob.sync('*.mv', { cwd: moduleDir })\n for (const module of modules) {\n const destByteCodePath = path.join(dest, 'bytecode_modules')\n if (!fs.existsSync(destByteCodePath)) {\n fs.mkdirSync(destByteCodePath, { recursive: true })\n }\n await $({\n verbose: false,\n quiet: true,\n })`cp ${path.join(moduleDir, module)} ${path.join(destByteCodePath, module)}`\n }\n}\n\nexport async function build(\n moduleKey: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n skipBuild = false,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleKey]\n if (!module) {\n throw new Error(`module ${moduleKey} not found in lz-initia.config.ts`)\n }\n const { modulePath } = module\n const context = await getMoveContext(moduleKey, lzInitiaConfig, network)\n // pkgName is the package name in Move.toml, moduleKey is the key in lz-initia.config.ts, they don't have to be the same.\n const pkgName = context[moduleKey]!.package.name\n const srcPath = path.join(modulePath, 'build', pkgName)\n const outputDir = getFullName(lzInitiaConfig, moduleKey)\n const outputPath = path.join(lzInitiaConfig.artifactsPath, outputDir)\n // put all dependencies' addresses into one array\n let addresses: { [key: string]: string } = {}\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n if (!(key in toml.addresses)) {\n throw new Error(`address not found for ${key}`)\n }\n addresses = { ...addresses, ...toml.addresses }\n }\n addresses = { ...addresses, ...context[pkgName]!.addresses }\n if (!skipBuild) {\n await buildProcess(modulePath, addresses, context[pkgName]!, {\n ...lzInitiaConfig.compileOptions,\n ...module.compileOptions,\n })\n }\n await copyArtifacts(srcPath, outputPath)\n}\n","import { build } from '@/build'\nimport { networkOptions } from '@/options'\nimport { Command, createOption } from '@commander-js/extra-typings'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { LzInitiaConfig } from '../types'\n\nconst command = new Command()\n\nexport { command }\n\ncommand\n .name('build')\n .description('build Initia program')\n .addOption(createOption('-m, --modules <modules...>', 'modules').makeOptionMandatory(true))\n .addOption(\n createOption(\n '-p, --module-paths <paths...>',\n 'module paths of modules, use the path in lz-initia.config.ts if not specify'\n ).makeOptionMandatory(false)\n )\n .addOption(networkOptions)\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .addOption(createOption('-sb, --skip-build', 'skip build').default(false))\n .action(\n async (\n options: {\n network: string\n modules: string[]\n modulePaths?: string[]\n variant?: string\n skipBuild: boolean\n },\n cmd\n ) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n const { skipBuild, modules, network, variant, modulePaths } = options\n // replace the modulePath in context with the modulePaths from command line\n if (modulePaths !== undefined) {\n for (let i = 0; i < modulePaths.length; i++) {\n const module = modules[i]\n const moduleConfig = context.modules[module]\n if (moduleConfig !== undefined) {\n moduleConfig.modulePath = modulePaths[i]\n }\n }\n }\n for (const module of modules) {\n await build(module, context, network as Network, skipBuild, variant ?? context.modules[module]?.variant)\n }\n }\n )\n","import fs from 'fs'\nimport path from 'path'\nimport process from 'process'\n\nimport { combineBaseConfigRecursive } from '@/config-parser'\nimport { loadConfig } from '@/loader'\nimport { Command } from '@commander-js/extra-typings'\nimport { sync as findUpSync } from 'find-up'\nimport { $ } from 'zx/core'\n\nimport { getLogger } from '@layerzerolabs/lz-utilities'\n\nimport * as subCommands from './subCommands'\n\nconst program = new Command()\n// iterate over subCommands and add them to the program\nconst logger = getLogger()\n\nprogram\n .name('lz-initia-cli')\n .description('Wrapper of Initia cli')\n .version('0.1.0')\n .action((_, command: Command) => {\n logger.info('Please specify a subcommand')\n command.help()\n })\n\nasync function checkIfInitiaInstalled(): Promise<void> {\n try {\n await $`initiad version`\n } catch (e) {\n throw new Error('Initia cli is not installed')\n }\n}\n\nfunction checkIfInitiaConfigExists(): string {\n const packagePath = findUpSync('package.json', { cwd: process.cwd() })\n if (packagePath === undefined) {\n throw new Error('package.json not found')\n }\n const configPath = path.join(path.dirname(packagePath), 'lz-initia.config.ts')\n if (!fs.existsSync(configPath)) {\n throw new Error('lz-initia.config.ts not found, please create one in the same directory as package.json')\n }\n return configPath\n}\n\nasync function main(): Promise<void> {\n await checkIfInitiaInstalled()\n const configPath = checkIfInitiaConfigExists()\n const config = loadConfig(configPath)\n Object.values(subCommands).forEach((subCommand: Command) => {\n subCommand.setOptionValue('__CONTEXT__', combineBaseConfigRecursive(config))\n program.addCommand(subCommand)\n })\n await program.parseAsync()\n}\n\nmain()\n .then(() => process.exit(process.exitCode))\n .catch((error: unknown) => {\n logger.error(error)\n console.trace(error)\n process.exit(1)\n })\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var fs4 = require('fs');
|
|
4
4
|
var path3 = require('path');
|
|
5
|
-
var
|
|
5
|
+
var initia4 = require('@initia/initia.js');
|
|
6
6
|
var sha3 = require('@noble/hashes/sha3');
|
|
7
7
|
var lzDefinitions = require('@layerzerolabs/lz-definitions');
|
|
8
8
|
var lzUtilities = require('@layerzerolabs/lz-utilities');
|
|
@@ -34,6 +34,7 @@ function _interopNamespace(e) {
|
|
|
34
34
|
|
|
35
35
|
var fs4__default = /*#__PURE__*/_interopDefault(fs4);
|
|
36
36
|
var path3__default = /*#__PURE__*/_interopDefault(path3);
|
|
37
|
+
var initia4__default = /*#__PURE__*/_interopDefault(initia4);
|
|
37
38
|
var crypto__namespace = /*#__PURE__*/_interopNamespace(crypto);
|
|
38
39
|
|
|
39
40
|
// src/build.ts
|
|
@@ -42,14 +43,14 @@ function getInitiaClient(env, config) {
|
|
|
42
43
|
if (url === void 0) {
|
|
43
44
|
throw new Error(`No network url for ${env} found in lz-initia.config.ts`);
|
|
44
45
|
}
|
|
45
|
-
const lcd = new
|
|
46
|
+
const lcd = new initia4__default.default.LCDClient(url);
|
|
46
47
|
return lcd;
|
|
47
48
|
}
|
|
48
49
|
|
|
49
50
|
// src/constant.ts
|
|
50
51
|
var InitiaObjectDeployerAddress = "0x1";
|
|
51
52
|
function isInitiaAccount(account) {
|
|
52
|
-
return account !== void 0 && account instanceof
|
|
53
|
+
return account !== void 0 && account instanceof initia4__default.default.MnemonicKey;
|
|
53
54
|
}
|
|
54
55
|
function getDeploymentPath(lzInitiaConfig, network, moduleName) {
|
|
55
56
|
const fullName = getFullName(lzInitiaConfig, moduleName);
|
|
@@ -76,7 +77,7 @@ async function resolveAddress(moduleKey, lzInitiaConfig, network, isOngoingModul
|
|
|
76
77
|
const deployToObject = lzInitiaConfig.modules[moduleKey]?.deployToObject ?? lzInitiaConfig.defaultDeployToObject ?? false;
|
|
77
78
|
if (!deployToObject) {
|
|
78
79
|
const deployer = getDeployerAccount(moduleKey, lzInitiaConfig, network);
|
|
79
|
-
return
|
|
80
|
+
return initia4__default.default.AccAddress.toHex(deployer.accAddress);
|
|
80
81
|
}
|
|
81
82
|
const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleKey);
|
|
82
83
|
if (objectDeployer !== InitiaObjectDeployerAddress) {
|
|
@@ -100,8 +101,8 @@ async function resolveAddress(moduleKey, lzInitiaConfig, network, isOngoingModul
|
|
|
100
101
|
return genObjectAddress(moduleKey, lzInitiaConfig, network);
|
|
101
102
|
}
|
|
102
103
|
var createObjectAddress = (creatorAddress, seed) => {
|
|
103
|
-
const hexAddress =
|
|
104
|
-
const creatorBytes =
|
|
104
|
+
const hexAddress = initia4__default.default.AccAddress.validate(creatorAddress) ? initia4__default.default.AccAddress.toHex(creatorAddress) : creatorAddress;
|
|
105
|
+
const creatorBytes = initia4__default.default.bcs.address().serialize(hexAddress).toBytes();
|
|
105
106
|
const seedBytes = typeof seed === "string" ? Buffer.from(seed, "utf8") : seed;
|
|
106
107
|
const bytes = new Uint8Array([...creatorBytes, ...seedBytes, 254]);
|
|
107
108
|
return lzUtilities.ensure0x(Buffer.from(sha3.sha3_256(bytes)).toString("hex"));
|
|
@@ -112,9 +113,11 @@ async function genObjectAddressForOfficial(network, lzInitiaConfig, moduleKey) {
|
|
|
112
113
|
const OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR = "initia_std::object_code_deployment";
|
|
113
114
|
const account = await client.auth.accountInfo(deployer.accAddress);
|
|
114
115
|
const sequenceNumber = account.getSequenceNumber();
|
|
115
|
-
const firstPart =
|
|
116
|
-
const
|
|
117
|
-
const
|
|
116
|
+
const firstPart = initia4__default.default.bcs.string().serialize(OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR);
|
|
117
|
+
const firstPartBytes = firstPart.toBytes();
|
|
118
|
+
const secondPart = initia4__default.default.bcs.u64().serialize(BigInt(sequenceNumber) + BigInt(2));
|
|
119
|
+
const secondPartBytes = secondPart.toBytes();
|
|
120
|
+
const seed = new Uint8Array([...firstPartBytes, ...secondPartBytes]);
|
|
118
121
|
const objectAddress = createObjectAddress(deployer.accAddress, seed);
|
|
119
122
|
return objectAddress;
|
|
120
123
|
}
|
|
@@ -382,9 +385,9 @@ function handleAccountNotFoundError(error, pkgName, context, network) {
|
|
|
382
385
|
if (address === void 0) {
|
|
383
386
|
return;
|
|
384
387
|
}
|
|
385
|
-
if (error.response.data.message.includes(`account ${
|
|
388
|
+
if (error.response.data.message.includes(`account ${initia4__default.default.AccAddress.fromHex(address)} not found`)) {
|
|
386
389
|
throw new Error(
|
|
387
|
-
`${error.response.data.message}, make sure you have funded the account ${
|
|
390
|
+
`${error.response.data.message}, make sure you have funded the account ${initia4__default.default.AccAddress.fromHex(address)}(${address}) on ${network}`
|
|
388
391
|
);
|
|
389
392
|
}
|
|
390
393
|
}
|
|
@@ -422,7 +425,7 @@ function saveDeployment(deployer, moduleKey, pkgName, address, dest, network, by
|
|
|
422
425
|
JSON.stringify(
|
|
423
426
|
{
|
|
424
427
|
address,
|
|
425
|
-
deployer:
|
|
428
|
+
deployer: initia4__default.default.AccAddress.toHex(deployer.accAddress),
|
|
426
429
|
name: moduleKeyWithVariant(moduleKey, variant),
|
|
427
430
|
moduleName: pkgName,
|
|
428
431
|
network,
|
|
@@ -473,38 +476,38 @@ function getBytecodesHash(bytecodes) {
|
|
|
473
476
|
}
|
|
474
477
|
async function createAccountDeploymentTx(client, deployer, modules, lzInitiaConfig, network) {
|
|
475
478
|
const msgs = [
|
|
476
|
-
new
|
|
479
|
+
new initia4__default.default.MsgPublish(
|
|
477
480
|
deployer.accAddress,
|
|
478
481
|
modules.map((codeBytes) => codeBytes.toString("base64")),
|
|
479
|
-
|
|
482
|
+
initia4__default.default.MsgPublish.Policy.COMPATIBLE
|
|
480
483
|
)
|
|
481
484
|
];
|
|
482
|
-
const wallet = new
|
|
485
|
+
const wallet = new initia4__default.default.Wallet(client, deployer);
|
|
483
486
|
const gasPrices = lzInitiaConfig.gasPrice?.[network] === void 0 ? void 0 : `${lzInitiaConfig.gasPrice[network]}uinit`;
|
|
484
487
|
const signedTx = await wallet.createAndSignTx({ msgs, gasPrices });
|
|
485
488
|
return signedTx;
|
|
486
489
|
}
|
|
487
490
|
async function createObjectDeploymentTx(client, deployer, modules, lzInitiaConfig, network, moduleKey, deployedAddress, actionType) {
|
|
488
491
|
const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleKey);
|
|
489
|
-
const metadataArg =
|
|
490
|
-
const modulesArg =
|
|
491
|
-
const objectAddressArg =
|
|
492
|
+
const metadataArg = initia4__default.default.bcs.vector(initia4__default.default.bcs.u8()).serialize(Uint8Array.from([])).toBase64();
|
|
493
|
+
const modulesArg = initia4__default.default.bcs.vector(initia4__default.default.bcs.vector(initia4__default.default.bcs.u8())).serialize(modules).toBase64();
|
|
494
|
+
const objectAddressArg = initia4__default.default.bcs.address().serialize(deployedAddress).toBase64();
|
|
492
495
|
let functionArguments = actionType === "Deploy" /* Deploy */ ? [metadataArg, modulesArg] : [metadataArg, modulesArg, objectAddressArg];
|
|
493
496
|
if (objectDeployer !== InitiaObjectDeployerAddress) {
|
|
494
497
|
const seed = getFullName(lzInitiaConfig, moduleKey);
|
|
495
|
-
const seedArg =
|
|
498
|
+
const seedArg = initia4__default.default.bcs.vector(initia4__default.default.bcs.u8()).serialize(Uint8Array.from(Buffer.from(seed))).toBase64();
|
|
496
499
|
functionArguments = actionType === "Deploy" /* Deploy */ ? [seedArg, metadataArg, modulesArg] : [metadataArg, modulesArg, objectAddressArg];
|
|
497
500
|
}
|
|
498
|
-
const msg = new
|
|
501
|
+
const msg = new initia4__default.default.MsgExecute(
|
|
499
502
|
deployer.accAddress,
|
|
500
|
-
|
|
503
|
+
initia4__default.default.AccAddress.fromHex(objectDeployer),
|
|
501
504
|
"object_code_deployment",
|
|
502
505
|
actionType === "Deploy" /* Deploy */ ? `publish` : `upgrade`,
|
|
503
506
|
[],
|
|
504
507
|
functionArguments
|
|
505
508
|
);
|
|
506
509
|
const gasPrices = lzInitiaConfig.gasPrice?.[network] === void 0 ? void 0 : `${lzInitiaConfig.gasPrice[network]}uinit`;
|
|
507
|
-
const wallet = new
|
|
510
|
+
const wallet = new initia4__default.default.Wallet(client, deployer);
|
|
508
511
|
const signedTx = await wallet.createAndSignTx({ msgs: [msg], gasPrices });
|
|
509
512
|
return signedTx;
|
|
510
513
|
}
|