Contract-Development

在部署時增加合約的 ETH 餘額

  • April 24, 2022

我正在建立一個可以買賣代幣的交易所。

我有契約Exchange。它包含一個函式,該函式sellTokens將獲取使用者輸入的代幣數量並給他們相應數量的乙太幣。

但是,當合約啟動時,它的餘額將始終為 0 乙太幣,直到buyTokens功能被執行並且合約由一些乙太坊資助。

問題:為創建此契約提供資金的最佳方式是什麼?這是否必須在部署契約後手動完成,或者是否可以在建構子中自動完成?

如果我能提供更多資訊,請告訴我。

您可以自動執行此過程,將payable關鍵字添加到建構子並實現。因此,當你部署智能合約時,你會用餘額中的一些乙太幣為其提供資金。但是,我建議您在特定情況下想要為您的智能合約提供資金時實現一個功能,該智能合約只能由智能合約所有者訪問。

你可以看一個智能合約的例子:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract FundsSmartContract {
   address owner;

   constructor() payable {
       owner = msg.sender;
       // your logic
   }

   modifier onlyOwner() {
       require(msg.sender == owner, "You aren't smart contract owner!");
       _;
   }

   // Check address about smart contract
   function funds(uint _amount) public payable onlyOwner {
       // your logic
   }

   // Check address about smart contract
   function getBalanceSmartContract() external view returns(uint) {
       return address(this).balance;
   }
}

注意:如果您使用 Remix IDE 對其進行測試,請記住VALUE在您呼叫應付函式時在文本框中設置乙太的數量。

除了製作一個建構子payable。您還可以添加receive允許您在以後為契約提供資金的功能,如果使用得當,還可以使您免於許多安全漏洞。

引用自:https://ethereum.stackexchange.com/questions/126665