Solidity案例詳解(一)存錢罐合約

BSN研習社發表於2024-01-19

01 內容合約:可以多次儲存,只能owner可以取錢。

本系列我們會一步一步解釋每一段合約,讓你更快學習Solidity語言。(完整程式碼在結尾)

  // SPDX-License-Identifier: MIT
   pragma solidity ^0.8.11;
 contract Bank{

02 分步驟解釋

   1.

 address public immutable onwner;
     event Deposit(address _ads,uint256 amount);
     event Withdraw(uint256 amount);

宣告瞭一個不可變公共地址型別的owner,然後宣告瞭兩個事件“存款”和“取款”。

receive() external payable{

使用了payable修飾符,表示該函式可以接收以太幣的支付。

2.

        emit Deposit(msg.sender,msg.value);
     }

發出存款事件,msg.sender表示呼叫函式的使用者地址,msg.value表示支付以太幣數量。

     constructor(){
         onwner = msg.sender;
     }

//保證只有合約部署者owner才能進行接下來的操作。

3.

   function withdraw() external {

withdraw函式用於從合約中取出以太幣。

         require(msg.sender == onwner,"Not owner address");

用了require語句來驗證呼叫者是否是合約的所有者地址,如果不是,則會丟擲異常。

   4.

      emit Withdraw(address(this).balance);
         selfdestruct (payable(msg.sender));
     }

發出取款事件,並傳遞合約的當前餘額作為引數。

selfdestruct是Solidity 合約中的一個特殊函式,用於銷燬合約並將合約餘額傳送給指定的地址。

     function getBalance() external view returns(uint256){
         return address(this).balance;
     }

最後呼叫getBalance函式獲取當前餘額。

03

演示

1.部署

Solidity案例詳解(一)存錢罐合約

2.哪個賬號部署哪個就是owner

Solidity案例詳解(一)存錢罐合約

 3.換個賬號轉賬5wei

Solidity案例詳解(一)存錢罐合約

4.該賬號取款會報錯

Solidity案例詳解(一)存錢罐合約

04

完整程式碼

// SPDX-License-Identifier: MIT
   pragma solidity ^0.8.11;
 
 contract Bank{
     address public immutable onwner;
     event Deposit(address _ads,uint256 amount);
     event Withdraw(uint256 amount);
     
     receive() external payable{
         //0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB
         emit Deposit(msg.sender,msg.value);
     }  
     constructor(){
         onwner = msg.sender;
     }
     function withdraw() external {
         require(msg.sender == onwner,"Not owner address");
         emit Withdraw(address(this).balance);
         selfdestruct (payable(msg.sender));
     }
     function getBalance() external view returns(uint256){
         return address(this).balance;
     }
     
     
 }

版權宣告:本文為CSDN博主「發呆...」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。

原文連結:

https://blog.csdn.net/2302_77339802/article/details/131798355?spm=1001.2014.3001.5502

文章來源:CSDN 博主「發呆...」

文章原標題:《solidity案例詳解(一)存錢罐合約》

旨在傳播區塊鏈相關技術,如有侵權請與我們聯絡刪除。


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70012206/viewspace-3004475/,如需轉載,請註明出處,否則將追究法律責任。

相關文章