mirror of
https://github.com/Permissionless-Software-Foundation/bch-dex.git
synced 2026-09-22 01:02:00 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c322ecbd0 | ||
|
|
56944176fa | ||
|
|
5f9cdc3f2e | ||
|
|
c20938f9f7 | ||
|
|
5be3c92a29 | ||
|
|
1476500c61 | ||
|
|
519980eb99 | ||
|
|
1e4b71aacd | ||
|
|
2c1c009b64 | ||
|
|
09cbfd00e8 | ||
|
|
2c21d79740 | ||
|
|
15eb871b1f | ||
|
|
f4e80017d6 | ||
|
|
e27b9da2ee | ||
|
|
adb210cd60 | ||
|
|
ff7697baf6 | ||
|
|
d65c3701cd | ||
|
|
4303efdb43 | ||
|
|
87b1b7f9ca | ||
|
|
3dddf21986 | ||
|
|
238bee3d92 | ||
|
|
04f77c883a | ||
|
|
cddf141ce4 | ||
|
|
628d8c01f8 |
@@ -15,6 +15,7 @@ This repository contains the back end code. The user interface is contained in t
|
||||
## Media
|
||||
- [High-level Overview of bch-dex](https://youtu.be/LVX8CLi4sHw) (Video)
|
||||
- [Developer walk-through for installing and hacking on bch-dex](https://youtu.be/T5XI43-SWJo) (Video)
|
||||
- This video is out of date. Follow the instructions below.
|
||||
|
||||
## Participate
|
||||
This is an open source project, and we encourage other JavaScript developers to participate in its creation and maintenance. We have two chat rooms for the community:
|
||||
@@ -31,39 +32,42 @@ Running the DEX requires composition of these different software packages:
|
||||
|
||||
The above software is orchestrated using [Docker](https://www.docker.com/) and Docker Compose. The target operating system is Ubuntu 20+, and the target hardware is amd64 (normal desktop PCs) and the arm64 (Raspberry Pi 4). Trying to operate this software on other operating systems or hardware is possible, but not supported.
|
||||
|
||||
The Raspberry Pi 4 is the primary hardware target, because this software functions best when it is always running. The Pi 4 makes a great appliance for monitoring trade signals and finalizing trades.
|
||||
|
||||
Instructions for setting up Node.js, Docker, and Docker Compose can be found in [this Gist](https://gist.github.com/christroutner/a39f656850dc022b60f25c9663dd1cdd). Walk-through videos can also be found on the [PSF Videos page](https://psfoundation.cash/video/).
|
||||
|
||||
Building the Docker containers and getting the app working involve these steps:
|
||||
Here are the steps involved in setting up bch-dex:
|
||||
|
||||
1. Follow the direction in [this Gist](https://gist.github.com/christroutner/a39f656850dc022b60f25c9663dd1cdd) to install Node.js, Docker, and Docker Compose.
|
||||
1. Clone the repository with `git clone https://github.com/Permissionless-Software-Foundation/bch-dex` and enter it with `cd bch-dex`.
|
||||
1. Install dependencies by running `npm install`
|
||||
1. Create a wallet by executing the [create-wallet.js script](./production/scripts/create-wallet.js) with `node create-wallet.js`
|
||||
1. Move the `wallet.json` file to the `bch-dex` folder in either the [x86 Docker folder](./production/docker/bch-dex) or the [RPi Docker folder](./production/rpi-docker/bch-dex/) depending on your hardware target.
|
||||
1. Change directory to the `docker` or `rpi-docker` folder depending on your hardware target.
|
||||
1. Build the Docker containers with `docker-compose build --no-cache`.
|
||||
1. Create a wallet:
|
||||
- `cd production/scripts`
|
||||
- `node create-wallet.js`
|
||||
1. Change directory to the `production/docker` or `production/rpi-docker` folder depending on your hardware target.
|
||||
1. Pull the Docker images down from Docker Hub: `docker-compose pull`
|
||||
1. Start the Docker containers with `docker-compose up -d`
|
||||
1. Wait for the containers to run for about a minute, then bring them down with `docker-compose down`. That will create the needed folders in `production/data`.
|
||||
1. Copy the `swarm.key` into the `production/data/go-ipfs/data/` directory. This will allow the IPFS node to connect to the PSF private network.
|
||||
1. Bring the containers back up with `docker-compose up -d`.
|
||||
1. Wait for the P2WDB to sync and populate bch-dex with trade data. You can monitor it with `docker logs --tail 20 -f p2wdb`.
|
||||
1. Open a web browser and navigate the `http://localhost:4500`. You'll be able to see new Offers as they come in and are detected by bch-dex.
|
||||
1. To take the other side of the trade, click the `Take` button in the UI.
|
||||
1. You can add the 12-word mnemonic from the `wallet.json` file to the the web wallet, which will mirror your wallet in the UI, and allow you to perform basic wallet functions (send and receive BCH and tokens).
|
||||
|
||||
## Blockchain Infrastructure
|
||||
|
||||
The P2WDB and bch-dex containers requires a 'Global Back End' (as described in [CashStack.info](https://cashstack.info)) in order to connect to the blockchain. By default, the Docker containers connect to [free-bch.fullstack.cash](https://free-bch.fullstack.cash/). Several community-provided Global Back End servers are provided and can be [viewed here](https://gist.github.com/christroutner/63c5513782181f8b8ea3eb89f7cadeb6). The back end can be changed by setting the `CONSUMER_URL` environment variable in the `docker-compose.yml` file.
|
||||
|
||||
### Applying Software Updates
|
||||
As this is an active project, software updates will happen frequently. To apply a software update, perform these steps.
|
||||
|
||||
<ol>
|
||||
<li>Enter the `docker` or `rpi-docker` folder, depending on your hardware target.</li>
|
||||
<li>Bring down the Docker containers with `docker-compose down`.</li>
|
||||
<li>Pull in the software updates with `git pull`</li>
|
||||
<li>Update dependencies with `npm install`</li>
|
||||
<li>Rebuild the Docker containers with `docker-compose build --no-cache`</li>
|
||||
<li>Clean up disk space by deleting old Docker images with `./cleanup-images.sh`</li>
|
||||
<li>Start the Docker containers with `docker-compose up -d`</li>
|
||||
</ol>
|
||||
|
||||
1. Enter the `docker` or `rpi-docker` folder, depending on your hardware target.
|
||||
1. Bring down the Docker containers with `docker-compose down`.
|
||||
1. Pull in the software updates with `git pull`
|
||||
1. Update dependencies with `npm install`
|
||||
1. Pull new Docker images with `docker-compose pull`
|
||||
1. Clean up disk space by deleting old Docker images with `./cleanup-images.sh`
|
||||
1. Start the Docker containers with `docker-compose up -d`
|
||||
|
||||
|
||||
Sometimes it may be necessary to delete the databases before applying a software update. This can be done by stopping the Docker containers and deleting the `production/data` directory. When the Docker containers are restarted, they will recreate that directory. The P2WDB will re-sync and bch-dex will be populated with fresh trade data.
|
||||
|
||||
|
||||
@@ -90,6 +90,9 @@ class Server {
|
||||
|
||||
// MIDDLEWARE END
|
||||
|
||||
// Delay startup to give the P2WDB time to start first, so that it accepts the webook call
|
||||
await sleep(5000)
|
||||
|
||||
// Create webhook
|
||||
try {
|
||||
try {
|
||||
|
||||
Vendored
+2
-2
@@ -35,8 +35,8 @@ module.exports = {
|
||||
useFullStackCash: process.env.USE_FULLSTACKCASH ? true : false,
|
||||
consumerUrl: process.env.CONSUMER_URL
|
||||
? process.env.CONSUMER_URL
|
||||
// : 'https://free-bch.fullstack.cash',
|
||||
: 'https://wa-usa-bch-consumer.fullstackcash.nl',
|
||||
: 'https://free-bch.fullstack.cash',
|
||||
// : 'https://wa-usa-bch-consumer.fullstackcash.nl',
|
||||
|
||||
// P2WDB URL that will accept API calls from the p2wdb npm library.
|
||||
p2wdbUrl: process.env.P2WDB_URL ? process.env.P2WDB_URL : 'https://p2wdb.fullstack.cash',
|
||||
|
||||
Generated
+396
-14
@@ -34,7 +34,7 @@
|
||||
"koa2-ratelimit": "0.9.1",
|
||||
"libp2p": "^0.36.2",
|
||||
"line-reader": "0.4.0",
|
||||
"minimal-slp-wallet": "4.4.7",
|
||||
"minimal-slp-wallet": "4.5.2",
|
||||
"mongoose": "5.13.13",
|
||||
"node-fetch": "npm:@achingbrain/node-fetch@2.6.7",
|
||||
"nodemailer": "6.4.17",
|
||||
@@ -46,7 +46,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"apidoc": "0.26.0",
|
||||
"bch-token-sweep": "1.5.16",
|
||||
"bch-token-sweep": "2.1.1",
|
||||
"chai": "4.3.0",
|
||||
"coveralls": "2.11.4",
|
||||
"eslint": "7.19.0",
|
||||
@@ -65,6 +65,68 @@
|
||||
"uuid": "8.3.2"
|
||||
}
|
||||
},
|
||||
"../bch-message-lib": {
|
||||
"version": "2.0.0",
|
||||
"extraneous": true,
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@psf/bch-js": "6.2.1",
|
||||
"apidoc": "0.25.0",
|
||||
"browserify": "17.0.0",
|
||||
"chai": "4.1.2",
|
||||
"coveralls": "3.0.2",
|
||||
"debugging-aid": "0.5.3",
|
||||
"eslint": "7.17.0",
|
||||
"eslint-config-prettier": "7.1.0",
|
||||
"eslint-config-standard": "16.0.2",
|
||||
"eslint-plugin-node": "11.1.0",
|
||||
"eslint-plugin-prettier": "3.3.1",
|
||||
"eslint-plugin-standard": "4.0.0",
|
||||
"husky": "4.3.0",
|
||||
"lodash.clonedeep": "4.5.0",
|
||||
"mocha": "7.0.1",
|
||||
"nyc": "15.0.0",
|
||||
"semantic-release": "17.4.3",
|
||||
"sinon": "9.0.2",
|
||||
"standard": "14.3.1",
|
||||
"tinyify": "3.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"minimal-slp-wallet": "^4.4.5"
|
||||
}
|
||||
},
|
||||
"../bch-token-sweep": {
|
||||
"version": "2.0.0",
|
||||
"extraneous": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"bch-donation": "1.1.2",
|
||||
"bignumber.js": "9.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"apidoc": "0.25.0",
|
||||
"browserify": "16.5.2",
|
||||
"chai": "4.1.2",
|
||||
"coveralls": "3.0.2",
|
||||
"eslint": "7.17.0",
|
||||
"eslint-config-prettier": "7.1.0",
|
||||
"eslint-config-standard": "16.0.2",
|
||||
"eslint-plugin-node": "11.1.0",
|
||||
"eslint-plugin-prettier": "3.3.1",
|
||||
"eslint-plugin-standard": "4.0.0",
|
||||
"husky": "4.3.8",
|
||||
"lodash.clonedeep": "4.5.0",
|
||||
"mocha": "8.4.0",
|
||||
"nyc": "15.1.0",
|
||||
"semantic-release": "17.4.4",
|
||||
"sinon": "9.2.2",
|
||||
"standard": "16.0.4",
|
||||
"tinyify": "3.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"minimal-slp-wallet": "4.5.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@ampproject/remapping": {
|
||||
"version": "2.1.2",
|
||||
"dev": true,
|
||||
@@ -3045,12 +3107,151 @@
|
||||
}
|
||||
},
|
||||
"node_modules/bch-token-sweep": {
|
||||
"version": "1.5.16",
|
||||
"version": "2.1.1",
|
||||
"resolved": "http://94.130.170.209:4873/bch-token-sweep/-/bch-token-sweep-2.1.1.tgz",
|
||||
"integrity": "sha512-Uao4aLoyUjNjY0UNTjrgAzUw1m2oq70JGQMzRgyoiGjTUAiWn9lQVaQSsbzFE03STvkaCxxdWfYIjmLGGu2U1A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"bch-donation": "1.1.1",
|
||||
"bch-donation": "1.1.2",
|
||||
"bignumber.js": "9.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"minimal-slp-wallet": "4.5.x"
|
||||
}
|
||||
},
|
||||
"node_modules/bch-token-sweep/node_modules/apidoc": {
|
||||
"version": "0.51.0",
|
||||
"resolved": "http://94.130.170.209:4873/apidoc/-/apidoc-0.51.0.tgz",
|
||||
"integrity": "sha512-3P4srhm6NA+kE/YRM4qL5jESElpQQJL+Z8n7hyr4uC+1DSwGzmE6adXPVxuT/hpDyShrqmRlHk8hf40RSqEsNw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"os": [
|
||||
"darwin",
|
||||
"freebsd",
|
||||
"linux",
|
||||
"openbsd",
|
||||
"win32"
|
||||
],
|
||||
"dependencies": {
|
||||
"bootstrap": "3.4.1",
|
||||
"commander": "^8.3.0",
|
||||
"diff-match-patch": "^1.0.5",
|
||||
"esbuild-loader": "^2.16.0",
|
||||
"expose-loader": "^3.1.0",
|
||||
"fs-extra": "^10.0.0",
|
||||
"glob": "^7.2.0",
|
||||
"handlebars": "^4.7.7",
|
||||
"iconv-lite": "^0.6.3",
|
||||
"jquery": "^3.6.0",
|
||||
"klaw-sync": "^6.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"markdown-it": "^12.2.0",
|
||||
"nodemon": "^2.0.15",
|
||||
"path-to-regexp": "^6.2.0",
|
||||
"prismjs": "^1.25.0",
|
||||
"semver": "^7.3.5",
|
||||
"style-loader": "^3.3.1",
|
||||
"url-parse": "^1.5.3",
|
||||
"webpack": "^5.64.2",
|
||||
"webpack-cli": "^4.9.1",
|
||||
"winston": "^3.3.3"
|
||||
},
|
||||
"bin": {
|
||||
"apidoc": "bin/apidoc"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bch-token-sweep/node_modules/argparse": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "http://94.130.170.209:4873/argparse/-/argparse-2.0.1.tgz",
|
||||
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
||||
"dev": true,
|
||||
"license": "Python-2.0"
|
||||
},
|
||||
"node_modules/bch-token-sweep/node_modules/bch-donation": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "http://94.130.170.209:4873/bch-donation/-/bch-donation-1.1.2.tgz",
|
||||
"integrity": "sha512-V7xQ23M6Ocavb1Nj4/pATwaLX/uF/9s2nWir3f+F3aetD3kMmsRHFRuXJwGQG3dSC5fJtRR/M5Z2zynY3t91Xg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"apidoc": "0.51.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bch-token-sweep/node_modules/commander": {
|
||||
"version": "8.3.0",
|
||||
"resolved": "http://94.130.170.209:4873/commander/-/commander-8.3.0.tgz",
|
||||
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 12"
|
||||
}
|
||||
},
|
||||
"node_modules/bch-token-sweep/node_modules/entities": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "http://94.130.170.209:4873/entities/-/entities-2.1.0.tgz",
|
||||
"integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
|
||||
"dev": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"funding": {
|
||||
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/bch-token-sweep/node_modules/fs-extra": {
|
||||
"version": "10.1.0",
|
||||
"resolved": "http://94.130.170.209:4873/fs-extra/-/fs-extra-10.1.0.tgz",
|
||||
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^6.0.1",
|
||||
"universalify": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/bch-token-sweep/node_modules/glob": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "http://94.130.170.209:4873/glob/-/glob-7.2.0.tgz",
|
||||
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/bch-token-sweep/node_modules/markdown-it": {
|
||||
"version": "12.3.2",
|
||||
"resolved": "http://94.130.170.209:4873/markdown-it/-/markdown-it-12.3.2.tgz",
|
||||
"integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"argparse": "^2.0.1",
|
||||
"entities": "~2.1.0",
|
||||
"linkify-it": "^3.0.1",
|
||||
"mdurl": "^1.0.1",
|
||||
"uc.micro": "^1.0.5"
|
||||
},
|
||||
"bin": {
|
||||
"markdown-it": "bin/markdown-it.js"
|
||||
}
|
||||
},
|
||||
"node_modules/bchaddrjs-slp": {
|
||||
@@ -13694,18 +13895,59 @@
|
||||
}
|
||||
},
|
||||
"node_modules/minimal-slp-wallet": {
|
||||
"version": "4.4.7",
|
||||
"resolved": "http://94.130.170.209:4873/minimal-slp-wallet/-/minimal-slp-wallet-4.4.7.tgz",
|
||||
"integrity": "sha512-OGtoc5p8xyZs1sEJFpfIzNIA7PDaHOlhw/wyOY68vtGylDrTPnY94hJqnlYOJ8IWLslBUo6WfsCkLIfhVPmZSg==",
|
||||
"version": "4.5.2",
|
||||
"resolved": "http://94.130.170.209:4873/minimal-slp-wallet/-/minimal-slp-wallet-4.5.2.tgz",
|
||||
"integrity": "sha512-aVTzMmEDiWNVVED4S5ixtBjY7Y4sfFmzVM7v6PuH8wU8ceXyZPzVwlJgjC2Lm0o11bToHAPhuT1Ytafr1YkseA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@psf/bch-js": "6.2.5",
|
||||
"@psf/bch-js": "6.2.8",
|
||||
"apidoc": "0.51.0",
|
||||
"bch-consumer": "1.2.2",
|
||||
"bch-donation": "1.1.2",
|
||||
"crypto-js": "4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/minimal-slp-wallet/node_modules/@psf/bch-js": {
|
||||
"version": "6.2.8",
|
||||
"resolved": "http://94.130.170.209:4873/@psf%2fbch-js/-/bch-js-6.2.8.tgz",
|
||||
"integrity": "sha512-kJoAeBmdVT6qjwAIlxPDgD1WkCBcAbDsbcwu1fqC0VfcrchuxajAGjqesQDY5bBsCjDKf6/taGC9zl+/pEW+jw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@chris.troutner/bip32-utils": "1.0.5",
|
||||
"@psf/bip21": "2.0.1",
|
||||
"@psf/bitcoincash-ops": "2.0.0",
|
||||
"@psf/bitcoincashjs-lib": "4.0.2",
|
||||
"@psf/coininfo": "4.0.0",
|
||||
"axios": "0.26.1",
|
||||
"bc-bip68": "1.0.5",
|
||||
"bchaddrjs-slp": "0.2.5",
|
||||
"bigi": "1.4.2",
|
||||
"bignumber.js": "9.0.0",
|
||||
"bip-schnorr": "0.3.0",
|
||||
"bip38": "2.0.2",
|
||||
"bip39": "3.0.2",
|
||||
"bip66": "1.1.5",
|
||||
"bitcoinjs-message": "2.0.0",
|
||||
"bs58": "4.0.1",
|
||||
"ecashaddrjs": "1.0.7",
|
||||
"ini": "1.3.8",
|
||||
"randombytes": "2.0.6",
|
||||
"safe-buffer": "5.1.2",
|
||||
"satoshi-bitcoin": "1.0.4",
|
||||
"slp-mdm": "0.0.6",
|
||||
"slp-parser": "0.0.4",
|
||||
"wif": "2.0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/minimal-slp-wallet/node_modules/@psf/bch-js/node_modules/axios": {
|
||||
"version": "0.26.1",
|
||||
"resolved": "http://94.130.170.209:4873/axios/-/axios-0.26.1.tgz",
|
||||
"integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.14.8"
|
||||
}
|
||||
},
|
||||
"node_modules/minimal-slp-wallet/node_modules/apidoc": {
|
||||
"version": "0.51.0",
|
||||
"resolved": "http://94.130.170.209:4873/apidoc/-/apidoc-0.51.0.tgz",
|
||||
@@ -25313,11 +25555,110 @@
|
||||
"requires": {}
|
||||
},
|
||||
"bch-token-sweep": {
|
||||
"version": "1.5.16",
|
||||
"version": "2.1.1",
|
||||
"resolved": "http://94.130.170.209:4873/bch-token-sweep/-/bch-token-sweep-2.1.1.tgz",
|
||||
"integrity": "sha512-Uao4aLoyUjNjY0UNTjrgAzUw1m2oq70JGQMzRgyoiGjTUAiWn9lQVaQSsbzFE03STvkaCxxdWfYIjmLGGu2U1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bch-donation": "1.1.1",
|
||||
"bch-donation": "1.1.2",
|
||||
"bignumber.js": "9.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"apidoc": {
|
||||
"version": "0.51.0",
|
||||
"resolved": "http://94.130.170.209:4873/apidoc/-/apidoc-0.51.0.tgz",
|
||||
"integrity": "sha512-3P4srhm6NA+kE/YRM4qL5jESElpQQJL+Z8n7hyr4uC+1DSwGzmE6adXPVxuT/hpDyShrqmRlHk8hf40RSqEsNw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bootstrap": "3.4.1",
|
||||
"commander": "^8.3.0",
|
||||
"diff-match-patch": "^1.0.5",
|
||||
"esbuild-loader": "^2.16.0",
|
||||
"expose-loader": "^3.1.0",
|
||||
"fs-extra": "^10.0.0",
|
||||
"glob": "^7.2.0",
|
||||
"handlebars": "^4.7.7",
|
||||
"iconv-lite": "^0.6.3",
|
||||
"jquery": "^3.6.0",
|
||||
"klaw-sync": "^6.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"markdown-it": "^12.2.0",
|
||||
"nodemon": "^2.0.15",
|
||||
"path-to-regexp": "^6.2.0",
|
||||
"prismjs": "^1.25.0",
|
||||
"semver": "^7.3.5",
|
||||
"style-loader": "^3.3.1",
|
||||
"url-parse": "^1.5.3",
|
||||
"webpack": "^5.64.2",
|
||||
"webpack-cli": "^4.9.1",
|
||||
"winston": "^3.3.3"
|
||||
}
|
||||
},
|
||||
"argparse": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "http://94.130.170.209:4873/argparse/-/argparse-2.0.1.tgz",
|
||||
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
||||
"dev": true
|
||||
},
|
||||
"bch-donation": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "http://94.130.170.209:4873/bch-donation/-/bch-donation-1.1.2.tgz",
|
||||
"integrity": "sha512-V7xQ23M6Ocavb1Nj4/pATwaLX/uF/9s2nWir3f+F3aetD3kMmsRHFRuXJwGQG3dSC5fJtRR/M5Z2zynY3t91Xg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"apidoc": "0.51.0"
|
||||
}
|
||||
},
|
||||
"commander": {
|
||||
"version": "8.3.0",
|
||||
"resolved": "http://94.130.170.209:4873/commander/-/commander-8.3.0.tgz",
|
||||
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
|
||||
"dev": true
|
||||
},
|
||||
"entities": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "http://94.130.170.209:4873/entities/-/entities-2.1.0.tgz",
|
||||
"integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
|
||||
"dev": true
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "10.1.0",
|
||||
"resolved": "http://94.130.170.209:4873/fs-extra/-/fs-extra-10.1.0.tgz",
|
||||
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^6.0.1",
|
||||
"universalify": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "http://94.130.170.209:4873/glob/-/glob-7.2.0.tgz",
|
||||
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"markdown-it": {
|
||||
"version": "12.3.2",
|
||||
"resolved": "http://94.130.170.209:4873/markdown-it/-/markdown-it-12.3.2.tgz",
|
||||
"integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"argparse": "^2.0.1",
|
||||
"entities": "~2.1.0",
|
||||
"linkify-it": "^3.0.1",
|
||||
"mdurl": "^1.0.1",
|
||||
"uc.micro": "^1.0.5"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"bchaddrjs-slp": {
|
||||
@@ -32868,17 +33209,58 @@
|
||||
"dev": true
|
||||
},
|
||||
"minimal-slp-wallet": {
|
||||
"version": "4.4.7",
|
||||
"resolved": "http://94.130.170.209:4873/minimal-slp-wallet/-/minimal-slp-wallet-4.4.7.tgz",
|
||||
"integrity": "sha512-OGtoc5p8xyZs1sEJFpfIzNIA7PDaHOlhw/wyOY68vtGylDrTPnY94hJqnlYOJ8IWLslBUo6WfsCkLIfhVPmZSg==",
|
||||
"version": "4.5.2",
|
||||
"resolved": "http://94.130.170.209:4873/minimal-slp-wallet/-/minimal-slp-wallet-4.5.2.tgz",
|
||||
"integrity": "sha512-aVTzMmEDiWNVVED4S5ixtBjY7Y4sfFmzVM7v6PuH8wU8ceXyZPzVwlJgjC2Lm0o11bToHAPhuT1Ytafr1YkseA==",
|
||||
"requires": {
|
||||
"@psf/bch-js": "6.2.5",
|
||||
"@psf/bch-js": "6.2.8",
|
||||
"apidoc": "0.51.0",
|
||||
"bch-consumer": "1.2.2",
|
||||
"bch-donation": "1.1.2",
|
||||
"crypto-js": "4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@psf/bch-js": {
|
||||
"version": "6.2.8",
|
||||
"resolved": "http://94.130.170.209:4873/@psf%2fbch-js/-/bch-js-6.2.8.tgz",
|
||||
"integrity": "sha512-kJoAeBmdVT6qjwAIlxPDgD1WkCBcAbDsbcwu1fqC0VfcrchuxajAGjqesQDY5bBsCjDKf6/taGC9zl+/pEW+jw==",
|
||||
"requires": {
|
||||
"@chris.troutner/bip32-utils": "1.0.5",
|
||||
"@psf/bip21": "2.0.1",
|
||||
"@psf/bitcoincash-ops": "2.0.0",
|
||||
"@psf/bitcoincashjs-lib": "4.0.2",
|
||||
"@psf/coininfo": "4.0.0",
|
||||
"axios": "0.26.1",
|
||||
"bc-bip68": "1.0.5",
|
||||
"bchaddrjs-slp": "0.2.5",
|
||||
"bigi": "1.4.2",
|
||||
"bignumber.js": "9.0.0",
|
||||
"bip-schnorr": "0.3.0",
|
||||
"bip38": "2.0.2",
|
||||
"bip39": "3.0.2",
|
||||
"bip66": "1.1.5",
|
||||
"bitcoinjs-message": "2.0.0",
|
||||
"bs58": "4.0.1",
|
||||
"ecashaddrjs": "1.0.7",
|
||||
"ini": "1.3.8",
|
||||
"randombytes": "2.0.6",
|
||||
"safe-buffer": "5.1.2",
|
||||
"satoshi-bitcoin": "1.0.4",
|
||||
"slp-mdm": "0.0.6",
|
||||
"slp-parser": "0.0.4",
|
||||
"wif": "2.0.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": {
|
||||
"version": "0.26.1",
|
||||
"resolved": "http://94.130.170.209:4873/axios/-/axios-0.26.1.tgz",
|
||||
"integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
|
||||
"requires": {
|
||||
"follow-redirects": "^1.14.8"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"apidoc": {
|
||||
"version": "0.51.0",
|
||||
"resolved": "http://94.130.170.209:4873/apidoc/-/apidoc-0.51.0.tgz",
|
||||
|
||||
+2
-2
@@ -52,7 +52,7 @@
|
||||
"koa2-ratelimit": "0.9.1",
|
||||
"libp2p": "^0.36.2",
|
||||
"line-reader": "0.4.0",
|
||||
"minimal-slp-wallet": "4.4.7",
|
||||
"minimal-slp-wallet": "4.5.2",
|
||||
"mongoose": "5.13.13",
|
||||
"node-fetch": "npm:@achingbrain/node-fetch@2.6.7",
|
||||
"nodemailer": "6.4.17",
|
||||
@@ -64,7 +64,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"apidoc": "0.26.0",
|
||||
"bch-token-sweep": "1.5.16",
|
||||
"bch-token-sweep": "2.1.1",
|
||||
"chai": "4.3.0",
|
||||
"coveralls": "2.11.4",
|
||||
"eslint": "7.19.0",
|
||||
|
||||
@@ -46,11 +46,11 @@ RUN npm set registry http://94.130.170.209:4873/
|
||||
|
||||
# Clone the rest.bitcoin.com repository
|
||||
WORKDIR /home/safeuser
|
||||
RUN git clone https://github.com/Permissionless-Software-Foundation/bch-dex-ui2
|
||||
RUN git clone https://github.com/Permissionless-Software-Foundation/bch-dex-ui
|
||||
|
||||
# Switch to the desired branch. `master` is usually stable,
|
||||
# and `stage` has the most up-to-date changes.
|
||||
WORKDIR /home/safeuser/bch-dex-ui2
|
||||
WORKDIR /home/safeuser/bch-dex-ui
|
||||
|
||||
# For development: switch to unstable branch
|
||||
RUN git checkout ct-unstable
|
||||
|
||||
@@ -64,7 +64,7 @@ RUN npm install
|
||||
RUN npm run docs
|
||||
|
||||
# Copy the wallet files
|
||||
COPY wallet.json wallet.json
|
||||
#COPY wallet.json wallet.json
|
||||
|
||||
#VOLUME /home/safeuser/keys
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ services:
|
||||
- 172.17.0.1:8080:8080
|
||||
volumes:
|
||||
- ../data/go-ipfs/data:/data/ipfs
|
||||
- ../data/go-ipfs/export:/export
|
||||
- ../../swarm.key:/data/ipfs/swarm.key
|
||||
# https://docs.docker.com/compose/compose-file/compose-file-v3/#command
|
||||
# https://github.com/ipfs/go-ipfs/blob/91c52657166bcf86f2476926e4fe56694dc26562/Dockerfile#L115
|
||||
command:
|
||||
@@ -43,10 +43,13 @@ services:
|
||||
restart: always
|
||||
|
||||
p2wdb:
|
||||
build:
|
||||
context: ./p2wdb/
|
||||
dockerfile: Dockerfile
|
||||
#build:
|
||||
# context: ./p2wdb/
|
||||
# dockerfile: Dockerfile
|
||||
image: christroutner/p2wdb-bch-dex:v1.6.2
|
||||
container_name: p2wdb
|
||||
environment:
|
||||
CONSUMER_URL: 'https://free-bch.fullstack.cash'
|
||||
logging:
|
||||
driver: 'json-file'
|
||||
options:
|
||||
@@ -65,10 +68,13 @@ services:
|
||||
restart: always
|
||||
|
||||
bch-dex:
|
||||
build:
|
||||
context: ./bch-dex/
|
||||
dockerfile: Dockerfile
|
||||
#build:
|
||||
# context: ./bch-dex/
|
||||
# dockerfile: Dockerfile
|
||||
image: christroutner/bch-dex:v1.6.4
|
||||
container_name: bch-dex
|
||||
environment:
|
||||
CONSUMER_URL: 'https://free-bch.fullstack.cash'
|
||||
logging:
|
||||
driver: 'json-file'
|
||||
options:
|
||||
@@ -80,14 +86,15 @@ services:
|
||||
- p2wdb
|
||||
ports:
|
||||
- '5700:5700' # <host port>:<container port>
|
||||
# volumes:
|
||||
# - ../data/ipfsdata:/home/safeuser/ipfs-service-provider/.ipfsdata
|
||||
volumes:
|
||||
- ../scripts/wallet.json:/home/safeuser/bch-dex/wallet.json
|
||||
restart: always
|
||||
|
||||
dex-ui:
|
||||
build:
|
||||
context: ./bch-dex-ui/
|
||||
dockerfile: Dockerfile
|
||||
#build:
|
||||
# context: ./bch-dex-ui/
|
||||
# dockerfile: Dockerfile
|
||||
image: christroutner/bch-dex-ui:v1.6.4
|
||||
container_name: dex-ui
|
||||
environment:
|
||||
SERVER: 'http://192.168.2.3'
|
||||
|
||||
@@ -46,11 +46,11 @@ RUN npm set registry http://94.130.170.209:4873/
|
||||
|
||||
# Clone the rest.bitcoin.com repository
|
||||
WORKDIR /home/safeuser
|
||||
RUN git clone https://github.com/Permissionless-Software-Foundation/bch-dex-ui2
|
||||
RUN git clone https://github.com/Permissionless-Software-Foundation/bch-dex-ui
|
||||
|
||||
# Switch to the desired branch. `master` is usually stable,
|
||||
# and `stage` has the most up-to-date changes.
|
||||
WORKDIR /home/safeuser/bch-dex-ui2
|
||||
WORKDIR /home/safeuser/bch-dex-ui
|
||||
|
||||
# For development: switch to unstable branch
|
||||
RUN git checkout ct-unstable
|
||||
@@ -58,7 +58,7 @@ RUN git checkout ct-unstable
|
||||
# Install dependencies
|
||||
#RUN mkdir .ipfsdata
|
||||
#RUN npm install -g @mapbox/node-pre-gyp
|
||||
RUN npm install
|
||||
RUN npm install --force
|
||||
|
||||
# Build the site
|
||||
RUN CI=true npm run build
|
||||
|
||||
@@ -64,7 +64,7 @@ RUN npm install
|
||||
RUN npm run docs
|
||||
|
||||
# Copy the wallet files
|
||||
COPY wallet.json wallet.json
|
||||
#COPY wallet.json wallet.json
|
||||
|
||||
#VOLUME /home/safeuser/keys
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ services:
|
||||
- 172.17.0.1:8080:8080
|
||||
volumes:
|
||||
- ../data/go-ipfs/data:/data/ipfs
|
||||
- ../data/go-ipfs/export:/export
|
||||
- ../../swarm.key:/data/ipfs/swarm.key
|
||||
# https://docs.docker.com/compose/compose-file/compose-file-v3/#command
|
||||
# https://github.com/ipfs/go-ipfs/blob/91c52657166bcf86f2476926e4fe56694dc26562/Dockerfile#L115
|
||||
command:
|
||||
@@ -44,10 +44,13 @@ services:
|
||||
restart: always
|
||||
|
||||
p2wdb:
|
||||
build:
|
||||
context: ./p2wdb/
|
||||
dockerfile: Dockerfile
|
||||
#build:
|
||||
# context: ./p2wdb/
|
||||
# dockerfile: Dockerfile
|
||||
image: christroutner/pwd-bch-dex-rpi:v1.6.2
|
||||
container_name: p2wdb
|
||||
environment:
|
||||
CONSUMER_URL: 'https://free-bch.fullstack.cash'
|
||||
logging:
|
||||
driver: 'json-file'
|
||||
options:
|
||||
@@ -69,7 +72,10 @@ services:
|
||||
build:
|
||||
context: ./bch-dex/
|
||||
dockerfile: Dockerfile
|
||||
#image: christroutner/bch-dex-rpi:v1.6.6
|
||||
container_name: bch-dex
|
||||
environment:
|
||||
CONSUMER_URL: 'https://free-bch.fullstack.cash'
|
||||
logging:
|
||||
driver: 'json-file'
|
||||
options:
|
||||
@@ -81,14 +87,15 @@ services:
|
||||
- p2wdb
|
||||
ports:
|
||||
- '5700:5700' # <host port>:<container port>
|
||||
# volumes:
|
||||
# - ../data/ipfsdata:/home/safeuser/ipfs-service-provider/.ipfsdata
|
||||
volumes:
|
||||
- ../scripts/wallet.json:/home/safeuser/bch-dex/wallet.json
|
||||
restart: always
|
||||
|
||||
dex-ui:
|
||||
build:
|
||||
context: ./bch-dex-ui/
|
||||
dockerfile: Dockerfile
|
||||
#build:
|
||||
# context: ./bch-dex-ui/
|
||||
# dockerfile: Dockerfile
|
||||
image: christroutner/bch-dex-ui-rpi:v1.6.4
|
||||
container_name: dex-ui
|
||||
logging:
|
||||
driver: 'json-file'
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
*/
|
||||
|
||||
// Public npm libraries
|
||||
const BCHJS = require('@psf/bch-js')
|
||||
// const BCHJS = require('@psf/bch-js')
|
||||
const BchTokenSweep = require('bch-token-sweep/index')
|
||||
|
||||
// Local libraries
|
||||
@@ -17,8 +17,9 @@ const EMTPY_ADDR_CUTOFF = 10
|
||||
async function sweepFunds () {
|
||||
try {
|
||||
// Open the wallet files.
|
||||
const wallet = new WalletAdapter()
|
||||
const walletInfo = await wallet.openWallet()
|
||||
const walletLib = new WalletAdapter()
|
||||
const walletInfo = await walletLib.openWallet()
|
||||
const wallet = await walletLib.instanceWallet(walletInfo)
|
||||
console.log('walletInfo: ', walletInfo)
|
||||
|
||||
const rootAddr = walletInfo.cashAddress
|
||||
@@ -26,7 +27,7 @@ async function sweepFunds () {
|
||||
console.log(`Sweeping all funds into root address ${rootAddr}...`)
|
||||
|
||||
// Generate an HD tree
|
||||
const bchjs = new BCHJS()
|
||||
const bchjs = wallet.bchjs
|
||||
const rootSeed = await bchjs.Mnemonic.toSeed(walletInfo.mnemonic)
|
||||
const masterHDNode = bchjs.HDNode.fromSeed(rootSeed)
|
||||
|
||||
@@ -46,7 +47,7 @@ async function sweepFunds () {
|
||||
const sweeper = new BchTokenSweep(
|
||||
wifToSweep,
|
||||
rootWif,
|
||||
bchjs,
|
||||
wallet,
|
||||
550,
|
||||
rootAddr
|
||||
)
|
||||
@@ -66,6 +67,7 @@ async function sweepFunds () {
|
||||
await bchjs.Util.sleep(3000)
|
||||
} catch (err) {
|
||||
console.log(`error message with index ${hdIndex}: ${err.message}`)
|
||||
// console.log(err)
|
||||
emptyAddrCnt++
|
||||
}
|
||||
|
||||
|
||||
@@ -359,7 +359,7 @@ class OfferUseCases {
|
||||
// console.log('utxoStatus: ', utxoStatus)
|
||||
} catch (err) {
|
||||
// Handle corner case of bad-data in the Offer model.
|
||||
if (err.message.includes('txid needs to be a proper transaction ID')) {
|
||||
if (err.message && err.message.includes('txid needs to be a proper transaction ID')) {
|
||||
console.log(`Deleting Offer with bad data: ${JSON.stringify(thisOffer, null, 2)}`)
|
||||
await thisOffer.remove()
|
||||
continue
|
||||
@@ -384,7 +384,7 @@ class OfferUseCases {
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Error in removeStaleOffers()')
|
||||
console.error('Error in removeStaleOffers(): ', err)
|
||||
throw err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ class OrderLib {
|
||||
|
||||
// If there are fewer tokens in the wallet than what's in the order,
|
||||
// throw an error.
|
||||
if (totalTokenBalance <= orderEntity.numTokens || isNaN(totalTokenBalance)) {
|
||||
if (totalTokenBalance < orderEntity.numTokens || isNaN(totalTokenBalance)) {
|
||||
throw new Error(
|
||||
'App wallet does not have enough tokens to satisfy the SELL order.'
|
||||
)
|
||||
@@ -198,7 +198,7 @@ class OrderLib {
|
||||
// console.log('utxoStatus: ', utxoStatus)
|
||||
} catch (err) {
|
||||
// Handle corner case of bad-data in the Order model.
|
||||
if (err.message.includes('txid needs to be a proper transaction ID')) {
|
||||
if (err.message && err.message.includes('txid needs to be a proper transaction ID')) {
|
||||
console.log(`Deleting Order with bad data: ${JSON.stringify(thisOrder, null, 2)}`)
|
||||
await thisOrder.remove()
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user