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