0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Contract Upgrades with Incompatible Changes

Last updated at Posted at 2024-10-19

Problem


互換性のないスマートコントラクトのアップグレードがあります。これをデプロイするにはどうすればよいですか?

Solution

同じアカウント内のコントラクトバージョン間で互換性のないアップグレードを行わないでください。問題が発生する可能性が高すぎます。
互換性のあるアップグレードを行い、必要に応じて新しいコントラクトコードでアップグレード後の関数を実行することができます。
コントラクトを更新するのではなく置き換える必要がある場合は、互換性のない変更を行うことに加えて、コントラクトコード内の任意の名前付きパスに接尾辞を追加または増やす(例:/public/MyProjectVaultが/public/MyProjectVault002になる)という最もシンプルな方法があります。その後、新しいアカウントを作成し、更新したコントラクトをそこにデプロイします。
⚠️ Flowはアドレスに関連するタイプを識別するため、古いコントラクトのリソースを新しいコントラクトのリソースと交換するためのアップグレードトランザクションも提供する必要があります。ユーザーに、このタスクをいつどのように実行する必要があるかをできるだけ早く伝えるようにしてください。
互換性のないアップグレードを行う際に、どうしても古いアドレスを維持する必要がある場合は、ご自身の責任において行ってください。以下のアクションをこの順序で実行するようにしてください。

  1. コントラクトアカウントで使用されているリソース(例えば、管理リソース)を削除します。
  2. アカウントからコントラクトを削除します。
  3. アカウントに新しいコントラクトをデプロイします。

⚠️注意:ユーザーアカウントに、古いバージョンのコントラクトから新しいバージョンで互換性のないバージョンに置き換えられたstructsまたはresourcesが含まれている場合、それらはロードされず、それらにアクセスしようとするトランザクションがクラッシュする可能性があります。このため、ユーザーがコントラクトから構造体またはリソースを受け取った後は、互換性のないアップグレードを行うこの方法は試さないでください!

翻訳元->https://cadence-lang.org/docs/contract-upgrades

Flow BlockchainのCadence version1.0ドキュメント (Contract Upgrades with Incompatible Changes)

Previous << Guide for Solidity Developers

Next >> JSON-Cadence format

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?