solidity案例詳解(二)眾籌合約
本系列會詳細解釋智慧合約案例,供大家感受solidity語言的魅力。
要求如下:要有受益人和資助者,且可以檢視合約狀態。
一、分步驟解釋
// SPDX-License-Identifier: MIT pragma solidity ^0.8.11; contract CrowFunding {
1.
address public immutable beneficiary; uint256 public immutable fundingGoal;
建立受益者和募集目標,immutable為不可改變
2.
uint256 public fundingAmount; mapping(address=>uint256) public funders
透過對映,表示每個地址對應的籌款金額。
mapping(address=>bool) private fundersInserted; address[] public fundersKey;
每個地址是否已插入到fundersKey陣列中。
bool public AVAILABLED =true;
3.
//合約的初始狀態是AVAILABLED(真),表示合約當前可用。
constructor(address beneficiary_,uint256 goal_){ beneficiary =beneficiary_; fundingGoal = goal_; }
初始化受益者的地址和募集目標。
4.
function contribute() external payable{ require(AVAILABLED,"crowFounding is closed");
定義函式contribute,判斷募集是否關閉。
funders[msg.sender]+= msg.value; fundingAmount += msg.value;
//增加捐款金額
5.
if(!fundersInserted[msg.sender]){
//是否有捐款者的地址
fundersInserted[msg.sender] = true; fundersKey.push(msg.sender); }} }
//將捐款者的地址新增到fundersKey陣列中,用於記錄所有捐款者的地址
}}
}
二、完整程式碼
// SPDX-License-Identifier: MIT pragma solidity ^0.8.11; contract CrowFunding { address public immutable beneficiary; uint256 public immutable fundingGoal; //建立受益者和募集目標 uint256 public fundingAmount; mapping(address=>uint256) public funders; mapping(address=>bool) private fundersInserted; address[] public fundersKey; bool public AVAILABLED =true; //合約的初始狀態是AVAILABLED(真),表示合約當前可用。 constructor(address beneficiary_,uint256 goal_){ beneficiary =beneficiary_; fundingGoal = goal_; } function contribute() external payable{ require(AVAILABLED,"crowFounding is closed"); funders[msg.sender]+= msg.value; fundingAmount += msg.value; //增加捐款金額 if(!fundersInserted[msg.sender]){ //是否有捐款者的地址 fundersInserted[msg.sender] = true; fundersKey.push(msg.sender); //將捐款者的地址新增到 fundersKey 陣列中,用於記錄所有捐款者的地址 }} }
三、演示
文章來源:CSDN博主「發呆...」
文章原標題:《solidity案例詳解(二)眾籌合約》
旨在傳播區塊鏈相關技術,如有侵權請與我們聯絡刪除。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70012206/viewspace-3006550/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Solidity案例詳解(一)存錢罐合約Solid
- 3.25 實戰智慧合約眾籌1
- 阿凡達(泰山眾籌)智慧合約DAPP系統開發詳情 | DAPP智慧合約眾籌系統原始碼邏輯規則APP原始碼
- 3.26 實戰智慧合約眾籌2
- 第九課 如何除錯以太坊官網的智慧合約眾籌案例除錯
- DAPP眾籌智慧合約系統開發原理丨眾籌模式分析丨dapp眾籌系統APP模式
- 泰山眾籌Defi理財合約系統技術開發丨Solidity程式設計程式碼Solid程式設計
- 馬蹄鏈佛薩奇/泰山眾籌阿凡達/眾籌互助/智慧合約流動性挖礦分紅系統開發技術案例
- 泰山眾籌智慧合約軟體開發技術方案
- 互助眾籌FDF迴圈模式開發智慧合約搭建模式
- 區塊鏈眾籌互助商城dapp系統開發合約技術詳情區塊鏈APP
- 智慧合約眾籌迴圈互助遊戲系統開發(DAPP開發)丨案例原始碼遊戲APP原始碼
- 互助眾籌智慧合約平臺開發方案(原始碼示例)原始碼
- AVATAR阿凡達眾籌系統開發說明合約技術
- 如何通過以太坊智慧合約來進行眾籌(ICO)
- Go-Ethereum 1.7.2 結合 Mist 0.9.2 實現眾籌合約的例項Go
- 合約跟單系統開發詳解案例,合約跟單系統原始碼原始碼
- DisruptDEX合約眾籌池挖礦系統開發(技術方案)
- FDF智慧合約眾籌迴圈互助遊戲系統開發demo遊戲
- 拼團眾籌開發詳情版丨拼團眾籌系統開發(開發案例及原始碼)原始碼
- NFT股權分割拆分眾籌dapp系統開發智慧合約部署詳細功能介紹APP
- solidity投票智慧合約程式碼Solid
- [應用案例]眾籌類商城原始碼原始碼
- 拼團+眾籌系統開發丨拼團+眾籌開發原始碼案例原始碼
- 永續合約/秒合約/合約量化/量化合約系統開發詳情/原始碼功能/成熟案例原始碼
- 智慧合約語言 Solidity 教程系列8 – Solidity APISolidAPI
- 智慧合約語言 Solidity 教程系列8 - Solidity APISolidAPI
- 拼團眾籌商城開發運營版丨拼團眾籌商城系統開發(詳情及案例原始碼)原始碼
- sun泰山眾籌(智慧合約)系統程式設計開發技術分析程式設計
- 合約眾籌質押挖礦系統開發DAPP技術分析APP
- 阿凡達(Avatar)泰山眾籌商城系統開發技術詳細及案例
- 泰山眾籌4.0商城開發詳情丨泰山眾籌4.0商城系統開發實現技術案例及原始碼原始碼
- 3.7 智慧合約與solidity簡介Solid
- Solidity之旅(十)OOP-抽象合約SolidOOP抽象
- Defi/nft泰山眾籌財系統合約開發丨NFT丨Defi丨NFT
- 泰山眾籌4.0合約系統開發|泰山DAPP開發搭建技術APP
- DAPP智慧合約眾籌互助質押挖礦分紅系統開發APP
- 阿凡達泰山眾籌開發(功能)丨阿凡達泰山眾籌系統開發(成熟方案及案例)