Skip to content

Instantly share code, notes, and snippets.

@luisnaranjo733
Created January 15, 2022 15:32
Show Gist options
  • Save luisnaranjo733/81f4d5396d3f93352f93f0c3e16b9f49 to your computer and use it in GitHub Desktop.
Save luisnaranjo733/81f4d5396d3f93352f93f0c3e16b9f49 to your computer and use it in GitHub Desktop.
Besu failing to start - Kintsugi testnet

Issue running Besu on Kintsugi

Hi! I'm working on a write-up to walk people through the instructions for how they can run a node on Kintsugi to test the merge using a minority client. My goal is to promote the Besu-Teku client combination, since I believe it is underrated and has lots of benefits (can compile both with the same programming language, synergy between dev teams, less supply chain attack vectors, etc...)

However, after following the official instructions from the Kintsugi testnet website, I am running into issues I have not been able to solve myself.

Branch used:

Commit used: c6eddef39fabdf2cf5ea98cf0b8d98402c5b9147

More info

luis@kintsugi-vm:~/merge-testnets/kintsugi/besu$ /usr/local/bin/besu/bin/besu --version
besu/v22.1.0-RC2-dev-c6eddef3/linux-x86_64/openjdk-java-11

luis@kintsugi-vm:~/merge-testnets/kintsugi/besu$ java -version
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

luis@kintsugi-vm:~/merge-testnets/kintsugi/besu$ cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

luis@kintsugi-vm:~/merge-testnets/kintsugi/besu$ uname -a
Linux kintsugi-vm 5.11.0-1025-azure #27~20.04.1-Ubuntu SMP Fri Jan 7 15:02:06 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Azure B2ms VM

Build process used:

git clone -b merge https://github.com/hyperledger/besu --recursive
cd besu
./gradlew installDist distTar
sudo cp -a build/install/besu/. /usr/local/bin/besu
cd ..

Command used to run Besu

/usr/local/bin/besu/bin/besu  \
  --data-path="/datadrive/besu" \
  --genesis-file="/home/luis/merge-testnets/kintsugi/besu_genesis.json" \
  --rpc-http-enabled \
  --rpc-http-api=ADMIN,MINER,ETH,NET,DEBUG,TXPOOL,EXECUTION \
  --network-id=1337702 \
  --p2p-enabled=true \
  --Xmerge-support=true \
  --bootnodes=enode://6f377dd1ef5a3272d7e02fac9064c4f95d74f7edfd866e59ded774ee5b4649ff61c3f24c95f5c3d07d692b447f0569716b8921b6861810b96a705c92e1d27ff9@161.35.67.219:30303 \
  --logging=all

Notes

  • The JSON file passed to --genesis-file is "besu_genesis.json" from the eth-clients/merge-testnets repo
  • According to Github, that JSON file hasn't been updated since Dec 15
  • Flags set according to the instructions at the Kintsugi testnet website
  • Added the --rpc-http-enabled flag since Besu was complaining without it

Output, with error

Setting logging level to ALL
2022-01-15 15:15:57.078+00:00 | main | DEBUG | Native | Looking in classpath from jdk.internal.loader.ClassLoaders$AppClassLoader@5ffd2b27 for /com/sun/jna/linux-x86-64/libjnidispatch.so
2022-01-15 15:15:57.081+00:00 | main | DEBUG | Native | Found library resource at jar:file:/usr/local/bin/besu/lib/jna-5.10.0.jar!/com/sun/jna/linux-x86-64/libjnidispatch.so
2022-01-15 15:15:57.082+00:00 | main | DEBUG | Native | Extracting library to /home/luis/.cache/JNA/temp/jna13227483794889495688.tmp
2022-01-15 15:15:57.084+00:00 | main | DEBUG | Native | Trying /home/luis/.cache/JNA/temp/jna13227483794889495688.tmp
2022-01-15 15:15:57.085+00:00 | main | DEBUG | Native | Found jnidispatch at /home/luis/.cache/JNA/temp/jna13227483794889495688.tmp
2022-01-15 15:15:57.108+00:00 | main | DEBUG | NativeLibrary | Looking for library 'secp256k1'
2022-01-15 15:15:57.108+00:00 | main | DEBUG | NativeLibrary | Adding paths from jna.library.path: null
2022-01-15 15:15:57.109+00:00 | main | DEBUG | NativeLibrary | Trying libsecp256k1.so
2022-01-15 15:15:57.109+00:00 | main | DEBUG | NativeLibrary | Loading failed with message: libsecp256k1.so: cannot open shared object file: No such file or directory
2022-01-15 15:15:57.109+00:00 | main | DEBUG | NativeLibrary | Adding system paths: [/usr/lib/x86_64-linux-gnu, /lib/x86_64-linux-gnu, /usr/lib64, /lib64, /usr/lib, /lib]
2022-01-15 15:15:57.109+00:00 | main | DEBUG | NativeLibrary | Trying libsecp256k1.so
2022-01-15 15:15:57.110+00:00 | main | DEBUG | NativeLibrary | Loading failed with message: libsecp256k1.so: cannot open shared object file: No such file or directory
2022-01-15 15:15:57.110+00:00 | main | DEBUG | NativeLibrary | Looking for version variants
2022-01-15 15:15:57.118+00:00 | main | DEBUG | Native | Looking in classpath from jdk.internal.loader.ClassLoaders$AppClassLoader@5ffd2b27 for secp256k1
2022-01-15 15:15:57.118+00:00 | main | DEBUG | Native | Found library resource at jar:file:/usr/local/bin/besu/lib/secp256k1-0.4.2.jar!/linux-x86-64/libsecp256k1.so
2022-01-15 15:15:57.119+00:00 | main | DEBUG | Native | Extracting library to /home/luis/.cache/JNA/temp/jna2484633433964481345.tmp
2022-01-15 15:15:57.124+00:00 | main | DEBUG | NativeLibrary | Found library 'secp256k1' at /home/luis/.cache/JNA/temp/jna2484633433964481345.tmp
2022-01-15 15:15:57.146+00:00 | main | DEBUG | NativeLibrary | Looking for library 'eth_pairings'
2022-01-15 15:15:57.147+00:00 | main | DEBUG | NativeLibrary | Adding paths from jna.library.path: null
2022-01-15 15:15:57.147+00:00 | main | DEBUG | NativeLibrary | Trying libeth_pairings.so
2022-01-15 15:15:57.147+00:00 | main | DEBUG | NativeLibrary | Loading failed with message: libeth_pairings.so: cannot open shared object file: No such file or directory
2022-01-15 15:15:57.148+00:00 | main | DEBUG | NativeLibrary | Adding system paths: [/usr/lib/x86_64-linux-gnu, /lib/x86_64-linux-gnu, /usr/lib64, /lib64, /usr/lib, /lib]
2022-01-15 15:15:57.148+00:00 | main | DEBUG | NativeLibrary | Trying libeth_pairings.so
2022-01-15 15:15:57.148+00:00 | main | DEBUG | NativeLibrary | Loading failed with message: libeth_pairings.so: cannot open shared object file: No such file or directory
2022-01-15 15:15:57.149+00:00 | main | DEBUG | NativeLibrary | Looking for version variants
2022-01-15 15:15:57.151+00:00 | main | DEBUG | Native | Looking in classpath from jdk.internal.loader.ClassLoaders$AppClassLoader@5ffd2b27 for eth_pairings
2022-01-15 15:15:57.151+00:00 | main | DEBUG | Native | Found library resource at jar:file:/usr/local/bin/besu/lib/bls12-381-0.4.2.jar!/linux-x86-64/libeth_pairings.so
2022-01-15 15:15:57.152+00:00 | main | DEBUG | Native | Extracting library to /home/luis/.cache/JNA/temp/jna1170191019723383865.tmp
2022-01-15 15:15:57.182+00:00 | main | DEBUG | NativeLibrary | Found library 'eth_pairings' at /home/luis/.cache/JNA/temp/jna1170191019723383865.tmp
2022-01-15 15:15:57.183+00:00 | main | INFO  | Besu | Using LibEthPairings native alt bn128
2022-01-15 15:15:57.183+00:00 | main | INFO  | Besu | Using the native implementation of the signature algorithm
2022-01-15 15:15:57.188+00:00 | main | INFO  | Besu | Starting Besu version: besu/v22.1.0-RC2-dev-c6eddef3/linux-x86_64/openjdk-java-11
2022-01-15 15:15:57.204+00:00 | main | TRACE | MetricsSystemFactory | Creating a metric system with PROMETHEUS
2022-01-15 15:15:57.217+00:00 | main | DEBUG | LoggerFactory | Using io.vertx.core.logging.Log4j2LogDelegateFactory
2022-01-15 15:15:57.239+00:00 | main | DEBUG | ResourceLeakDetector | -Dio.netty.leakDetection.level: simple
2022-01-15 15:15:57.239+00:00 | main | DEBUG | ResourceLeakDetector | -Dio.netty.leakDetection.targetRecords: 4
2022-01-15 15:15:57.255+00:00 | main | DEBUG | PlatformDependent0 | -Dio.netty.noUnsafe: false
2022-01-15 15:15:57.255+00:00 | main | DEBUG | PlatformDependent0 | Java version: 11
2022-01-15 15:15:57.257+00:00 | main | DEBUG | PlatformDependent0 | sun.misc.Unsafe.theUnsafe: available
2022-01-15 15:15:57.258+00:00 | main | DEBUG | PlatformDependent0 | sun.misc.Unsafe.copyMemory: available
2022-01-15 15:15:57.258+00:00 | main | DEBUG | PlatformDependent0 | java.nio.Buffer.address: available
2022-01-15 15:15:57.259+00:00 | main | DEBUG | PlatformDependent0 | direct buffer constructor: available
2022-01-15 15:15:57.260+00:00 | main | DEBUG | PlatformDependent0 | java.nio.Bits.unaligned: available, true
2022-01-15 15:15:57.261+00:00 | main | DEBUG | PlatformDependent0 | jdk.internal.misc.Unsafe.allocateUninitializedArray(int): available
2022-01-15 15:15:57.261+00:00 | main | DEBUG | PlatformDependent0 | java.nio.DirectByteBuffer.<init>(long, int): available
2022-01-15 15:15:57.262+00:00 | main | DEBUG | PlatformDependent | sun.misc.Unsafe: available
2022-01-15 15:15:57.262+00:00 | main | DEBUG | PlatformDependent | maxDirectMemory: 2086666240 bytes (maybe)
2022-01-15 15:15:57.263+00:00 | main | DEBUG | PlatformDependent | -Dio.netty.tmpdir: /tmp (java.io.tmpdir)
2022-01-15 15:15:57.263+00:00 | main | DEBUG | PlatformDependent | -Dio.netty.bitMode: 64 (sun.arch.data.model)
2022-01-15 15:15:57.264+00:00 | main | DEBUG | PlatformDependent | -Dio.netty.maxDirectMemory: 2086666240 bytes
2022-01-15 15:15:57.264+00:00 | main | DEBUG | PlatformDependent | -Dio.netty.uninitializedArrayAllocationThreshold: 1024
2022-01-15 15:15:57.265+00:00 | main | DEBUG | CleanerJava9 | java.nio.ByteBuffer.cleaner(): available
2022-01-15 15:15:57.265+00:00 | main | DEBUG | PlatformDependent | -Dio.netty.noPreferDirect: false
2022-01-15 15:15:57.279+00:00 | main | DEBUG | MultithreadEventLoopGroup | -Dio.netty.eventLoopThreads: 4
2022-01-15 15:15:57.293+00:00 | main | DEBUG | InternalThreadLocalMap | -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024
2022-01-15 15:15:57.293+00:00 | main | DEBUG | InternalThreadLocalMap | -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096
2022-01-15 15:15:57.299+00:00 | main | DEBUG | NioEventLoop | -Dio.netty.noKeySetOptimization: false
2022-01-15 15:15:57.299+00:00 | main | DEBUG | NioEventLoop | -Dio.netty.selectorAutoRebuildThreshold: 512
2022-01-15 15:15:57.306+00:00 | main | DEBUG | PlatformDependent | org.jctools-core.MpscChunkedArrayQueue: available
2022-01-15 15:15:57.310+00:00 | main | TRACE | NioEventLoop | instrumented a special java.util.Set into: sun.nio.ch.EPollSelectorImpl@4beaf6bd
2022-01-15 15:15:57.310+00:00 | main | TRACE | NioEventLoop | instrumented a special java.util.Set into: sun.nio.ch.EPollSelectorImpl@2af69643
2022-01-15 15:15:57.310+00:00 | main | TRACE | NioEventLoop | instrumented a special java.util.Set into: sun.nio.ch.EPollSelectorImpl@587a1cfb
2022-01-15 15:15:57.323+00:00 | main | TRACE | NioEventLoop | instrumented a special java.util.Set into: sun.nio.ch.EPollSelectorImpl@48528634
2022-01-15 15:15:57.324+00:00 | main | TRACE | NioEventLoop | instrumented a special java.util.Set into: sun.nio.ch.EPollSelectorImpl@4760f169
2022-01-15 15:15:57.359+00:00 | main | DEBUG | DefaultDnsServerAddressStreamProvider | Default DNS servers: [/127.0.0.53:53] (sun.net.dns.ResolverConfiguration)
2022-01-15 15:15:57.365+00:00 | main | DEBUG | NetUtil | -Djava.net.preferIPv4Stack: false
2022-01-15 15:15:57.365+00:00 | main | DEBUG | NetUtil | -Djava.net.preferIPv6Addresses: false
2022-01-15 15:15:57.367+00:00 | main | DEBUG | NetUtilInitializations | Loopback interface: lo (lo, 0:0:0:0:0:0:0:1%lo)
2022-01-15 15:15:57.368+00:00 | main | DEBUG | NetUtil | /proc/sys/net/core/somaxconn: 4096
2022-01-15 15:15:57.527+00:00 | main | INFO  | Besu | Static Nodes file = /datadrive/besu/static-nodes.json
2022-01-15 15:15:57.530+00:00 | main | INFO  | StaticNodesParser | StaticNodes file /datadrive/besu/static-nodes.json does not exist, no static connections will be created.
2022-01-15 15:15:57.531+00:00 | main | INFO  | Besu | Connecting to 0 static nodes.
2022-01-15 15:15:57.531+00:00 | main | TRACE | Besu | Static Nodes = []
2022-01-15 15:15:57.533+00:00 | main | INFO  | Besu | Security Module: localfile
2022-01-15 15:15:57.556+00:00 | main | INFO  | DatabaseMetadata | Lookup database metadata file in data directory: /datadrive/besu
2022-01-15 15:15:57.608+00:00 | main | INFO  | RocksDBKeyValueStorageFactory | Existing database detected at /datadrive/besu. Version 1
2022-01-15 15:15:57.902+00:00 | main | INFO  | KeyPairUtil | Loaded public key 0xebf8b78af6e9dd45562dcc5b0639ace8e39159a7d6033ea3681b0b3cf757bb8783ccc35504dd8dd338f34fc89d6fe7429f3a717c1de44ee2fda0132f4cfa341f from /datadrive/besu/key
2022-01-15 15:15:58.012+00:00 | main | INFO  | ProtocolScheduleBuilder | Protocol schedule created with milestones: [London: 0, PreMergeFork: 100]
2022-01-15 15:15:58.027+00:00 | main | INFO  | ProtocolScheduleBuilder | Protocol schedule created with milestones: [London: 0, PreMergeFork: 100]
picocli.CommandLine$ParameterException: Unable to start mining without a coinbase.
        at org.hyperledger.besu.cli.BesuCommand.run(BesuCommand.java:1285)
        at picocli.CommandLine.executeUserObject(CommandLine.java:1939)
        at picocli.CommandLine.access$1300(CommandLine.java:145)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
        at picocli.CommandLine$AbstractParseResultHandler.handleParseResult(CommandLine.java:2172)
        at picocli.CommandLine.parseWithHandlers(CommandLine.java:2559)
        at org.hyperledger.besu.cli.util.ConfigOptionSearchAndRunHandler.handle(ConfigOptionSearchAndRunHandler.java:54)
        at org.hyperledger.besu.cli.util.ConfigOptionSearchAndRunHandler.handle(ConfigOptionSearchAndRunHandler.java:31)
        at picocli.CommandLine$AbstractParseResultHandler.handleParseResult(CommandLine.java:2172)
        at picocli.CommandLine.parseWithHandlers(CommandLine.java:2559)
        at org.hyperledger.besu.cli.BesuCommand.parse(BesuCommand.java:1435)
        at org.hyperledger.besu.cli.BesuCommand.parse(BesuCommand.java:1245)
        at org.hyperledger.besu.Besu.main(Besu.java:50)
Caused by: picocli.CommandLine$ExecutionException: Unable to start mining without a coinbase.
        at org.hyperledger.besu.cli.BesuCommand.buildController(BesuCommand.java:1820)
        at org.hyperledger.besu.cli.BesuCommand.initController(BesuCommand.java:1813)
        at org.hyperledger.besu.cli.BesuCommand.run(BesuCommand.java:1270)
        ... 14 more
Caused by: org.hyperledger.besu.ethereum.blockcreation.CoinbaseNotSetException: Unable to start mining without a coinbase.
        at org.hyperledger.besu.ethereum.blockcreation.PoWMinerExecutor.startAsyncMining(PoWMinerExecutor.java:66)
        at org.hyperledger.besu.ethereum.blockcreation.AbstractMiningCoordinator.startAsyncMiningOperation(AbstractMiningCoordinator.java:157)
        at org.hyperledger.besu.ethereum.blockcreation.AbstractMiningCoordinator.startMiningIfPossible(AbstractMiningCoordinator.java:150)
        at org.hyperledger.besu.ethereum.blockcreation.AbstractMiningCoordinator.start(AbstractMiningCoordinator.java:91)
        at org.hyperledger.besu.controller.TransitionBesuControllerBuilder.lambda$initTransitionWatcher$0(TransitionBesuControllerBuilder.java:142)
        at org.hyperledger.besu.consensus.merge.PostMergeContext.lambda$setIsPostMerge$1(PostMergeContext.java:93)
        at org.hyperledger.besu.util.Subscribers.lambda$forEach$0(Subscribers.java:112)
        at java.base/java.lang.Iterable.forEach(Iterable.java:75)
        at org.hyperledger.besu.util.Subscribers.forEach(Subscribers.java:109)
        at org.hyperledger.besu.consensus.merge.PostMergeContext.setIsPostMerge(PostMergeContext.java:92)
        at java.base/java.util.Optional.ifPresent(Optional.java:183)
        at org.hyperledger.besu.controller.TransitionBesuControllerBuilder.initTransitionWatcher(TransitionBesuControllerBuilder.java:150)
        at org.hyperledger.besu.controller.TransitionBesuControllerBuilder.createMiningCoordinator(TransitionBesuControllerBuilder.java:100)
        at org.hyperledger.besu.controller.BesuControllerBuilder.build(BesuControllerBuilder.java:370)
        at org.hyperledger.besu.controller.TransitionBesuControllerBuilder.build(TransitionBesuControllerBuilder.java:161)
        at org.hyperledger.besu.cli.BesuCommand.buildController(BesuCommand.java:1818)
        ... 16 more

To display full help:
besu [COMMAND] --help
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment