diff --git a/CHANGELOG.md b/CHANGELOG.md index a248bf6..b8a356d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,8 +19,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Fixed Unreleased -- Some fix here 1 -- Some fix here 2 +- [#137](https://github.com/FuelLabs/sway-standards/pull/137) Resolves warnings for SRC-6, SRC-14, and SRC-5 standard examples. ### Breaking Unreleased diff --git a/examples/src14-simple-proxy/owned/src/owned.sw b/examples/src14-simple-proxy/owned/src/owned.sw index 5e5ba6d..d03ae31 100644 --- a/examples/src14-simple-proxy/owned/src/owned.sw +++ b/examples/src14-simple-proxy/owned/src/owned.sw @@ -5,6 +5,7 @@ use standards::src5::{AccessError, State}; use standards::src14::{SRC14, SRC14_TARGET_STORAGE, SRC14Extension}; /// The owner of this contract at deployment. +#[allow(dead_code)] const INITIAL_OWNER: Identity = Identity::Address(Address::zero()); storage { diff --git a/examples/src5-ownership/initialized_example/src/initialized_example.sw b/examples/src5-ownership/initialized_example/src/initialized_example.sw index f9cfe60..c42faec 100644 --- a/examples/src5-ownership/initialized_example/src/initialized_example.sw +++ b/examples/src5-ownership/initialized_example/src/initialized_example.sw @@ -3,6 +3,7 @@ contract; use standards::src5::{SRC5, State}; /// The owner of this contract at deployment. +#[allow(dead_code)] const INITIAL_OWNER: Identity = Identity::Address(Address::zero()); storage { diff --git a/examples/src6-vault/multi_asset_vault/src/main.sw b/examples/src6-vault/multi_asset_vault/src/main.sw index b0a8f05..035a817 100644 --- a/examples/src6-vault/multi_asset_vault/src/main.sw +++ b/examples/src6-vault/multi_asset_vault/src/main.sw @@ -116,18 +116,26 @@ impl SRC6 for Contract { #[storage(read)] fn max_depositable( - receiver: Identity, + _receiver: Identity, underlying_asset: AssetId, vault_sub_id: SubId, ) -> Option { + let vault_share_asset = vault_asset_id(underlying_asset, vault_sub_id).0; // This is the max value of u64 minus the current managed_assets. Ensures that the sum will always be lower than u64::MAX. - Some(u64::max() - managed_assets(underlying_asset)) + match storage.vault_info.get(vault_share_asset).try_read() { + Some(vault_info) => Some(u64::max() - vault_info.managed_assets), + None => None, + } } #[storage(read)] fn max_withdrawable(underlying_asset: AssetId, vault_sub_id: SubId) -> Option { - // In this implementation total_assets and max_withdrawable are the same. However in case of lending out of assets, total_assets should be greater than max_withdrawable. - Some(managed_assets(underlying_asset)) + let vault_share_asset = vault_asset_id(underlying_asset, vault_sub_id).0; + // In this implementation managed_assets and max_withdrawable are the same. However in case of lending out of assets, total_assets should be greater than max_withdrawable. + match storage.vault_info.get(vault_share_asset).try_read() { + Some(vault_info) => Some(vault_info.managed_assets), + None => None, + } } } @@ -166,8 +174,8 @@ fn vault_asset_id(asset: AssetId, vault_sub_id: SubId) -> (AssetId, SubId) { } #[storage(read)] -fn managed_assets(share_asset: AssetId) -> u64 { - match storage.vault_info.get(share_asset).try_read() { +fn managed_assets(vault_share_asset_id: AssetId) -> u64 { + match storage.vault_info.get(vault_share_asset_id).try_read() { Some(vault_info) => vault_info.managed_assets, None => 0, } diff --git a/examples/src6-vault/single_asset_single_sub_vault/src/main.sw b/examples/src6-vault/single_asset_single_sub_vault/src/main.sw index 51c2c48..1c738f9 100644 --- a/examples/src6-vault/single_asset_single_sub_vault/src/main.sw +++ b/examples/src6-vault/single_asset_single_sub_vault/src/main.sw @@ -25,8 +25,6 @@ storage { managed_assets: u64 = 0, /// The total amount of shares minted by this vault. total_supply: u64 = 0, - /// Whether the vault shares have been minted. - minted: bool = false, } impl SRC6 for Contract { @@ -110,11 +108,11 @@ impl SRC6 for Contract { #[storage(read)] fn max_depositable( - receiver: Identity, + _receiver: Identity, underlying_asset: AssetId, vault_sub_id: SubId, ) -> Option { - if underlying_asset == AssetId::base() { + if underlying_asset == AssetId::base() && vault_sub_id == ACCEPTED_SUB_VAULT { // This is the max value of u64 minus the current managed_assets. Ensures that the sum will always be lower than u64::MAX. Some(u64::max() - storage.managed_assets.read()) } else { @@ -124,7 +122,7 @@ impl SRC6 for Contract { #[storage(read)] fn max_withdrawable(underlying_asset: AssetId, vault_sub_id: SubId) -> Option { - if underlying_asset == AssetId::base() { + if underlying_asset == AssetId::base() && vault_sub_id == ACCEPTED_SUB_VAULT { // In this implementation managed_assets and max_withdrawable are the same. However in case of lending out of assets, managed_assets should be greater than max_withdrawable. Some(storage.managed_assets.read()) } else { @@ -150,17 +148,29 @@ impl SRC20 for Contract { #[storage(read)] fn name(asset: AssetId) -> Option { - Some(String::from_ascii_str("Vault Shares")) + if asset == vault_assetid() { + Some(String::from_ascii_str("Vault Shares")) + } else { + None + } } #[storage(read)] fn symbol(asset: AssetId) -> Option { - Some(String::from_ascii_str("VLTSHR")) + if asset == vault_assetid() { + Some(String::from_ascii_str("VLTSHR")) + } else { + None + } } #[storage(read)] fn decimals(asset: AssetId) -> Option { - Some(9_u8) + if asset == vault_assetid() { + Some(9_u8) + } else { + None + } } } diff --git a/examples/src6-vault/single_asset_vault/src/main.sw b/examples/src6-vault/single_asset_vault/src/main.sw index c1f52e0..91407f7 100644 --- a/examples/src6-vault/single_asset_vault/src/main.sw +++ b/examples/src6-vault/single_asset_vault/src/main.sw @@ -122,25 +122,33 @@ impl SRC6 for Contract { #[storage(read)] fn max_depositable( - receiver: Identity, + _receiver: Identity, underlying_asset: AssetId, vault_sub_id: SubId, ) -> Option { - if underlying_asset == AssetId::base() { + let vault_share_asset = vault_asset_id(underlying_asset, vault_sub_id).0; + + match ( + underlying_asset == AssetId::base(), + storage.vault_info.get(vault_share_asset).try_read(), + ) { // This is the max value of u64 minus the current managed_assets. Ensures that the sum will always be lower than u64::MAX. - Some(u64::max() - managed_assets(underlying_asset)) - } else { - None + (true, Some(vault_info)) => Some(u64::max() - vault_info.managed_assets), + _ => None, } } #[storage(read)] fn max_withdrawable(underlying_asset: AssetId, vault_sub_id: SubId) -> Option { - if underlying_asset == AssetId::base() { - // In this implementation total_assets and max_withdrawable are the same. However in case of lending out of assets, total_assets should be greater than max_withdrawable. - Some(managed_assets(underlying_asset)) - } else { - None + let vault_share_asset = vault_asset_id(underlying_asset, vault_sub_id).0; + + match ( + underlying_asset == AssetId::base(), + storage.vault_info.get(vault_share_asset).try_read(), + ) { + // In this implementation managed_assets and max_withdrawable are the same. However in case of lending out of assets, total_assets should be greater than max_withdrawable. + (true, Some(vault_info)) => Some(vault_info.managed_assets), + _ => None, } } } @@ -180,8 +188,8 @@ fn vault_asset_id(underlying_asset: AssetId, vault_sub_id: SubId) -> (AssetId, S } #[storage(read)] -fn managed_assets(share_asset: AssetId) -> u64 { - match storage.vault_info.get(share_asset).try_read() { +fn managed_assets(vault_share_asset_id: AssetId) -> u64 { + match storage.vault_info.get(vault_share_asset_id).try_read() { Some(vault_info) => vault_info.managed_assets, None => 0, }