Solidity
如何將乙太幣從合約轉移到另一個特定地址?
我想寫一個智能合約,當收到錢時,將 50% 轉移到第一個錢包的特定地址(0x583031D1113aD414F02576BD6afaBfb302140225)
並將 25% 轉移到第二個錢包的特定地址(0xdD870fA1b7C4700F2BD7f44238821C26f7392148)。
我像這樣寫的,但它不起作用,Remix IDE 對這些行發誓:
address payable addr1 = address(0x583031D1113aD414F02576BD6afaBfb302140225); address payable addr2 = address(0xdD870fA1b7C4700F2BD7f44238821C26f7392148);
Remix IDE 寫道:類型地址不可隱式轉換
PS 我在 YouTube 上看過教程,其中作者談到創建一個功能,您需要在 Remix IDE 菜單中輸入交易的錢包地址。例子:
它不適合我。
我希望將 50% 發送到第一個錢包,將 25% 發送到第二個錢包。
智能合約:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Demo { constructor() payable{} receive() external payable{} uint _50 = address(this).balance/100*50; //50% of balance of contract uint _25 = address(this).balance/100*25; //25% of balance of contract address payable addr1 = address(0x583031D1113aD414F02576BD6afaBfb302140225); address payable addr2 = address(0xdD870fA1b7C4700F2BD7f44238821C26f7392148); function withdrawFunds() external { //address target = payable(_to); addr1.transfer(_50); addr2.transfer(_25); } function receiveFunds() external payable {} function getBalance() public view returns(uint){ return address(this).balance; } }
您需要將
address
類型轉換為address payable
類型。它有一個快捷方式(https://docs.soliditylang.org/en/v0.6.0/types.html#address):address payable addr1 = payable(0x583031D1113aD414F02576BD6afaBfb302140225);
所以只需將
address
鑄件更改為payable
鑄件,它應該可以工作。