mirror of https://github.com/nucypher/nucypher.git
Deployers: version as input parameter
parent
df2fbc290e
commit
06d9f3921a
|
@ -223,7 +223,13 @@ class UpgradeableContractMixin:
|
||||||
class ContractNotUpgradeable(RuntimeError):
|
class ContractNotUpgradeable(RuntimeError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def deploy(self, secret_hash: bytes, initial_deployment: bool = True, gas_limit: int = None, progress = None) -> dict:
|
def deploy(self,
|
||||||
|
secret_hash: bytes,
|
||||||
|
initial_deployment: bool = True,
|
||||||
|
gas_limit: int = None,
|
||||||
|
progress=None,
|
||||||
|
version: str = "latest"
|
||||||
|
) -> dict:
|
||||||
"""
|
"""
|
||||||
Provides for the setup, deployment, and initialization of ethereum smart contracts.
|
Provides for the setup, deployment, and initialization of ethereum smart contracts.
|
||||||
Emits the configured blockchain network transactions for single contract instance publication.
|
Emits the configured blockchain network transactions for single contract instance publication.
|
||||||
|
@ -271,7 +277,8 @@ class UpgradeableContractMixin:
|
||||||
target_address: str,
|
target_address: str,
|
||||||
existing_secret_plaintext: bytes,
|
existing_secret_plaintext: bytes,
|
||||||
new_secret_hash: bytes,
|
new_secret_hash: bytes,
|
||||||
gas_limit: int = None):
|
gas_limit: int = None,
|
||||||
|
version: str = "latest"):
|
||||||
"""
|
"""
|
||||||
Directly engage a proxy contract for an existing deployment, executing the proxy's
|
Directly engage a proxy contract for an existing deployment, executing the proxy's
|
||||||
upgrade interfaces to verify upgradeability and modify the on-chain contract target.
|
upgrade interfaces to verify upgradeability and modify the on-chain contract target.
|
||||||
|
@ -291,7 +298,12 @@ class UpgradeableContractMixin:
|
||||||
gas_limit=gas_limit)
|
gas_limit=gas_limit)
|
||||||
return receipt
|
return receipt
|
||||||
|
|
||||||
def upgrade(self, existing_secret_plaintext: bytes, new_secret_hash: bytes, gas_limit: int = None):
|
def upgrade(self,
|
||||||
|
existing_secret_plaintext: bytes,
|
||||||
|
new_secret_hash: bytes,
|
||||||
|
gas_limit: int = None,
|
||||||
|
version: str = "latest",
|
||||||
|
**overrides):
|
||||||
"""
|
"""
|
||||||
Deploy a new version of a contract, then engage the proxy contract's upgrade interfaces.
|
Deploy a new version of a contract, then engage the proxy contract's upgrade interfaces.
|
||||||
"""
|
"""
|
||||||
|
@ -306,7 +318,7 @@ class UpgradeableContractMixin:
|
||||||
proxy_deployer = self.get_proxy_deployer(registry=self.registry, provider_uri=self.blockchain.provider_uri)
|
proxy_deployer = self.get_proxy_deployer(registry=self.registry, provider_uri=self.blockchain.provider_uri)
|
||||||
|
|
||||||
# 3 - Deploy new version
|
# 3 - Deploy new version
|
||||||
new_contract, deploy_receipt = self._deploy_essential(gas_limit=gas_limit)
|
new_contract, deploy_receipt = self._deploy_essential(version=version, gas_limit=gas_limit, **overrides)
|
||||||
|
|
||||||
# 4 - Wrap the escrow contract
|
# 4 - Wrap the escrow contract
|
||||||
wrapped_contract = self.blockchain._wrap_contract(wrapper_contract=proxy_deployer.contract,
|
wrapped_contract = self.blockchain._wrap_contract(wrapper_contract=proxy_deployer.contract,
|
||||||
|
@ -467,7 +479,7 @@ class StakingEscrowDeployer(BaseContractDeployer, UpgradeableContractMixin, Owna
|
||||||
if result == self.blockchain.NULL_ADDRESS:
|
if result == self.blockchain.NULL_ADDRESS:
|
||||||
raise RuntimeError("PolicyManager contract is not initialized.")
|
raise RuntimeError("PolicyManager contract is not initialized.")
|
||||||
|
|
||||||
def _deploy_essential(self, gas_limit: int = None, **overrides):
|
def _deploy_essential(self, version: str, gas_limit: int = None, **overrides):
|
||||||
args = self.economics.staking_deployment_parameters
|
args = self.economics.staking_deployment_parameters
|
||||||
constructor_kwargs = {
|
constructor_kwargs = {
|
||||||
"_hoursPerPeriod": args[0],
|
"_hoursPerPeriod": args[0],
|
||||||
|
@ -487,6 +499,7 @@ class StakingEscrowDeployer(BaseContractDeployer, UpgradeableContractMixin, Owna
|
||||||
self.registry,
|
self.registry,
|
||||||
self.contract_name,
|
self.contract_name,
|
||||||
gas_limit=gas_limit,
|
gas_limit=gas_limit,
|
||||||
|
version=version,
|
||||||
**constructor_kwargs
|
**constructor_kwargs
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -497,6 +510,7 @@ class StakingEscrowDeployer(BaseContractDeployer, UpgradeableContractMixin, Owna
|
||||||
secret_hash: bytes = None,
|
secret_hash: bytes = None,
|
||||||
gas_limit: int = None,
|
gas_limit: int = None,
|
||||||
progress=None,
|
progress=None,
|
||||||
|
version: str = "latest",
|
||||||
**overrides
|
**overrides
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""
|
"""
|
||||||
|
@ -527,7 +541,7 @@ class StakingEscrowDeployer(BaseContractDeployer, UpgradeableContractMixin, Owna
|
||||||
origin_args.update({'gas': gas_limit})
|
origin_args.update({'gas': gas_limit})
|
||||||
|
|
||||||
# 1 - Deploy #
|
# 1 - Deploy #
|
||||||
the_escrow_contract, deploy_receipt = self._deploy_essential(gas_limit=gas_limit, **overrides)
|
the_escrow_contract, deploy_receipt = self._deploy_essential(version=version, gas_limit=gas_limit, **overrides)
|
||||||
|
|
||||||
# This is the end of bare deployment.
|
# This is the end of bare deployment.
|
||||||
if not initial_deployment:
|
if not initial_deployment:
|
||||||
|
@ -607,12 +621,13 @@ class PolicyManagerDeployer(BaseContractDeployer, UpgradeableContractMixin, Owna
|
||||||
name=staking_contract_name,
|
name=staking_contract_name,
|
||||||
proxy_name=proxy_name)
|
proxy_name=proxy_name)
|
||||||
|
|
||||||
def _deploy_essential(self, gas_limit: int = None) -> tuple:
|
def _deploy_essential(self, version: str, gas_limit: int = None) -> tuple:
|
||||||
constructor_kwargs = {"_escrow": self.staking_contract.address}
|
constructor_kwargs = {"_escrow": self.staking_contract.address}
|
||||||
policy_manager_contract, deploy_receipt = self.blockchain.deploy_contract(self.deployer_address,
|
policy_manager_contract, deploy_receipt = self.blockchain.deploy_contract(self.deployer_address,
|
||||||
self.registry,
|
self.registry,
|
||||||
self.contract_name,
|
self.contract_name,
|
||||||
gas_limit=gas_limit,
|
gas_limit=gas_limit,
|
||||||
|
version=version,
|
||||||
**constructor_kwargs)
|
**constructor_kwargs)
|
||||||
return policy_manager_contract, deploy_receipt
|
return policy_manager_contract, deploy_receipt
|
||||||
|
|
||||||
|
@ -620,7 +635,8 @@ class PolicyManagerDeployer(BaseContractDeployer, UpgradeableContractMixin, Owna
|
||||||
initial_deployment: bool = True,
|
initial_deployment: bool = True,
|
||||||
secret_hash: bytes = None,
|
secret_hash: bytes = None,
|
||||||
gas_limit: int = None,
|
gas_limit: int = None,
|
||||||
progress=None
|
progress=None,
|
||||||
|
version: str = "latest"
|
||||||
) -> Dict[str, dict]:
|
) -> Dict[str, dict]:
|
||||||
|
|
||||||
if initial_deployment and not secret_hash:
|
if initial_deployment and not secret_hash:
|
||||||
|
@ -630,7 +646,7 @@ class PolicyManagerDeployer(BaseContractDeployer, UpgradeableContractMixin, Owna
|
||||||
self.check_deployment_readiness()
|
self.check_deployment_readiness()
|
||||||
|
|
||||||
# Creator deploys the policy manager
|
# Creator deploys the policy manager
|
||||||
policy_manager_contract, deploy_receipt = self._deploy_essential(gas_limit=gas_limit)
|
policy_manager_contract, deploy_receipt = self._deploy_essential(version=version, gas_limit=gas_limit)
|
||||||
|
|
||||||
# This is the end of bare deployment.
|
# This is the end of bare deployment.
|
||||||
if not initial_deployment:
|
if not initial_deployment:
|
||||||
|
@ -748,7 +764,7 @@ class StakingInterfaceDeployer(BaseContractDeployer, UpgradeableContractMixin):
|
||||||
name=policy_contract_name,
|
name=policy_contract_name,
|
||||||
proxy_name=policy_proxy_name)
|
proxy_name=policy_proxy_name)
|
||||||
|
|
||||||
def _deploy_essential(self, gas_limit: int = None):
|
def _deploy_essential(self, version: str, gas_limit: int = None):
|
||||||
"""Note: These parameters are order-sensitive"""
|
"""Note: These parameters are order-sensitive"""
|
||||||
constructor_args = (self.token_contract.address,
|
constructor_args = (self.token_contract.address,
|
||||||
self.staking_contract.address,
|
self.staking_contract.address,
|
||||||
|
@ -758,14 +774,16 @@ class StakingInterfaceDeployer(BaseContractDeployer, UpgradeableContractMixin):
|
||||||
self.registry,
|
self.registry,
|
||||||
self.contract_name,
|
self.contract_name,
|
||||||
*constructor_args,
|
*constructor_args,
|
||||||
gas_limit=gas_limit)
|
gas_limit=gas_limit,
|
||||||
|
version=version)
|
||||||
return contract, deployment_receipt
|
return contract, deployment_receipt
|
||||||
|
|
||||||
def deploy(self,
|
def deploy(self,
|
||||||
initial_deployment: bool = True,
|
initial_deployment: bool = True,
|
||||||
secret_hash: bytes = None,
|
secret_hash: bytes = None,
|
||||||
gas_limit: int = None,
|
gas_limit: int = None,
|
||||||
progress=None
|
progress=None,
|
||||||
|
version: str = "latest"
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""
|
"""
|
||||||
Deploys a new StakingInterface contract, and a new StakingInterfaceRouter, targeting the former.
|
Deploys a new StakingInterface contract, and a new StakingInterfaceRouter, targeting the former.
|
||||||
|
@ -777,7 +795,7 @@ class StakingInterfaceDeployer(BaseContractDeployer, UpgradeableContractMixin):
|
||||||
f" deployment series for {self.contract_name}.")
|
f" deployment series for {self.contract_name}.")
|
||||||
|
|
||||||
# 1 - StakingInterface
|
# 1 - StakingInterface
|
||||||
staking_interface_contract, deployment_receipt = self._deploy_essential(gas_limit=gas_limit)
|
staking_interface_contract, deployment_receipt = self._deploy_essential(version=version, gas_limit=gas_limit)
|
||||||
|
|
||||||
# This is the end of bare deployment.
|
# This is the end of bare deployment.
|
||||||
if not initial_deployment:
|
if not initial_deployment:
|
||||||
|
@ -942,7 +960,7 @@ class AdjudicatorDeployer(BaseContractDeployer, UpgradeableContractMixin, Ownabl
|
||||||
name=staking_contract_name,
|
name=staking_contract_name,
|
||||||
proxy_name=proxy_name)
|
proxy_name=proxy_name)
|
||||||
|
|
||||||
def _deploy_essential(self, gas_limit: int = None, **overrides):
|
def _deploy_essential(self, version: str, gas_limit: int = None, **overrides):
|
||||||
args = self.economics.slashing_deployment_parameters
|
args = self.economics.slashing_deployment_parameters
|
||||||
constructor_kwargs = {
|
constructor_kwargs = {
|
||||||
"_hashAlgorithm": args[0],
|
"_hashAlgorithm": args[0],
|
||||||
|
@ -958,6 +976,7 @@ class AdjudicatorDeployer(BaseContractDeployer, UpgradeableContractMixin, Ownabl
|
||||||
self.registry,
|
self.registry,
|
||||||
self.contract_name,
|
self.contract_name,
|
||||||
gas_limit=gas_limit,
|
gas_limit=gas_limit,
|
||||||
|
version=version,
|
||||||
**constructor_kwargs)
|
**constructor_kwargs)
|
||||||
return adjudicator_contract, deploy_receipt
|
return adjudicator_contract, deploy_receipt
|
||||||
|
|
||||||
|
@ -966,6 +985,7 @@ class AdjudicatorDeployer(BaseContractDeployer, UpgradeableContractMixin, Ownabl
|
||||||
secret_hash: bytes = None,
|
secret_hash: bytes = None,
|
||||||
gas_limit: int = None,
|
gas_limit: int = None,
|
||||||
progress=None,
|
progress=None,
|
||||||
|
version: str = "latest",
|
||||||
**overrides) -> Dict[str, str]:
|
**overrides) -> Dict[str, str]:
|
||||||
|
|
||||||
if initial_deployment and not secret_hash:
|
if initial_deployment and not secret_hash:
|
||||||
|
@ -974,7 +994,7 @@ class AdjudicatorDeployer(BaseContractDeployer, UpgradeableContractMixin, Ownabl
|
||||||
|
|
||||||
self.check_deployment_readiness()
|
self.check_deployment_readiness()
|
||||||
|
|
||||||
adjudicator_contract, deploy_receipt = self._deploy_essential(gas_limit=gas_limit, **overrides)
|
adjudicator_contract, deploy_receipt = self._deploy_essential(version=version, gas_limit=gas_limit, **overrides)
|
||||||
|
|
||||||
# This is the end of bare deployment.
|
# This is the end of bare deployment.
|
||||||
if not initial_deployment:
|
if not initial_deployment:
|
||||||
|
|
Loading…
Reference in New Issue