Blockchain 使用web3从智能合约中提取乙醚到特定帐户

Blockchain 使用web3从智能合约中提取乙醚到特定帐户,blockchain,solidity,smartcontracts,web3,ether,Blockchain,Solidity,Smartcontracts,Web3,Ether,我在智能合约中有如下功能: function transferToaddress(address payable addressToSend) public payable{ addressToSend.transfer(0.5 ether); } var response = await this.contract.transferToaddress(vm.userAccountAddress,{ from: vm.userAccountAddress, gas: vm.

我在智能合约中有如下功能:

function transferToaddress(address payable addressToSend) public payable{
    addressToSend.transfer(0.5 ether);
}
var response = await this.contract.transferToaddress(vm.userAccountAddress,{
   from: vm.userAccountAddress,
   gas: vm.gas
})
从我的前端,我按如下方式调用上述函数:

function transferToaddress(address payable addressToSend) public payable{
    addressToSend.transfer(0.5 ether);
}
var response = await this.contract.transferToaddress(vm.userAccountAddress,{
   from: vm.userAccountAddress,
   gas: vm.gas
})
交易失败。我的合同有一些平衡。点击一个按钮,我希望一些乙醚(本例中为0.5)从智能合约传输到传递给函数的地址。 知道我做错了什么吗

var response = await this.contract.transferToaddress(vm.userAccountAddress)
.send({ from: vm.userAccountAddress, gas: vm.gas })

您错过了send关键字

合同不应支付,因为用户正在获取以太,而它没有提供以太

function transferToaddress(address payable addressToSend) public{
    addressToSend.transfer(0.5 ether);
}

var response = await this.contract.transferToaddress(vm.userAccountAddress)
    .send({ from: vm.userAccountAddress, gas: vm.gas })