Skip to content

Commit 3521045

Browse files
chore(randomness): pr review
1 parent f3029a6 commit 3521045

4 files changed

Lines changed: 36 additions & 35 deletions

File tree

packages/randomness-service/src/RandomnessRepository.ts

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { type UUID, unknownToError } from "@happychain/common"
22
import { bigIntToZeroPadded } from "@happychain/common"
33
import { type Result, ResultAsync } from "neverthrow"
4-
import { Randomness, type RandomnessStatus } from "./Randomness"
4+
import type { Randomness, RandomnessStatus } from "./Randomness"
55
import { db } from "./db/driver"
6-
import type { RandomnessRow } from "./db/types"
6+
import { randomnessEntityToRow, randomnessRowToEntity } from "./db/types"
77

88
const COMMITMENT_PRUNE_INTERVAL_SECONDS = 120n // 2 minutes
99

@@ -13,30 +13,8 @@ export const DIGITS_MAX_UINT256 = 78
1313
export class RandomnessRepository {
1414
private readonly map = new Map<bigint, Randomness>()
1515

16-
private rowToEntity(row: RandomnessRow): Randomness {
17-
return new Randomness({
18-
timestamp: BigInt(row.timestamp),
19-
value: BigInt(row.value),
20-
hashedValue: row.hashedValue,
21-
commitmentTransactionIntentId: row.commitmentTransactionIntentId,
22-
revealTransactionIntentId: row.revealTransactionIntentId,
23-
status: row.status,
24-
})
25-
}
26-
27-
private entityToRow(entity: Randomness): RandomnessRow {
28-
return {
29-
timestamp: bigIntToZeroPadded(entity.timestamp, DIGITS_MAX_UINT256),
30-
value: bigIntToZeroPadded(entity.value, DIGITS_MAX_UINT256),
31-
hashedValue: entity.hashedValue,
32-
commitmentTransactionIntentId: entity.commitmentTransactionIntentId,
33-
revealTransactionIntentId: entity.revealTransactionIntentId,
34-
status: entity.status,
35-
}
36-
}
37-
3816
async start(): Promise<void> {
39-
const randomnessesDb = (await db.selectFrom("randomnesses").selectAll().execute()).map(this.rowToEntity)
17+
const randomnessesDb = (await db.selectFrom("randomnesses").selectAll().execute()).map(randomnessRowToEntity)
4018
for (const randomness of randomnessesDb) {
4119
this.map.set(randomness.timestamp, randomness)
4220
}
@@ -70,7 +48,7 @@ export class RandomnessRepository {
7048
*/
7149
async saveRandomness(randomness: Randomness): Promise<Result<void, Error>> {
7250
this.map.set(randomness.timestamp, randomness)
73-
const row = this.entityToRow(randomness)
51+
const row = randomnessEntityToRow(randomness)
7452
return await ResultAsync.fromPromise(db.insertInto("randomnesses").values(row).execute(), unknownToError).map(
7553
() => undefined,
7654
)
@@ -82,7 +60,7 @@ export class RandomnessRepository {
8260
*/
8361
async updateRandomness(randomness: Randomness): Promise<Result<void, Error>> {
8462
this.map.set(randomness.timestamp, randomness)
85-
const row = this.entityToRow(randomness)
63+
const row = randomnessEntityToRow(randomness)
8664
return await ResultAsync.fromPromise(
8765
db
8866
.updateTable("randomnesses")

packages/randomness-service/src/TransactionFactories.ts renamed to packages/randomness-service/src/TransactionFactory.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { Transaction, TransactionManager } from "@happychain/transaction-ma
22
import type { Address } from "viem"
33
import type { Randomness } from "./Randomness"
44

5-
export class TransactionFactories {
5+
export class TransactionFactory {
66
private readonly transactionManager: TransactionManager
77
private readonly randomContractAddress: Address
88
private readonly precommitDelay: bigint

packages/randomness-service/src/db/types.ts

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import type { Hex, UUID } from "@happychain/common"
2-
import type { RandomnessStatus } from "../Randomness"
1+
import { type Hex, type UUID, bigIntToZeroPadded } from "@happychain/common"
2+
import { Randomness, type RandomnessStatus } from "../Randomness"
3+
import { DIGITS_MAX_UINT256 } from "../RandomnessRepository"
34

45
// Values are stored as strings because they can be large numbers bigger than the max value of an SQLite integer
56
export interface RandomnessRow {
@@ -14,3 +15,25 @@ export interface RandomnessRow {
1415
export interface Database {
1516
randomnesses: RandomnessRow
1617
}
18+
19+
export function randomnessRowToEntity(row: RandomnessRow): Randomness {
20+
return new Randomness({
21+
timestamp: BigInt(row.timestamp),
22+
value: BigInt(row.value),
23+
hashedValue: row.hashedValue,
24+
commitmentTransactionIntentId: row.commitmentTransactionIntentId,
25+
revealTransactionIntentId: row.revealTransactionIntentId,
26+
status: row.status,
27+
})
28+
}
29+
30+
export function randomnessEntityToRow(entity: Randomness): RandomnessRow {
31+
return {
32+
timestamp: bigIntToZeroPadded(entity.timestamp, DIGITS_MAX_UINT256),
33+
value: bigIntToZeroPadded(entity.value, DIGITS_MAX_UINT256),
34+
hashedValue: entity.hashedValue,
35+
commitmentTransactionIntentId: entity.commitmentTransactionIntentId,
36+
revealTransactionIntentId: entity.revealTransactionIntentId,
37+
status: entity.status,
38+
}
39+
}

packages/randomness-service/src/index.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import { abis } from "./ABI/random.js"
44
import { CustomGasEstimator } from "./CustomGasEstimator.js"
55
import { Randomness, RandomnessStatus } from "./Randomness.js"
66
import { RandomnessRepository } from "./RandomnessRepository.js"
7-
import { TransactionFactories } from "./TransactionFactories.js"
7+
import { TransactionFactory } from "./TransactionFactory.js"
88
import { env } from "./env.js"
99

1010
class RandomnessService {
1111
private readonly randomnessRepository: RandomnessRepository
1212
private readonly txm: TransactionManager
13-
private readonly transactionFactories: TransactionFactories
13+
private readonly transactionFactory: TransactionFactory
1414
constructor() {
1515
this.randomnessRepository = new RandomnessRepository()
1616
this.txm = new TransactionManager({
@@ -22,7 +22,7 @@ class RandomnessService {
2222
url: env.RPC_URL,
2323
},
2424
})
25-
this.transactionFactories = new TransactionFactories(this.txm, env.RANDOM_CONTRACT_ADDRESS, env.PRECOMMIT_DELAY)
25+
this.transactionFactory = new TransactionFactory(this.txm, env.RANDOM_CONTRACT_ADDRESS, env.PRECOMMIT_DELAY)
2626

2727
this.txm.addTransactionOriginator(this.onCollectTransactions.bind(this))
2828
}
@@ -109,7 +109,7 @@ class RandomnessService {
109109

110110
const newRandomness = Randomness.createRandomness(timestamp)
111111

112-
const commitmentTransaction = this.transactionFactories.createCommitmentTransaction(newRandomness)
112+
const commitmentTransaction = this.transactionFactory.createCommitmentTransaction(newRandomness)
113113

114114
transactions.push(commitmentTransaction)
115115

@@ -130,7 +130,7 @@ class RandomnessService {
130130
return transactions
131131
}
132132

133-
const revealValueTransaction = this.transactionFactories.createRevealValueTransaction(randomnessToReveal)
133+
const revealValueTransaction = this.transactionFactory.createRevealValueTransaction(randomnessToReveal)
134134

135135
transactions.unshift(revealValueTransaction)
136136

0 commit comments

Comments
 (0)