Eric 8b909f55d2
Remove saturation parameter
Remove saturation parameter, delta, and instead use expansionRate as part of the storage request, in preparation for a linear curve of the expanding window definition.
2024-09-20 15:57:14 +10:00

55 lines
1.2 KiB
JavaScript

const { ethers } = require("hardhat")
const { keccak256, defaultAbiCoder } = ethers.utils
function requestId(request) {
const Ask =
"tuple(int64, uint256, uint256, uint256, uint256, uint256, uint64)"
const Content = "tuple(string, bytes32)"
const Request =
"tuple(address, " + Ask + ", " + Content + ", uint256, bytes32, uint8)"
return keccak256(defaultAbiCoder.encode([Request], requestToArray(request)))
}
function askToArray(ask) {
return [
ask.slots,
ask.slotSize,
ask.duration,
ask.proofProbability,
ask.reward,
ask.collateral,
ask.maxSlotLoss,
]
}
function contentToArray(content) {
return [content.cid, content.merkleRoot]
}
function requestToArray(request) {
return [
[
request.client,
askToArray(request.ask),
contentToArray(request.content),
request.expiry,
request.nonce,
request.expansionRate,
],
]
}
function slotId(slot) {
const types = "tuple(bytes32, uint256)"
const values = [slot.request, slot.index]
const encoding = defaultAbiCoder.encode([types], [values])
return keccak256(encoding)
}
module.exports = {
requestId,
slotId,
requestToArray,
askToArray,
}