The core protocol of WoopChain
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
woop/scripts/snapdb_checker.sh

71 lines
1.2 KiB

#!/usr/bin/env bash
set -e
declare -a DBHashList
DBHashList=(
[22816574]=f5894991e83cff54b215cda93f18bc813bb9bf9a45643c8751f09891aad1f091
)
DB_FILES="CURRENT MANIFEST* *.log *.ldb"
function dbFilesHash() {
sha256sum $DB_FILES
}
function dbRootHash() {
echo -ne "$1" | tr -s [:space:] : | sha256sum | cut -d " " -f 1
}
function checkRootHash() {
rootHash=$1
for height in "${!DBHashList[@]}"
do
dbhash=${DBHashList[$height]}
if [ $dbhash == $rootHash ];then
echo "Success! The hash matches the height $height."
exit 0
fi
done
echo "check failed!" >&2
exit 1
}
print_usage() {
progname="${0##*/}"
cat <<- ENDEND
usage: ${progname} COMMAND DBDIR
The COMMAND are:
hash calculate root hash for snapdb
check verify root hash of snpadb
DBDIR is path of db
Ex:
${progname} hash ./harmony_db_0
${progname} check ./harmony_db_0
ENDEND
}
CMD=$1
DBDIR=$2
if [ -z $DBDIR ];then
print_usage
exit 1
fi
cd $DBDIR
case "$CMD" in
check)
rootHash=`dbRootHash "$(dbFilesHash)"`
checkRootHash $rootHash
;;
hash)
dbRootHash "$(dbFilesHash)"
;;
*)
print_usage
;;
esac