Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
2 changes: 1 addition & 1 deletion .swift-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6.3.1
6.4.0
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ public struct AccumulateState: Sendable {
/// a
public var assigners: ConfigFixedSizeArray<ServiceIndex, ProtocolConfig.TotalNumberOfCores>
/// v
public var delegator: ServiceIndex
public var designator: ServiceIndex
/// r
public var registrar: ServiceIndex
/// z
Expand All @@ -132,7 +132,7 @@ public struct AccumulateState: Sendable {
authorizationQueue: authorizationQueue,
manager: manager,
assigners: assigners,
delegator: delegator,
designator: designator,
registrar: registrar,
alwaysAcc: alwaysAcc,
entropy: entropy,
Expand Down
36 changes: 18 additions & 18 deletions Blockchain/Sources/Blockchain/RuntimeProtocols/Accumulation.swift
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public struct AccountChanges: Sendable {
case updateAccount(ServiceIndex, ServiceAccountDetails)
case updateStorage(ServiceIndex, Data, Data?)
case updatePreimage(ServiceIndex, Data32, Data?)
case updatePreimageInfo(ServiceIndex, Data32, UInt32, StateKeys.ServiceAccountPreimageInfoKey.Value?)
case updateLookup(ServiceIndex, Data32, UInt32, StateKeys.ServiceAccountLookupKey.Value?)
}

// records for checking conflicts
Expand Down Expand Up @@ -125,14 +125,14 @@ public struct AccountChanges: Sendable {
updates.append(.updatePreimage(index, hash, value))
}

public mutating func addPreimageInfoUpdate(
public mutating func addLookupUpdate(
index: ServiceIndex,
hash: Data32,
length: UInt32,
value: StateKeys.ServiceAccountPreimageInfoKey.Value?,
value: StateKeys.ServiceAccountLookupKey.Value?,
) {
altered.insert(index)
updates.append(.updatePreimageInfo(index, hash, length, value))
updates.append(.updateLookup(index, hash, length, value))
}

public func apply(to accounts: ServiceAccountsMutRef) async throws {
Expand Down Expand Up @@ -164,7 +164,7 @@ public struct AccountChanges: Sendable {
case let .updatePreimage(index, hash, value):
guard !removedIndices.contains(index) else { continue }
accounts.set(serviceAccount: index, preimageHash: hash, value: value)
case let .updatePreimageInfo(index, hash, length, value):
case let .updateLookup(index, hash, length, value):
guard !removedIndices.contains(index) else { continue }
try await accounts.set(serviceAccount: index, preimageHash: hash, length: length, value: value)
}
Expand Down Expand Up @@ -380,7 +380,7 @@ extension Accumulation {
from batchResults: [(ServiceIndex, AccumulationResult)],
) {
let initialManager = currentState.manager
let initialDelegator = currentState.delegator
let initialDesignator = currentState.designator
let initialRegistrar = currentState.registrar
let initialAssigners = currentState.assigners

Expand All @@ -391,17 +391,17 @@ extension Accumulation {
temp[index] = singleOutput.state.assigners[index]
currentState.assigners = temp
}
// v' - New delegator
if service == initialDelegator {
currentState.delegator = singleOutput.state.delegator
// v' - New designator
if service == initialDesignator {
currentState.designator = singleOutput.state.designator
}
// r' - New registrar
if service == initialRegistrar {
currentState.registrar = singleOutput.state.registrar
}

// i' - Current delegator service can update validator queue
if service == initialDelegator {
// i' - Current designator service can update validator queue
if service == initialDesignator {
currentState.validatorQueue = singleOutput.state.validatorQueue
}
// q' - Current assigners update authorization queue
Expand All @@ -420,9 +420,9 @@ extension Accumulation {
if initialAssigners != managerResult.state.assigners {
currentState.assigners = managerResult.state.assigners
}
// v' - if manager changed delegator from initial, use manager's value
if initialDelegator != managerResult.state.delegator {
currentState.delegator = managerResult.state.delegator
// v' - if manager changed designator from initial, use manager's value
if initialDesignator != managerResult.state.designator {
currentState.designator = managerResult.state.designator
}
// r' - if manager changed registrar from initial, use manager's value
if initialRegistrar != managerResult.state.registrar {
Expand Down Expand Up @@ -510,15 +510,15 @@ extension Accumulation {
let serviceIndex = item.serviceIndex
let preimage = item.preimage
let preimageHash = Blake2b256.hash(preimage)
guard let preimageInfo = try await accounts.value.get(
guard let lookupHistory = try await accounts.value.get(
serviceAccount: serviceIndex,
preimageHash: preimageHash,
length: UInt32(preimage.count),
) else {
continue
}

if preimageInfo.isEmpty {
if lookupHistory.isEmpty {
try await accounts.set(
serviceAccount: serviceIndex,
preimageHash: preimageHash,
Expand Down Expand Up @@ -641,7 +641,7 @@ extension Accumulation {
authorizationQueue: authorizationQueue,
manager: privilegedServices.manager,
assigners: privilegedServices.assigners,
delegator: privilegedServices.delegator,
designator: privilegedServices.designator,
registrar: privilegedServices.registrar,
alwaysAcc: privilegedServices.alwaysAcc,
entropy: entropy,
Expand All @@ -662,7 +662,7 @@ extension Accumulation {
privilegedServices = PrivilegedServices(
manager: accumulateOutput.state.manager,
assigners: accumulateOutput.state.assigners,
delegator: accumulateOutput.state.delegator,
designator: accumulateOutput.state.designator,
registrar: accumulateOutput.state.registrar,
alwaysAcc: accumulateOutput.state.alwaysAcc,
)
Expand Down
18 changes: 9 additions & 9 deletions Blockchain/Sources/Blockchain/RuntimeProtocols/Assurances.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public enum AssurancesError: Error {
}

public protocol Assurances {
var reports:
var availabilityAssignments:
ConfigFixedSizeArray<
ReportItem?,
ProtocolConfig.TotalNumberOfCores,
Expand Down Expand Up @@ -47,18 +47,18 @@ extension Assurances {
timeslot: TimeslotIndex,
extrinsic: ExtrinsicAvailability,
) throws -> (
newReports: ConfigFixedSizeArray<
newAvailabilityAssignments: ConfigFixedSizeArray<
ReportItem?,
ProtocolConfig.TotalNumberOfCores,
>,
availableReports: [WorkReport],
) {
var newReports = reports
var newAvailabilityAssignments = availabilityAssignments

for i in 0 ..< newReports.count {
if let report = newReports[i] {
for i in 0 ..< newAvailabilityAssignments.count {
if let report = newAvailabilityAssignments[i] {
if (report.timeslot + UInt32(config.value.preimageReplacementPeriod)) <= timeslot {
newReports[i] = nil
newAvailabilityAssignments[i] = nil
}
}
}
Expand All @@ -74,17 +74,17 @@ extension Assurances {
var availableReports = [WorkReport]()

for (idx, count) in availabilityCount.enumerated() where count > 0 {
guard let report = reports[idx] else {
guard let report = availabilityAssignments[idx] else {
throw AssurancesError.assuranceForEmptyCore
}
if count >= ProtocolConfig.TwoThirdValidatorsPlusOne.read(config: config) {
availableReports.append(report.workReport)
newReports[idx] = nil // remove available report from pending reports
newAvailabilityAssignments[idx] = nil // remove available report from pending assignments
}
}

return (
newReports: newReports,
newAvailabilityAssignments: newAvailabilityAssignments,
availableReports: availableReports,
)
}
Expand Down
26 changes: 13 additions & 13 deletions Blockchain/Sources/Blockchain/RuntimeProtocols/Disputes.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,26 @@ extension ReportItem: Validate {

public struct DisputesPostState: Sendable, Equatable {
public var judgements: JudgementsState
public var reports: ConfigFixedSizeArray<
public var availabilityAssignments: ConfigFixedSizeArray<
ReportItem?,
ProtocolConfig.TotalNumberOfCores,
>

public init(
judgements: JudgementsState,
reports: ConfigFixedSizeArray<
availabilityAssignments: ConfigFixedSizeArray<
ReportItem?,
ProtocolConfig.TotalNumberOfCores,
>,
) {
self.judgements = judgements
self.reports = reports
self.availabilityAssignments = availabilityAssignments
}
}

public protocol Disputes {
var judgements: JudgementsState { get }
var reports: ConfigFixedSizeArray<
var availabilityAssignments: ConfigFixedSizeArray<
ReportItem?,
ProtocolConfig.TotalNumberOfCores,
> { get }
Expand All @@ -79,7 +79,7 @@ extension Disputes {
offenders: [Ed25519PublicKey],
) {
var newJudgements = judgements
var newReports = reports
var newAvailabilityAssignments = availabilityAssignments
var offenders: [Ed25519PublicKey] = []

let epochLength = UInt32(config.value.epochLength)
Expand Down Expand Up @@ -135,10 +135,10 @@ extension Disputes {

var allReports = Set(disputes.verdicts.map(\.reportHash))
allReports.formUnion(judgements.goodSet)
allReports.formUnion(judgements.banSet)
allReports.formUnion(judgements.badSet)
allReports.formUnion(judgements.wonkySet)

let expectedReportCount = disputes.verdicts.count + judgements.goodSet.count + judgements.banSet.count + judgements.wonkySet.count
let expectedReportCount = disputes.verdicts.count + judgements.goodSet.count + judgements.badSet.count + judgements.wonkySet.count

guard allReports.count == expectedReportCount else {
throw .duplicatedReport
Expand All @@ -161,7 +161,7 @@ extension Disputes {
}

tobeRemoved.insert(hash)
newJudgements.banSet.insert(hash)
newJudgements.badSet.insert(hash)

let faults = disputes.faults.filter { $0.reportHash == hash }
for fault in faults {
Expand Down Expand Up @@ -195,24 +195,24 @@ extension Disputes {
}

for culprit in disputes.culprits {
guard newJudgements.banSet.contains(culprit.reportHash) else {
guard newJudgements.badSet.contains(culprit.reportHash) else {
throw .invalidCulprit
}
}

for i in 0 ..< newReports.count {
if let report = newReports[i]?.workReport {
for i in 0 ..< newAvailabilityAssignments.count {
if let report = newAvailabilityAssignments[i]?.workReport {
let hash = report.hash()
if tobeRemoved.contains(hash) {
newReports[i] = nil
newAvailabilityAssignments[i] = nil
}
}
}

return (
state: DisputesPostState(
judgements: newJudgements,
reports: newReports,
availabilityAssignments: newAvailabilityAssignments,
),
offenders: offenders,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public protocol Guaranteeing {
var previousValidators: ConfigFixedSizeArray<
ValidatorKey, ProtocolConfig.TotalNumberOfValidators,
> { get }
var reports: ConfigFixedSizeArray<
var availabilityAssignments: ConfigFixedSizeArray<
ReportItem?,
ProtocolConfig.TotalNumberOfCores,
> { get }
Expand Down Expand Up @@ -114,7 +114,7 @@ extension Guaranteeing {
hashes.formUnion(item.workReport.refinementContext.prerequisiteWorkPackages)
}
}
for report in reports {
for report in availabilityAssignments {
if let report {
hashes.formUnion(report.workReport.refinementContext.prerequisiteWorkPackages)
}
Expand Down Expand Up @@ -160,7 +160,7 @@ extension Guaranteeing {
throw .invalidResultCodeHash
}

guard digest.gasLimit >= acc.minAccumlateGas else {
guard digest.gasLimit >= acc.minItemGas else {
throw .invalidServiceGas
}

Expand All @@ -179,7 +179,7 @@ extension Guaranteeing {
extrinsic: ExtrinsicGuarantees,
ancestry: ConfigLimitedSizeArray<AncestryItem, ProtocolConfig.Int0, ProtocolConfig.MaxLookupAnchorAge>?,
) async throws(GuaranteeingError) -> (
newReports: ConfigFixedSizeArray<
newAvailabilityAssignments: ConfigFixedSizeArray<
ReportItem?,
ProtocolConfig.TotalNumberOfCores,
>,
Expand Down Expand Up @@ -265,7 +265,7 @@ extension Guaranteeing {

let coreIndex = Int(report.coreIndex)

if let existingReport = reports[coreIndex] {
if let existingReport = availabilityAssignments[coreIndex] {
guard timeslot >= (existingReport.timeslot + UInt32(config.value.preimageReplacementPeriod)) else {
throw .coreNotAvailable
}
Expand Down Expand Up @@ -323,13 +323,13 @@ extension Guaranteeing {
}
}

var newReports = reports
var newAvailabilityAssignments = availabilityAssignments
var reported = [WorkReport]()

for guarantee in extrinsic.guarantees {
let report = guarantee.workReport
let coreIndex = Int(report.coreIndex)
newReports[coreIndex] = ReportItem(
newAvailabilityAssignments[coreIndex] = ReportItem(
workReport: report,
timeslot: timeslot,
)
Expand All @@ -339,6 +339,6 @@ extension Guaranteeing {
reported.sort { $0.packageSpecification.workPackageHash < $1.packageSpecification.workPackageHash }
let reportersArr = Array(reporters).sorted()

return (newReports, reported, reportersArr)
return (newAvailabilityAssignments, reported, reportersArr)
}
}
Loading
Loading