diff --git a/.github/workflows/sync-subnet-evm-branch.yml b/.github/workflows/sync-subnet-evm-branch.yml index d51be8df89..c330ce5781 100644 --- a/.github/workflows/sync-subnet-evm-branch.yml +++ b/.github/workflows/sync-subnet-evm-branch.yml @@ -5,7 +5,7 @@ on: remoteBranch: description: "Subnet EVM Branch" required: true - default: "master" + default: "coreth-test-0" jobs: sync_branch: @@ -17,4 +17,49 @@ jobs: - uses: actions/setup-go@v5 with: go-version: "~1.21.12" - check-latest: true \ No newline at end of file + check-latest: true + + - name: Add Remote + run: | + git remote add subnet-evm https://github.com/ava-labs/subnet-evm + + # TODO: Replace test branch with actual (eg, coreth) + - name: Fetch Remote Branch (${{ github.event.inputs.remoteBranch }}) + id: fetch_remote_branch + run: | + git fetch subnet-evm ${{ github.event.inputs.remoteBranch }} + git fetch subnet-evm coreth-diff-script + result=$(git rev-parse --short=8 subnet-evm/${{ github.event.inputs.remoteBranch }}) + echo result="${result}" >> "${GITHUB_OUTPUT}" + + # TODO: Remove this step when the script is checked in + - name: Checkout script + run: | + git checkout subnet-evm/coreth-diff-script -- ./scripts/apply_diff_and_rename.sh + + - name: Apply diff + run: | + ./scripts/apply_diff_and_rename.sh subnet-evm/${{ github.event.inputs.remoteBranch }} + + # TODO: Should this step be removed? + - name: Restore .github/workflows + run: | + git checkout -- .github/workflows + + # TODO: Using a single branch to iterate for now (avoid maing noise in notifications) + - name: Create Pull Request + id: create_pr + uses: peter-evans/create-pull-request@v6 + with: + commit-message: "Sync subnet-evm to ${{ steps.fetch_remote_branch.outputs.result }}" + branch: auto-sync-subnet-evm + title: "Sync Subnet EVM to ${{ steps.fetch_remote_branch.outputs.result }}" + body: | + This PR was created automatically by a GitHub Action. + draft: true + + - name: PR Outputs + if: ${{ steps.create_pr.outputs.pull-request-number }} + run: | + echo "Pull Request Number - ${{ steps.create_pr.outputs.pull-request-number }}" + echo "Pull Request URL - ${{ steps.create_pr.outputs.pull-request-url }}" diff --git a/contracts/.gitignore b/contracts/.gitignore new file mode 100644 index 0000000000..46f9335b51 --- /dev/null +++ b/contracts/.gitignore @@ -0,0 +1,150 @@ +/dist + +/.idea +*.tsbuildinfo + +.DS_Store + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +node_modules/ +.env* +!.env*.default +.vscode/* +!.vscode/settings.json.default + +cache/ +artifacts/ + +.yalc +yalc.lock + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test +.env.production + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +local_rpc.json + +# TypeChain files +/typechain +/typechain-types diff --git a/core/gen_genesis.go b/core/gen_genesis.go index a05cee87f1..ac00615c16 100644 --- a/core/gen_genesis.go +++ b/core/gen_genesis.go @@ -18,19 +18,19 @@ var _ = (*genesisSpecMarshaling)(nil) // MarshalJSON marshals as JSON. func (g Genesis) MarshalJSON() ([]byte, error) { type Genesis struct { - Config *params.ChainConfig `json:"config"` - Nonce math.HexOrDecimal64 `json:"nonce"` - Timestamp math.HexOrDecimal64 `json:"timestamp"` - ExtraData hexutil.Bytes `json:"extraData"` - GasLimit math.HexOrDecimal64 `json:"gasLimit" gencodec:"required"` - Difficulty *math.HexOrDecimal256 `json:"difficulty" gencodec:"required"` - Mixhash common.Hash `json:"mixHash"` - Coinbase common.Address `json:"coinbase"` - Alloc map[common.UnprefixedAddress]GenesisAccount `json:"alloc" gencodec:"required"` - Number math.HexOrDecimal64 `json:"number"` - GasUsed math.HexOrDecimal64 `json:"gasUsed"` - ParentHash common.Hash `json:"parentHash"` - BaseFee *math.HexOrDecimal256 `json:"baseFeePerGas"` + Config *params.ChainConfig `json:"config"` + Nonce math.HexOrDecimal64 `json:"nonce"` + Timestamp math.HexOrDecimal64 `json:"timestamp"` + ExtraData hexutil.Bytes `json:"extraData"` + GasLimit math.HexOrDecimal64 `json:"gasLimit" gencodec:"required"` + Difficulty *math.HexOrDecimal256 `json:"difficulty" gencodec:"required"` + Mixhash common.Hash `json:"mixHash"` + Coinbase common.Address `json:"coinbase"` + Alloc map[common.UnprefixedAddress]GenesisAccount `json:"alloc" gencodec:"required"` + Number math.HexOrDecimal64 `json:"number"` + GasUsed math.HexOrDecimal64 `json:"gasUsed"` + ParentHash common.Hash `json:"parentHash"` + BaseFee *math.HexOrDecimal256 `json:"baseFeePerGas"` ExcessBlobGas *math.HexOrDecimal64 `json:"excessBlobGas"` BlobGasUsed *math.HexOrDecimal64 `json:"blobGasUsed"` } @@ -61,19 +61,19 @@ func (g Genesis) MarshalJSON() ([]byte, error) { // UnmarshalJSON unmarshals from JSON. func (g *Genesis) UnmarshalJSON(input []byte) error { type Genesis struct { - Config *params.ChainConfig `json:"config"` - Nonce *math.HexOrDecimal64 `json:"nonce"` - Timestamp *math.HexOrDecimal64 `json:"timestamp"` - ExtraData *hexutil.Bytes `json:"extraData"` - GasLimit *math.HexOrDecimal64 `json:"gasLimit" gencodec:"required"` - Difficulty *math.HexOrDecimal256 `json:"difficulty" gencodec:"required"` - Mixhash *common.Hash `json:"mixHash"` - Coinbase *common.Address `json:"coinbase"` - Alloc map[common.UnprefixedAddress]GenesisAccount `json:"alloc" gencodec:"required"` - Number *math.HexOrDecimal64 `json:"number"` - GasUsed *math.HexOrDecimal64 `json:"gasUsed"` - ParentHash *common.Hash `json:"parentHash"` - BaseFee *math.HexOrDecimal256 `json:"baseFeePerGas"` + Config *params.ChainConfig `json:"config"` + Nonce *math.HexOrDecimal64 `json:"nonce"` + Timestamp *math.HexOrDecimal64 `json:"timestamp"` + ExtraData *hexutil.Bytes `json:"extraData"` + GasLimit *math.HexOrDecimal64 `json:"gasLimit" gencodec:"required"` + Difficulty *math.HexOrDecimal256 `json:"difficulty" gencodec:"required"` + Mixhash *common.Hash `json:"mixHash"` + Coinbase *common.Address `json:"coinbase"` + Alloc map[common.UnprefixedAddress]GenesisAccount `json:"alloc" gencodec:"required"` + Number *math.HexOrDecimal64 `json:"number"` + GasUsed *math.HexOrDecimal64 `json:"gasUsed"` + ParentHash *common.Hash `json:"parentHash"` + BaseFee *math.HexOrDecimal256 `json:"baseFeePerGas"` ExcessBlobGas *math.HexOrDecimal64 `json:"excessBlobGas"` BlobGasUsed *math.HexOrDecimal64 `json:"blobGasUsed"` } diff --git a/scripts/apply_diff_and_rename.sh b/scripts/apply_diff_and_rename.sh new file mode 100755 index 0000000000..d160c8c10f --- /dev/null +++ b/scripts/apply_diff_and_rename.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Add other repo as a remote: `git remote add -f coreth git@github.com:ava-labs/coreth.git`. +# Usage: ./scripts/apply_diff_and_rename.sh coreth/master (or subnet-evm/master) + +set -e; +set -u; + +ROOT=$(git rev-parse --show-toplevel); +cd "${ROOT}"; + +BASE="${1}"; + +git diff .."${BASE}" --binary | git apply --whitespace=nowarn + +if [[ "${BASE}" == coreth* ]]; then + echo "Replacing coreth with subnet-evm" + sed_command='s!github.com/ava-labs/coreth!github.com/ava-labs/subnet-evm!g' +else + echo "Replacing subnet-evm with coreth" + sed_command='s!github.com/ava-labs/subnet-evm!github.com/ava-labs/coreth!g' +fi + +# TODO: improve this command that finds all the "coreth" references and replaces them with "subnet-evm" +sed_inplace=(sed -i) # Linux +if [[ $(uname) == "Darwin" ]]; then + sed_inplace=(sed -i '') +fi +LANG=C find . -type f \! -name 'apply_diff_and_rename.sh' \! -path './.git/*' \! -path './contracts/node_modules/*' -exec "${sed_inplace[@]}" -e "${sed_command}" {} \; +gofmt -w . +go mod tidy + +# Restore contracts/.gitignore +git checkout -- contracts/.gitignore 2>/dev/null || true # Ignore if the file doesn't exist \ No newline at end of file