1
0

Remove unneeded

This commit is contained in:
Jon Michael Aanes 2025-04-09 23:09:16 +02:00
parent cdb9c0b6bc
commit c3270ca73e
3 changed files with 0 additions and 93 deletions

View File

@ -1,25 +0,0 @@
[package]
name = "todo-upgradable-v1"
readme = "README.md"
version.workspace = true
description.workspace = true
homepage.workspace = true
repository.workspace = true
documentation.workspace = true
edition.workspace = true
license.workspace = true
[lib]
crate-type = ['rlib', 'cdylib']
[dependencies]
pbc_contract_common.workspace = true
pbc_traits.workspace = true
pbc_lib.workspace = true
read_write_rpc_derive.workspace = true
read_write_state_derive.workspace = true
create_type_spec_derive.workspace = true
pbc_contract_codegen.workspace = true
[features]
abi = ["pbc_contract_common/abi", "pbc_contract_codegen/abi", "pbc_traits/abi", "create_type_spec_derive/abi", "pbc_lib/abi"]

View File

@ -1,17 +0,0 @@
# Upgradable v1
The simplest possible upgradable example contract that retains some amount of
security and usability.
The [`UpgradableV1State`] contains the address of the account or contract that is
allowed to upgrade this contract.
Contract can only be upgraded to a different contract, it cannot be upgraded to
itself, or from any other kind of contract.
## About upgrade governance
This contract is an example, and does not reflect what good upgrade logic for a
contract should look like. Please read documentation page for [upgradable smart
contracts](https://partisiablockchain.gitlab.io/documentation/smart-contracts/upgradable-smart-contracts.html)
for suggestion of how to implement the upgrade governance.

View File

@ -1,51 +0,0 @@
#![doc = include_str!("../README.md")]
#[macro_use]
extern crate pbc_contract_codegen;
use pbc_contract_codegen::{init, state, upgrade_is_allowed};
use pbc_contract_common::address::Address;
use pbc_contract_common::context::ContractContext;
use pbc_contract_common::upgrade::ContractHashes;
/// Contract state.
#[state]
pub struct ContractState {
/// Contract or account allowed to upgrade this contract.
upgrader: Address,
/// Counter to demonstrate changes in behaviour
counter: u32,
}
/// Initialize contract with the upgrader address.
#[init]
pub fn initialize(_ctx: ContractContext, upgrader: Address) -> ContractState {
ContractState {
counter: 0,
upgrader,
}
}
/// Checks whether the upgrade is allowed.
///
/// This contract allows the [`ContractState::upgrader`] to upgrade the contract at any time.
#[upgrade_is_allowed]
pub fn is_upgrade_allowed(
context: ContractContext,
state: ContractState,
_old_contract_hashes: ContractHashes,
_new_contract_hashes: ContractHashes,
_new_contract_rpc: Vec<u8>,
) -> bool {
context.sender == state.upgrader
}
/// Increment the counter by one.
#[action(shortname = 0x01)]
pub fn increment_counter_by_one(
_context: ContractContext,
mut state: ContractState,
) -> ContractState {
state.counter += 1;
state
}