【发布时间】:2021-08-19 23:15:09
【问题描述】:
我对这个领域很陌生,但我想创建一个具有拍卖功能的 dapp。有什么帮助我可以开始吗?我开始创建 NFT 市场,但我现在卡在这个级别,我无法从我的智能合约到 javascript 实现。
这是我的合同
pragma solidity >=0.7.0 <0.9.0;
contract SimpleAuction{
address payable public beneficiary;
uint public auctionEndTime;
address public highestBidder;
uint public highestBid;
mapping(address => uint) public pendingReturns;
bool ended = false;
event HighestBidIncrease(address bidder, uint amount);
event AuctionEnded(address winner, uint amount);
constructor(uint _biddingTime, address payable _beneficiary){
beneficiary = _beneficiary;
auctionEndTime = block.timestamp + _biddingTime;
}
function bid() public payable{
if (block.timestamp > auctionEndTime){
revert("The auction has already ended");
}
if (msg.value <= highestBid){
revert("There is alreay a higher or equal bid");
}
if (highestBid != 0){
pendingReturns[highestBidder] += highestBid;
}
highestBidder = msg.sender;
highestBid = msg.value;
emit HighestBidIncrease(msg.sender, msg.value);
}
function withdraw() public returns (bool){
uint amount = pendingReturns[msg.sender];
if(amount > 0){
pendingReturns[msg.sender] = 0;
if(!payable(msg.sender).send(amount)){
pendingReturns[msg.sender] = amount;
return false;
}
}
return true;
}
function auctionEnd() public{
if (block.timestamp < auctionEndTime){
revert ("The auction has not ended yet");
}
if (ended){
revert("the function auctionEnded has already been called");
}
ended = true;
emit AuctionEnded(highestBidder, highestBid);
beneficiary.transfer(highestBid);
}
}
【问题讨论】:
-
你的意思是你想利用这个合约并调用它的函数?您在使用松露吗?
-
没错,我使用 truffle 并且我已经创建了市场合约并且它运行良好,我使用 BSC 测试网部署了它,直到现在都没有问题。我只需要为我的 dapp 添加拍卖功能。
-
到目前为止一切顺利。但是要调用合约,您需要 Web3.js。我不知道您对合约 ABI、地址、字节码等概念的熟悉程度。然后您还需要进行交易,然后使用未锁定的帐户发送该交易。这不是我只能在一个答案中提供的东西。如果您之前没有创建过交易,您将需要进行一些探索。例如看看这个教程:youtube.com/…
标签: javascript ethereum solidity truffle