NFT鑄造交易丨Opensae交易平臺系統開發技術分析
去中心化應用,或者叫dApp,開發+18I鏈上合約-259l開發系統3365-/是一種不依賴於中心化伺服器的應用。相反,dApp使用像是區塊鏈和預言機這些Web3技術,來實現自己的邏輯和後臺功能,具備不可篡改和安全的特性。
在這個技術教程中,你會學習到怎樣開發一個end-to-end的dApp。在dApp中,使用者可以透過一個智慧合約,獲取和儲存ETH的當前價格。這個教程demo程式碼儲存在Github中。
編譯之後,就可以部署到區塊鏈上。
在migrations資料夾下已經有一個1_initial_migration.js部署指令碼,用來部署Migrations.sol合約。
Migrations.sol用來確保不會部署相同的合約。
現在我們來建立一個自己的部署指令碼2_deploy_contracts.js
var Adoption=artifacts.require("Adoption");
module.exports=function(deployer){
deployer.deploy(Adoption);
};
在執行部署之前,需要確保有一個區塊鏈執行,可以使用
Ganache來開啟一個私鏈來進行開發測試,預設會在7545埠上執行一個開發鏈。
DAPP程式碼:
//SPDX-License-Identifier:UNLICENSED
pragma solidity^0.8.17;
import"hardhat/console.sol";
contract WavePortal{
uint256 totalWaves;//wave次數計數器
uint256 private seed;//隨機種子
//新的wave事件,呼叫wave()方法時emit
event NewWave(address indexed from,uint256 timestamp,string message);
//Wave結構體
struct Wave{
address waver;
string message;
uint256 timestamp;
}
Wave[]waves;//在合約裡,存放所有wave資料的陣列
//存放每個wave的人最後一次執行合約交易的時間,每個人15分鐘只能wave一次
mapping(address=>uint256)public lastWavedAt;
//合約的建構函式,payable表示合約可以支付ETH給其他地址
constructor()payable{
console.log("Hello,this a smart contract!");
seed=(block.timestamp+block.difficulty)%100;//seed初始化
}
//核心方法
function wave(string memory _message)public{
//require前面的表示式必須為真,否則拋後面異常資訊;這裡是如果該地址距上次交易不到15分鐘則不允許再次發起交易
require(lastWavedAt[msg.sender]+15 minutes<block.timestamp,"Error:Wait 15 Minutes please");
lastWavedAt[msg.sender]=block.timestamp;//更新mapping
totalWaves+=1;
console.log("%s has waved!",msg.sender);
waves.push(Wave(msg.sender,_message,block.timestamp));//陣列裡新push一個Wave
seed=(block.timestamp+block.difficulty+seed)%100;//計算seed
console.log("Random#generated:d%",seed);
if(seed<=50){//本次seed<=50則向發起wave交易的地址發放獎勵0.0001 ETH
console.log("%s won!",msg.sender);
uint256 prizeAmount=0.0001 ether;
require(prizeAmount<=address(this).balance,"Error:Trying to withdraw more money than the contract has.");//判斷合約是否餘額不足
(bool success,)=(msg.sender).call{value:prizeAmount}("");//給msg.sender對應的地址轉賬prizeAmount
require(success,"Failed to withdraw money from contract.");
}
emit NewWave(msg.sender,block.timestamp,_message);//發射NewWave事件,前端可以訂閱並捕捉到
}
//返回當前所有wave的陣列
function getAllWaves()public view returns(Wave[]memory){
return waves;
}
//返回wave計數
function getTotalWaves()public view returns(uint256){
console.log("We have%d total waves!",totalWaves);
return totalWaves;
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70012429/viewspace-2945179/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- NFT交易平臺Opensea丨NFT藝術品鑄造交易系統開發功能分析原始碼部署原始碼
- 公鏈NFT交易鑄造平臺系統開發詳情技術分析丨框架程式碼框架
- NFT鏈上鑄造合成交易系統開發丨openseaNFT平臺搭建技術
- NFT鑄造合集智慧合約交易平臺系統開發丨技術介紹
- NFT交易平臺系統開發丨NFT發行鑄造交易系統開發詳情原始碼搭建原始碼
- NFT 鑄造交易 OpenSea 平臺系統開發案例技術介紹
- NFT鏈上鑄造交易平臺系統開發功能分析
- NFT鑄造交易合成盲盒交易系統開發詳情丨DAPP技術框架APP框架
- Opensae交易平臺系統開發(邏輯及方案)丨Opensae交易平臺原始碼案例原始碼
- 鑄造NFT鏈上合成交易智慧合約平臺系統開發丨技術介紹
- NFT鑄造智慧合約交易平臺系統開發丨Opensea系統開發介紹
- NFT鏈上鑄造opensea交易系統開發技術方案
- NFT發行鑄造合集交易平臺系統開發原始碼部署原始碼
- NFT數字藏品Opensae交易平臺系統開發(方案及詳情)丨原始碼版原始碼
- OpenSea藏品交易平臺開發NFT系統搭建技術
- NFT鑄造合成質押挖礦系統開發|NFT交易開發
- Opensae質押交易平臺系統開發技術支援/Dapp/Defi/LPAPP
- NFT鑄造交易合成平臺系統開發丨區塊鏈智慧合約部署程式碼詳情區塊鏈
- 鏈上NFT鑄造發行交易平臺開發功能分析原始碼部署原始碼
- NFT交易平臺商城開發系統錢包搭建技術
- NFT鑄造競拍交易平臺dapp系統開發合約部署詳情APP
- { NFT }鑄造智慧合約交易平臺模式軟體開發(方案)模式
- NFT藝術品鑄造交易競拍商城dapp系統開發技術服務公司APP
- NFT藝術品鑄造交易競拍DAPP商城系統開發功能分析搭建APP
- NFT鏈遊GameFi系統開發技術|NFT藏品鑄造技術GAM
- NFT鑄造合成遊戲系統開發技術方案遊戲
- NFT鏈上鑄造智慧合約平臺系統開發詳情丨區塊鏈技術上區塊鏈
- NFT數字文化藝術品鑄造交易商城開發詳情分析
- NFT數字藏品交易系統平臺開發技術(程式設計示例)程式設計
- NFT交易平臺定製開發|NFT交易平臺專案搭建
- web3.0智慧合約NFT鑄造系統開發平臺詳情分析丨框架Web框架
- Opensae去中心化交易平臺系統Solidity語言開發中心化Solid
- NFT遊戲開發交易系統搭建技術遊戲開發
- NFT數字藏品鑄造系統開發(開發方案)丨NFT數字藏品鑄造系統開發(開發原始碼)原始碼
- NFT鏈上鑄造交易智慧合約開發demo
- NFT數字藏品交易系統開發平臺搭建
- NFT鑄造合成交易盲盒質押系統開發詳情方案
- NFT鑄造合約平臺系統開發詳情案例