Skip to content

Commit

Permalink
refactor: Update matchOrderOutputs return type
Browse files Browse the repository at this point in the history
  • Loading branch information
duanyytop committed Aug 22, 2024
1 parent f1743d9 commit dccd430
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 16 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@nervina-labs/ckb-dex",
"version": "0.5.0",
"version": "0.6.0",
"description": "The JavaScript SDK for CKB DEX",
"author": "duanyytop <duanyytop@gmail.com>",
"license": "MIT",
Expand Down
20 changes: 10 additions & 10 deletions src/order/helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,32 +53,32 @@ export const deserializeOutPoints = (outPointHexList: Hex[]) => {
return outPoints
}

export const cleanUpUdtOutputs = (orderCells: CKBComponents.LiveCell[], buyerLock: CKBComponents.Script) => {
export const cleanUpUdtOutputs = (orderCells: CKBComponents.LiveCell[], lock: CKBComponents.Script) => {
const orderUdtTypeHexSet = new Set(orderCells.map(cell => serializeScript(cell.output.type!)))
const orderUdtTypes: CKBComponents.Script[] = []
for (const orderUdtTypeHex of orderUdtTypeHexSet) {
orderUdtTypes.push(blockchain.Script.unpack(orderUdtTypeHex) as CKBComponents.Script)
}

const buyerUdtOutputs: CKBComponents.CellOutput[] = []
const buyerUdtOutputsData: Hex[] = []
let buyerUdtOutputsCapacity = BigInt(0)
const udtOutputs: CKBComponents.CellOutput[] = []
const udtOutputsData: Hex[] = []
let sumUdtCapacity = BigInt(0)

for (const orderUdtType of orderUdtTypes) {
buyerUdtOutputsCapacity += calculateUdtCellCapacity(buyerLock, orderUdtType!)
buyerUdtOutputs.push({
lock: buyerLock,
sumUdtCapacity += calculateUdtCellCapacity(lock, orderUdtType!)
udtOutputs.push({
lock: lock,
type: orderUdtType,
capacity: append0x(calculateUdtCellCapacity(buyerLock, orderUdtType!).toString(16)),
capacity: append0x(calculateUdtCellCapacity(lock, orderUdtType!).toString(16)),
})
const udtAmount = orderCells
.filter(cell => serializeScript(cell.output.type!) === serializeScript(orderUdtType))
.map(cell => leToU128(cell.data?.content!))
.reduce((prev, current) => prev + current, BigInt(0))
buyerUdtOutputsData.push(append0x(u128ToLe(udtAmount)))
udtOutputsData.push(append0x(u128ToLe(udtAmount)))
}

return { buyerUdtOutputs, buyerUdtOutputsData, buyerUdtOutputsCapacity }
return { udtOutputs, udtOutputsData, sumUdtCapacity }
}

export const isUdtAsset = (asset: CKBAsset) => {
Expand Down
8 changes: 4 additions & 4 deletions src/order/order.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ describe('dex test cases', () => {
hashType: 'type',
args: '0x00010748fce626e566ab4dbd1c95498bf10518443fc1',
}
const { buyerUdtOutputs, buyerUdtOutputsData, buyerUdtOutputsCapacity } = cleanUpUdtOutputs(orderCells, joyIDLock)
const { udtOutputs, udtOutputsData, sumUdtCapacity } = cleanUpUdtOutputs(orderCells, joyIDLock)

const expectedOutputs = [
{
Expand Down Expand Up @@ -242,9 +242,9 @@ describe('dex test cases', () => {
'0x00e87648170000000000000000000000',
]
const expectedCapacity = BigInt(435_0000_0000)
expect(JSON.stringify(expectedOutputs)).toBe(JSON.stringify(buyerUdtOutputs))
expect(JSON.stringify(expectedOutputsData)).toBe(JSON.stringify(buyerUdtOutputsData))
expect(expectedCapacity).toBe(buyerUdtOutputsCapacity)
expect(JSON.stringify(expectedOutputs)).toBe(JSON.stringify(udtOutputs))
expect(JSON.stringify(expectedOutputsData)).toBe(JSON.stringify(udtOutputsData))
expect(expectedCapacity).toBe(sumUdtCapacity)
})

it('matchOrderOutputs', async () => {
Expand Down
6 changes: 5 additions & 1 deletion src/order/taker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,11 @@ export const buildTakerTx = async ({

if (isUdtAsset(ckbAsset)) {
const { sellerOutputs, sellerOutputsData, sumSellerCapacity } = matchOrderOutputs(orderCells)
const { buyerUdtOutputs, buyerUdtOutputsData, buyerUdtOutputsCapacity } = cleanUpUdtOutputs(orderCells, buyerLock)
const {
udtOutputs: buyerUdtOutputs,
udtOutputsData: buyerUdtOutputsData,
sumUdtCapacity: buyerUdtOutputsCapacity,
} = cleanUpUdtOutputs(orderCells, buyerLock)

// The needExtraInputsCapacity doesn't include dex inputs capacity
const needExtraInputsCapacity = sumSellerCapacity + buyerUdtOutputsCapacity - dexInputsCapacity
Expand Down

0 comments on commit dccd430

Please sign in to comment.