Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resolve warnings in examples #137

Merged
merged 6 commits into from
Aug 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
1 change: 1 addition & 0 deletions examples/src14-simple-proxy/owned/src/owned.sw
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
20 changes: 14 additions & 6 deletions examples/src6-vault/multi_asset_vault/src/main.sw
Original file line number Diff line number Diff line change
Expand Up @@ -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<u64> {
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<u64> {
// 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,
}
}
}

Expand Down Expand Up @@ -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,
}
Expand Down
26 changes: 18 additions & 8 deletions examples/src6-vault/single_asset_single_sub_vault/src/main.sw
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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<u64> {
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 {
Expand All @@ -124,7 +122,7 @@ impl SRC6 for Contract {

#[storage(read)]
fn max_withdrawable(underlying_asset: AssetId, vault_sub_id: SubId) -> Option<u64> {
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 {
Expand All @@ -150,17 +148,29 @@ impl SRC20 for Contract {

#[storage(read)]
fn name(asset: AssetId) -> Option<String> {
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<String> {
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<u8> {
Some(9_u8)
if asset == vault_assetid() {
Some(9_u8)
} else {
None
}
}
}

Expand Down
32 changes: 20 additions & 12 deletions examples/src6-vault/single_asset_vault/src/main.sw
Original file line number Diff line number Diff line change
Expand Up @@ -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<u64> {
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<u64> {
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,
}
}
}
Expand Down Expand Up @@ -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,
}
Expand Down
Loading