Skip to content

Instantly share code, notes, and snippets.

@usmansaleem
Last active June 13, 2023 00:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save usmansaleem/650813a81c41298e6b6f45137ef133cd to your computer and use it in GitHub Desktop.
Save usmansaleem/650813a81c41298e6b6f45137ef133cd to your computer and use it in GitHub Desktop.
Compile jblst on Raspbian OS 32 bit (to be used by Web3Signer)

Update apt cache

sudo apt-get update && sudo apt-get -y upgrade

Install dependencies

sudo apt-get install -y git autoconf libpcre3 libpcre3-dev bison flex gcc make gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf

Install swig4

curl -L -O https://github.com/swig/swig/archive/v4.0.2.tar.gz
tar -xzvf v4.0.2.tar.gz
cd swig-4.0.2/
sh autogen.sh
./configure
make
sudo make install
cd ~

Checkout jblst

git clone https://github.com/ConsenSys/jblst
cd jblst
git submodule update --init --recursive

Build Portable jblst

cd blst/bindings/java
../../build.sh -D__BLST_PORTABLE__
./build.sh
mv supranational/blst/Linux/* portable/arm
rm -rf supranational/blst/Linux/*
mv portable/* supranational/blst/Linux/


SRCDIR="../../../src/main/java/supranational/blst"
RESOURCEDIR="../../../src/main/resources/supranational/blst"
mkdir -p $SRCDIR $RESOURCEDIR
cp supranational/blst/*.java $SRCDIR
cp -r supranational/blst/Linux $RESOURCEDIR
cd ~/jblst

./gradlew --no-daemon --parallel build

Verify the output

unzip -l ./build/libs/jblst-0.3.10.jar


Archive:  ./build/libs/jblst-0.3.10.jar
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2023-06-08 16:19   META-INF/
       25  2023-06-08 16:19   META-INF/MANIFEST.MF
        0  2023-06-08 16:19   supranational/
        0  2023-06-08 16:19   supranational/blst/
     2853  2023-06-08 16:19   supranational/blst/BLST_ERROR.class
     3268  2023-06-08 16:19   supranational/blst/P1_Affine.class
     4666  2023-06-08 16:19   supranational/blst/Pairing.class
     3220  2023-06-08 16:19   supranational/blst/PT.class
     1123  2023-06-08 16:19   supranational/blst/blst.class
     3268  2023-06-08 16:19   supranational/blst/P2_Affine.class
      490  2023-06-08 16:19   supranational/blst/BLST_ERROR$SwigNext.class
     7807  2023-06-08 16:19   supranational/blst/blstJNI.class
     4929  2023-06-08 16:19   supranational/blst/P1.class
     2360  2023-06-08 16:19   supranational/blst/Scalar.class
     4929  2023-06-08 16:19   supranational/blst/P2.class
     3036  2023-06-08 16:19   supranational/blst/SecretKey.class
        0  2023-06-08 16:19   supranational/blst/Linux/
        0  2023-06-08 16:19   supranational/blst/Linux/arm/
   232084  2023-06-08 16:19   supranational/blst/Linux/arm/libblst.so
---------                     -------
   274058                     19 files

Replace existing jblst jar file in Web3Signer (version 23.3.1)

cd ~
mv ./web3signer-23.3.1/lib/jblst-0.3.8.jar .
cp ./jblst/build/libs/jblst-0.3.10.jar ./web3signer-23.3.1/lib/jblst-0.3.8.jar
ls ./web3signer-23.3.1/lib/jblst*

Start Web3Signer

2023-06-08 16:38:04.558+10:00 | main | INFO  | Web3SignerApp | Web3Signer has started with args --config-file,/home/usman/config/config.yaml,eth2
2023-06-08 16:38:04.714+10:00 | main | INFO  | Web3SignerApp | Version = web3signer/v23.3.1/linux-arm_32/zulu-java-11
2023-06-08 16:38:11.209+10:00 | main | INFO  | Eth2SubCommand | Network: mainnet
                                     <snip>
2023-06-08 16:38:12.787+10:00 | ForkJoinPool-1-worker-3 | INFO  | SignerLoader | Parsing configuration metadata files
2023-06-08 16:38:13.279+10:00 | ForkJoinPool-1-worker-3 | INFO  | teku-status-log | Using portable BLST library.
2023-06-08 16:38:13.347+10:00 | ForkJoinPool-1-worker-3 | INFO  | BLS | BLS: loaded BLST library
                                     <snip>
2023-06-08 16:38:13.412+10:00 | pool-2-thread-1 | INFO  | DefaultArtifactSignerProvider | Total signers (keys) currently loaded in memory: 1
2023-06-08 16:38:17.541+10:00 | main | INFO  | Runner | Web3Signer has started with TLS disabled, and ready to handle signing requests on 0.0.0.0:9000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment