@@ -188,16 +188,11 @@ validateScriptData d =
188
188
err: _ -> Left err
189
189
where
190
190
-- collect all errors in a monoidal fold style:
191
- collect (ScriptDataNumber n) =
192
- [ ScriptDataNumberOutOfRange n
193
- | n > fromIntegral (maxBound :: Word64 )
194
- || n < negate (fromIntegral (maxBound :: Word64 ))
195
- ]
196
- collect (ScriptDataBytes bs) =
197
- [ ScriptDataBytesTooLong len
198
- | let len = BS. length bs
199
- , len > scriptDataByteStringMaxLength
200
- ]
191
+
192
+ -- Arbitrary size numbers are fine
193
+ collect (ScriptDataNumber _) = []
194
+ -- Arbitrary sized bytes are fine
195
+ collect (ScriptDataBytes _) = []
201
196
collect (ScriptDataList xs) =
202
197
foldMap collect xs
203
198
@@ -206,51 +201,27 @@ validateScriptData d =
206
201
<> collect v)
207
202
kvs
208
203
204
+ -- Constr tags do need to be less than a Word64
209
205
collect (ScriptDataConstructor n xs) =
210
206
[ ScriptDataConstructorOutOfRange n
211
207
| n > fromIntegral (maxBound :: Word64 ) || n < 0 ]
212
208
<> foldMap collect xs
213
209
214
210
215
- -- | The maximum length of a script data byte string value.
216
- scriptDataByteStringMaxLength :: Int
217
- scriptDataByteStringMaxLength = 64
218
-
219
-
220
211
-- | An error in script data due to an out-of-range value.
221
212
--
222
- data ScriptDataRangeError =
213
+ newtype ScriptDataRangeError =
223
214
224
215
-- | The number is outside the maximum range of @-2^64-1 .. 2^64-1@.
225
216
--
226
- ScriptDataNumberOutOfRange ! Integer
227
-
228
- -- | The number is outside the maximum range of @-2^64-1 .. 2^64-1@.
229
- --
230
- | ScriptDataConstructorOutOfRange ! Integer
231
-
232
- -- | The length of a byte string metadatum value exceeds the maximum of
233
- -- 64 bytes.
234
- --
235
- | ScriptDataBytesTooLong ! Int
217
+ ScriptDataConstructorOutOfRange Integer
236
218
deriving (Eq , Show )
237
219
238
220
instance Error ScriptDataRangeError where
239
- displayError (ScriptDataNumberOutOfRange n) =
240
- " Number in script data value "
241
- <> show n
242
- <> " is outside the range -(2^64-1) .. 2^64-1."
243
221
displayError (ScriptDataConstructorOutOfRange n) =
244
222
" Constructor numbers in script data value "
245
223
<> show n
246
224
<> " is outside the range 0 .. 2^64-1."
247
- displayError (ScriptDataBytesTooLong actualLen) =
248
- " Byte strings in script data must consist of at most "
249
- <> show scriptDataByteStringMaxLength
250
- <> " bytes, but it consists of "
251
- <> show actualLen
252
- <> " bytes."
253
-
254
225
255
226
-- ----------------------------------------------------------------------------
256
227
-- JSON conversion
0 commit comments