diff --git a/.github/mining-test/run.sh b/.github/mining-test/run.sh
new file mode 100755
index 00000000000..cbe788db3d7
--- /dev/null
+++ b/.github/mining-test/run.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+sudo docker run -d --name bitcoind01 -p 31591:31591 -p 32591:32591 --entrypoint "/usr/local/bin/bitcoind" kylemanna/bitcoind:latest -printtoconsole -regtest -debug -server -listen -port=31591 -connect=localhost:31592 -rpcbind=0.0.0.0:32591 -rpcallowip=0.0.0.0/0 -rpcuser=admin -rpcpassword=admin
+sudo docker run -d --name bitcoind02 -p 31592:31592 -p 32592:32592 --entrypoint "/usr/local/bin/bitcoind" kylemanna/bitcoind:latest -printtoconsole -regtest -debug -server -listen -port=31592 -connect=localhost:31591 -rpcbind=0.0.0.0:32592 -rpcallowip=0.0.0.0/0 -rpcuser=admin -rpcpassword=admin
+
+while ! docker ps --format "{{.Names}}" | grep -wq bitcoind01; do
+    echo "Waiting for container bitcoind01 to start..."
+    sleep 5  # Wait for 5 seconds before checking again
+done
+echo "bitcoind01 container is running."
+
+while ! docker ps --format "{{.Names}}" | grep -wq bitcoind02; do
+    echo "Waiting for container bitcoind02 to start..."
+    sleep 5  # Wait for 5 seconds before checking again
+done
+echo "bitcoind02 container is running."
+
+docker network ls
+ports=(31591 32591 31592 32592)
+for port in "${ports[@]}"; do
+    if ! sudo lsof -i:$port -sTCP:LISTEN > /dev/null; then
+        echo "Error: No process is listening on port $port"
+        exit 1
+    fi
+done
+echo "Success: All specified ports are being listened to."
+
+echo Test bitcoin node 1
+curl -s -u admin:admin --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://localhost:32591 --fail
+if [ $? -ne 0 ]; then
+    echo "Error: Failed to connect to the Bitcoin bitcoind01 node"
+    exit 1
+fi
+echo Test bitcoin node 2
+curl -s -u admin:admin --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://localhost:32592 --fail
+if [ $? -ne 0 ]; then
+    echo "Error: Failed to connect to the Bitcoin bitcoind02 node"
+    exit 1
+fi
+
+echo "Linking btc nodes to localhost"
+echo "127.0.0.1       bitcoind01" | sudo tee -a /etc/host
+echo "127.0.0.1       bitcoind02" | sudo tee -a /etc/host
+echo "/etc/hosts"
+cat /etc/hosts
+
+echo "Generate BTC blocks"
+(cd mining-integration-tests && node generateBtcBlocks.js || exit 1)
+
diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml
index 1c20558c51b..f85a0de481a 100644
--- a/.github/workflows/build_and_test.yml
+++ b/.github/workflows/build_and_test.yml
@@ -10,208 +10,307 @@ on:
       - '**'
 
 jobs:
-  build:
+#  build:
+#    runs-on: ubuntu-latest
+#    container:
+#      image: openjdk:8-jdk
+#    env:
+#      _JAVA_OPTIONS: "-Xmx3G -Xms2G"
+#    defaults:
+#      run:
+#        working-directory: .
+#    steps:
+#      - uses: actions/checkout@v2
+#      - name: Setup System Tools
+#        run: |
+#          apt update -y
+#          apt install -y gnupg2 curl
+#      - name: Install Node.js
+#        run: |
+#          curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
+#          apt-get install -y nodejs
+#      - name: Check Node.js version
+#        run: node --version
+#      - name: Verify files
+#        run: |
+#          curl -sSL https://secchannel.rsk.co/SUPPORT.asc | gpg2 --import -
+#          gpg2 --verify SHA256SUMS.asc && sha256sum --check SHA256SUMS.asc
+#
+#      - uses: actions/cache@v4
+#        name: Cache Gradle
+#        with:
+#          path: |
+#            .gradle/caches
+#            gradle/wrapper
+#          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
+#          restore-keys: |
+#            ${{ runner.os }}-gradle-
+#
+#      - uses: actions/cache@v4
+#        name: Cache build
+#        with:
+#          path: |
+#            build
+#          key: ${{ runner.os }}-build-${{ hashFiles('build') }}
+#          restore-keys: |
+#            ${{ runner.os }}-build-
+#
+#      - name: Build
+#        run: |
+#          ./configure.sh
+#          ./gradlew --no-daemon dependencies
+#          ./gradlew --no-daemon --stacktrace build -x test
+#          ls -la ./gradle/wrapper/gradle-wrapper.jar
+#
+#  sonarqube:
+#    needs: build
+#    runs-on: ubuntu-latest
+#    container:
+#      image: eclipse-temurin:17-jdk
+#    defaults:
+#        run:
+#            working-directory: .
+#    steps:
+#      - uses: actions/checkout@v2
+#      - name: Run SonarQube analysis
+#        run: |
+#          echo "Installing git"
+#          apt-get update && apt-get install -yqq git
+#          extra_flags=""
+#          echo "Get GH event type"
+#          event_name="${{ github.event_name }}"
+#          if [ "$event_name" = "pull_request" ]; then
+#            echo "Setting up PR analysis"
+#            echo "switch to master"
+#            git branch -f master origin/master
+#            pr_number=${{ github.event.pull_request.number }}
+#            echo "PR number: $pr_number"
+#            extra_flags="-Dsonar.pullrequest.base=master -Dsonar.pullrequest.branch=${{ github.head_ref }} -Dsonar.pullrequest.key=$pr_number"
+#            echo "PR analysis flags: $extra_flags"
+#          else
+#            echo "Setting up branch analysis"
+#            extra_flags="-Dsonar.branch.name=master"
+#            echo "Branch analysis flags: $extra_flags"
+#          fi
+#
+#          sonar_url=${{ secrets.SONAR_URL }}
+#          sonar_token=${{ secrets.SONAR_TOKEN }}
+#          echo "Event name: $event_name"
+#          echo "Sonar URL: $sonar_url"
+#
+#          echo "Running SonarQube analysis"
+#          ./configure.sh
+#          ./gradlew sonarqube --no-daemon -x build -x test $extra_flags \
+#          -Dsonar.organization=rsksmart -Dsonar.host.url="$sonar_url" -Dsonar.login="$sonar_token"
+#
+#  tests:
+#    needs: build
+#    runs-on: ubuntu-latest
+#    container:
+#      image: openjdk:8-jdk
+#    defaults:
+#      run:
+#        working-directory: .
+#    steps:
+#      - uses: actions/checkout@v2
+#
+#      - name: Setup System Tools
+#        run: |
+#          apt update -y
+#          apt install -y curl
+#      - name: Install Node.js
+#        run: |
+#          curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
+#          apt-get install -y nodejs
+#      - name: Check Node.js version
+#        run: node --version
+#
+#      - uses: actions/cache@v4
+#        name: Restore gradle cache
+#        with:
+#          path: |
+#            .gradle/caches
+#            gradle/wrapper
+#          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
+#          restore-keys: |
+#            ${{ runner.os }}-gradle-
+#
+#      - name: Get Gradle jar
+#        run: |
+#          ./configure.sh
+#
+#      - name: Unit tests
+#        run: |
+#          chmod +x ./gradlew
+#          ./gradlew --no-daemon --stacktrace test
+#      - name: Integration tests
+#        run: |
+#          chmod +x ./gradlew
+#          ./gradlew --no-daemon --stacktrace test
+#
+#      - name: Save test results
+#        run: |
+#          mkdir -p ~/junit/
+#          find rskj-core/build/test-results -type f -name "*.xml" -exec cp {} ~/junit/ \;
+#        if: always()
+
+  mining-tests:
+#    needs: build
     runs-on: ubuntu-latest
-    container:
-      image: openjdk:8-jdk
-    env:
-      _JAVA_OPTIONS: "-Xmx3G -Xms2G"
     defaults:
       run:
         working-directory: .
+
+#    services:
+#      bitcoind01:
+#        image: kylemanna/bitcoind:latest
+#        env:
+#          DISABLEWALLET: "0"
+#        ports:
+#          - 31591:31591
+#      #        options: >-
+#      #          --entrypoint "/usr/local/bin/bitcoind
+#
+#      bitcoind02:
+#        image: kylemanna/bitcoind:latest
+#        env:
+#          DISABLEWALLET: "0"
+#        ports:
+#          - 31592:31592
+#    #        options: >-
+#    #          --entrypoint "/usr/local/bin/bitcoind
+
     steps:
       - uses: actions/checkout@v2
-      - name: Setup System Tools
-        run: |
-          apt update -y
-          apt install -y gnupg2 curl
-      - name: Install Node.js
-        run: |
-          curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
-          apt-get install -y nodejs
+      #      - name: Setup System Tools
+      #        run: |
+      #          sudo apt-get update -y
+      ##          sudo apt-get install -y curl
+      #      - name: Install Node 12
+      #        run: |
+      #          sudo apt-get install -y fnm
+
+      - name: Setup Node.js
+        uses: actions/setup-node@v2
+        with:
+          node-version: '12'
       - name: Check Node.js version
         run: node --version
-      - name: Verify files
-        run: |
-          curl -sSL https://secchannel.rsk.co/SUPPORT.asc | gpg2 --import -
-          gpg2 --verify SHA256SUMS.asc && sha256sum --check SHA256SUMS.asc
 
-      - uses: actions/cache@v4
-        name: Cache Gradle
+      - name: Checkout Mining Integration Tests Repository
+        uses: actions/checkout@v2
         with:
-          path: |
-            .gradle/caches
-            gradle/wrapper
-          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
-          restore-keys: |
-            ${{ runner.os }}-gradle-
+          repository: rsksmart/mining-integration-tests
+#          ref: ${{ secrets.MINING_INTEGRATION_TESTS_REF }}
+#          token: ${{ secrets.GITHUB_TOKEN }}
+          path: mining-integration-tests
 
-      - uses: actions/cache@v4
-        name: Cache build
+      #      - uses: actions/cache@v4
+      #        name: Restore gradle cache
+      #        with:
+      #          path: |
+      #            .gradle/caches
+      #            gradle/wrapper
+      #          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
+      #          restore-keys: |
+      #            ${{ runner.os }}-gradle-
+      #
+      #      - name: Get Gradle jar
+      #        run: |
+      #          ./configure.sh
+
+      - uses: actions/cache@v2
         with:
           path: |
-            build
-          key: ${{ runner.os }}-build-${{ hashFiles('build') }}
+            node_modules
+          key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
           restore-keys: |
-            ${{ runner.os }}-build-
+            ${{ runner.os }}-node-
 
-      - name: Build
+      - name: Install Mining Integration Tests dependencies
+        working-directory: mining-integration-tests
         run: |
-          ./configure.sh
-          ./gradlew --no-daemon dependencies
-          ./gradlew --no-daemon --stacktrace build -x test
-          ls -la ./gradle/wrapper/gradle-wrapper.jar
+          npm install
+      #
+      #      - name: Start Bitcoin nodes
+      #        run: |
+      #          docker run -itd bitcoind01 /usr/local/bin/bitcoind -printtoconsole -regtest -debug -server -listen -port=31591 -connect=localhost:31592 -rpcbind=0.0.0.0:32591 -rpcallowip=0.0.0.0/0 -rpcuser=admin -rpcpassword=admin
+      #          docker run -itd bitcoind02 /usr/local/bin/bitcoind -printtoconsole -regtest -debug -server -listen -port=31592 -connect=localhost:31591 -rpcbind=0.0.0.0:32591 -rpcallowip=0.0.0.0/0 -rpcuser=admin -rpcpassword=admin
+#      - name: Start Bitcoin nodes
+#        run: |
+#          docker run -d --name bitcoind01 -p 31591:31591 --entrypoint "/usr/local/bin/bitcoind" kylemanna/bitcoind:latest -printtoconsole -regtest -debug -server -listen -port=31591 -connect=localhost:31592 -rpcbind=0.0.0.0:32591 -rpcallowip=0.0.0.0/0 -rpcuser=admin -rpcpassword=admin
+#          docker run -d --name bitcoind02 -p 31592:31592 --entrypoint "/usr/local/bin/bitcoind" kylemanna/bitcoind:latest -printtoconsole -regtest -debug -server -listen -port=31592 -connect=localhost:31591 -rpcbind=0.0.0.0:32592 -rpcallowip=0.0.0.0/0 -rpcuser=admin -rpcpassword=admin
+#
+#
+#      - name: Test bitcoin nodes
+#        run: |
+#          echo Test bitcoin node 1
+#          curl -s -u admin:admin --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://localhost:32591
+#          echo Test bitcoin node 2
+#          curl -s -u admin:admin --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://localhost:32592
+#
+#      - name: Generate BTC blocks
+#        working-directory: mining-integration-tests
+#        run: |
+#          node generateBtcBlocks.js
 
-  sonarqube:
-    needs: build
-    runs-on: ubuntu-latest
-    container:
-      image: eclipse-temurin:17-jdk
-    defaults:
-        run:
-            working-directory: .
-    steps:
-      - uses: actions/checkout@v2
-      - name: Run SonarQube analysis
+      - name: Run Mining Integration Tests
         run: |
-          echo "Installing git"
-          apt-get update && apt-get install -yqq git
-          extra_flags=""
-          echo "Get GH event type"
-          event_name="${{ github.event_name }}"
-          if [ "$event_name" = "pull_request" ]; then
-            echo "Setting up PR analysis"
-            echo "switch to master"
-            git branch -f master origin/master
-            pr_number=${{ github.event.pull_request.number }}
-            echo "PR number: $pr_number"
-            extra_flags="-Dsonar.pullrequest.base=master -Dsonar.pullrequest.branch=${{ github.head_ref }} -Dsonar.pullrequest.key=$pr_number"
-            echo "PR analysis flags: $extra_flags"
-          else
-            echo "Setting up branch analysis"
-            extra_flags="-Dsonar.branch.name=master"
-            echo "Branch analysis flags: $extra_flags"
-          fi
-          
-          sonar_url=${{ secrets.SONAR_URL }}
-          sonar_token=${{ secrets.SONAR_TOKEN }}
-          echo "Event name: $event_name"
-          echo "Sonar URL: $sonar_url"
-          
-          echo "Running SonarQube analysis"
-          ./configure.sh
-          ./gradlew sonarqube --no-daemon -x build -x test $extra_flags \
-          -Dsonar.organization=rsksmart -Dsonar.host.url="$sonar_url" -Dsonar.login="$sonar_token"
-
-  tests:
-    needs: build
-    runs-on: ubuntu-latest
-    container:
-      image: openjdk:8-jdk
-    defaults:
-      run:
-        working-directory: .
-    steps:
-      - uses: actions/checkout@v2
+          pwd
+          ls -al
+          ls -al ../
+          chmod +x .github/mining-test/run.sh
+          ./.github/mining-test/run.sh
 
-      - name: Setup System Tools
-        run: |
-          apt update -y
-          apt install -y curl
-      - name: Install Node.js
+      - name: Checkout RSKj
+        uses: actions/checkout@v2
+
+      - name: Setup Java JDK
+        uses: actions/setup-java@v2
+        with:
+          java-version: '17'
+          distribution: 'temurin'
+
+      - name: Verify Java installation
+        run: java -version
+
+      - name: Get RSKj version
         run: |
-          curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
-          apt-get install -y nodejs
-      - name: Check Node.js version
-        run: node --version
+          version=$(tr -d "'\"" < rskj-core/src/main/resources/version.properties \
+              | cut -d = -f 2- | paste -sd - -)
 
       - uses: actions/cache@v4
-        name: Restore gradle cache
+        name: Restore build
         with:
           path: |
-            .gradle/caches
-            gradle/wrapper
-          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
+            build
+          key: ${{ runner.os }}-build-${{ hashFiles('build') }}
           restore-keys: |
-            ${{ runner.os }}-gradle-
+            ${{ runner.os }}-build-
 
-      - name: Get Gradle jar
+      - name: Start RSKj
         run: |
-          ./configure.sh
+          java -Drsk.conf.file=./rsk-integration-test.conf -cp rskj-core/build/libs/rskj-core-"$version"-all.jar co.rsk.Start --regtest
+          rskpid=$!
+          echo "RSKj PID: $rskpid"
+          until nc -z 127.0.0.1 4444
+          do
+            echo "Waiting for RskJ..."
+            sleep 1
+          done
 
-      - name: Unit tests
-        run: |
-          chmod +x ./gradlew
-          ./gradlew --no-daemon --stacktrace test
-      - name: Integration tests
+      - name: Run Mining Integration Tests
+        working-directory: mining-integration-tests
         run: |
-          chmod +x ./gradlew
-          ./gradlew --no-daemon --stacktrace test
+          npm test
 
-      - name: Save test results
-        run: |
-          mkdir -p ~/junit/
-          find rskj-core/build/test-results -type f -name "*.xml" -exec cp {} ~/junit/ \;
+      - name: Stop RSKj
         if: always()
-
-  mining-tests:
-    runs-on: ubuntu-latest
-
-    steps:
-      - name: Checkout code
-        uses: actions/checkout@v2
-
-      - name: Setup
         run: |
-          sudo apt-get update
-          sudo apt-get install -y curl jq
+          kill $rskpid
 
-      - name: Mining integration tests
+      - name: Stop and Remove Docker Containers
+        if: always()
         run: |
-          function wait_for_completion() {
-            build_number=$1
-            poll_interval=60
-            i=0
-            max_count=20
-            while [ $i -lt $max_count ]; do
-              res=$(curl -Ssfu "${{ secrets.GITHUB_TOKEN }}" \
-                  "https://circleci.com/api/v1.1/project/github/$MIT_ORGANIZATION/$MIT_PROJECT/$build_numbe" \
-                  | jq -r '[.status, .conclusion] | @tsv')
-              IFS="	" set -- $res
-              status=${1:-}
-              conclusion=${2:-}
-              if [ "$status" = "queued" ]; then
-                echo "Build is enqueued. Waiting..."
-              else
-                echo "[$i/$max_count] Waiting for build $build_url ..."
-                i=$((i + 1))
-              fi
-              if [ "$status" = "completed" ]; then
-                echo "Build $build_number finished. Outcome: \"$conclusion\"."
-                test "$conclusion" = "success"
-                return $?
-              fi
-              sleep $poll_interval
-            done
-            return 1
-          }
-          json_payload='{
-            "ref": "'${{ github.ref }}'",
-            "inputs": {
-              "RSKJ_CIRCLE_BRANCH": "${{ github.ref }}",
-              "RSKJ_CIRCLE_USERNAME": "${{ github.actor }}",
-              "RSKJ_CIRCLE_REPONAME": "${{ github.repository }}",
-              "RSKJ_PR_NUMBER": "${{ github.event.pull_request.number }}",
-              "RSKJ_CIRCLE_SHA1": "${{ github.sha }}"
-            }
-          }'
-          res=$(curl -Ssf -u "${{ secrets.GITHUB_TOKEN }}:" \
-              -H "Content-type: application/json" -d "$json_payload" \
-              "https://circleci.com/api/v1.1/project/github/$MIT_ORGANIZATION/$MIT_PROJECT/tree/$MIT_BRANCH" \
-              | jq -r '[.url, .id] | @tsv')
-          IFS="	" set -- $res
-          build_url=$1
-          build_num=$2
-          echo "Running mining integration tests. Follow it on:\n\n    $build_url\n\n"
-          sleep 10
-          wait_for_completion "$build_num"
\ No newline at end of file
+          /usr/bin/docker stop bitcoind01 bitcoind02
+          /usr/bin/docker rm bitcoind01 bitcoind02
\ No newline at end of file