Solidity案例詳解(一)存錢罐合約
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.部署
2.哪個賬號部署哪個就是owner
3.換個賬號轉賬5wei
4.該賬號取款會報錯
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- solidity案例詳解(二)眾籌合約Solid
- PIPIOJ 1079: PIPI的存錢罐 完全揹包
- 合約跟單系統開發詳解案例,合約跟單系統原始碼原始碼
- 智慧合約語言 Solidity 教程系列8 - Solidity APISolidAPI
- 智慧合約語言 Solidity 教程系列8 – Solidity APISolidAPI
- solidity投票智慧合約程式碼Solid
- 如何建立一個Solidity智慧合約專案? - OliverSolid
- 3.7 智慧合約與solidity簡介Solid
- Solidity之旅(十)OOP-抽象合約SolidOOP抽象
- 永續合約/秒合約/合約量化/量化合約系統開發詳情/原始碼功能/成熟案例原始碼
- 用Solidity在Truffle上構建一個HelloWorld智慧合約Solid
- 幣幣交易|秒合約|現貨合約交易系統開發詳情案例
- 3.14 solidity庫詳解Solid
- 量化合約/合約量化/合約跟單系統開發(策略及詳細)案例原始碼原始碼
- 合約量化|秒合約|合約跟單系統開發案例
- 智慧合約從入門到精通:Solidity AssemblySolid
- Solidity開發指南(六):合約結構解析Solid
- 智慧合約從入門到精通:Solidity組合語言Solid組合語言
- 3.9 solidity變數詳解Solid變數
- 3.11 solidity 函式詳解Solid函式
- 合約交易丨秒合約丨永續合約丨幣幣合約交易所繫統開發|案例詳情|專案測試
- 秒合約開發系統專案案例|秒合約現成案例
- Solidity語言學習筆記————32、建立合約Solid筆記
- 用solidity語言開發代幣智慧合約Solid
- 智慧合約語言Solidity的最佳VSCode 外掛SolidVSCode
- 合約跟單開發案例,合約量化跟單系統開發技術詳細流程
- 量化合約系統開發(詳解開發)丨合約量化系統開發(說明及案例)
- DAPP馬蹄鏈智慧合約開發正式版丨DAPP馬蹄鏈智慧合約系統開發(詳解及案例)APP
- 智慧合約從入門到精通:用Solidity開發一個“Hello World”Solid
- NFT鑄造合約平臺系統開發詳情案例
- 合約量化/量化合約開發原始碼功能,量化合約/合約量化系統開發(開發策略)及案例詳情原始碼
- 秒合約開發(穩定版)丨秒合約系統開發(開發案例)丨秒合約系統原始碼詳情原始碼
- 智慧合約最佳實踐 之 Solidity 編碼規範Solid
- 區塊鏈2.0以太坊智慧合約solidity之helloworld區塊鏈Solid
- DAPP代幣預售/智慧合約/NFT質押合約系統開發/Solidity編寫APPSolid
- 量化合約丨合約量化開發原始碼版,合約量化丨量化合約系統開發(成熟案例)及詳細策略原始碼
- 秒合約系統開發搭建原始碼|秒合約案例原始碼
- Forsage佛薩奇合約矩陣(Solidity程式語言)系統開發程式碼詳情矩陣Solid