| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
Lorentz.Contracts.Upgradeable.Common.Contract
Contents
Description
Template for upgradeable contract.
It provides the following features: 1. Contract with upgradeable storage format and entrypoints set. 2. Two way to upgrade the contract - one shot and entrypoint-wise.
Synopsis
- data Parameter (ver :: VersionKind)- = Run (VerParam ver)
- | RunPerm (VerPermanent ver)
- | Upgrade (OneShotUpgradeParameters ver)
- | GetVersion (View () Version)
- | SetAdministrator Address
- | EpwBeginUpgrade ("current" :! Version, "new" :! Version)
- | EpwApplyMigration (MigrationScriptFrom (VerUStoreTemplate ver))
- | EpwSetCode SomeUContractRouter
- | EpwSetPermCode (SomePermanentImpl (VerPermanent ver))
- | EpwFinishUpgrade
 
- type UTAddress ver = TAddress (Parameter ver)
- type UContractRef ver = ContractRef (Parameter ver)
- type PermConstraint ver = (NiceParameterFull (VerPermanent ver), NoExplicitDefaultEntrypoint (VerPermanent ver), HasAnnotation (VerPermanent ver), RequireAllUniqueEntrypoints (Parameter ver), Typeable ver, Typeable (VerInterface ver), Typeable (VerUStoreTemplate ver))
- data Storage (ver :: VersionKind)
- type UpgradeableContract ver = Contract (Parameter ver) (Storage ver)
- data PermanentImpl ver
- type InitUpgradeableContract perm = UpgradeableContract (EmptyContractVersion perm)
- type OneShotUpgradeParameters ver = ("currentVersion" :! Version, "newVersion" :! Version, "migrationScript" :! MigrationScriptFrom (VerUStoreTemplate ver), "newCode" :! Maybe SomeUContractRouter, "newPermCode" :! Maybe (SomePermanentImpl (VerPermanent ver)))
- data DVersion = DVersion Version
- type NiceVersion ver = (Typeable (VerInterface ver), Typeable (VerUStoreTemplate ver), UStoreTemplateHasDoc (VerUStoreTemplate ver), TypeHasDoc (VerPermanent ver), KnownValue (VerPermanent ver), HasAnnotation (VerPermanent ver), Typeable ver, WellTypedIsoValue (VerPermanent ver))
- upgradeableContract :: forall ver. (NiceVersion ver, NiceParameterFull (Parameter ver)) => UpgradeableContract ver
- mkEmptyStorage :: (VerInterface ver ~ '[], VerUStoreTemplate ver ~ ()) => Address -> Storage ver
- pbsContainedInRun :: ParamBuildingStep
- pbsContainedInRunPerm :: ParamBuildingStep
Documentation
data Parameter (ver :: VersionKind) Source #
Parameter of upgradeable contract. It contains, among others:
- Entrypoint for running one of upgradeable entrypoints.
- Entrypoint for running one of permanent entrypoints, suitable e.g. for implementing interfaces. 3a. Entrypoint for upgrade in a single call. 3b. Entrypoints for entrypoint-wise upgrade.
Constructors
| Run (VerParam ver) | |
| RunPerm (VerPermanent ver) | |
| Upgrade (OneShotUpgradeParameters ver) | |
| GetVersion (View () Version) | |
| SetAdministrator Address | |
| EpwBeginUpgrade ("current" :! Version, "new" :! Version) | |
| EpwApplyMigration (MigrationScriptFrom (VerUStoreTemplate ver)) | |
| EpwSetCode SomeUContractRouter | |
| EpwSetPermCode (SomePermanentImpl (VerPermanent ver)) | |
| EpwFinishUpgrade | 
Instances
type UContractRef ver = ContractRef (Parameter ver) Source #
type PermConstraint ver = (NiceParameterFull (VerPermanent ver), NoExplicitDefaultEntrypoint (VerPermanent ver), HasAnnotation (VerPermanent ver), RequireAllUniqueEntrypoints (Parameter ver), Typeable ver, Typeable (VerInterface ver), Typeable (VerUStoreTemplate ver)) Source #
Constraint on abstract set of permanent entrypoints.
data Storage (ver :: VersionKind) Source #
Instances
| Generic (Storage ver) Source # | |
| HasAnnotation (VerPermanent ver) => HasAnnotation (Storage ver) Source # | |
| Defined in Lorentz.Contracts.Upgradeable.Common.Contract Methods getAnnotation :: FollowEntrypointFlag -> Notes (ToT (Storage ver)) # | |
| WellTypedIsoValue (VerPermanent ver) => IsoValue (Storage ver) Source # | |
| NiceVersion ver => TypeHasDoc (Storage ver) Source # | |
| Defined in Lorentz.Contracts.Upgradeable.Common.Contract Associated Types type TypeDocFieldDescriptions (Storage ver) :: FieldDescriptions # Methods typeDocName :: Proxy (Storage ver) -> Text # typeDocMdDescription :: Markdown # typeDocMdReference :: Proxy (Storage ver) -> WithinParens -> Markdown # typeDocDependencies :: Proxy (Storage ver) -> [SomeDocDefinitionItem] # typeDocHaskellRep :: TypeDocHaskellRep (Storage ver) # typeDocMichelsonRep :: TypeDocMichelsonRep (Storage ver) # | |
| type Rep (Storage ver) Source # | |
| type ToT (Storage ver) Source # | |
| type TypeDocFieldDescriptions (Storage ver) Source # | |
data PermanentImpl ver Source #
Implementation of permanent entrypoints.
This will be injected into contract storage as one of fields, so make sure
 that code within does not exceed several instructions; an actual entrypoint
 logic can be put into UStore and called from within PermanentImpl only
 when necessary.
Regarding documentation - this have to provide code pieces wrapped into
 DEntrypoint with PermanentEntrypointsKind, so always use entryCase as
 implementation of this type or inject documentation of code which does so
 unless you know what you are doing.
Instances
type InitUpgradeableContract perm = UpgradeableContract (EmptyContractVersion perm) Source #
type OneShotUpgradeParameters ver = ("currentVersion" :! Version, "newVersion" :! Version, "migrationScript" :! MigrationScriptFrom (VerUStoreTemplate ver), "newCode" :! Maybe SomeUContractRouter, "newPermCode" :! Maybe (SomePermanentImpl (VerPermanent ver))) Source #
Parameters of one-shot upgrade.
Do not construct this value manually, consider using makeOneShotUpgradeParameters.
Specify version if given contract.
Instances
| DocItem DVersion Source # | |
| Defined in Lorentz.Contracts.Upgradeable.Common.Contract Associated Types Methods docItemPos :: Natural # docItemSectionName :: Maybe Text # docItemSectionDescription :: Maybe Markdown # docItemSectionNameStyle :: DocSectionNameStyle # docItemRef :: DVersion -> DocItemRef (DocItemPlacement DVersion) (DocItemReferenced DVersion) # docItemToMarkdown :: HeaderLevel -> DVersion -> Markdown # docItemToToc :: HeaderLevel -> DVersion -> Markdown # docItemDependencies :: DVersion -> [SomeDocDefinitionItem] # docItemsOrder :: [DVersion] -> [DVersion] # | |
| type DocItemPlacement DVersion Source # | |
| type DocItemReferenced DVersion Source # | |
type NiceVersion ver = (Typeable (VerInterface ver), Typeable (VerUStoreTemplate ver), UStoreTemplateHasDoc (VerUStoreTemplate ver), TypeHasDoc (VerPermanent ver), KnownValue (VerPermanent ver), HasAnnotation (VerPermanent ver), Typeable ver, WellTypedIsoValue (VerPermanent ver)) Source #
upgradeableContract :: forall ver. (NiceVersion ver, NiceParameterFull (Parameter ver)) => UpgradeableContract ver Source #
mkEmptyStorage :: (VerInterface ver ~ '[], VerUStoreTemplate ver ~ ()) => Address -> Storage ver Source #
pbsContainedInRun :: ParamBuildingStep Source #
Mentions that parameter should be wrapped into Run entry point.
pbsContainedInRunPerm :: ParamBuildingStep Source #
Mentions that parameter should be wrapped into Run entry point.
Orphan instances
| CustomErrorHasDoc "upgContractIsNotPaused" Source # | |
| CustomErrorHasDoc "upgContractIsPaused" Source # | |
| CustomErrorHasDoc "upgVersionMismatch" Source # | |
| Buildable (CustomError "upgContractIsNotPaused") Source # | |
| Methods build :: CustomError "upgContractIsNotPaused" -> Builder # | |
| Buildable (CustomError "upgContractIsPaused") Source # | |
| Methods build :: CustomError "upgContractIsPaused" -> Builder # | |
| Buildable (CustomError "upgVersionMismatch") Source # | |
| Methods build :: CustomError "upgVersionMismatch" -> Builder # | |