diff --git a/.gitmodules b/.gitmodules index 7b43926fc..fa821fc94 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "gui/EasyDEX-GUI"] path = gui/EasyDEX-GUI - url = https://github.com/SuperNETorg/EasyDEX-GUI.git + url = https://github.com/KomodoPlatform/EasyDEX-GUI.git diff --git a/AgamaApp-windows.md b/AgamaApp-windows.md deleted file mode 100644 index b5c3a2113..000000000 --- a/AgamaApp-windows.md +++ /dev/null @@ -1,12 +0,0 @@ -# Agama application build summary is here: - -Platform: windows - -Version: 0.2.0.1a-beta - -Date: Mon Jun 12 11:57:21 CEST 2017 - - -Download link: -* [https://f001.backblazeb2.com/file/supernet/files/AgamaApp-0.2.0.1a-beta-windows-installer.zip](https://f001.backblazeb2.com/file/supernet/files/AgamaApp-0.2.0.1a-beta-windows-installer.zip) -* [checksum](https://f001.backblazeb2.com/file/supernet/files/AgamaApp-0.2.0.1a-beta-windows.checksum) diff --git a/README.md b/README.md index 0e587bb9f..9393c1b08 100644 --- a/README.md +++ b/README.md @@ -1,72 +1,102 @@ # Agama Desktop App Desktop App for SuperNET DAPPs -#### For Developers -You must have `node.js` and `npm` installed on your machine. - -Clone Agama Desktop App with EasyDEX-GUI submodule -```shell -1) git clone https://github.com/miketout/agama --recursive --branch pkg_automation_electrum --single-branch -with this command you git clone agama - but explicitly just the pkg_automation_electrum branch (therefore --single-branch) which we also use for the release packages. -2) cd agama && cd gui/EasyDEX-GUI/ -3) npm install && npm install webpack -4) ./binary_artifacts.sh -5) npm start in project root folder -6) cd gui/EasyDEX-GUI/react/src -7) npm start -8) toggle dev and debug options in settings -9) restart the app -10) sync komodod and/or asset chains - -You are ready to dev -``` +#### For Ubuntu/Mint Developers +You must have `node.js` and `npm` installed on your machine, and not the older version that you get from apt-get install. Get it like this: +node 9.x: +curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash - +sudo apt-get install -y nodejs + +Check versions: +nodejs --version +v9.11.1 + +npm --version +5.6.0 + +Other essential dependencies: +sudo apt-get install -y build-essential + +1) Clone Agama Desktop App with EasyDEX-GUI submodule + ```shell + git clone https://github.com/miketout/agama --recursive --branch pkg_automation_electrum --single-branch + ``` + +2) get binary artifacts + ```shell + cd agama + ./binary_artifacts.sh + ``` + +3) install the electron packager and prebuilt + ```shell + npm install electron-packager -g + npm install electron-prebuilt -g + ``` + +4) Recursive npm installs + ```shell + cd gui/EasyDEX-GUI/ + npm install && npm install webpack webpack-dashboard + cd react + npm install + cd src + npm start + ``` + Brings up the dashboard and loads the react app using localhost:3000 + +5) Prepare the purse - need another shell if the last one is still running the prior step's npm start + ```shell + cd agama/gui/EasyDEX-GUI/react + npm run build + cd ../../.. + npm install + npm start + ``` + The wallet should come up at this point + +6) toggle dev and debug options in settings, then restart the wallet +7) Choose komodo coin in native mode and start it. This syncs komodod which takes hours. +8) You are ready to dev ### Important dev notes +Windows: needs Node, NPM, python #### Sockets.io In dev mode backend is configured to send/receive messages from/to http://127.0.0.1:3000 address. If you open it as http://localhost:3000 sockets server will reject any messages. #### Coin daemon binaries +Truncated instructions, we did this under step 3 above. Run binary_artifacts.sh from under agama folder you cloned previously. The script will fetch -#### For end users -The instructions to make production build of Agama App will be updated soon. - -To build the production ready app, install `electron-packager` and `electron-prebuilt` packages from npm -```shell -npm install electron-packager -g -npm install electron-prebuilt -g -``` - #### **Build the Wallet-App** -Refer to the original [electron-packager](https://github.com/electron-userland/electron-packager) repository for more detailed information. +Refer to the original [electron-packager](https://github.com/electron-userland/electron-packager) repository for more detailed information. Fairly useless advice ##### Linux -Change directory to iguana and execute the following command to build the Linux app +Change directory to agama and execute the following command to build the Linux app ```shell -cd iguana -electron-packager . --platform=linux --arch=x64 --icon=assets/icons/agama_icons/128x128.png --out=build/ --buildVersion=VERSION_NUMBER_HERE --ignore=assets/bin/win64 --ignore=assets/bin/osx --overwrite +cd agama +electron-packager . --platform=linux --arch=x64 --icon=assets/icons/agama_icons/128x128.png --out=build/ --buildVersion=0.11 --ignore=assets/bin/win64 --ignore=assets/bin/osx --overwrite ``` -change architecture build parameter to ```--arch=x32``` for 32 bit build ##### OSX -Change directory to iguana and execute the following command to build the OSX app +Change directory to agama and execute the following command to build the OSX app ```shell -cd iguana -electron-packager . --platform=darwin --arch=x64 --icon=assets/icons/agama_icons/agama_app_icon.icns --out=build/ --buildVersion=VERSION_NUMBER_HERE --ignore=assets/bin/win64 --ignore=assets/bin/linux64 --overwrite +cd agama +electron-packager . --platform=darwin --arch=x64 --icon=assets/icons/agama_icons/agama_app_icon.icns --out=build/ --buildVersion=0.2 --ignore=assets/bin/win64 --ignore=assets/bin/linux64 --overwrite ``` ##### Windows -Change directory to iguana and execute the following command to build the Windows app +Change directory to agama and execute the following command to build the Windows app ```shell -dir iguana -electron-packager . --platform=win32 --arch=x64 --icon=assets/icons/agama_icons/agama_app_icon.ico --out=build/ --buildVersion=VERSION_NUMBER_HERE --ignore=assets/bin/osx --ignore=assets/bin/linux64 --overwrite +cd agama +electron-packager . --platform=win32 --arch=x64 --icon=assets/icons/agama_icons/agama_app_icon.ico --out=build/ --buildVersion=0.2 --ignore=assets/bin/osx --ignore=assets/bin/linux64 --overwrite # If generating 32bit desktop package -electron-packager . --platform=win32 --arch=ia32 --icon=assets/icons/agama_icons/agama_app_icon.ico --out=build/ --buildVersion=VERSION_NUMBER_HERE --ignore=assets/bin/osx --ignore=assets/bin/linux64 --overwrite +electron-packager . --platform=win32 --arch=ia32 --icon=assets/icons/agama_icons/agama_app_icon.ico --out=build/ --buildVersion=0.3 --ignore=assets/bin/osx --ignore=assets/bin/linux64 --overwrite # To build both x64 and x86 desktop package -electron-packager . --platform=win32 --arch=all --icon=assets/icons/agama_icons/agama_app_icon.ico --out=build/ --buildVersion=VERSION_NUMBER_HERE --ignore=assets/bin/osx --ignore=assets/bin/linux64 --overwrite +electron-packager . --platform=win32 --arch=all --icon=assets/icons/agama_icons/agama_app_icon.ico --out=build/ --buildVersion=0.3 --ignore=assets/bin/osx --ignore=assets/bin/linux64 --overwrite ``` change architecture build parameter to ```--arch=x64``` for 64 bit build @@ -74,6 +104,14 @@ change architecture build parameter to ```--arch=x64``` for 64 bit build ## Troubleshooting Instructions ### Windows DLL issues -On Windows it's noticed iguana.exe complains about `VCRUNTIME140D.DLL` and `ucrtbased.dll` file. +On Windows it's noticed agama.exe complains about `VCRUNTIME140D.DLL` and `ucrtbased.dll` file. Please see **windeps** directory and README file for instructions to install the required DLL files on Windows, and then try again running Agama App. + +## Optional packages to make rpm and deb distros + +electron-installer-debian + +electron-installer-redhat + +refer to ./make-deb.js and ./make-rpm.js diff --git a/binary_artifacts.sh b/binary_artifacts.sh index e1be5811a..9c0ebabb7 100755 --- a/binary_artifacts.sh +++ b/binary_artifacts.sh @@ -19,10 +19,23 @@ echo ========================================= echo Step: Permission +x for OSX binaries from artifacts to assets/bin/osx/ echo rm assets/artifacts.supernet.org/latest/osx/iguana -chmod +x assets/artifacts.supernet.org/latest/osx/komodo* +#chmod +x assets/artifacts.supernet.org/latest/osx/komodo* mkdir assets/bin -mv assets/artifacts.supernet.org/latest/osx assets/bin/osx +mkdir assets/bin/osx +#mv assets/artifacts.supernet.org/latest/osx assets/bin/osx + +echo Moving komodo bins to assets/bin/osx +wget https://supernetorg.bintray.com/binaries/kmd_osx_bins.zip +checksum=`shasum -a 256 kmd_osx_bins.zip | awk '{ print $1 }'` +if [ "$checksum" = "baa40ee046aa52494ea3be92be654fc61c47445277acadfd0d6c4cdc6b79bef9" ]; then + echo "Checksum is correct." + unzip kmd_osx_bins.zip + cp -rvf kmd_osx_bins/* assets/bin/osx/. + else + echo "Checksum is incorrect!" + exit 0 +fi echo Moving legacy libs to assets/bin wget https://supernetorg.bintray.com/misc/libs_legacy_osx.zip @@ -35,6 +48,7 @@ if [ "$checksum" = "e9474aa243694a2d4c87fccc443e4b16a9a5172a24da76af9e5ecddd0066 echo "Checksum is incorrect!" exit 0 fi + echo ========================================= echo Step: Moving Windows binaries from artifacts to assets/bin/win64/ #echo @@ -51,4 +65,4 @@ mv assets/artifacts.supernet.org/latest/linux assets/bin/linux64/ echo echo ========================================= echo Step: Finished Updating binaries from artifacts -echo \ No newline at end of file +echo diff --git a/buildscripts/easydex-build.sh b/buildscripts/easydex-build.sh index 164e21abf..0ce9b3431 100755 --- a/buildscripts/easydex-build.sh +++ b/buildscripts/easydex-build.sh @@ -9,8 +9,8 @@ echo "Building EasyDEX-GUI" echo "Actual directory is: ${PWD}" echo "Checkout to redux branch." -git checkout electrum -git pull origin electrum +git checkout v0.25 +git pull origin v0.25 [ -d react ] && cd react || echo "!!! I can't find react" echo "Actual directory is: ${PWD}" diff --git a/gui/EasyDEX-GUI b/gui/EasyDEX-GUI index 54f9dfc6e..b9b1283f5 160000 --- a/gui/EasyDEX-GUI +++ b/gui/EasyDEX-GUI @@ -1 +1 @@ -Subproject commit 54f9dfc6e7b519a5a2295b49813cfd99be131cae +Subproject commit b9b1283f55561064794a7ba58bc8ae4371b106fc diff --git a/main.js b/main.js index 1379e6432..be91c602a 100644 --- a/main.js +++ b/main.js @@ -7,6 +7,7 @@ const BrowserWindow = electron.BrowserWindow; const path = require('path'); const url = require('url'); const os = require('os'); +const { randomBytes } = require('crypto'); const md5 = require('./routes/md5'); const exec = require('child_process').exec; const { Menu } = require('electron'); @@ -54,7 +55,7 @@ app.setVersion(appBasicInfo.version); shepherd.createAgamaDirs(); -const appSessionHash = md5(Date.now().toString()); +const appSessionHash = randomBytes(32).toString('hex'); const _spvFees = shepherd.getSpvFees(); shepherd.writeLog(`app info: ${appBasicInfo.name} ${appBasicInfo.version}`); @@ -70,6 +71,7 @@ shepherd.writeLog(`os_type: ${os.type()}`); if (process.argv.indexOf('devmode') > -1) { shepherd.log(`app init ${appSessionHash}`); } + shepherd.log(`app info: ${appBasicInfo.name} ${appBasicInfo.version}`); shepherd.log('sys info:'); shepherd.log(`totalmem_readable: ${formatBytes(os.totalmem())}`); @@ -100,7 +102,7 @@ guiapp.use((req, res, next) => { next(); }); -// preload.js +// preload js const _setImmediate = setImmediate; const _clearImmediate = clearImmediate; @@ -462,8 +464,6 @@ app.on('quit', (event) => { } }); -app.commandLine.appendSwitch('ignore-certificate-errors'); // dirty hack - function formatBytes(bytes, decimals) { if (bytes === 0) { return '0 Bytes'; @@ -485,4 +485,4 @@ function formatBytes(bytes, decimals) { const i = Math.floor(Math.log(bytes) / Math.log(k)); return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`; -} \ No newline at end of file +} diff --git a/package.json b/package.json index a6df1aa9b..c27816c83 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "agama-app", "productName": "Agama", - "version": "0.2.29", + "version": "0.2.30", "description": "Agama Wallet Desktop App", "main": "main.js", "scripts": { @@ -11,21 +11,20 @@ "make-deb": "node make-deb.js" }, "repository": "https://github.com/KomodoPlatform/Agama/", - "homepage": "http://supernet.org", + "homepage": "http://komodoplatform.com", "keywords": [ "agama", "SuperNET", "komodo", "multicoin", "wallet", - "spv" + "spv", + "jumblr" ], "author": "SuperNET Team", "license": "MIT", "devDependencies": { - "electron": "1.7.10", - "electron-installer-debian": "^0.6.0", - "electron-installer-redhat": "^0.5.0" + "electron": "1.8.3" }, "dependencies": { "adm-zip": "^0.4.7", @@ -33,15 +32,14 @@ "async": "^2.6.0", "bigi": "^1.4.2", "bip39": "^2.4.0", - "bitcoinforksjs-lib": "git://github.com/bitcoinjs/bitcoinjs-lib#opt-in-bitcoincash-sighash", "bitcoinjs-lib": "git://github.com/SuperNETorg/bitcoinjs-lib", - "bitcoinjs-lib-zcash": "git://github.com/pbca26/bitcoinjs-lib#zcash", "bitcoinjs-lib-pos": "git://github.com/KomodoPlatform/bitcoinjs-lib-pos", + "bitcoinjs-lib-zcash": "git://github.com/pbca26/bitcoinjs-lib#zcash", "bluebird": "^3.4.7", "body-parser": "^1.15.2", "buffer-reverse": "^1.0.1", "coinselect": "github:bitcoinjs/coinselect", - "electron": "1.8.2", + "electron": "1.8.3", "express": "^4.14.0", "fix-path": "^2.1.0", "fs-extra": "^4.0.2", @@ -55,6 +53,8 @@ "request": "^2.80.0", "sha256": "^0.2.0", "socket.io": "^1.7.3", + "webpack": "^4.5.0", + "webpack-dashboard": "^1.1.1", "wif": "^2.0.6" } } diff --git a/routes/electrumjs/electrumServers.js b/routes/electrumjs/electrumServers.js index aed6d3027..18c14c9bb 100644 --- a/routes/electrumjs/electrumServers.js +++ b/routes/electrumjs/electrumServers.js @@ -214,12 +214,15 @@ let electrumServers = { ], }, ninja: { // !estimatefee - address: 'electrum.fund.ninja', + address: 'electrum1.fund.ninja', port: 50001, proto: 'tcp', txfee: 10000, abbr: 'NINJA', - serverList: 'none', + serverList: [ + 'electrum1.fund.ninja:50001', + 'electrum2.fund.ninja:50001' + ], }, jumblr: { // !estimatefee address: 'electrum1.cipig.net', @@ -457,6 +460,17 @@ let electrumServers = { '136.243.45.140:50013' ], }, + sng: { + address: '45.77.254.232', + port: 10001, + proto: 'tcp', + txfee: 10000, + abbr: 'SNG', + serverList: [ + '45.77.254.232:10001', + '128.199.233.38:10001' + ], + }, xmy: { address: 'cetus.cryptap.us', port: 50004, @@ -546,4 +560,4 @@ electrumServers.vtc = electrumServers.vertcoin; electrumServers.via = electrumServers.viacoin; electrumServers.doge = electrumServers.dogecoin; -module.exports = electrumServers; \ No newline at end of file +module.exports = electrumServers; diff --git a/routes/electrumjs/electrumjs.networks.js b/routes/electrumjs/electrumjs.networks.js index 54272d4e9..217eae110 100644 --- a/routes/electrumjs/electrumjs.networks.js +++ b/routes/electrumjs/electrumjs.networks.js @@ -290,6 +290,18 @@ networks.zcl = { dustThreshold: 1000, }; +networks.sng = { + messagePrefix: '\x19Snowgem Signed Message:\n', + bip32: { + public: 0x0488b21e, + private: 0x05358394, + }, + pubKeyHash: 0x1c28, + scriptHash: 0x1c2D, + wif: 0x80, + dustThreshold: 1000, +}; + networks.xmy = { messagePrefix: '\x19Myriad Signed Message:\n', bip32: { @@ -374,4 +386,4 @@ networks.via = networks.viacoin; networks.fair = networks.faircoin; networks.doge = networks.dogecoin; networks.kmd = networks.komodo; -networks.mona = networks.monacoin; \ No newline at end of file +networks.mona = networks.monacoin; diff --git a/routes/shepherd.js b/routes/shepherd.js index 6e4f6125e..421c1ecfb 100644 --- a/routes/shepherd.js +++ b/routes/shepherd.js @@ -103,6 +103,7 @@ shepherd = require('./shepherd/electrum/createtx-multi.js')(shepherd); shepherd = require('./shepherd/electrum/interest.js')(shepherd); shepherd = require('./shepherd/electrum/listunspent.js')(shepherd); shepherd = require('./shepherd/electrum/estimate.js')(shepherd); +shepherd = require('./shepherd/electrum/btcFees.js')(shepherd); // dex shepherd = require('./shepherd/dex/coind.js')(shepherd); diff --git a/routes/shepherd/electrum/btcFees.js b/routes/shepherd/electrum/btcFees.js new file mode 100644 index 000000000..525ea04ce --- /dev/null +++ b/routes/shepherd/electrum/btcFees.js @@ -0,0 +1,115 @@ +const request = require('request'); +const Promise = require('bluebird'); + +let btcFeeBlocks = []; + +for (let i = 0; i < 25; i++) { + btcFeeBlocks.push(i); +} + +const checkTimestamp = (dateToCheck) => { + const currentEpochTime = new Date(Date.now()) / 1000; + const secondsElapsed = Number(currentEpochTime) - Number(dateToCheck); + + return Math.floor(secondsElapsed); +} + +const getRandomIntInclusive = (min, max) => { + min = Math.ceil(min); + max = Math.floor(max); + + return Math.floor(Math.random() * (max - min + 1)) + min; // the maximum is inclusive and the minimum is inclusive +} + +let btcFees = { + recommended: {}, + all: {}, + electrum: {}, + lastUpdated: null, +}; + +const BTC_FEES_MIN_ELAPSED_TIME = 120; + +module.exports = (shepherd) => { + shepherd.get('/electrum/btcfees', (req, res, next) => { + if (shepherd.checkToken(req.query.token)) { + if (checkTimestamp(btcFees.lastUpdated) > BTC_FEES_MIN_ELAPSED_TIME) { + const _randomServer = shepherd.electrumServers.btc.serverList[getRandomIntInclusive(0, shepherd.electrumServers.btc.serverList.length - 1)].split(':'); + const ecl = new shepherd.electrumJSCore(_randomServer[1], _randomServer[0], 'tcp'); + let _btcFeeEstimates = []; + + console.log(`btc fees server ${_randomServer.join(':')}`); + + ecl.connect(); + Promise.all(btcFeeBlocks.map((coin, index) => { + return new Promise((resolve, reject) => { + ecl.blockchainEstimatefee(index + 1) + .then((json) => { + resolve(true); + + if (json > 0) { + _btcFeeEstimates.push(Math.floor((json / 1024) * 100000000)); + } + }); + }); + })) + .then(result => { + ecl.close(); + + if (result && + result.length) { + btcFees.electrum = _btcFeeEstimates; + } else { + btcFees.electrum = 'error'; + } + + let options = { + url: `https://bitcoinfees.earn.com/api/v1/fees/recommended`, + method: 'GET', + }; + + // send back body on both success and error + // this bit replicates iguana core's behaviour + request(options, (error, response, body) => { + if (response && + response.statusCode && + response.statusCode === 200) { + try { + const _parsedBody = JSON.parse(body); + btcFees.lastUpdated = Math.floor(Date.now() / 1000); + btcFees.recommended = _parsedBody; + } catch (e) { + shepherd.log('unable to retrieve BTC fees / recommended', true); + } + } else { + shepherd.log('unable to retrieve BTC fees / recommended', true); + } + + res.end(JSON.stringify({ + msg: 'success', + result: btcFees, + })); + }); + }); + } else { + console.log(`btcfees, use cache`); + + const successObj = { + msg: 'success', + result: btcFees, + }; + + res.end(JSON.stringify(successObj)); + } + } else { + const errorObj = { + msg: 'error', + result: 'unauthorized access', + }; + + res.end(JSON.stringify(errorObj)); + } + }); + + return shepherd; +}; \ No newline at end of file diff --git a/routes/shepherd/electrum/createtx-multi.js b/routes/shepherd/electrum/createtx-multi.js index fbf613b18..1784493b1 100644 --- a/routes/shepherd/electrum/createtx-multi.js +++ b/routes/shepherd/electrum/createtx-multi.js @@ -1,10 +1,11 @@ -const bitcoinJSForks = require('bitcoinforksjs-lib'); const bitcoinZcash = require('bitcoinjs-lib-zcash'); const bitcoinPos = require('bitcoinjs-lib-pos'); // not prod ready, only for voting! // needs a fix +// TODO: spread fee across targets +// current implementation subtracts fee from the fist target out module.exports = (shepherd) => { shepherd.post('/electrum/createrawtx-multiout', (req, res, next) => { if (shepherd.checkToken(req.body.token)) { @@ -131,10 +132,13 @@ module.exports = (shepherd) => { let _change = 0; if (outputs && - outputs.length > 1) { + outputs.length > 1 && + outputs.length > targets.length) { _change = outputs[outputs.length - 1].value - fee; } + shepherd.log(`change before adjustments ${_change}`, true); + if (!btcFee && _change === 0) { outputs[0].value = outputs[0].value - fee; @@ -146,6 +150,9 @@ module.exports = (shepherd) => { shepherd.log('init targets', true); shepherd.log(initTargets, true); + shepherd.log('coinselect targets', true); + shepherd.log(targets, true); + if (initTargets[0].value < targets[0].value) { targets[0].value = initTargets[0].value; } @@ -238,13 +245,12 @@ module.exports = (shepherd) => { res.end(JSON.stringify(successObj)); } else { let vinSum = 0; + let voutSum = 0; for (let i = 0; i < inputs.length; i++) { vinSum += inputs[i].value; } - let voutSum = 0; - for (let i = 0; i < outputs.length; i++) { voutSum += outputs[i].value; } @@ -272,7 +278,7 @@ module.exports = (shepherd) => { outputAddress = outputs; - if (outputAddress.length > 1) { + if (!outputAddress[outputAddress.length - 1].address) { outputAddress.pop(); } @@ -497,4 +503,4 @@ module.exports = (shepherd) => { } return shepherd; -}; \ No newline at end of file +}; diff --git a/routes/shepherd/electrum/createtx-split.js b/routes/shepherd/electrum/createtx-split.js index c161a6262..97eeb1884 100644 --- a/routes/shepherd/electrum/createtx-split.js +++ b/routes/shepherd/electrum/createtx-split.js @@ -1,4 +1,3 @@ -const bitcoinJSForks = require('bitcoinforksjs-lib'); const bitcoinZcash = require('bitcoinjs-lib-zcash'); const bitcoinPos = require('bitcoinjs-lib-pos'); @@ -83,4 +82,4 @@ module.exports = (shepherd) => { }); return shepherd; -}; \ No newline at end of file +}; diff --git a/routes/shepherd/electrum/createtx.js b/routes/shepherd/electrum/createtx.js index 04b979522..ca64fd535 100644 --- a/routes/shepherd/electrum/createtx.js +++ b/routes/shepherd/electrum/createtx.js @@ -1,4 +1,3 @@ -const bitcoinJSForks = require('bitcoinforksjs-lib'); const bitcoinZcash = require('bitcoinjs-lib-zcash'); const bitcoinPos = require('bitcoinjs-lib-pos'); @@ -616,4 +615,4 @@ module.exports = (shepherd) => { }); return shepherd; -}; \ No newline at end of file +}; diff --git a/routes/shepherd/electrum/network.js b/routes/shepherd/electrum/network.js index 8502138e3..adceeff55 100644 --- a/routes/shepherd/electrum/network.js +++ b/routes/shepherd/electrum/network.js @@ -10,6 +10,8 @@ module.exports = (shepherd) => { network === 'zec' || network === 'zcash' || network === 'ZCASH' || + network === 'sng' || + network === 'SNG' || network === 'HUSH' || network === 'hush' || network === 'ZCL' || @@ -223,4 +225,4 @@ module.exports = (shepherd) => { }); return shepherd; -}; \ No newline at end of file +}; diff --git a/version b/version index 68a1adc95..8554d79a1 100644 --- a/version +++ b/version @@ -1,3 +1,3 @@ -version=0.2.0.30a -type=a-beta -minversion=0.2.0.30 \ No newline at end of file +version=0.2.30c +type=c-beta +minversion=0.2.30 \ No newline at end of file diff --git a/version_build b/version_build index 611a2fd4d..c81c2d4bd 100644 --- a/version_build +++ b/version_build @@ -1 +1 @@ -0.2.0.30a-beta \ No newline at end of file +0.2.30c-beta \ No newline at end of file