├── .github └── FUNDING.yml ├── DONATE.md ├── LICENSE ├── README.md ├── build-app.md └── files ├── README.md ├── package.json ├── pre-build-arm64.sh └── pre-build-armv7l.sh /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: 'https://github.com/Martin8617/Defi-Wallet-for-Raspberry-Pi/blob/main/DONATE.md' # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /DONATE.md: -------------------------------------------------------------------------------- 1 | ## Donation 2 | 3 | Your welcome to support my work by paying me a coffee. 4 | 5 | Every cup of coffee is appreciated and drunk gratefully. 6 | 7 | ![image](https://github.com/Martin8617/HowTo/blob/main/Donation-BTC.png) |![image](https://github.com/Martin8617/HowTo/blob/main/Donation-DFI-2.png) 8 | -------------------------------------------------------------------------|------------------------------------------------------------------------- 9 | BTC: `15yJCifMKWQ8NiS5tA4pa2GJyBCKKGNXuj` | DFI: `df1qmsk539stfcrr395rpzmplrh9j0wekpw5qd5qv9` 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 DeFiChain Foundation 4 | Copyright (c) 2021 DeFi Blockchain Contributors 5 | Copyright (c) 2021 DeFi Wallet Contributors 6 | Copyright (c) 2021 Martin8617 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | SOFTWARE. 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ![image](https://user-images.githubusercontent.com/79512509/135573091-5b12a44c-3654-459e-964b-0429d772763a.png) Defi Wallet for Raspberry Pi 2 | 3 | The official DeFiChain AppImage release of the Defi Wallet for Linux will not work for the Raspberrys. So I have made for myself a compiled version of the Defi Wallet for my Raspberry Pi 5 8GB with official Raspberry Pi OS (64-Bit). This so called `arm8`, `arm64` respective `aarch64` version is different to other Linux `x86_64` distributions. 4 | 5 | The compiled Raspberry Pi AppImage bases on the DeFiChain original source code. No code was modyfied and was ~100% taken from the DeFiChain repository - ok, the npm workspace file package.json includes now the build for the arm-processors😉 6 | 7 | > Note: I compiled the node and wallet on my Raspberry Pi with Raspberry OS bookworm (Debian v12). I got the feedback that you therefore have to upgrade your Raspberry to the same version as mine. I recommend to use the desktop wallet on a Raspberry Pi 5 only. 8 | 9 | ## Documentation 10 | 11 | - [DeFiChain.com](https://defichain.com/) 12 | - [DeFiCh/app](https://github.com/DeFiCh/app) 13 | - [Build from Scratch](https://github.com/Martin8617/Defi-Wallet-for-Raspberry-Pi/blob/main/build-app.md) 14 | 15 | 16 | ## DeFi Wallet App 17 | 18 | Use DeFi Wallet to interact with DeFiChain. It is a wallet for \$DFI, wrapped BTC, ETH, USDT. Liquidity mine, use the DEX, create masternodes, and more. 19 | 20 | ![Defi-Wallet-02](https://user-images.githubusercontent.com/79512509/179745384-211f408b-8476-4254-bb34-2798e49ec7d7.png) 21 | 22 | There are actually 2 different ways `(i. or ii.)` to set up a Defi Wallet (Desktop App including DeFi Node), however don't mix up! You have to decide for one of the different ways. Because you are here, I guess you have decided to use my AppImage😉: 23 | 24 | - Setup the Raspberry Pi with the offical [Raspberry Pi OS](https://www.raspberrypi.org/software/). Next you have to install the Defi Wallet on your Raspberry Pi: 25 | 1) Using the AppImage from [here (from the release page)](https://github.com/Martin8617/Defi-Wallet-for-Raspberry-Pi/releases). 26 | 2) Using the Script from [DefiNode](https://github.com/DefiNode/DeFiNode/blob/main/README.md#download-script-and-execution). Follow the steps as descripted and build your own Defi Wallet. 27 | 28 | 29 | ## Howto Start 30 | 31 | - You [download the desktop app](https://github.com/Martin8617/Defi-Wallet-for-Raspberry-Pi/releases) for your Raspberry Pi. 32 | - You can check for official DeFiChain [releases](https://github.com/DeFiCh/app/releases) for latest downloadable installers for Windows, Mac and Linux, however they have no release for the Raspberry - that's why you are here. 33 | 34 | After download the AppImage, save the file where you want (e.g. /home/user/desktop/), mark the file as executable (right-klick the icon, choose preferences and mark as executable) and run the AppImage - that's all..., wait one new thing you have to consider: 35 | 36 | ### Install dependencies for sandbox 37 | AppImages based on Electron require the kernel to be configured in a certain way to allow for its sandboxing to work as intended. Many distributions come with this configured out of the box, but not Raspberry OS. Specially the new Raspberry OS Bullseye does not allow to run appimages. This issue is fixed by installing: 38 | ``` 39 | sudo apt-get install flatpak 40 | ``` 41 | 42 | After doing the above, the Defi Wallet will initiate and guide you. Further information is available at the [DeFiChain-Wiki](https://defichain-wiki.com/wiki/DeFi_Wallet). 43 | 44 | 45 | ## Howto Continue 46 | 47 | ### Buy Hardware 48 | On [DefiNode](https://github.com/DefiNode/DeFiNode) you find a shopping list for the hardware of a Raspberry Pi node as well as a 3D program with DeFiChain logo. A good installation guide of the setup of a Raspberry Pi you can find there as well. 49 | Watch out [DeFiNode Druckservice](https://www.gabrielkunzer.com/definode), there you can order your own DEFI case. 50 | 51 | ### Run your own Masternode 52 | Just to remember, the Defi Wallet includes a running fullnode so called "Defi Node". On top you can setup the fullnode as a masternode. 53 | The [DefiChain-Wiki](https://defichain-wiki.com/wiki/Masternode_installation_extended) tells you the steps to setup a masternode and the guys from [mydeficha.in](https://mydeficha.in) will serves you with operating your own masternode. 54 | 55 | 56 | ## Licenses 57 | By using `Defi-Wallet for Raspberry Pi` (this repo), you (the user) agree to be bound by [the terms of this license](LICENSE). 58 | 59 | Last updated August 14, 2021 60 | -------------------------------------------------------------------------------- /build-app.md: -------------------------------------------------------------------------------- 1 | # Build DeFi Wallet on Raspberry Pi 4B with Raspberry OS 32-Bit or 64-Bit 2 | 3 | 4 | ## Documentation 5 | - DefiCh/app (https://github.com/WavesHQ/app) 6 | - DefiCh/jellyfish (https://github.com/DeFiCh/jellyfish) 7 | - Nodejs (https://github.com/nodesource/distributions/blob/master/README.md#debinstall) 8 | - Workspaces (https://docs.npmjs.com/cli/v7/using-npm/workspaces) 9 | - Electron (https://www.beekeeperstudio.io/blog/electron-apps-for-arm-and-raspberry-pi) 10 | - GNU Compiler Collection (GCC) Command Options (https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html) 11 | - AppImage Troubleshooting (https://docs.appimage.org/user-guide/troubleshooting/index.html#ref-ug-troubleshooting) 12 | - Defi Node 32-bit (https://github.com/Martin8617/Defi-Node-for-Raspberry-Pi/blob/main/build-ain-armv7l.md) 13 | - Defi Node 64-bit (https://github.com/Martin8617/Defi-Node-for-Raspberry-Pi/blob/main/build-ain-arm64.md) 14 | 15 | ## Source Code 16 | Download the latest source code from DefiCh/app and extract them to your `/home/user/` directory (eg. /home/pi/): 17 | - [Source code (tar.gz)](https://github.com/WavesHQ/app/releases) 18 | 19 | 20 | ## Build app-3.x.x 21 | 22 | ### Install dependencies for sandbox 23 | AppImages based on Electron require the kernel to be configured in a certain way to allow for its sandboxing to work as intended. Many distributions come with this configured out of the box, but not Raspberry OS. Specially the new Raspberry OS Bullseye does not allow to run appimages. This issue is fixed by installing: 24 | ``` 25 | sudo apt-get install flatpak 26 | ``` 27 | 28 | ### Install dependencies for node 29 | Once installed, the node and npm commands are available for use and will remain updated for the channel you selected: 30 | ``` 31 | curl -fsSL https://deb.nodesource.com/setup_19.x | sudo -E bash - 32 | sudo apt-get update 33 | sudo apt-get install -y nodejs 34 | ``` 35 | Check if dependencies are installed as requested by nodejs installation: 36 | ``` 37 | sudo apt-get install gcc g++ make 38 | ``` 39 | You need `node v19`, and `npm v8` for this project, it's required to set up the npm workspaces. So you have to upgrade npm: 40 | ``` 41 | sudo npm install -g npm@latest 42 | ``` 43 | 44 | ### Setup the required binary 45 | Copy respective replace the [files](https://github.com/Martin8617/Defi-Wallet-for-Raspberry-Pi/tree/main/files) into `home/pi/app-3.x.x` (replace "x" by actual version): 46 | ``` 47 | pre-build-armv7l.sh 48 | pre-build-arm64.sh 49 | package.json 50 | ``` 51 | > **NOTE**: The files `pre-build-armv7l.sh` and `pre-build-arm64.sh` will download [my Defi Node from my repositories](https://github.com/Martin8617/Defi-Node-for-Raspberry-Pi/releases) and copy it into your app directory. If you use your own build Defi Node you have to replace the download link in the files with your directory. 52 | 53 | 54 | ### To build the app using arm platform 55 | Change to your app directory `cd /home/pi/app-3.x.x` and initiate the sricpt to perform by: 56 | ``` 57 | npm run init --legacy-peer-deps 58 | ``` 59 | 60 | > **NOTE**: Warnings occures! The Raspberry OS 32-Bit works, the 64-Bit version too - when they run through... To be honest, the longer the more problems I have to compile the Defi-Wallet. Outdated node modules make me despair in the 64-bit version. If `npm run init` doesn't work you can use `npm run init --legacy-peer-deps` or `npm run init --force`. Anyway I recommend `npm cache clean --force` for every new run... 61 | 62 | 63 | ### Build app 64 | And finally: 65 | - for 32-Bit OS run `npm run build:armv7l` 66 | - for 64-Bit OS run `npm run build:arm64` 67 | -------------------------------------------------------------------------------- /files/README.md: -------------------------------------------------------------------------------- 1 | ### To do while building the app 2 | 3 | Please follow [Build from Srcatch](https://github.com/Martin8617/Defi-Wallet-for-Raspberry-Pi/blob/main/build-app.md) step by step. 4 | 5 | 6 | 1) Copy `pre-build-armv7l.sh` and `pre-build-arm64.sh` into /home/pi/app-2.x.x/ (`app-2.x.x` means the folder with the latest version) 7 | 2) Check ain version and app version in /home/pi/app-2.x.x/package.json 8 | 3) Add the 4 line to `package.json`: 9 | 10 | ``` 11 | "pre:build:armv7l": "sh pre-build-armv7l.sh $npm_package_config_ainVersion", 12 | "pre:build:arm64": "sh pre-build-arm64.sh $npm_package_config_ainVersion", 13 | "build:armv7l": "npm run pre:build:armv7l && npm run build:electron && electron-builder --linux --armv7l -p never", 14 | "build:arm64": "npm run pre:build:arm64 && npm run build:electron && electron-builder --linux --arm64 -p never", 15 | ``` 16 | 4) Save modified `package.json` in /home/pi/app-2.x.x/package.json 17 | 18 | -------------------------------------------------------------------------------- /files/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "defi-wallet", 3 | "version": "3.2.9", 4 | "description": "DeFi Wallet", 5 | "main": "./electron-app/build/electron-app/index.js", 6 | "author": { 7 | "name": "DeFiChain Foundation", 8 | "email": "engineering@defichain.com", 9 | "url": "https://defichain.com/" 10 | }, 11 | "homepage": "https://github.com/Martin8617/Defi-Wallet-for-Raspberry-Pi", 12 | "publicPath": "./", 13 | "config": { 14 | "ainVersion": "3.2.7" 15 | }, 16 | "scripts": { 17 | "init": "npm ci --force && cd webapp && npm run init", 18 | "transpile": "tsc --p tsconfig.json && tspr --tsConfig tsconfig.json", 19 | "transpile:prod": "tsc --p tsconfig.production.json && tspr --tsConfig tsconfig.json", 20 | "watch": "tsc -w", 21 | "start": "npm run init && npm run start:dev", 22 | "start:dev": "concurrently -p \"[{time} - {name}]\" -n \"ReactApp,Electron\" -c \"bgMagenta.black.bold,bgCyan.black.bold\" -t \"hh:mm:ss a\" \"npm run start:react\" \"npm run start:electron\"", 23 | "start:react": "cd webapp && npm run start:dev", 24 | "start:electron": "node ./scripts/electron", 25 | "start:electron-url": "export ELECTRON_START_URL=http://localhost:5001 && electron --inspect .", 26 | "electron": "npm run transpile && cross-env NODE_ENV=development electron --inspect . -d true", 27 | "build:react": "cd webapp && npm run build:react", 28 | "prebuild": "node ./scripts/prebuild", 29 | "pre:build:linux": "node ./scripts/prebuild linux", 30 | "pre:build:mac": "node ./scripts/prebuild mac", 31 | "pre:build:win": "node ./scripts/prebuild win", 32 | "pre:build:armv7l": "sh pre-build-armv7l.sh $npm_package_config_ainVersion", 33 | "pre:build:arm64": "sh pre-build-arm64.sh $npm_package_config_ainVersion", 34 | "build:armv7l": "npm run pre:build:armv7l && npm run build:electron && electron-builder --linux --armv7l -p never", 35 | "build:arm64": "npm run pre:build:arm64 && npm run build:electron && electron-builder --linux --arm64 -p never", 36 | "build:electron": "npm run build:react && npm run transpile:prod && npm run set_env:prod", 37 | "build": "npm run build:electron && electron-builder", 38 | "build:all": "npm run build:electron && electron-builder -mwl", 39 | "build:linux": "npm run pre:build:linux && npm run build:electron && electron-builder --linux -p never", 40 | "build:mac": "npm run pre:build:mac && npm run build:electron && electron-builder --mac -p never", 41 | "build:win": "npm run pre:build:win && npm run build:electron && electron-builder --win -p never", 42 | "pack": "npm run build:electron && electron-builder --dir", 43 | "postinstall": "electron-builder install-app-deps", 44 | "publish": "npm run build:react && npm run transpile:prod && npm run set_env:prod && electron-builder build -p always", 45 | "test:react": "cd webapp/ && npm run test", 46 | "test:react:snapshot": "cd webapp/ && npm run test:snapshot:update", 47 | "test": "echo \"Error: no test specified\" && exit 1", 48 | "set_env:prod": "cross-env NODE_ENV=production", 49 | "test:jem": "cd webapp/ && jest --coverage" 50 | }, 51 | "keywords": [], 52 | "license": "ISC", 53 | "dependencies": { 54 | "7zip-bin": "5.1.1", 55 | "async": "3.2.3", 56 | "auto-launch": "^5.0.5", 57 | "axios": "^0.26.1", 58 | "base-64": "^1.0.0", 59 | "bignumber.js": "^9.0.2", 60 | "bip32": "^2.0.6", 61 | "bip39": "^3.0.4", 62 | "bitcoinjs-lib": "^5.2.0", 63 | "commander": "^8.3.0", 64 | "crypto-js": "^4.1.1", 65 | "electron-debug": "^3.2.0", 66 | "electron-log": "^4.4.8", 67 | "electron-progressbar": "^2.0.1", 68 | "electron-updater": "5.3.0", 69 | "foreman": "^3.0.1", 70 | "glob": "^7.2.0", 71 | "http-status-codes": "^2.2.0", 72 | "ini": "^2.0.0", 73 | "lodash": "^4.17.21", 74 | "loglevel": "^1.8.0", 75 | "node-disk-info": "1.3.0", 76 | "os": "^0.1.2", 77 | "os-name": "4.0.0", 78 | "ps-node": "^0.1.6", 79 | "random-binary": "^1.0.3", 80 | "random-string": "^0.2.0", 81 | "semver": "7.3.5", 82 | "uifx": "^2.0.7", 83 | "utf8": "^3.0.0" 84 | }, 85 | "devDependencies": { 86 | "@babel/preset-typescript": "^7.16.7", 87 | "@electron/typescript-definitions": "^8.10.0", 88 | "@types/auto-launch": "^5.0.2", 89 | "@types/base-64": "^1.0.0", 90 | "@types/crypto-js": "^4.1.1", 91 | "@types/ini": "^1.3.31", 92 | "@types/node": "16.11.4", 93 | "@types/random-string": "0.0.28", 94 | "@types/semver": "7.3.9", 95 | "@types/utf8": "^3.0.1", 96 | "@typescript-eslint/eslint-plugin": "^5.17.0", 97 | "@typescript-eslint/parser": "^5.17.0", 98 | "@uqt/ts-path-replace": "1.1.1", 99 | "babel-preset-env": "^1.7.0", 100 | "concurrently": "7.6.0", 101 | "cross-env": "7.0.3", 102 | "decompress": "^4.2.1", 103 | "electron": "21.3.1", 104 | "electron-builder": "23.6.0", 105 | "electron-devtools-installer": "^3.2.0", 106 | "electron-notarize": "1.2.2", 107 | "eslint": "^8.12.0", 108 | "file-loader": "^6.2.0", 109 | "husky": "^4.3.8", 110 | "install": "^0.13.0", 111 | "jest": "^27.5.1", 112 | "lint-staged": "^12.3.7", 113 | "nodejs-file-downloader": "^4.9.3", 114 | "prettier": "^2.6.1", 115 | "pretty-quick": "^3.1.3", 116 | "typescript": "^4.6.3" 117 | }, 118 | "build": { 119 | "productName": "DeFi-Wallet", 120 | "appId": "com.defichain.DeFiWallet", 121 | "copyright": "Copyright © 2020-2022 ${author}", 122 | "asar": true, 123 | "afterSign": "electron-app/assets/notarize.js", 124 | "files": [ 125 | "./electron-app/build", 126 | { 127 | "from": "./webapp/build/release/", 128 | "to": "./webapp", 129 | "filter": [ 130 | "**/*" 131 | ] 132 | } 133 | ], 134 | "extraResources": [ 135 | { 136 | "from": "./bin", 137 | "to": "./bin", 138 | "filter": [ 139 | "**/*" 140 | ] 141 | }, 142 | { 143 | "from": "./DO_NOT_SAVE_WALLETS_HERE", 144 | "to": "../DO_NOT_SAVE_WALLETS_HERE", 145 | "filter": [ 146 | "**/*" 147 | ] 148 | } 149 | ], 150 | "icon": "electron-app/assets/icon/icon-512.png", 151 | "dmg": { 152 | "sign": false, 153 | "icon": "electron-app/assets/icon/mac/app.icns", 154 | "contents": [ 155 | { 156 | "x": 40, 157 | "y": 150 158 | }, 159 | { 160 | "x": 350, 161 | "y": 150, 162 | "type": "link", 163 | "path": "/Applications" 164 | } 165 | ] 166 | }, 167 | "linux": { 168 | "icon": "electron-app/assets/icon/linux/512x512.png", 169 | "target": [ 170 | "AppImage" 171 | ] 172 | }, 173 | "win": { 174 | "target": "NSIS" 175 | }, 176 | "mac": { 177 | "category": "public.app-category.finance", 178 | "target": [ 179 | "dmg" 180 | ], 181 | "type": "distribution", 182 | "hardenedRuntime": true, 183 | "entitlements": "electron-app/assets/entitlements.mac.plist", 184 | "entitlementsInherit": "electron-app/assets/entitlements.mac.plist", 185 | "gatekeeperAssess": false 186 | }, 187 | "nsis": { 188 | "allowToChangeInstallationDirectory": true, 189 | "oneClick": false 190 | }, 191 | "publish": { 192 | "provider": "github", 193 | "repo": "Defi-Wallet-for-Raspberry-Pi", 194 | "owner": "Martin8617", 195 | "releaseType": "prerelease" 196 | } 197 | }, 198 | "lint-staged": { 199 | "webapp/**/*.ts": "npm run lint:webapp", 200 | "webapp/**/*.tsx": "npm run lint:webapp", 201 | "electron-app/**/*.ts": "npm run lint", 202 | "electron-app/**/*.tsx": "npm run lint" 203 | }, 204 | "husky": { 205 | "hooks": { 206 | "pre-commit": "pretty-quick --staged" 207 | } 208 | }, 209 | "engines": { 210 | "node": ">=15" 211 | } 212 | } 213 | -------------------------------------------------------------------------------- /files/pre-build-arm64.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #!/usr/bin/env fish 3 | ainVersion=$1 4 | url="https://github.com/Martin8617/Defi-Node-for-Raspberry-Pi/releases/download/v${ainVersion}/defichain-${ainVersion}-arm64-raspi.tar.gz" 5 | outfile="defichain-${ainVersion}-arm64-raspi.tar.gz"; 6 | mkdir -p bin 7 | cd bin && rm -rf win mac linux 8 | mkdir linux 9 | cd .. 10 | mkdir -p temp 11 | cd temp && rm -rf linux 12 | mkdir linux && cd linux 13 | wget "${url}" 14 | tar -xvf "${outfile}" 15 | cp "defichain-${ainVersion}/bin/defid" . 16 | cd ../.. && cp temp/linux/defid bin/linux/defid 17 | rm -rf temp/ 18 | chmod 0777 bin/linux/defid 19 | -------------------------------------------------------------------------------- /files/pre-build-armv7l.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #!/usr/bin/env fish 3 | ainVersion=$1 4 | url="https://github.com/Martin8617/Defi-Node-for-Raspberry-Pi/releases/download/v${ainVersion}/defichain-${ainVersion}-armv7l-raspi.tar.gz" 5 | outfile="defichain-${ainVersion}-armv7l-raspi.tar.gz"; 6 | mkdir -p bin 7 | cd bin && rm -rf win mac linux 8 | mkdir linux 9 | cd .. 10 | mkdir -p temp 11 | cd temp && rm -rf linux 12 | mkdir linux && cd linux 13 | wget "${url}" 14 | tar -xvf "${outfile}" 15 | cp "defichain-${ainVersion}/bin/defid" . 16 | cd ../.. && cp temp/linux/defid bin/linux/defid 17 | rm -rf temp/ 18 | chmod 0777 bin/linux/defid 19 | --------------------------------------------------------------------------------