address.transfer(msg.value) 有效,但 address.transfer(100000) 无效

address.transfer(msg.value) works but address.transfer(100000) does not work

contract Milestone {
    address payable contractAddress = payable(msg.sender); 

        function payContractor() payable public {
             address payable recipient = 
             payable(0x0A098Eda01Ce92ff4A4CCb7A4fFFb5A43EBC70DC); 
             recipient.transfer(5000000000000);

    }
}

如果我使用 recipient.trasnfer(msg.value) 并在 remix 中指定值,则上述功能有效。金额将从contractAddress中扣除并转给收款人。

但是,当我尝试指定特定金额时,上述函数会抛出以下错误:交易已恢复为初始状态。注意:如果您发送价值,并且您发送的价值应小于您的当前余额,则调用的函数应该是可支付的。调试交易以获取更多信息。

如果您使用的是 Remix IDE,则必须在 msg.value 文本框中输入值(在您的情况下为 5000000000000)并尝试调用您的函数。 这是 msg.value 文本框,将您的值放在这里: