Solidity

轉讓代幣合約的所有權

  • May 2, 2021

我正在嘗試使用openzeppelin創建令牌合約。我設法使用 ownable.sol 中的可擁有合約創建了代幣這讓我可以轉移代幣合約的所有權。

但是,我需要將代幣合約所有權轉移到眾籌合約。我想知道是否有辦法將代幣合約所有權收回/轉移到另一個地址。

這是我正在嘗試做的一目了然。

  1. 代幣合約創建$$ solved $$
  2. 眾售合約已創建$$ solved $$
  3. 代幣合約所有權轉移到眾籌合約地址$$ solved $$
  4. 將 Token 合約所有權轉移到另一個地址。$$ NEED SOLUTION $$

有什麼建議嗎?

Ownable.sol 有以下方法:

/**
  * @dev Allows the current owner to transfer control of the contract to a newOwner.
  * @param newOwner The address to transfer ownership to.
  */
 function transferOwnership(address newOwner) public onlyOwner {
   require(newOwner != address(0));
   OwnershipTransferred(owner, newOwner);
   owner = newOwner;
 }

如果您想轉讓代幣合約的所有權(並假設代幣是可擁有的),您可以transferOwnership(address_of_new_owner)使用目前擁有代幣合約的賬戶進行呼叫。

請記住,除非現在擁有代幣的眾籌合約也實現了可以呼叫此函式的函式,否則如果您願意,您將無法再次將所有權轉移回來。


這是一個例子。

  1. 您擁有具有上述功能的代幣合約transferOwnership()。目前所有者是您自己的帳戶。
  2. 您呼叫該函式傳遞眾籌的地址。現在所有者=(眾籌)。
  3. 如果您現在想將所有權從眾籌轉移到另一個賬戶,唯一可以這樣做的就是實際的眾籌合約,因為它是目前所有者。

為此,眾籌合約必須具有以下程式碼:

function transferOwnership(address _newOwner) public onlyOwner {
 require(msg.sender == owner); // Only the owner of the crowdsale contract should be able to call this function.

 // I assume the crowdsale contract holds a reference to the token contract.
 token.transferOwnership(_newOwner);

}

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