Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BigBank 合约系统

文件结构

  • Bank.sol - 基础银行合约
  • IBank.sol - 银行接口
  • BigBank.sol - 继承自Bank的高级银行合约
  • Admin.sol - 管理员合约

合约功能

IBank 接口

定义了银行合约的标准接口,包含:

  • withdraw() - 提取资金
  • getBalance() - 查询余额
  • getUserBalance(address) - 查询用户余额
  • getTopUsers() - 查询前3名用户

BigBank 合约

继承自Bank合约并实现IBank接口,额外功能:

  • 存款金额必须大于0.001 ether
  • 支持管理员权限转移
  • 提供transferOwnership(address newOwner)函数

Admin 合约

管理员合约,功能包括:

  • 有自己的Owner
  • adminWithdraw(IBank bank) - 从指定的银行合约提取资金
  • getBalance() - 查询Admin合约余额
  • withdrawAdmin() - Admin提取自己的资金

使用流程

  1. 部署合约

    // 部署BigBank合约
    BigBank bigBank = new BigBank();
    
    // 部署Admin合约
    Admin admin = new Admin();
  2. 转移管理员权限

    // 将BigBank的管理员转移给Admin合约
    bigBank.transferOwnership(address(admin));
  3. 用户存款

    // 直接向BigBank发送ETH (必须>0.001 ether)
    // 或者调用deposit函数
    bigBank.deposit{value: 0.002 ether}();
  4. Admin提取资金

    // Admin合约的Owner调用adminWithdraw
    admin.adminWithdraw(IBank(address(bigBank)));
  5. 查询状态

    // 查询BigBank余额
    uint256 bankBalance = bigBank.getBalance();
    
    // 查询Admin余额
    uint256 adminBalance = admin.getBalance();
    
    // 查询前3名用户
    address[3] memory topUsers = bigBank.getTopUsers();

重要说明

  • 存款金额必须大于0.001 ether,否则交易会失败
  • 只有Admin合约的Owner可以调用adminWithdraw函数
  • 转移管理员权限后,原owner将失去对BigBank的控制权
  • Admin合约可以接收ETH,并提供提现功能

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages