Context
Depends on #2 (dependency migration). Once Cargo.toml is updated the Rust source will fail to compile because the module paths and public API changed significantly between v0.3.0 and v0.6.0.
Import path changes
| Old (v0.3.0) |
New (v0.6.0) |
use stellar_fungible::Base; |
use stellar_tokens::fungible::{Base, FungibleToken}; |
use stellar_access_control as access_control; |
use stellar_access::access_control; |
use stellar_pausable as pausable; |
use stellar_contract_utils::pausable; |
use stellar_pausable_macros::when_not_paused; |
use stellar_macros::when_not_paused; |
use stellar_upgradeable_macros::...; |
use stellar_macros::...; |
API call changes
Access control
// v0.3.0
access_control::ensure_role(&env, &caller, &Symbol::new(&env, MINTER_ROLE));
access_control::has_role(&env, &address, &role_symbol).is_some()
access_control::get_admin(&env)
// v0.6.0
access_control::ensure_role(&env, &caller, &Symbol::new(&env, MINTER_ROLE)); // same
access_control::has_role(&env, &address, &role_symbol) // returns Option<u32>
access_control::get_admin(&env) // same
Pausable
// v0.3.0
pausable::paused(&env)
pausable::pause(&env)
pausable::unpause(&env)
// v0.6.0 — same function signatures, different module path
stellar_contract_utils::pausable::paused(&env)
stellar_contract_utils::pausable::pause(&env)
stellar_contract_utils::pausable::unpause(&env)
Fungible Base
// v0.3.0
Base::mint(&env, &to, amount)
Base::transfer(&env, &from, &to, amount) // to: &Address
Base::burn(&env, &from, amount)
// v0.6.0
Base::mint(&env, &to, amount) // same
Base::transfer(&env, &from, &to, amount) // to: &MuxedAddress ← breaking change
Base::burn(&env, &from, amount) // same
Files to update
Contracts/stablecoin/src/contract.rs — all use/import statements + transfer / transfer_from signatures
Contracts/stablecoin/src/extensions/burnable.rs
Contracts/stablecoin/src/extensions/pausable.rs
Contracts/stablecoin/src/extensions/upgradeable.rs
Contracts/stablecoin/src/utils.rs
Acceptance criteria
Context
Depends on #2 (dependency migration). Once Cargo.toml is updated the Rust source will fail to compile because the module paths and public API changed significantly between v0.3.0 and v0.6.0.
Import path changes
use stellar_fungible::Base;use stellar_tokens::fungible::{Base, FungibleToken};use stellar_access_control as access_control;use stellar_access::access_control;use stellar_pausable as pausable;use stellar_contract_utils::pausable;use stellar_pausable_macros::when_not_paused;use stellar_macros::when_not_paused;use stellar_upgradeable_macros::...;use stellar_macros::...;API call changes
Access control
Pausable
Fungible Base
Files to update
Contracts/stablecoin/src/contract.rs— all use/import statements +transfer/transfer_fromsignaturesContracts/stablecoin/src/extensions/burnable.rsContracts/stablecoin/src/extensions/pausable.rsContracts/stablecoin/src/extensions/upgradeable.rsContracts/stablecoin/src/utils.rsAcceptance criteria
usestatements reference the new v0.6.0 module pathstransferandtransfer_fromacceptMuxedAddressfor thetoparametercargo buildcompiles without errors