mirror of
https://github.com/Permissionless-Software-Foundation/bch-dex.git
synced 2026-09-21 16:52:00 -07:00
Added makerAddr to Order and Offer
This commit is contained in:
@@ -34,6 +34,9 @@ Order entities have the following properties:
|
|||||||
- For AVAX, the min currency is nano-Avax.
|
- For AVAX, the min currency is nano-Avax.
|
||||||
- for eCash, the min currency is bits.
|
- for eCash, the min currency is bits.
|
||||||
- _minUnitsToExchange_ - The minimum order size accepted.
|
- _minUnitsToExchange_ - The minimum order size accepted.
|
||||||
|
- _makerAddr_ - The address for the taker to send money to.
|
||||||
|
- _p2wdbTxid_ - The TXID proof-of-burn used to add the order to the P2WDB.
|
||||||
|
- _p2wdbHash_ - The CID used to identify the order entry in the P2WDB.
|
||||||
|
|
||||||
- Authentication Data:
|
- Authentication Data:
|
||||||
- _signature_ - A message signed by the address which created the order.
|
- _signature_ - A message signed by the address which created the order.
|
||||||
@@ -70,6 +73,7 @@ Offer entities have the following properties:
|
|||||||
- For AVAX, the min currency is nano-Avax.
|
- For AVAX, the min currency is nano-Avax.
|
||||||
- for eCash, the min currency is bits.
|
- for eCash, the min currency is bits.
|
||||||
- _minUnitsToExchange_ - The minimum order size accepted.
|
- _minUnitsToExchange_ - The minimum order size accepted.
|
||||||
|
- _makerAddr_ - The address for the taker to send money to.
|
||||||
- _p2wdbTxid_ - The TXID proof-of-burn used to add the order to the P2WDB.
|
- _p2wdbTxid_ - The TXID proof-of-burn used to add the order to the P2WDB.
|
||||||
- _p2wdbHash_ - The CID used to identify the order entry in the P2WDB.
|
- _p2wdbHash_ - The CID used to identify the order entry in the P2WDB.
|
||||||
- _offerStatus_ - The state of the offer. When the data is added to the P2WDB, it gets a value of 'posted', but the database model internal to bch-dex can have the following properties:
|
- _offerStatus_ - The state of the offer. When the data is added to the P2WDB, it gets a value of 'posted', but the database model internal to bch-dex can have the following properties:
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node index.js",
|
"start": "node index.js",
|
||||||
"test": "npm run test:all",
|
"test": "npm run test:all",
|
||||||
"test:all": "export BCH_DEX=test && nyc --reporter=text mocha --exit --timeout 15000 --recursive test/unit test/e2e/automated/",
|
"test:all": "export BCH_DEX=test && nyc --reporter=text mocha --exit --timeout 30000 --recursive test/unit test/e2e/automated/",
|
||||||
"test:unit": "export BCH_DEX=test && mocha --exit --timeout 15000 --recursive test/unit/",
|
"test:unit": "export BCH_DEX=test && mocha --exit --timeout 15000 --recursive test/unit/",
|
||||||
"test:e2e:auto": "export BCH_DEX=test && mocha --exit --timeout 30000 test/e2e/automated/",
|
"test:e2e:auto": "export BCH_DEX=test && mocha --exit --timeout 30000 test/e2e/automated/",
|
||||||
"test:integration": "export BCH_DEX=test && mocha --exit --timeout 45000 --recursive test/integration",
|
"test:integration": "export BCH_DEX=test && mocha --exit --timeout 45000 --recursive test/integration",
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ const Offer = new mongoose.Schema({
|
|||||||
p2wdbTxid: { type: String },
|
p2wdbTxid: { type: String },
|
||||||
p2wdbHash: { type: String },
|
p2wdbHash: { type: String },
|
||||||
offerStatus: { type: String },
|
offerStatus: { type: String },
|
||||||
|
makerAddr: { type: String },
|
||||||
|
|
||||||
// Authentication data
|
// Authentication data
|
||||||
signature: { type: String },
|
signature: { type: String },
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
Order Model. Orders are 'internal' to the system and track the HD wallet index
|
Order Model. Orders are 'internal' to the system and track the HD wallet index
|
||||||
that contains funds for that Order. This is in contrast to Offers, which
|
that contains funds for that Order. This is in contrast to Offers, which
|
||||||
are 'external' to the system and mirrored by every instance of bch-dex.
|
are 'external' to the system and mirrored by every instance of bch-dex.
|
||||||
|
|
||||||
|
See the dev-docs/specification.md for details on each property.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const mongoose = require('mongoose')
|
const mongoose = require('mongoose')
|
||||||
@@ -19,6 +21,7 @@ const Order = new mongoose.Schema({
|
|||||||
minUnitsToExchange: { type: String },
|
minUnitsToExchange: { type: String },
|
||||||
p2wdbTxid: { type: String },
|
p2wdbTxid: { type: String },
|
||||||
p2wdbHash: { type: String },
|
p2wdbHash: { type: String },
|
||||||
|
makerAddr: { type: String },
|
||||||
|
|
||||||
// Authentication data
|
// Authentication data
|
||||||
signature: { type: String },
|
signature: { type: String },
|
||||||
|
|||||||
+18
-2
@@ -17,7 +17,19 @@ class OfferEntity {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const { messageType, messageClass, tokenId, buyOrSell, rateInBaseUnit, minUnitsToExchange, numTokens, utxoTxid, utxoVout, offerStatus } = offerData.data
|
const {
|
||||||
|
messageType,
|
||||||
|
messageClass,
|
||||||
|
tokenId,
|
||||||
|
buyOrSell,
|
||||||
|
rateInBaseUnit,
|
||||||
|
minUnitsToExchange,
|
||||||
|
numTokens,
|
||||||
|
utxoTxid,
|
||||||
|
utxoVout,
|
||||||
|
offerStatus,
|
||||||
|
makerAddr
|
||||||
|
} = offerData.data
|
||||||
|
|
||||||
// Input Validation
|
// Input Validation
|
||||||
if (!messageType || typeof messageType !== 'number') {
|
if (!messageType || typeof messageType !== 'number') {
|
||||||
@@ -50,6 +62,9 @@ class OfferEntity {
|
|||||||
if (offerStatus && !this.offerStatus.includes(offerStatus)) {
|
if (offerStatus && !this.offerStatus.includes(offerStatus)) {
|
||||||
throw new Error("Property 'offerStatus' must be posted, taken, or dead")
|
throw new Error("Property 'offerStatus' must be posted, taken, or dead")
|
||||||
}
|
}
|
||||||
|
if (!makerAddr || typeof makerAddr !== 'string') {
|
||||||
|
throw new Error("Property 'makerAddr' must be a string.")
|
||||||
|
}
|
||||||
|
|
||||||
const validatedOfferData = {
|
const validatedOfferData = {
|
||||||
messageType,
|
messageType,
|
||||||
@@ -65,7 +80,8 @@ class OfferEntity {
|
|||||||
localTimestamp: offerData.localTimeStamp,
|
localTimestamp: offerData.localTimeStamp,
|
||||||
txid: offerData.txid,
|
txid: offerData.txid,
|
||||||
p2wdbHash: offerData.hash,
|
p2wdbHash: offerData.hash,
|
||||||
offerStatus: offerStatus || this.offerStatus[0]
|
offerStatus: offerStatus || this.offerStatus[0],
|
||||||
|
makerAddr
|
||||||
}
|
}
|
||||||
|
|
||||||
return validatedOfferData
|
return validatedOfferData
|
||||||
|
|||||||
@@ -52,6 +52,10 @@ class OrderLib {
|
|||||||
orderEntity.utxoTxid = utxoInfo.txid
|
orderEntity.utxoTxid = utxoInfo.txid
|
||||||
orderEntity.utxoVout = utxoInfo.vout
|
orderEntity.utxoVout = utxoInfo.vout
|
||||||
|
|
||||||
|
// Specify the address to send payment.
|
||||||
|
orderEntity.makerAddr = this.adapters.wallet.bchWallet.walletInfo.cashAddress
|
||||||
|
console.log('orderEntity.makerAddr: ', orderEntity.makerAddr)
|
||||||
|
|
||||||
// Add P2WDB specific flag for signaling that this is a new offer.
|
// Add P2WDB specific flag for signaling that this is a new offer.
|
||||||
orderEntity.dataType = 'offer'
|
orderEntity.dataType = 'offer'
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ async function start () {
|
|||||||
method: 'post',
|
method: 'post',
|
||||||
url: `${LOCALHOST}/offer/take`,
|
url: `${LOCALHOST}/offer/take`,
|
||||||
data: {
|
data: {
|
||||||
offerCid: 'zdpuAxgdi3az59KrbscntQR2tXjU7tycjvJk6YNN2usiF2t9m'
|
offerCid: 'zdpuAs5Djp9VrnheYTSDVes6f4KJVds2u3juM3MxwFYbTV8m2'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -252,7 +252,8 @@ describe('#Offer-Entity', () => {
|
|||||||
utxoTxid:
|
utxoTxid:
|
||||||
'241c06bf61384b8623477e419bf4779edbcc7e3bc862f0f179a9ed2967069b87',
|
'241c06bf61384b8623477e419bf4779edbcc7e3bc862f0f179a9ed2967069b87',
|
||||||
utxoVout: 0,
|
utxoVout: 0,
|
||||||
offerStatus: 'posted'
|
offerStatus: 'posted',
|
||||||
|
makerAddr: 'bitcoincash:qzl0d3gcqeypv4cy7gh8rgdszxa9vvm2acv7fqtd00'
|
||||||
},
|
},
|
||||||
timestamp: '2021-09-20T17:54:26.395Z',
|
timestamp: '2021-09-20T17:54:26.395Z',
|
||||||
localTimeStamp: '9/20/2021, 10:54:26 AM',
|
localTimeStamp: '9/20/2021, 10:54:26 AM',
|
||||||
|
|||||||
@@ -94,7 +94,8 @@ describe('#offer-use-case', () => {
|
|||||||
numTokens: 0.02,
|
numTokens: 0.02,
|
||||||
utxoTxid:
|
utxoTxid:
|
||||||
'241c06bf61384b8623477e419bf4779edbcc7e3bc862f0f179a9ed2967069b87',
|
'241c06bf61384b8623477e419bf4779edbcc7e3bc862f0f179a9ed2967069b87',
|
||||||
utxoVout: 0
|
utxoVout: 0,
|
||||||
|
makerAddr: 'bitcoincash:qzl0d3gcqeypv4cy7gh8rgdszxa9vvm2acv7fqtd00'
|
||||||
},
|
},
|
||||||
timestamp: '2021-09-20T17:54:26.395Z',
|
timestamp: '2021-09-20T17:54:26.395Z',
|
||||||
localTimeStamp: '9/20/2021, 10:54:26 AM',
|
localTimeStamp: '9/20/2021, 10:54:26 AM',
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ const BchTokenSweep = require('bch-token-sweep/index')
|
|||||||
// Local libraries
|
// Local libraries
|
||||||
const WalletAdapter = require('../../src/adapters/wallet')
|
const WalletAdapter = require('../../src/adapters/wallet')
|
||||||
|
|
||||||
|
// Constants
|
||||||
|
const EMTPY_ADDR_CUTOFF = 5
|
||||||
|
|
||||||
async function sweepFunds () {
|
async function sweepFunds () {
|
||||||
try {
|
try {
|
||||||
// Open the wallet files.
|
// Open the wallet files.
|
||||||
@@ -69,9 +72,9 @@ async function sweepFunds () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
hdIndex++
|
hdIndex++
|
||||||
} while (emptyAddrCnt < 10)
|
} while (emptyAddrCnt < EMTPY_ADDR_CUTOFF)
|
||||||
|
|
||||||
console.log('5 empty addresses detected. Exiting.')
|
console.log(`${EMTPY_ADDR_CUTOFF} empty addresses detected. Exiting.`)
|
||||||
|
|
||||||
console.log('\n\nDo not forget to reset the nextAddress property in the wallet.json file!\n\n')
|
console.log('\n\nDo not forget to reset the nextAddress property in the wallet.json file!\n\n')
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
Reference in New Issue
Block a user