72 lines
2.5 KiB
JavaScript
72 lines
2.5 KiB
JavaScript
|
|
"use strict";
|
|||
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
exports.PAYMENT_LEAF_V2 = exports.PAYMENT_LEAF_V1 = void 0;
|
|||
|
|
exports.paymentLeafV1Hash = paymentLeafV1Hash;
|
|||
|
|
exports.paymentLeafV2Hash = paymentLeafV2Hash;
|
|||
|
|
exports.merkleVerifyValueWei = merkleVerifyValueWei;
|
|||
|
|
exports.effectiveTokenOrNativeWei = effectiveTokenOrNativeWei;
|
|||
|
|
const ethers_1 = require("ethers");
|
|||
|
|
exports.PAYMENT_LEAF_V1 = 0x01;
|
|||
|
|
exports.PAYMENT_LEAF_V2 = 0x02;
|
|||
|
|
/** Matches CheckpointLeaf.paymentLeafV1 */
|
|||
|
|
function paymentLeafV1Hash(chainId, leaf) {
|
|||
|
|
const version = ethers_1.ethers.hexlify(new Uint8Array([exports.PAYMENT_LEAF_V1]));
|
|||
|
|
return ethers_1.ethers.keccak256(ethers_1.ethers.AbiCoder.defaultAbiCoder().encode(['bytes1', 'uint64', 'bytes32', 'address', 'address', 'uint256', 'uint256', 'uint64', 'uint256', 'bool'], [
|
|||
|
|
version,
|
|||
|
|
BigInt(chainId),
|
|||
|
|
leaf.txHash,
|
|||
|
|
leaf.from,
|
|||
|
|
leaf.to,
|
|||
|
|
BigInt(leaf.value ?? 0),
|
|||
|
|
BigInt(leaf.blockNumber),
|
|||
|
|
BigInt(leaf.blockTimestamp),
|
|||
|
|
BigInt(leaf.gasUsed ?? 0),
|
|||
|
|
leaf.success,
|
|||
|
|
]));
|
|||
|
|
}
|
|||
|
|
/** Matches CheckpointLeaf.paymentLeafV2 */
|
|||
|
|
function paymentLeafV2Hash(chainId, leaf) {
|
|||
|
|
const version = ethers_1.ethers.hexlify(new Uint8Array([exports.PAYMENT_LEAF_V2]));
|
|||
|
|
return ethers_1.ethers.keccak256(ethers_1.ethers.AbiCoder.defaultAbiCoder().encode([
|
|||
|
|
'bytes1',
|
|||
|
|
'uint64',
|
|||
|
|
'bytes32',
|
|||
|
|
'address',
|
|||
|
|
'address',
|
|||
|
|
'address',
|
|||
|
|
'uint256',
|
|||
|
|
'uint256',
|
|||
|
|
'uint64',
|
|||
|
|
'uint256',
|
|||
|
|
'bool',
|
|||
|
|
'uint32',
|
|||
|
|
], [
|
|||
|
|
version,
|
|||
|
|
BigInt(chainId),
|
|||
|
|
leaf.txHash,
|
|||
|
|
leaf.from,
|
|||
|
|
leaf.to,
|
|||
|
|
leaf.token,
|
|||
|
|
BigInt(leaf.value ?? 0),
|
|||
|
|
BigInt(leaf.blockNumber),
|
|||
|
|
BigInt(leaf.blockTimestamp),
|
|||
|
|
BigInt(leaf.gasUsed ?? 0),
|
|||
|
|
leaf.success,
|
|||
|
|
Number(leaf.logIndex ?? 0),
|
|||
|
|
]));
|
|||
|
|
}
|
|||
|
|
/** Historical batches 1–50: verify with native/on-chain wei only. */
|
|||
|
|
function merkleVerifyValueWei(record) {
|
|||
|
|
if (record.onChainValueWei != null && String(record.onChainValueWei) !== '') {
|
|||
|
|
return BigInt(String(record.onChainValueWei));
|
|||
|
|
}
|
|||
|
|
return BigInt(String(record.nativeValueWei ?? record.value ?? '0'));
|
|||
|
|
}
|
|||
|
|
function effectiveTokenOrNativeWei(record) {
|
|||
|
|
const native = BigInt(String(record.value ?? '0'));
|
|||
|
|
const tokenVal = record.token != null && record.tokenValue != null ? BigInt(String(record.tokenValue)) : 0n;
|
|||
|
|
if (tokenVal > 0n)
|
|||
|
|
return tokenVal;
|
|||
|
|
return native;
|
|||
|
|
}
|