Solidity
轉讓代幣合約的所有權
我正在嘗試使用openzeppelin創建令牌合約。我設法使用 ownable.sol 中的可擁有合約創建了代幣,這讓我可以轉移代幣合約的所有權。
但是,我需要將代幣合約所有權轉移到眾籌合約。我想知道是否有辦法將代幣合約所有權收回/轉移到另一個地址。
這是我正在嘗試做的一目了然。
- 代幣合約創建$$ solved $$
- 眾售合約已創建$$ solved $$
- 代幣合約所有權轉移到眾籌合約地址$$ solved $$
- 將 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)
使用目前擁有代幣合約的賬戶進行呼叫。請記住,除非現在擁有代幣的眾籌合約也實現了可以呼叫此函式的函式,否則如果您願意,您將無法再次將所有權轉移回來。
這是一個例子。
- 您擁有具有上述功能的代幣合約
transferOwnership()
。目前所有者是您自己的帳戶。- 您呼叫該函式傳遞眾籌的地址。現在所有者=(眾籌)。
- 如果您現在想將所有權從眾籌轉移到另一個賬戶,唯一可以這樣做的就是實際的眾籌合約,因為它是目前所有者。
為此,眾籌合約必須具有以下程式碼:
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); }