@solarity/hardhat-migrate
Version:
The simplest way to deploy smart contracts
101 lines • 3.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.fillParameters = fillParameters;
exports.getInterfaceOnlyWithConstructor = getInterfaceOnlyWithConstructor;
exports.bytecodeHash = bytecodeHash;
exports.createKeyDeploymentFieldsHash = createKeyDeploymentFieldsHash;
exports.createKeyTxFieldsHash = createKeyTxFieldsHash;
exports.bytecodeToString = bytecodeToString;
exports.getMethodString = getMethodString;
const ethers_1 = require("ethers");
const bytes_1 = require("@ethersproject/bytes");
const network_1 = require("./network");
const common_1 = require("./common");
const errors_1 = require("../errors");
const constants_1 = require("../constants");
async function fillParameters(parameters) {
if (parameters.chainId === undefined) {
parameters.chainId = await (0, network_1.getChainId)();
}
if (parameters.value === undefined) {
parameters.value = 0;
}
return parameters;
}
function getInterfaceOnlyWithConstructor(fragments) {
let abi;
if (typeof fragments === "string") {
abi = JSON.parse(fragments);
}
else {
abi = fragments;
}
const fragment = abi.find((a) => a.type === "constructor");
if (fragment !== undefined) {
return ethers_1.Interface.from([fragment]);
}
return new ethers_1.Interface([ethers_1.ConstructorFragment.from("constructor()")]);
}
function bytecodeHash(bytecode) {
return (0, ethers_1.id)(bytecodeToString(bytecode));
}
function createKeyDeploymentFieldsHash(keyTxFields) {
const obj = {
name: keyTxFields.name,
data: keyTxFields.data,
from: keyTxFields.from,
chainId: keyTxFields.chainId,
value: keyTxFields.value,
};
return (0, ethers_1.id)((0, common_1.toJSON)(obj));
}
function createKeyTxFieldsHash(keyTxFields) {
const obj = {
data: keyTxFields.data,
from: keyTxFields.from,
chainId: keyTxFields.chainId,
to: keyTxFields.to,
value: keyTxFields.value,
name: keyTxFields.name,
};
return (0, ethers_1.id)((0, common_1.toJSON)(obj));
}
function bytecodeToString(bytecode) {
let bytecodeHex;
if (typeof bytecode === "string") {
bytecodeHex = bytecode;
}
else if ((0, bytes_1.isBytes)(bytecode)) {
bytecodeHex = (0, ethers_1.hexlify)(bytecode);
}
else {
throw new errors_1.MigrateError(`Invalid bytecode: ${bytecode}`);
}
// Make sure it is 0x prefixed
if (bytecodeHex.substring(0, 2) !== "0x") {
bytecodeHex = "0x" + bytecodeHex;
}
return bytecodeHex;
}
function getMethodString(contractName, methodName, methodFragment = {}, args = []) {
if (contractName === constants_1.UNKNOWN_CONTRACT_NAME) {
contractName = "Unidentified Contract";
}
const copyOfArgs = (0, common_1.deepCopy)(args);
if (methodFragment.inputs.length + 1 === copyOfArgs.length) {
copyOfArgs.pop();
}
if (methodFragment.inputs === undefined) {
return `${contractName}.${methodName}()`;
}
const argsString = methodFragment.inputs.map((input, i) => `${input.name}:${copyOfArgs[i]}`).join(", ");
const methodSting = `${contractName}.${methodName}(${argsString})`;
if (methodSting.length > 60) {
const shortenMethodString = `${contractName}.${methodName}(${copyOfArgs.length} arguments)`;
if (shortenMethodString.length > 60) {
return `${contractName.split(":").pop()}.${methodName}(${copyOfArgs.length} arguments)`;
}
}
return methodSting;
}
//# sourceMappingURL=migration.js.map