Skip to content

Commit 6242ba4

Browse files
authored
GP 0.7.1 (#370)
* update testvector * 0.7.1 updates and fix * update javajam tests * reorg fuzz traces * fix lint * update fuzz target version
1 parent f0b98fd commit 6242ba4

File tree

158 files changed

+578
-568
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

158 files changed

+578
-568
lines changed

Blockchain/Sources/Blockchain/Config/ProtocolConfig+Preset.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ extension Ref where T == ProtocolConfig {
3939
slotPeriodSeconds: 4,
4040
maxAuthorizationsQueueItems: 10,
4141
coreAssignmentRotationPeriod: 6,
42-
maxAccumulationQueueItems: 1024,
42+
minPublicServiceIndex: 1 << 16,
4343
maxWorkPackageExtrinsics: 128,
4444
maxIsAuthorizedCodeSize: 64000,
4545
maxServiceCodeSize: 4_000_000,
@@ -84,7 +84,7 @@ extension Ref where T == ProtocolConfig {
8484
slotPeriodSeconds: 6,
8585
maxAuthorizationsQueueItems: 80,
8686
coreAssignmentRotationPeriod: 10,
87-
maxAccumulationQueueItems: 1024,
87+
minPublicServiceIndex: 1 << 16,
8888
maxWorkPackageExtrinsics: 128,
8989
maxIsAuthorizedCodeSize: 64000,
9090
maxServiceCodeSize: 4_000_000,
@@ -128,7 +128,7 @@ extension Ref where T == ProtocolConfig {
128128
slotPeriodSeconds: 6,
129129
maxAuthorizationsQueueItems: 80,
130130
coreAssignmentRotationPeriod: 4,
131-
maxAccumulationQueueItems: 1024,
131+
minPublicServiceIndex: 1 << 16,
132132
maxWorkPackageExtrinsics: 128,
133133
maxIsAuthorizedCodeSize: 64000,
134134
maxServiceCodeSize: 4_000_000,
@@ -172,7 +172,7 @@ extension Ref where T == ProtocolConfig {
172172
slotPeriodSeconds: 6,
173173
maxAuthorizationsQueueItems: 80,
174174
coreAssignmentRotationPeriod: 4,
175-
maxAccumulationQueueItems: 1024,
175+
minPublicServiceIndex: 1 << 16,
176176
maxWorkPackageExtrinsics: 128,
177177
maxIsAuthorizedCodeSize: 64000,
178178
maxServiceCodeSize: 4_000_000,
@@ -216,7 +216,7 @@ extension Ref where T == ProtocolConfig {
216216
slotPeriodSeconds: 6,
217217
maxAuthorizationsQueueItems: 80,
218218
coreAssignmentRotationPeriod: 4,
219-
maxAccumulationQueueItems: 1024,
219+
minPublicServiceIndex: 1 << 16,
220220
maxWorkPackageExtrinsics: 128,
221221
maxIsAuthorizedCodeSize: 64000,
222222
maxServiceCodeSize: 4_000_000,
@@ -260,7 +260,7 @@ extension Ref where T == ProtocolConfig {
260260
slotPeriodSeconds: 6,
261261
maxAuthorizationsQueueItems: 80,
262262
coreAssignmentRotationPeriod: 4,
263-
maxAccumulationQueueItems: 1024,
263+
minPublicServiceIndex: 1 << 16,
264264
maxWorkPackageExtrinsics: 128,
265265
maxIsAuthorizedCodeSize: 64000,
266266
maxServiceCodeSize: 4_000_000,
@@ -304,7 +304,7 @@ extension Ref where T == ProtocolConfig {
304304
slotPeriodSeconds: 6,
305305
maxAuthorizationsQueueItems: 80,
306306
coreAssignmentRotationPeriod: 4,
307-
maxAccumulationQueueItems: 1024,
307+
minPublicServiceIndex: 1 << 16,
308308
maxWorkPackageExtrinsics: 128,
309309
maxIsAuthorizedCodeSize: 64000,
310310
maxServiceCodeSize: 4_000_000,
@@ -348,7 +348,7 @@ extension Ref where T == ProtocolConfig {
348348
slotPeriodSeconds: 6,
349349
maxAuthorizationsQueueItems: 80,
350350
coreAssignmentRotationPeriod: 4,
351-
maxAccumulationQueueItems: 1024,
351+
minPublicServiceIndex: 1 << 16,
352352
maxWorkPackageExtrinsics: 128,
353353
maxIsAuthorizedCodeSize: 64000,
354354
maxServiceCodeSize: 4_000_000,
@@ -392,7 +392,7 @@ extension Ref where T == ProtocolConfig {
392392
slotPeriodSeconds: 6,
393393
maxAuthorizationsQueueItems: 80,
394394
coreAssignmentRotationPeriod: 4,
395-
maxAccumulationQueueItems: 1024,
395+
minPublicServiceIndex: 1 << 16,
396396
maxWorkPackageExtrinsics: 128,
397397
maxIsAuthorizedCodeSize: 64000,
398398
maxServiceCodeSize: 4_000_000,
@@ -436,7 +436,7 @@ extension Ref where T == ProtocolConfig {
436436
slotPeriodSeconds: 6,
437437
maxAuthorizationsQueueItems: 80,
438438
coreAssignmentRotationPeriod: 10,
439-
maxAccumulationQueueItems: 1024,
439+
minPublicServiceIndex: 1 << 16,
440440
maxWorkPackageExtrinsics: 128,
441441
maxIsAuthorizedCodeSize: 64000,
442442
maxServiceCodeSize: 4_000_000,

Blockchain/Sources/Blockchain/Config/ProtocolConfig.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ public struct ProtocolConfig: Sendable, Codable, Equatable {
7171
/// R = 10: The rotation period of validator-core assignments, in timeslots.
7272
public var coreAssignmentRotationPeriod: Int
7373

74-
/// S = 1024: The maximum number of entries in the accumulation queue.
75-
public var maxAccumulationQueueItems: Int
74+
/// S = 2^16: The minimum public service index. Services of indices below these may only be created by the Registrar.
75+
public var minPublicServiceIndex: Int
7676

7777
/// T = 128: The maximum number of extrinsics in a work-package.
7878
public var maxWorkPackageExtrinsics: Int
@@ -152,7 +152,7 @@ public struct ProtocolConfig: Sendable, Codable, Equatable {
152152
slotPeriodSeconds: Int,
153153
maxAuthorizationsQueueItems: Int,
154154
coreAssignmentRotationPeriod: Int,
155-
maxAccumulationQueueItems: Int,
155+
minPublicServiceIndex: Int,
156156
maxWorkPackageExtrinsics: Int,
157157
maxIsAuthorizedCodeSize: Int,
158158
maxServiceCodeSize: Int,
@@ -194,7 +194,7 @@ public struct ProtocolConfig: Sendable, Codable, Equatable {
194194
self.slotPeriodSeconds = slotPeriodSeconds
195195
self.maxAuthorizationsQueueItems = maxAuthorizationsQueueItems
196196
self.coreAssignmentRotationPeriod = coreAssignmentRotationPeriod
197-
self.maxAccumulationQueueItems = maxAccumulationQueueItems
197+
self.minPublicServiceIndex = minPublicServiceIndex
198198
self.maxWorkPackageExtrinsics = maxWorkPackageExtrinsics
199199
self.maxIsAuthorizedCodeSize = maxIsAuthorizedCodeSize
200200
self.maxServiceCodeSize = maxServiceCodeSize
@@ -273,8 +273,8 @@ extension ProtocolConfig {
273273
? other.maxAuthorizationsQueueItems : maxAuthorizationsQueueItems,
274274
coreAssignmentRotationPeriod: other.coreAssignmentRotationPeriod != 0
275275
? other.coreAssignmentRotationPeriod : coreAssignmentRotationPeriod,
276-
maxAccumulationQueueItems: other.maxAccumulationQueueItems != 0
277-
? other.maxAccumulationQueueItems : maxAccumulationQueueItems,
276+
minPublicServiceIndex: other.minPublicServiceIndex != 0
277+
? other.minPublicServiceIndex : minPublicServiceIndex,
278278
maxWorkPackageExtrinsics: other.maxWorkPackageExtrinsics != 0
279279
? other.maxWorkPackageExtrinsics : maxWorkPackageExtrinsics,
280280
maxIsAuthorizedCodeSize: other.maxIsAuthorizedCodeSize != 0
@@ -367,8 +367,8 @@ extension ProtocolConfig {
367367
coreAssignmentRotationPeriod = try decode(
368368
.coreAssignmentRotationPeriod, defaultValue: 0, required: required
369369
)
370-
maxAccumulationQueueItems = try decode(
371-
.maxAccumulationQueueItems, defaultValue: 0, required: required
370+
minPublicServiceIndex = try decode(
371+
.minPublicServiceIndex, defaultValue: 0, required: required
372372
)
373373
maxWorkPackageExtrinsics = try decode(
374374
.maxWorkPackageExtrinsics, defaultValue: 0, required: required
@@ -582,10 +582,10 @@ extension ProtocolConfig {
582582
}
583583
}
584584

585-
public enum MaxAccumulationQueueItems: ReadInt {
585+
public enum MinPublicServiceIndex: ReadInt {
586586
public typealias TConfig = ProtocolConfigRef
587587
public static func read(config: ProtocolConfigRef) -> Int {
588-
config.value.maxAccumulationQueueItems
588+
config.value.minPublicServiceIndex
589589
}
590590
}
591591

@@ -812,7 +812,7 @@ extension ProtocolConfig {
812812
slotPeriodSeconds: Int(slotPeriodSeconds),
813813
maxAuthorizationsQueueItems: Int(maxAuthorizationsQueueItems),
814814
coreAssignmentRotationPeriod: Int(coreAssignmentRotationPeriod),
815-
maxAccumulationQueueItems: 1024, // S = 1024
815+
minPublicServiceIndex: 1 << 16, // S = 2^16
816816
maxWorkPackageExtrinsics: Int(maxWorkPackageExtrinsics),
817817
maxIsAuthorizedCodeSize: Int(maxIsAuthorizedCodeSize),
818818
maxServiceCodeSize: Int(maxServiceCodeSize),

Blockchain/Sources/Blockchain/RuntimeProtocols/AccumulateFunction.swift

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import Codec
22
import Foundation
33
import Utils
44

5-
// wrangled operand tuple
6-
public struct OperandTuple: Codable {
5+
public struct OperandTuple: Codable, Sendable {
76
/// p
87
public var packageHash: Data32
98
/// e
@@ -41,6 +40,61 @@ public struct DeferredTransfers: Codable, Sendable {
4140
}
4241
}
4342

43+
public struct AccumulationInput: Sendable, Codable {
44+
public enum InputType: Sendable, Equatable {
45+
case operandTuple
46+
case deferredTransfers
47+
}
48+
49+
public var inputType: InputType
50+
public var operandTuple: OperandTuple?
51+
public var deferredTransfers: DeferredTransfers?
52+
53+
public init(operandTuple: OperandTuple) {
54+
inputType = .operandTuple
55+
self.operandTuple = operandTuple
56+
}
57+
58+
public init(deferredTransfers: DeferredTransfers) {
59+
inputType = .deferredTransfers
60+
self.deferredTransfers = deferredTransfers
61+
}
62+
63+
// Encodable
64+
public func encode(to encoder: Encoder) throws {
65+
var container = encoder.unkeyedContainer()
66+
switch inputType {
67+
case .operandTuple:
68+
try container.encode(UInt(0))
69+
try container.encode(operandTuple.unwrap())
70+
case .deferredTransfers:
71+
try container.encode(UInt(1))
72+
try container.encode(deferredTransfers.unwrap())
73+
}
74+
}
75+
76+
// Decodable
77+
public init(from decoder: Decoder) throws {
78+
var container = try decoder.unkeyedContainer()
79+
let variant = try container.decode(UInt.self)
80+
switch variant {
81+
case 0:
82+
let operandTuple = try container.decode(OperandTuple.self)
83+
self.init(operandTuple: operandTuple)
84+
case 1:
85+
let deferredTransfers = try container.decode(DeferredTransfers.self)
86+
self.init(deferredTransfers: deferredTransfers)
87+
default:
88+
throw DecodingError.dataCorrupted(
89+
DecodingError.Context(
90+
codingPath: decoder.codingPath,
91+
debugDescription: "Invalid AccumulationInput variant: \(variant)"
92+
)
93+
)
94+
}
95+
}
96+
}
97+
4498
/// Characterization (i.e. values capable of representing) of state components
4599
/// which are both needed and mutable by the accumulation process.
46100
public struct AccumulateState: Sendable {
@@ -64,6 +118,8 @@ public struct AccumulateState: Sendable {
64118
public var assigners: ConfigFixedSizeArray<ServiceIndex, ProtocolConfig.TotalNumberOfCores>
65119
// v
66120
public var delegator: ServiceIndex
121+
// r
122+
public var registrar: ServiceIndex
67123
// z
68124
public var alwaysAcc: [ServiceIndex: Gas]
69125

@@ -77,13 +133,14 @@ public struct AccumulateState: Sendable {
77133
manager: manager,
78134
assigners: assigners,
79135
delegator: delegator,
136+
registrar: registrar,
80137
alwaysAcc: alwaysAcc,
81138
entropy: entropy
82139
)
83140
}
84141
}
85142

86-
public class AccumlateResultContext {
143+
public class AccumulateResultContext {
87144
/// s: the accumulating service account index
88145
public var serviceIndex: ServiceIndex
89146
/// u

0 commit comments

Comments
 (0)