diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd5f6ab..35f21d1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,13 +17,10 @@ jobs: - uses: actions/checkout@v3 - name: Update Path run: echo "$RUNNER_WORKSPACE/$(basename $GITHUB_REPOSITORY)" >> $GITHUB_PATH # Make it accessible from runner - - name: Install solc + - name: Install svm run: | - set -x - wget -c https://github.com/ethereum/solidity/releases/download/v0.5.17/solc-static-linux - mv solc-static-linux solc - chmod +x solc - solc --version + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + cargo install svm-rs - name: Setup Node.js environment uses: actions/setup-node@v3 with: diff --git a/generate-genesis.js b/generate-genesis.js index 7865a36..bf128bb 100644 --- a/generate-genesis.js +++ b/generate-genesis.js @@ -26,18 +26,12 @@ program.option( program.parse(process.argv) // compile contract -function compileContract(key, contractFile, contractName) { +async function compileContract(key, contractFile, contractName, solcVersion) { return new Promise((resolve, reject) => { - const ls = spawn("solc", [ - "--bin-runtime", - "openzeppelin-solidity/=node_modules/openzeppelin-solidity/", - "solidity-rlp/=node_modules/solidity-rlp/", - "/=/", - // "--optimize", - // "--optimize-runs", - // "200", - contractFile - ]) + const ls = spawn( + `svm use ${solcVersion} && solc --bin-runtime openzeppelin-solidity/=node_modules/openzeppelin-solidity/ solidity-rlp/=node_modules/solidity-rlp/ /=/ ${contractFile}`, + { shell: true } + ) const result = [] ls.stdout.on("data", data => { @@ -64,25 +58,32 @@ function compileContract(key, contractFile, contractName) { }) } -// compile files -Promise.all([ - compileContract( - "borValidatorSetContract", - "contracts/BorValidatorSet.sol", - "BorValidatorSet" - ), - compileContract( - "borStateReceiverContract", - "contracts/StateReceiver.sol", - "StateReceiver" - ), - compileContract( - "maticChildERC20Contract", - "matic-contracts/contracts/child/MRC20.sol", - "MRC20" - ) -]).then(result => { - const totalMaticSupply = web3.utils.toBN("10000000000") +// compile files sequentially +async function main() { + const result = [] + for (const file of [ + [ + "borValidatorSetContract", + "contracts/BorValidatorSet.sol", + "BorValidatorSet", + "0.5.17" + ], + [ + "borStateReceiverContract", + "contracts/StateReceiver.sol", + "StateReceiver", + "0.6.12" + ], + [ + "maticChildERC20Contract", + "matic-contracts/contracts/child/MRC20.sol", + "MRC20", + "0.5.17" + ] + ]) { + result.push(await compileContract(...file)) + } + const totalMaticSupply = web3.utils.toBN('10000000000') var validatorsBalance = web3.utils.toBN(0) validators.forEach(v => { @@ -108,7 +109,9 @@ Promise.all([ const templateString = fs.readFileSync(program.template).toString() const resultString = nunjucks.renderString(templateString, data) fs.writeFileSync(program.output, resultString) -}).catch(err => { +} + +main().catch(err => { console.log(err) process.exit(1) })