chia.sh 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434
  1. #!/bin/bash
  2. set -e
  3. Version=5.0.0
  4. Gui=Yes #can be Yes No or Only
  5. MadMax=Yes
  6. GigaHorse=Yes
  7. BladeBit=Yes
  8. ChiaPos=Yes
  9. ChiaService=Yes
  10. Miner=Yes
  11. ChiaProxy=Yes
  12. function print_centered {
  13. [[ $# == 0 ]] && return 1
  14. declare -i TERM_COLS="$(tput cols)"
  15. declare -i str_len="${#1}"
  16. [[ $str_len -ge $TERM_COLS ]] && {
  17. echo "$1";
  18. return 0;
  19. }
  20. declare -i filler_len="$(( (TERM_COLS - str_len) / 2 ))"
  21. [[ $# -ge 2 ]] && ch="${2:0:1}" || ch=" "
  22. filler=""
  23. for (( i = 0; i < filler_len; i++ )); do
  24. filler="${filler}${ch}"
  25. done
  26. printf "%s%s%s" "$filler" "$1" "$filler"
  27. [[ $(( (TERM_COLS - str_len) % 2 )) -ne 0 ]] && printf "%s" "${ch}"
  28. printf "\n"
  29. return 0
  30. }
  31. function jumpto
  32. {
  33. label=$1
  34. cmd=$(sed -n "/$label:/{:a;n;p;ba};" $0 | grep -v ':$')
  35. eval "$cmd"
  36. exit
  37. }
  38. function simplify_config {
  39. error_flag=0
  40. Gui=${Gui^^}
  41. ChiaService=${ChiaService^^}
  42. MadMax=${MadMax^^}
  43. GigaHorse=${GigaHorse^^}
  44. BladeBit=${BladeBit^^}
  45. ChiaPos=${ChiaPos^^}
  46. Miner=${Miner^^}
  47. ChiaProxy=${ChiaProxy^^}
  48. if [ $MadMax = "YES" ] || [ $MadMax = "NO" ];then error_flag=0;else error_flag=1;fi
  49. if [ $GigaHorse = "YES" ] || [ $GigaHorse = "NO" ];then error_flag=0;else error_flag=1;fi
  50. if [ $BladeBit = "YES" ] || [ $BladeBit = "NO" ];then error_flag=0;else error_flag=1;fi
  51. if [ $ChiaPos = "YES" ] || [ $ChiaPos = "NO" ];then error_flag=0;else error_flag=1;fi
  52. if [ $ChiaService = "YES" ] || [ $ChiaService = "NO" ];then error_flag=0;else error_flag=1;fi
  53. if [ $Miner = "YES" ] || [ $Miner = "NO" ];then error_flag=0;else error_flag=1;fi
  54. if [ $ChiaProxy = "YES" ] || [ $ChiaProxy = "NO" ];then error_flag=0;else error_flag=1;fi
  55. }
  56. function intro_ {
  57. print_centered "$(tput setaf 10)"
  58. print_centered " ______ __ __ "
  59. print_centered "| | |--.|__|.---.-."
  60. print_centered "| ---| || || _ |"
  61. print_centered "|______|__|__||__||___._|"
  62. echo -n "$(tput sgr0)"
  63. print_centered "Toolkit for Chia v$Version"
  64. echo ""
  65. if [ $error_flag = 1 ]
  66. then
  67. echo -n "$(tput setaf 1 ;tput blink;tput bold)"
  68. print_centered "Config Error !!!"
  69. echo -n "$(tput sgr0)"
  70. exit 0
  71. fi
  72. case $Gui in
  73. YES)
  74. echo -n "$(tput setaf 41)"
  75. print_centered "Blockchain wallet + Gui"
  76. echo -n "$(tput setaf 42)"
  77. print_centered "Chia Plotting Tools"
  78. echo -n "$(tput sgr0)"
  79. ;;
  80. NO)
  81. echo -n "$(tput setaf 11)"
  82. print_centered "Chia Plotting Tools"
  83. echo -n "$(tput sgr0)"
  84. ;;
  85. ONLY)
  86. echo -n "$(tput setaf 41)"
  87. print_centered "Blockchain wallet Only"
  88. echo -n "$(tput sgr0)"
  89. ;;
  90. *)
  91. echo -n "$(tput setaf 1 ;tput blink;tput bold)"
  92. print_centered "Config Error !!!"
  93. echo -n "$(tput sgr0)"
  94. exit 0
  95. ;;
  96. esac
  97. if [ $Gui = "NO" ] || [ $Gui = "YES" ]
  98. then
  99. case $ChiaService in
  100. YES)
  101. echo -n "$(tput setaf 43)"
  102. print_centered "Mining service Enabled"
  103. echo -n "$(tput sgr0)"
  104. ;;
  105. esac
  106. case $ChiaProxy in
  107. YES)
  108. echo -n "$(tput setaf 44)"
  109. print_centered "Hpool x-Proxy Enabled"
  110. echo -n "$(tput sgr0)"
  111. ;;
  112. esac
  113. fi
  114. sleep 2
  115. if ! [ -d /home/wareck/chia ];then mkdir /home/wareck/chia;fi
  116. }
  117. function update_ {
  118. echo -e "$(tput setaf 10)\nUpdate and install packages:$(tput sgr0)"
  119. extend="libgomp1 ocl-icd-opencl-dev libgmp-dev libnuma-dev"
  120. sudo apt-get install python3-venv python3-distutils python3-dev libsodium-dev $extend -y
  121. echo -e "\e[97mDone.\e[0m"
  122. }
  123. function chia_plotter {
  124. echo -e "$(tput setaf 10)\nBuild Chia-Plotter (MadMax4ever) :$(tput sgr0)"
  125. sleep 1
  126. cd /home/wareck/chia/
  127. if [ ! -d chia-plotter ]
  128. then
  129. git clone https://github.com/madMAx43v3r/chia-plotter.git
  130. else
  131. cd /home/wareck/chia/chia-plotter
  132. git pull
  133. fi
  134. cd /home/wareck/chia/chia-plotter
  135. git submodule init
  136. git submodule update
  137. ./make_devel.sh
  138. cd build
  139. cat <<'EOF'>> go.sh
  140. #!/bin/bash
  141. POOL=a99e72c49c5ed39bf793caab9e074a80dd61011a859e975842874aab47b783f9ce84282febe2ca275c0930149b67990a
  142. FARM=8ba5acd276b45fd0f749ce195dcddcf0e63c3bf2e751e9e273faa0125075c36a11f2ee231e7cf74abed2920be97fc373
  143. OUT=/media/Partage/Plots/
  144. ./chia_plot -p $POOL -f $FARM -n 1 -r 6 -u 128 -t /nvme0/plotting/ -2 /nvme0/plotting/ -d $OUT
  145. EOF
  146. chmod +x go.sh
  147. cat <<'EOF'>> nft.sh
  148. #!/bin/bash
  149. POOL=a99e72c49c5ed39bf793caab9e074a80dd61011a859e975842874aab47b783f9ce84282febe2ca275c0930149b67990a
  150. FARM=8ba5acd276b45fd0f749ce195dcddcf0e63c3bf2e751e9e273faa0125075c36a11f2ee231e7cf74abed2920be97fc373
  151. OUT=/media/Partage/Plots-nft/
  152. ./chia_plot -p $POOL -f $FARM -n 1 -r 4 -u 128 -t /nvme0/plotting/ -2 /nvme1/plotting/ -d $OUT
  153. EOF
  154. chmod +x nft.sh
  155. echo -e "\e[97mDone.\e[0m"
  156. }
  157. function bladebit {
  158. echo -e "$(tput setaf 10)\nBuild Bladebit v2 :$(tput sgr0)"
  159. sleep 1
  160. cd /home/wareck/chia
  161. if [ ! -d bladebit ]
  162. then
  163. git clone https://github.com/Chia-Network/bladebit.git
  164. fi
  165. cd /home/wareck/chia/bladebit/
  166. if [ ! -d build ];then mkdir build;fi
  167. cd build
  168. cmake ..
  169. make -j6
  170. cat <<'EOF'>> cuda.sh
  171. #!/bin/bash
  172. ./bladebit_cuda \
  173. -c xch10yjksfwm8s66z32qy35x950608hk8l67vmsur4rwpaanpkd6ks3qhfw5nk \
  174. -f 8ba5acd276b45fd0f749ce195dcddcf0e63c3bf2e751e9e273faa0125075c36a11f2ee231e7cf74abed2920be97fc373 \
  175. diskplot -t1 /nvme0/plotting/ -t2 /nvme1/plotting/ /farm/farm0/Plots/
  176. EOF
  177. cat <<'EOF'>> flex.sh
  178. #!/bin/bash
  179. CRT=xch10yjksfwm8s66z32qy35x950608hk8l67vmsur4rwpaanpkd6ks3qhfw5nk
  180. FRM=8ba5acd276b45fd0f749ce195dcddcf0e63c3bf2e751e9e273faa0125075c36a11f2ee231e7cf74abed2920be97fc373
  181. OUT=/media/Partage/Plots-nft/
  182. ./bladebit -f $FRM -c $CRT diskplot --cache 100G -t1 /nvme1/plotting/ -t2 /nvme1/plotting/ $OUT
  183. EOF
  184. cat <<'EOF'>> cuda_h9.sh
  185. #!/bin/bash
  186. #!/bin/bash
  187. POOL=a99e72c49c5ed39bf793caab9e074a80dd61011a859e975842874aab47b783f9ce84282febe2ca275c0930149b67990a
  188. FARM=8ba5acd276b45fd0f749ce195dcddcf0e63c3bf2e751e9e273faa0125075c36a11f2ee231e7cf74abed2920be97fc373
  189. OUT=/farm/farm4/Plots
  190. ./bladebit_cuda -p $POOL -f $FARM -z 7 cudaplot -d 0 --disk-16 -t1 /nvme0/plotting $OUT
  191. EOF
  192. chmod +x cuda.sh
  193. chmod +x flex.sh
  194. chmod +x cuda_h9.sh
  195. echo -e "\e[97mDone.\e[0m"
  196. }
  197. function gigahorse {
  198. echo -e "$(tput setaf 10)\nMadMax4ever GigaHorse:$(tput sgr0)"
  199. sleep 1
  200. if [ -d /home/wareck/chia/chia-gigahorse ]
  201. then
  202. cd /home/wareck/chia/chia-gigahorse
  203. git pull
  204. else
  205. cd /home/wareck/chia/
  206. git clone https://github.com/madMAx43v3r/chia-gigahorse.git
  207. fi
  208. echo "generate bash files..."
  209. sudo cp ~/chia/chia-gigahorse/plot-sink/linux/x86_64/* /usr/local/bin/
  210. sudo cp ~/chia/chia-gigahorse/cpu-plotter/linux/x86_64/* /usr/local/bin/
  211. cd ~
  212. if [ -f distrib_chia.sh ];then sudo rm distrib_chia.sh;fi
  213. if [ -f /usr/local/bin/distrib_chia.sh ];then sudo rm /usr/local/bin/distrib_chia.sh;fi
  214. cat <<'EOF'>> distrib_chia.sh
  215. #!/bin/bash
  216. echo "IP : $(hostname -I)"
  217. chia_plot_sink -p 1447 /farm/farm0/Plots-nft/ /farm/farm1/Plots-nft/ /farm/farm2/Plots-nft/ /farm/farm3/Plots-nft/ /farm/farm4/Plots-nft/ /Partage/Plots-nft/
  218. EOF
  219. chmod +x distrib_chia.sh
  220. sudo mv distrib_chia.sh /usr/local/bin/
  221. cat <<'EOF'>> ~/go.sh
  222. #!/bin/bash
  223. CRT=xch10yjksfwm8s66z32qy35x950608hk8l67vmsur4rwpaanpkd6ks3qhfw5nk
  224. FRM=8ba5acd276b45fd0f749ce195dcddcf0e63c3bf2e751e9e273faa0125075c36a11f2ee231e7cf74abed2920be97fc373
  225. OUT=@192.168.1.100
  226. ./chia_plot -c $CRT -f $FRM -G -r 6 -z 1447 -C 8 -n -1 -t /nvme0/plotting/ -2 /nvme1/plotting/ -d $OUT
  227. EOF
  228. chmod +x ~/go.sh
  229. cp ~/go.sh ~/chia/chia-gigahorse/cpu-plotter/linux/x86_64/
  230. rm ~/go.sh
  231. echo -e "\e[97mDone.\e[0m"
  232. }
  233. function chiapos {
  234. echo -e "$(tput setaf 10)\nBuild Chia-Pos:$(tput sgr0)"
  235. sleep 1
  236. cd /home/wareck/chia
  237. if [ ! -d /home/wareck/chia/chia-pos ]
  238. then
  239. git clone https://github.com/Chia-Network/chiapos.git chia-pos
  240. cd /home/wareck/chia/chia-pos
  241. else
  242. cd /home/wareck/chia/chia-pos
  243. git pull
  244. fi
  245. if [ ! -d build ]; then mkdir build;fi
  246. cd build
  247. cmake ..
  248. cmake --build . -- -j 6
  249. echo -e "\e[97mDone.\e[0m"
  250. }
  251. function miner_ {
  252. echo -e "$(tput setaf 10)\nChia-Miner (hpool):$(tput sgr0)"
  253. sleep 1
  254. wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/chia-miner.tar.xz -O /home/wareck/Build_Cube/pack/chia-miner.tar.xz
  255. cp /home/wareck/Build_Cube/pack/chia-miner.tar.xz /home/wareck/miners
  256. cd /home/wareck/miners
  257. tar xvfJ chia-miner.tar.xz
  258. rm chia-miner.tar.xz
  259. echo -e "\e[97mDone.\e[0m"
  260. }
  261. function chia_blockchain {
  262. echo -e "$(tput setaf 10)\nBuild Chia-blockchain & Gui :$(tput sgr0)"
  263. sleep 1
  264. cd /home/wareck/chia
  265. if [ ! -d /home/wareck/chia/chia-blockchain ]
  266. then
  267. git clone https://github.com/Chia-Network/chia-blockchain.git -b latest --recurse-submodules
  268. cd chia-blockchain
  269. else
  270. cd chia-blockchain
  271. git pull
  272. fi
  273. sh install.sh
  274. source ./activate
  275. sh install-gui.sh
  276. echo -e "\e[97mDone.\e[0m"
  277. }
  278. function chia_proxy {
  279. echo -e "$(tput setaf 10)\nChia-X-Proxy (Cuda):$(tput sgr0)"
  280. wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/chia-x-proxy.tar.xz -O /home/wareck/Build_Cube/pack/chia-x-proxy.tar.xz
  281. cp /home/wareck/Build_Cube/pack/chia-x-proxy.tar.xz /home/wareck/
  282. cd /home/wareck/chia/
  283. tar xvfJ /home/wareck/chia-x-proxy.tar.xz
  284. rm /home/wareck/chia-x-proxy.tar.xz
  285. sleep 1
  286. cat <<'EOF'>> x-proxy.service
  287. [Unit]
  288. Description=x-proxy h9
  289. After=network.target
  290. StartLimitIntervalSec=500
  291. StartLimitBurst=5
  292. [Service]
  293. #Restart=on-failure
  294. #RestartSec=5s
  295. WorkingDirectory=/home/wareck/chia/x-proxy/
  296. User=wareck
  297. Group=adm
  298. ExecStart=/usr/bin/screen -DmS x-proxy /home/wareck/chia/x-proxy/x-proxy-v1.9.1 -config /home/wareck/chia/x-proxy/config.yaml
  299. ExecStop=/usr/bin/screen -S x-proxy -X quit
  300. LimitNOFILE=999999
  301. [Install]
  302. WantedBy=multi-user.target
  303. EOF
  304. sudo mv x-proxy.service /etc/systemd/system/x-proxy.service
  305. sudo systemctl daemon-reload
  306. sudo systemctl start x-proxy.service
  307. sudo systemctl enable x-proxy.service
  308. echo -e "\e[97mDone.\e[0m"
  309. }
  310. function service_old {
  311. echo -e "$(tput setaf 10)\nInstall chia-miner service (hpool) :$(tput sgr0)"
  312. sleep 1
  313. echo "Generation du fichier /etc/init.d/chia-miner"
  314. cat <<'EOF'>> chia-miner.sh
  315. #!/bin/sh
  316. ### BEGIN INIT INFO
  317. # Provides: chiaminer
  318. # Required-Start: networking
  319. # Default-Start: 3 4 5
  320. # Default-Stop: 0 6
  321. ### END INIT INFO
  322. case "$1" in
  323. start)
  324. if pgrep -x "hpool-miner-chia" > /dev/null
  325. then
  326. sudo killall -9 hpool-miner-chia | true
  327. fi
  328. su wareck -c "screen -dmS chia-miner /home/wareck/miners/chia-miner/hpool-miner-chia -config /home/wareck/miners/chia-miner/config.yaml"
  329. ;;
  330. stop)
  331. if pgrep -x "hpool-miner-chia" > /dev/null
  332. then
  333. sudo killall -9 hpool-miner-chia | true
  334. fi
  335. ;;
  336. restart)
  337. $0 stop
  338. $0 start
  339. ;;
  340. *)
  341. echo "Usage: /etc/init.d/chia-miner {start|restart|stop}"
  342. exit 1
  343. ;;
  344. esac
  345. exit 0
  346. EOF
  347. chmod +x chia-miner.sh
  348. sudo cp chia-miner.sh /etc/init.d/chia-miner
  349. sudo update-rc.d chia-miner defaults
  350. sleep 1
  351. sudo /etc/init.d/chia-miner start
  352. sudo rm chia-miner.sh
  353. echo -e "\e[97mDone.\e[0m"
  354. }
  355. function service_ {
  356. echo -e "$(tput setaf 10)\nInstall chia-miner service (hpool) :$(tput sgr0)"
  357. sleep 1
  358. cat <<'EOF'>> chia-miner.service
  359. [Unit]
  360. Description=HPool miner
  361. After=network.target
  362. StartLimitIntervalSec=500
  363. StartLimitBurst=5
  364. [Service]
  365. #Restart=on-failure
  366. #RestartSec=5s
  367. WorkingDirectory=/home/wareck/miners/chia-miner/
  368. User=wareck
  369. Group=adm
  370. ExecStart=/usr/bin/screen -DmS hpool-miner /home/wareck/miners/chia-miner/hpool-miner-chia -config /home/wareck/miners/chia-miner/config.yaml
  371. ExecStop=/usr/bin/screen -S hpool-miner -X quit
  372. LimitNOFILE=999999
  373. [Install]
  374. WantedBy=multi-user.target
  375. EOF
  376. sudo mv chia-miner.service /etc/systemd/system/hpool-miner.service
  377. sudo systemctl daemon-reload
  378. sudo systemctl start hpool-miner.service
  379. sudo systemctl enable hpool-miner.service
  380. echo -e "\e[97mDone.\e[0m"
  381. }
  382. function cmake_ {
  383. if [ $BladeBit = "YES" ]
  384. then
  385. pids=""
  386. /home/wareck/Build_Cube/options/tools/_cmake.sh & pids="$pids $!"
  387. wait $pids
  388. fi
  389. }
  390. simplify_config
  391. intro_
  392. update_
  393. cmake_
  394. if [ $GigaHorse = "YES" ];then gigahorse;fi
  395. if [ $MadMax = "YES" ];then chia_plotter;fi
  396. if [ $BladeBit = "YES" ];then bladebit;fi
  397. if [ $ChiaPos = "YES" ];then chiapos;fi
  398. if [ $ChiaService = "YES" ];then service_;fi
  399. if [ $Miner = "YES" ];then miner_;fi
  400. if [ $ChiaProxy = "YES" ]; then chia_proxy;fi
  401. case $Gui in
  402. YES|ONLY)
  403. chia_blockchain
  404. ;;
  405. *)
  406. ;;
  407. esac
  408. echo -e "\n\e[97mEnd of process...\e[0m"