From dc4e454ed45d789d75d6686f2ec81dc6ce21146a Mon Sep 17 00:00:00 2001 From: Haythem Sellami Date: Mon, 20 Apr 2020 15:02:42 +0100 Subject: [PATCH] script to calculate contract bytecode --- package-lock.json | 13 ++++++++++--- package.json | 1 + scripts/CalculateContractBytecode.js | 24 ++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 scripts/CalculateContractBytecode.js diff --git a/package-lock.json b/package-lock.json index 33c8493..6636c0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6656,9 +6656,9 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minipass": { "version": "2.9.0", @@ -6683,6 +6683,13 @@ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } } }, "mkdirp-promise": { diff --git a/package.json b/package.json index d9c651c..2a10efe 100644 --- a/package.json +++ b/package.json @@ -114,6 +114,7 @@ }, "homepage": "https://github.com/aparnakr/OptionsProtocol#readme", "dependencies": { + "minimist": "^1.2.5", "truffle-hdwallet-provider": "^1.0.17" } } diff --git a/scripts/CalculateContractBytecode.js b/scripts/CalculateContractBytecode.js new file mode 100644 index 0000000..ca80269 --- /dev/null +++ b/scripts/CalculateContractBytecode.js @@ -0,0 +1,24 @@ +// This simple script tells you how big your contract byte code is and how much you have until you exceed +// the current block limit as defined by EIP170. + +const argv = require("minimist")(process.argv.slice(), { string: ["contract"] }); +const contractName = argv.contract; + +if (!contractName) { + console.log("Please enter the contract name as a parameter as `--contract `."); + return; +} +var child = require("child_process").exec("truffle compile"); +child.stdout.pipe(process.stdout); +child.on("exit", function() { + console.log("finished compiling 🚀!"); + console.log("loading", contractName + ".json"); + let obj = require("./../build/contracts/" + contractName + ".json"); + + const byteCodeSize = (obj.bytecode.length - 2) / 2; + const remainingSize = 2 ** 14 + 2 ** 13 - (obj.bytecode.length - 2) / 2; + console.log("Contract is", byteCodeSize, "bytes in size."); + console.log("This leaves a total of", remainingSize, "bytes within the EIP170 limit 🔥."); + + process.exit(); +}); \ No newline at end of file