Safe Haskell | None |
---|---|
Language | Haskell2010 |
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.
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 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 type TypeDocFieldDescriptions (Storage ver) :: FieldDescriptions # 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
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 # | |
build :: CustomError "upgContractIsNotPaused" -> Builder # | |
Buildable (CustomError "upgContractIsPaused") Source # | |
build :: CustomError "upgContractIsPaused" -> Builder # | |
Buildable (CustomError "upgVersionMismatch") Source # | |
build :: CustomError "upgVersionMismatch" -> Builder # |