Storage 存储的读写

71 阅读1分钟

HackQuest keep learning

image.png

image.png

Storage 存储的读写

在 Stylus Rust SDK 中则需要使用相应的 get, set, push, insert 等函数进行读写操作。

sol_storage! {
    pub struct Erc20<T> {
        mapping(address => uint256) balances;
        mapping(address => mapping(address => uint256)) allowances;
        uint256 total_supply;
        PhantomData<T> phantom;
    }
}

impl<T: Erc20Params> Erc20<T> {
    pub fn mint(&mut self, address: Address, value: U256) {
        let mut balance = self.balances.setter(address);
        let new_balance = balance.get() + value;
        balance.set(new_balance);
        self.tota;_supply.set(self.total_supply.get() + value);
    }
}

mint 方法,用于增发新的代币并将其分配给指定的地址。

  • &mut selft 表示这个方法是对 Erc20 实例的可变引用。
  • address: Address 是要增发代币的目标地址
  • value: U256 是增发的代币数量
  • 通过 self.balances.setter(address) 获取目标地址的余额,并将其存储在 balance 变量中。
  • 计算增发后的余额 new_balance, 并通过 balance.set(new_balance) 更新目标地址的余额
  • 更新总供应量,即将增发的代币数量加到总供应量上: self.total_supply.set(self.total_supply.get() + value)