Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions src/core/payments/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,19 @@ export const BUFFER_DENOMINATOR = 10n
*/
export const STORAGE_SCALE_MAX = 10_000_000
export const STORAGE_SCALE_MAX_BI = BigInt(STORAGE_SCALE_MAX)

/** PDP Leaf Size - the payment rate is based on `rawSize` bytes rounded up to the next multiple of 32.
*
* @see - https://github.com/FilOzone/synapse-sdk/issues/339#issue-3539254596
*/
export const PDP_LEAF_SIZE = 32

/**
* Pad raw size to the next multiple of 32 bytes
*
* @param rawSizeBytes - The actual size in bytes
* @returns Padded size (next multiple of 32)
*/
export function padSizeToPDPLeaves(rawSizeBytes: number): number {
return Math.ceil(rawSizeBytes / PDP_LEAF_SIZE) * PDP_LEAF_SIZE
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this shouldn't go in constants.ts it should probably go in a new file: /core/payments/utils.ts

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

alright. let me update that.

4 changes: 3 additions & 1 deletion src/core/payments/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
MAX_LOCKUP_ALLOWANCE,
MAX_RATE_ALLOWANCE,
MIN_FIL_FOR_GAS,
padSizeToPDPLeaves,
STORAGE_SCALE_MAX,
STORAGE_SCALE_MAX_BI,
USDFC_DECIMALS,
Expand Down Expand Up @@ -826,7 +827,8 @@ export function calculateDepositCapacity(
* @returns Required allowances for the piece
*/
export function calculateRequiredAllowances(pieceSizeBytes: number, pricePerTiBPerEpoch: bigint): StorageAllowances {
const storageTiB = pieceSizeBytes / Number(SIZE_CONSTANTS.TiB)
const paddedSizeBytes = padSizeToPDPLeaves(pieceSizeBytes)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are a lot of other places where we use pieceSizeBytes.

your util function is correct, but I'm worried we're missing a few places.. this might need to wait until we clean up src/core/payments

Copy link
Author

@kaf-lamed-beyt kaf-lamed-beyt Nov 20, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sounds, good.

let me find some of them while you're doing the cleanup. what do you think?

const storageTiB = paddedSizeBytes / Number(SIZE_CONSTANTS.TiB)
return calculateStorageAllowances(storageTiB, pricePerTiBPerEpoch)
}

Expand Down
Loading