  Context: Smart contracts are computerized self-executing contracts that
contain clauses, which are enforced once certain conditions are met. Smart
contracts are immutable by design and cannot be modified once deployed, which
ensures trustlessness. Despite smart contracts' immutability benefits,
upgrading contract code is still necessary for bug fixes and potential feature
improvements. In the past few years, the smart contract community introduced
several practices for upgrading smart contracts. Upgradeable contracts are
smart contracts that exhibit these practices and are designed with
upgradeability in mind. During the upgrade process, a new smart contract
version is deployed with the desired modification, and subsequent user requests
will be forwarded to the latest version (upgraded contract). Nevertheless,
little is known about the characteristics of the upgrading practices, how
developers apply them, and how upgrading impacts contract usage.
  Objectives: This paper aims to characterize smart contract upgrading patterns
and analyze their prevalence based on the deployed contracts that exhibit these
patterns. Furthermore, we intend to investigate the reasons why developers
upgrade contracts (e.g., introduce features, fix vulnerabilities) and how
upgrades affect the adoption and life span of a contract in practice.
  Method: We collect deployed smart contracts metadata and source codes to
identify contracts that exhibit certain upgrade patterns (upgradeable
contracts) based on a set of policies. Then we trace smart contract versions
for each upgradable contract and identify the changes in contract versions
using similarity and vulnerabilities detection tools. Finally, we plan to
analyze the impact of upgrading on contract usage based on the number of
transactions received and the lifetime of the contract version.
