diff --git a/move/axelar_gateway/sources/gateway.move b/move/axelar_gateway/sources/gateway.move index 92326d86..36cd31fe 100644 --- a/move/axelar_gateway/sources/gateway.move +++ b/move/axelar_gateway/sources/gateway.move @@ -177,8 +177,8 @@ entry fun rotate_signers( /// This function should only be called once /// (checks should be made on versioned to ensure this) /// It upgrades the version control to the new version control. -entry fun migrate(self: &mut Gateway) { - self.inner.load_value_mut().migrate(version_control()); +entry fun migrate(self: &mut Gateway, _: &OwnerCap, data: vector) { + self.inner.load_value_mut().migrate(version_control(), data); } entry fun allow_function( diff --git a/move/axelar_gateway/sources/versioned/gateway_v0.move b/move/axelar_gateway/sources/versioned/gateway_v0.move index cea2ff7e..054b344e 100644 --- a/move/axelar_gateway/sources/versioned/gateway_v0.move +++ b/move/axelar_gateway/sources/versioned/gateway_v0.move @@ -38,6 +38,10 @@ const ENewerMessage: vector = const ECannotMigrateTwice: vector = b"attempting to migrate a even though migration is complete"; +#[error] +const ENoDataAllowedOnMigrate: vector = + b"no data should be passed to migrate to this version"; + // ----- // Types // ----- @@ -79,8 +83,9 @@ public(package) fun version_control(self: &Gateway_v0): &VersionControl { &self.version_control } -public(package) fun migrate(self: &mut Gateway_v0, mut version_control: VersionControl) { +public(package) fun migrate(self: &mut Gateway_v0, mut version_control: VersionControl, data: vector) { assert!(self.version_control.allowed_functions().length() == version_control.allowed_functions().length() - 1, ECannotMigrateTwice ); + assert!(data.length() == 0, ENoDataAllowedOnMigrate); self.version_control = version_control; }