Plutus
Plutus related classes and functions.
- class pycardano.plutus.CostModels(*args, **kwargs)
Bases:
pycardano.serialization.DictCBORSerializable
- KEY_TYPE
alias of
int
- VALUE_TYPE
alias of
dict
- to_shallow_primitive() dict
Convert the instance to a CBOR primitive. If the primitive is a container, e.g. list, dict, the type of its elements could be either a Primitive or a CBORSerializable.
- Returns
A CBOR primitive.
- Return type
Primitive
- Raises
SerializeException – When the object could not be converted to CBOR primitive types.
- classmethod from_primitive(value: dict) pycardano.plutus.CostModels
Restore a primitive value to its original class type.
- Parameters
cls (DictBase) – The original class type.
value (
Primitive
) – A CBOR primitive.
- Returns
Restored object.
- Return type
DictBase
- Raises
DeserializeException – When the object could not be restored from primitives.
- pycardano.plutus.COST_MODELS = {0: {'sha2_256-memory-arguments': 4, 'equalsString-cpu-arguments-constant': 1000, 'cekDelayCost-exBudgetMemory': 100, 'lessThanEqualsByteString-cpu-arguments-intercept': 103599, 'divideInteger-memory-arguments-minimum': 1, 'appendByteString-cpu-arguments-slope': 621, 'blake2b-cpu-arguments-slope': 29175, 'iData-cpu-arguments': 150000, 'encodeUtf8-cpu-arguments-slope': 1000, 'unBData-cpu-arguments': 150000, 'multiplyInteger-cpu-arguments-intercept': 61516, 'cekConstCost-exBudgetMemory': 100, 'nullList-cpu-arguments': 150000, 'equalsString-cpu-arguments-intercept': 150000, 'trace-cpu-arguments': 150000, 'mkNilData-memory-arguments': 32, 'lengthOfByteString-cpu-arguments': 150000, 'cekBuiltinCost-exBudgetCPU': 29773, 'bData-cpu-arguments': 150000, 'subtractInteger-cpu-arguments-slope': 0, 'unIData-cpu-arguments': 150000, 'consByteString-memory-arguments-intercept': 0, 'divideInteger-memory-arguments-slope': 1, 'divideInteger-cpu-arguments-model-arguments-slope': 118, 'listData-cpu-arguments': 150000, 'headList-cpu-arguments': 150000, 'chooseData-memory-arguments': 32, 'equalsInteger-cpu-arguments-intercept': 136542, 'sha3_256-cpu-arguments-slope': 82363, 'sliceByteString-cpu-arguments-slope': 5000, 'unMapData-cpu-arguments': 150000, 'lessThanInteger-cpu-arguments-intercept': 179690, 'mkCons-cpu-arguments': 150000, 'appendString-memory-arguments-intercept': 0, 'modInteger-cpu-arguments-model-arguments-slope': 118, 'ifThenElse-cpu-arguments': 1, 'mkNilPairData-cpu-arguments': 150000, 'lessThanEqualsInteger-cpu-arguments-intercept': 145276, 'addInteger-memory-arguments-slope': 1, 'chooseList-memory-arguments': 32, 'constrData-memory-arguments': 32, 'decodeUtf8-cpu-arguments-intercept': 150000, 'equalsData-memory-arguments': 1, 'subtractInteger-memory-arguments-slope': 1, 'appendByteString-memory-arguments-intercept': 0, 'lengthOfByteString-memory-arguments': 4, 'headList-memory-arguments': 32, 'listData-memory-arguments': 32, 'consByteString-cpu-arguments-intercept': 150000, 'unIData-memory-arguments': 32, 'remainderInteger-memory-arguments-minimum': 1, 'bData-memory-arguments': 32, 'lessThanByteString-cpu-arguments-slope': 248, 'encodeUtf8-memory-arguments-intercept': 0, 'cekStartupCost-exBudgetCPU': 100, 'multiplyInteger-memory-arguments-intercept': 0, 'unListData-memory-arguments': 32, 'remainderInteger-cpu-arguments-model-arguments-slope': 118, 'cekVarCost-exBudgetCPU': 29773, 'remainderInteger-memory-arguments-slope': 1, 'cekForceCost-exBudgetCPU': 29773, 'sha2_256-cpu-arguments-slope': 29175, 'equalsInteger-memory-arguments': 1, 'indexByteString-memory-arguments': 1, 'addInteger-memory-arguments-intercept': 1, 'chooseUnit-cpu-arguments': 150000, 'sndPair-cpu-arguments': 150000, 'cekLamCost-exBudgetCPU': 29773, 'fstPair-cpu-arguments': 150000, 'quotientInteger-memory-arguments-minimum': 1, 'decodeUtf8-cpu-arguments-slope': 1000, 'lessThanInteger-memory-arguments': 1, 'lessThanEqualsInteger-cpu-arguments-slope': 1366, 'fstPair-memory-arguments': 32, 'modInteger-memory-arguments-intercept': 0, 'unConstrData-cpu-arguments': 150000, 'lessThanEqualsInteger-memory-arguments': 1, 'chooseUnit-memory-arguments': 32, 'sndPair-memory-arguments': 32, 'addInteger-cpu-arguments-intercept': 197209, 'decodeUtf8-memory-arguments-slope': 8, 'equalsData-cpu-arguments-intercept': 150000, 'mapData-cpu-arguments': 150000, 'mkPairData-cpu-arguments': 150000, 'quotientInteger-cpu-arguments-constant': 148000, 'consByteString-memory-arguments-slope': 1, 'cekVarCost-exBudgetMemory': 100, 'indexByteString-cpu-arguments': 150000, 'unListData-cpu-arguments': 150000, 'equalsInteger-cpu-arguments-slope': 1326, 'cekStartupCost-exBudgetMemory': 100, 'subtractInteger-cpu-arguments-intercept': 197209, 'divideInteger-cpu-arguments-model-arguments-intercept': 425507, 'divideInteger-memory-arguments-intercept': 0, 'cekForceCost-exBudgetMemory': 100, 'blake2b-cpu-arguments-intercept': 2477736, 'remainderInteger-cpu-arguments-constant': 148000, 'tailList-cpu-arguments': 150000, 'encodeUtf8-cpu-arguments-intercept': 150000, 'equalsString-cpu-arguments-slope': 1000, 'lessThanByteString-memory-arguments': 1, 'multiplyInteger-cpu-arguments-slope': 11218, 'appendByteString-cpu-arguments-intercept': 396231, 'lessThanEqualsByteString-cpu-arguments-slope': 248, 'modInteger-memory-arguments-slope': 1, 'addInteger-cpu-arguments-slope': 0, 'equalsData-cpu-arguments-slope': 10000, 'decodeUtf8-memory-arguments-intercept': 0, 'chooseList-cpu-arguments': 150000, 'constrData-cpu-arguments': 150000, 'equalsByteString-memory-arguments': 1, 'cekApplyCost-exBudgetCPU': 29773, 'quotientInteger-memory-arguments-slope': 1, 'verifySignature-cpu-arguments-intercept': 3345831, 'unMapData-memory-arguments': 32, 'mkCons-memory-arguments': 32, 'sliceByteString-memory-arguments-slope': 1, 'sha3_256-memory-arguments': 4, 'ifThenElse-memory-arguments': 1, 'mkNilPairData-memory-arguments': 32, 'equalsByteString-cpu-arguments-slope': 247, 'appendString-cpu-arguments-intercept': 150000, 'quotientInteger-cpu-arguments-model-arguments-slope': 118, 'cekApplyCost-exBudgetMemory': 100, 'equalsString-memory-arguments': 1, 'multiplyInteger-memory-arguments-slope': 1, 'cekBuiltinCost-exBudgetMemory': 100, 'remainderInteger-memory-arguments-intercept': 0, 'sha2_256-cpu-arguments-intercept': 2477736, 'remainderInteger-cpu-arguments-model-arguments-intercept': 425507, 'lessThanEqualsByteString-memory-arguments': 1, 'tailList-memory-arguments': 32, 'mkNilData-cpu-arguments': 150000, 'chooseData-cpu-arguments': 150000, 'unBData-memory-arguments': 32, 'blake2b-memory-arguments': 4, 'iData-memory-arguments': 32, 'nullList-memory-arguments': 32, 'cekDelayCost-exBudgetCPU': 29773, 'subtractInteger-memory-arguments-intercept': 1, 'lessThanByteString-cpu-arguments-intercept': 103599, 'consByteString-cpu-arguments-slope': 1000, 'appendByteString-memory-arguments-slope': 1, 'trace-memory-arguments': 32, 'divideInteger-cpu-arguments-constant': 148000, 'cekConstCost-exBudgetCPU': 29773, 'encodeUtf8-memory-arguments-slope': 8, 'quotientInteger-cpu-arguments-model-arguments-intercept': 425507, 'mapData-memory-arguments': 32, 'appendString-cpu-arguments-slope': 1000, 'modInteger-cpu-arguments-constant': 148000, 'verifySignature-cpu-arguments-slope': 1, 'unConstrData-memory-arguments': 32, 'quotientInteger-memory-arguments-intercept': 0, 'equalsByteString-cpu-arguments-constant': 150000, 'sliceByteString-memory-arguments-intercept': 0, 'mkPairData-memory-arguments': 32, 'equalsByteString-cpu-arguments-intercept': 112536, 'appendString-memory-arguments-slope': 1, 'lessThanInteger-cpu-arguments-slope': 497, 'modInteger-cpu-arguments-model-arguments-intercept': 425507, 'modInteger-memory-arguments-minimum': 1, 'sha3_256-cpu-arguments-intercept': 0, 'verifySignature-memory-arguments': 1, 'cekLamCost-exBudgetMemory': 100, 'sliceByteString-cpu-arguments-intercept': 150000}}
A dictionary of current cost models, which could be used to calculate script data hash.
- class pycardano.plutus.PlutusData
Bases:
pycardano.serialization.ArrayCBORSerializable
PlutusData is a helper class that can serialize itself into a CBOR format, which could be intepreted as a data structure in Plutus scripts. It is not required to use this class to interact with Plutus scripts. However, wrapping datum in PlutusData class will reduce the complexity of serialization and deserialization tremendously.
Examples
>>> @dataclass ... class Test(PlutusData): ... CONSTR_ID = 1 ... a: int ... b: bytes >>> test = Test(123, b"321") >>> test.to_cbor_hex() 'd87a9f187b43333231ff' >>> assert test == Test.from_cbor("d87a9f187b43333231ff")
- CONSTR_ID: ClassVar[int] = 0
Constructor ID of this plutus data. It is primarily used by Plutus core to reconstruct a data structure from serialized CBOR bytes.
- to_shallow_primitive() _cbor2.CBORTag
- Returns
A CBOR primitive.
- Return type
Primitive
- Raises
SerializeException – When the object could not be converted to CBOR primitive types.
- classmethod from_primitive(value: _cbor2.CBORTag) pycardano.plutus.PlutusData
Restore a primitive value to its original class type.
- Parameters
cls (ArrayBase) – The original class type.
values (List[Primitive]) – A list whose elements are CBOR primitives.
- Returns
Restored object.
- Return type
ArrayBase
- Raises
DeserializeException – When the object could not be restored from primitives.
- hash() pycardano.hash.DatumHash
- to_json(**kwargs) str
Convert to a json string
- Parameters
**kwargs – Extra key word arguments to be passed to json.dumps()
- Returns
a JSON encoded PlutusData.
- Return type
str
- classmethod from_dict(data: dict) pycardano.plutus.PlutusData
Convert a dictionary to PlutusData
- Parameters
data (dict) – A dictionary.
- Returns
Restored PlutusData.
- Return type
- classmethod from_json(data: str) pycardano.plutus.PlutusData
Restore a json encoded string to a PlutusData.
- Parameters
data (str) – An encoded json string.
- Returns
The restored PlutusData.
- Return type
- pycardano.plutus.Datum
Plutus Datum type. A Union type that contains all valid datum types.
alias of
Union
[pycardano.plutus.PlutusData
,dict
,int
,bytes
,pycardano.serialization.IndefiniteList
,pycardano.serialization.RawCBOR
,pycardano.plutus.RawPlutusData
]
- class pycardano.plutus.RedeemerTag(value)
Bases:
pycardano.serialization.CBORSerializable
,enum.Enum
Redeemer tag, which indicates the type of redeemer.
- SPEND = 0
- MINT = 1
- CERT = 2
- REWARD = 3
- class pycardano.plutus.ExecutionUnits(mem: 'int', steps: 'int')
Bases:
pycardano.serialization.ArrayCBORSerializable
- mem: int
- steps: int
- is_empty() bool
- class pycardano.plutus.PlutusV1Script
Bases:
bytes
- class pycardano.plutus.PlutusV2Script
Bases:
bytes
- class pycardano.plutus.RawPlutusData(data: 'CBORTag')
Bases:
pycardano.serialization.CBORSerializable
- data: _cbor2.CBORTag
- to_primitive() _cbor2.CBORTag
Convert the instance and its elements to CBOR primitives recursively.
- Returns
A CBOR primitive.
- Return type
Primitive
- Raises
SerializeException – When the object or its elements could not be converted to CBOR primitive types.
- classmethod from_primitive(value: _cbor2.CBORTag) pycardano.plutus.RawPlutusData
Turn a CBOR primitive to its original class type.
- Parameters
cls (CBORBase) – The original class type.
value (
Primitive
) – A CBOR primitive.
- Returns
A CBOR serializable object.
- Return type
CBORBase
- Raises
DeserializeException – When the object could not be restored from primitives.
- class pycardano.plutus.Redeemer(data: 'Any', ex_units: 'Optional[ExecutionUnits]' = None)
Bases:
pycardano.serialization.ArrayCBORSerializable
- tag: Optional[pycardano.plutus.RedeemerTag] = None
- index: int = 0
- data: Any
- ex_units: Optional[pycardano.plutus.ExecutionUnits] = None
- classmethod from_primitive(values: list) pycardano.plutus.Redeemer
Restore a primitive value to its original class type.
- Parameters
cls (ArrayBase) – The original class type.
values (List[Primitive]) – A list whose elements are CBOR primitives.
- Returns
Restored object.
- Return type
ArrayBase
- Raises
DeserializeException – When the object could not be restored from primitives.
- pycardano.plutus.ScriptType
Script type. A Union type that contains all valid script types.
alias of
Union
[bytes
,pycardano.nativescript.NativeScript
,pycardano.plutus.PlutusV1Script
,pycardano.plutus.PlutusV2Script
]
- pycardano.plutus.datum_hash(datum: Union[pycardano.plutus.PlutusData, dict, int, bytes, pycardano.serialization.IndefiniteList, pycardano.serialization.RawCBOR, pycardano.plutus.RawPlutusData]) pycardano.hash.DatumHash
- pycardano.plutus.plutus_script_hash(script: Union[bytes, pycardano.plutus.PlutusV1Script, pycardano.plutus.PlutusV2Script]) pycardano.hash.ScriptHash
Calculates the hash of a Plutus script.
- Parameters
script (Union[bytes, PlutusV1Script, PlutusV2Script]) – A plutus script.
- Returns
blake2b hash of the script.
- Return type
- pycardano.plutus.script_hash(script: Union[bytes, pycardano.nativescript.NativeScript, pycardano.plutus.PlutusV1Script, pycardano.plutus.PlutusV2Script]) pycardano.hash.ScriptHash
Calculates the hash of a script, which could be either native script or plutus script.
- Parameters
script (ScriptType) – A script.
- Returns
blake2b hash of the script.
- Return type