aboutsummaryrefslogtreecommitdiff
path: root/bin/ak-zchain-rebase
blob: e5d9b52838d2a52863d1ebb0a0c75a0046ce9d9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/bin/bash
PROGRAM=$(basename $0)
usage(){
    echo "$PROGRAM - Zchain rebase"
    echo ""
    echo "Description:"
    echo "Backs up your latest block into IPFS filesystem, replaces it with an empty file (GENESIS hardcode) and pushes its IPFS link as your chain's latest block."
    echo ""
    echo "Disclaimer:"
    echo "This program, does NOT delete anything from your IPFS repository, neither denies access to previously created blocks."
    echo ""
    echo "Usage:"
    echo "    $PROGRAM rebase <zblock>"
    exit 0
}
rebase (){
    ZTARGET="$1"
    echo "Reseting ZLATEST to ZTARGET"
    echo $ZTARGET > $AK_ZLATEST
    if [ $? != 0 ]; then exit 1; fi

    echo "Make sure /zarchive folder exists within IPFS FS"
    ak-ipfs-files-mkdir /zarchive
    if [ $? != 0 ]; then echo "Folder already there"; fi

    echo "Archive the previous ZLATEST"
    ak-ipfs-files-cp /zlatest /zarchive/$(date -u +%s)-$(ak-ipfs-files-stat /zlatest | head -n 1)
    if [ $? != 0 ]; then exit 1; fi

    echo "Removing previous /zlatest entry"
    ak-ipfs-files-rm /zlatest
    if [ $? != 0 ]; then exit 1; fi

    echo "Copying rebased ZLATEST"
    CZLATEST="$(cat $AK_ZLATEST)"
    ak-ipfs-files-cp /ipfs/$CZLATEST /zlatest
    if [ $? != 0 ]; then exit 1; fi

    echo "Publishing new (rebased) ZLATEST"
    ak-ipfs-name-publish --key=zchain /ipfs/$(cat $AK_ZLATEST)
    if [ $? != 0 ]; then exit 1; fi

    ak-config publish
    if [ "$?" -ne 0 ]
    then
        logit "ERROR" "Could not publish new configuration"
        exit 1
    fi
    echo "Rebase was successful"
    exit 0
}
if [ ! -z $1 ] ; then
#&& [ ! -z $2 ]
    case $1 in
        rebase) if [ ! -z $2 ]; then rebase $2; else exit 1; fi;;
        rebase-back-one) rebase "`ak-enter -l 2 | jq -r '.[1].zblock'`" ; exit ;;
        * ) usage;;
    esac
else usage
fi