Skip to content
This repository has been archived by the owner on Jun 11, 2024. It is now read-only.

Commit

Permalink
Merge pull request #43 from LiskHQ/feature/genesis-schema
Browse files Browse the repository at this point in the history
Setup schemas for genesis block processing - Closes #32
  • Loading branch information
emiliolisk committed Sep 12, 2022
2 parents e0aa748 + 908b783 commit d33d0d2
Show file tree
Hide file tree
Showing 2 changed files with 219 additions and 1 deletion.
213 changes: 212 additions & 1 deletion src/app/modules/dex/schemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@

import {
MAX_NUM_BYTES_Q96,
NUM_BYTES_ADDRESS
NUM_BYTES_ADDRESS,
NUM_BYTES_POOL_ID,
NUM_BYTES_POSITION_ID,
NUM_BYTES_TICK_ID
} from './constants'

export const poolsSchema = {
Expand Down Expand Up @@ -169,4 +172,212 @@ export const settingsSchema = {
}
}
}
}

export const genesisDEXSchema = {
$id: '/dex/genesis',
"type": "object",
"required": [
"stateSubstore",
"poolSubstore",
"priceTickSubstore",
"positionSubstore",
"settingsSubstore"
],
"properties": {
"stateSubstore": {
"type": "object",
"fieldNumber": 1,
"required": [
"positionCounter",
"collectableLSKFees"
],
"properties": {
"positionCounter": {
"dataType": "uint64",
"fieldNumber": 1
},
"collectableLSKFees": {
"dataType": "uint64",
"fieldNumber": 2
}
}
},
"poolSubstore": {
"type": "array",
"fieldNumber": 2,
"items": {
"type": "object",
"required": [
"poolId",
"liquidity",
"sqrtPrice",
"feeGrowthGlobal0",
"feeGrowthGlobal1",
"tickSpacing"
],
"properties": {
"poolId": {
"dataType": "bytes",
"length": NUM_BYTES_POOL_ID,
"fieldNumber": 1
},
"liquidity": {
"dataType": "uint64",
"fieldNumber": 2
},
"sqrtPrice": {
"dataType": "bytes",
"maxLength": MAX_NUM_BYTES_Q96,
"fieldNumber": 3
},
"feeGrowthGlobal0": {
"dataType": "bytes",
"maxLength": MAX_NUM_BYTES_Q96,
"fieldNumber": 4
},
"feeGrowthGlobal1": {
"dataType": "bytes",
"maxLength": MAX_NUM_BYTES_Q96,
"fieldNumber": 5
},
"tickSpacing": {
"dataType": "uint32",
"fieldNumber": 6
}
}
}
},
"priceTickSubstore": {
"type": "array",
"fieldNumber": 3,
"items": {
"type": "object",
"required": [
"tickId",
"liquidityNet",
"liquidityGross",
"feeGrowthOutside0",
"feeGrowthOutside1"
],
"properties": {
"tickId": {
"dataType": "bytes",
"length": NUM_BYTES_TICK_ID,
"fieldNumber": 1
},
"liquidityNet": {
"dataType": "sint64",
"fieldNumber": 2
},
"liquidityGross": {
"dataType": "uint64",
"fieldNumber": 3
},
"feeGrowthOutside0": {
"dataType": "bytes",
"maxLength": MAX_NUM_BYTES_Q96,
"fieldNumber": 4
},
"feeGrowthOutside1": {
"dataType": "bytes",
"maxLength": MAX_NUM_BYTES_Q96,
"fieldNumber": 5
}
}
}
},
"positionSubstore": {
"type": "array",
"fieldNumber": 4,
"items": {
"type": "object",
"required": [
"positionId",
"tickLower",
"tickUpper",
"liquidity",
"feeGrowthInsideLast0",
"feeGrowthInsideLast1"
],
"properties": {
"positionId": {
"dataType": "bytes",
"length": NUM_BYTES_POSITION_ID,
"fieldNumber": 1
},
"tickLower": {
"dataType": "sint32",
"fieldNumber": 2
},
"tickUpper": {
"dataType": "sint32",
"fieldNumber": 3
},
"liquidity": {
"dataType": "uint64",
"fieldNumber": 4
},
"feeGrowthInsideLast0": {
"dataType": "bytes",
"maxLength": MAX_NUM_BYTES_Q96,
"fieldNumber": 5
},
"feeGrowthInsideLast1": {
"dataType": "bytes",
"maxLength": MAX_NUM_BYTES_Q96,
"fieldNumber": 6
},
"ownerAddress": {
"dataType": "bytes",
"length": NUM_BYTES_ADDRESS,
"fieldNumber": 7
}
}
}
},
"settingsSubstore": {
"type": "object",
"fieldNumber": 5,
"required": [
"protocolFeeAddress",
"protocolFeePart",
"validatorsLSKRewardsPart",
"poolCreationSettings"
],
"properties": {
"protocolFeeAddress": {
"dataType": "bytes",
"length": NUM_BYTES_ADDRESS,
"fieldNumber": 1
},
"protocolFeePart": {
"dataType": "uint32",
"fieldNumber": 2
},
"validatorsLSKRewardsPart": {
"dataType": "uint32",
"fieldNumber": 3
},
"poolCreationSettings": {
"type": "array",
"fieldNumber": 4,
"items": {
"type": "object",
"required": ["feeTier", "tickSpacing"],
"properties": {
"feeTier": {
"dataType": "uint32",
"fieldNumber": 1
},
"tickSpacing": {
"dataType": "uint32",
"fieldNumber": 2
}
}
}
}
}
}
}
}
7 changes: 7 additions & 0 deletions test/unit/modules/dex/schemaGenesis.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { genesisDEXSchema } from '../../../../src/app/modules/dex/schemas'

describe('dex:schema:genesis', () => {
it('should have the pool schema defined', async () => {
expect(genesisDEXSchema?.$id).toBe('/dex/genesis');
});
});

0 comments on commit d33d0d2

Please sign in to comment.