/ bin / ak-transactions
ak-transactions
 1  #!/usr/bin/env bash
 2  ###
 3  ### arching-kaos-tools
 4  ### Tools to interact and build an Arching Kaos Infochain
 5  ### Copyright (C) 2021 - 2026  kaotisk
 6  ###
 7  ### This program is free software: you can redistribute it and/or modify
 8  ### it under the terms of the GNU General Public License as published by
 9  ### the Free Software Foundation, either version 3 of the License, or
10  ### (at your option) any later version.
11  ###
12  ### This program is distributed in the hope that it will be useful,
13  ### but WITHOUT ANY WARRANTY; without even the implied warranty of
14  ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  ### GNU General Public License for more details.
16  ###
17  ### You should have received a copy of the GNU General Public License
18  ### along with this program.  If not, see <http://www.gnu.org/licenses/>.
19  ###
20  ##
21  ## ak-transactions <from> <to> <amount>
22  ##
23  fullprogrampath="$(realpath $0)"
24  PROGRAM=$(basename $0)
25  descriptionString="Transactions module"
26  
27  source $AK_LIBDIR/_ak_lib_load
28  _ak_lib_load _ak_log
29  _ak_lib_load _ak_script
30  _ak_lib_load _ak_datetime
31  _ak_lib_load _ak_ipfs
32  _ak_lib_load _ak_gpg
33  _ak_lib_load _ak_zblock
34  
35  function _ak_modules_transactions_main(){
36      _ak_log_info "$FROM_ADDRESS to $TO_ADDRESS value sent: $AMOUNT"
37      echo "Select an address to send from:"
38      select FROM_ADDRESS in $(_ak_gpg_list_secret_keys)
39      do
40          echo $FROM_ADDRESS
41          break
42      done
43      echo "Select an address to send to:"
44      select TO_ADDRESS in $(_ak_gpg_list_keys)
45      do
46          echo $TO_ADDRESS
47          break
48      done
49      total="$(ak get balances | grep $FROM_ADDRESS)"
50      printf 'Enter amount (max : %s):\n' "$total"
51      read -r AMOUNT
52      FEE="$(printf '%s%s%s' "$FROM_ADDRESS" "$TO_ADDRESS" "$AMOUNT" | wc -c)"
53      cat > transaction_file <<EOF
54  $FROM_ADDRESS
55  $TO_ADDRESS
56  $AMOUNT
57  $FEE
58  EOF
59      TRANSACTION_FILE="transaction_file"
60      FILE_IPFS_HASH=$(_ak_ipfs_add $TRANSACTION_FILE)
61  
62      SIGN_FILE=$TRANSACTION_FILE".asc"
63      _ak_gpg_sign_detached $SIGN_FILE $TRANSACTION_FILE
64  
65      FILE_SIGNATURE=$(_ak_ipfs_add $SIGN_FILE)
66  
67      cat > data <<EOF
68  {
69      "timestamp":"$(_ak_datetime_unix)",
70      "input":"$FROM_ADDRESS",
71      "output":"$TO_ADDRESS",
72      "amount":"$AMOUNT",
73      "ipfs":"$FILE_IPFS_HASH",
74      "detach":"$FILE_SIGNATURE"
75  }
76  EOF
77  
78  }
79  
80  #if [ ! -z $3 ];
81  #then
82      PWD="$(pwd)"
83      FROM_ADDRESS="$1"
84      TO_ADDRESS="$2"
85      AMOUNT="$3"
86      _ak_modules_transactions_main
87      cat $PWD/data | jq -M
88      _ak_zblock_pack transaction/add $PWD/data
89  #else _ak_usage
90  #fi