scalus.uplc.builtin.Data
See theData companion object
The universal data type for Plutus smart contracts.
Data is the core serializable type used throughout Cardano for representing:
- Script datums attached to UTxOs
- Redeemers passed to validators
- Arbitrary structured data in smart contracts
It corresponds to the BuiltinData type in Plutus Core and can represent any algebraic data type through its five constructors:
- Data.Constr - Constructor application with tag and arguments (for sum/product types)
- Data.Map - Key-value mappings
- Data.List - Ordered sequences
- Data.I - Arbitrary-precision integers
- Data.B - Byte strings
==Encoding Convention==
Scalus uses the standard Plutus Data encoding:
- Sum types use
Constrwith constructor index as tag - Product types (case classes) use
Constrwith fields as arguments Option[A]encodes asConstr(0, [])forNone,Constr(1, [value])forSomeBooleanencodes asConstr(0, [])forfalse,Constr(1, [])fortrue
==UPLC Builtin Operations==
The following UPLC builtins operate on Data:
chooseData- Pattern match on Data constructorconstrData,mapData,listData,iData,bData- Construct Data valuesunConstrData,unMapData,unListData,unIData,unBData- Deconstruct Data valuesequalsData- Structural equality comparisonserialiseData- CBOR serialization (Plutus V2+)
Attributes
- See also
-
scalus.uplc.builtin.ToData for automatic encoding to Data
scalus.uplc.builtin.FromData for automatic decoding from Data
- Example
-
// Encoding a simple value val intData: Data = Data.I(42) // Encoding a product type (pair) val pairData: Data = Data.Constr(0, List(Data.I(1), Data.I(2))) // Encoding a sum type (Option) val someData: Data = Data.Constr(1, List(Data.I(42))) // Some(42) val noneData: Data = Data.Constr(0, List.Nil) // None - Companion
- object
- Graph
-
- Supertypes
-
class Objecttrait Matchableclass Any
- Known subtypes
Members list
In this article