智能合约转账

在智能合约中转账是从合约账户转账给其他用户
所以如果合约账户里没钱是不会成功转账的。

1.先给合约转账

部署时转账

部署时转账,添加payable构造函数

 constructor()public payable{
    
    
    }

使用remix部署
在这里插入图片描述
使用web3部署
新建合约

myContract.deploy(options)
调用此函数将合约部署到区块链上。 
成功部署后 promise 对象会被解析为新的合约实例
例如
myContract.deploy({
    
    
    data: '0x12345...',
    arguments: [123, 'My String']
})
.send({
    
    
    from: '0x1234567890123456789012345678901234567891',
    gas: 1500000,
    value: 100000,
    gasPrice: '30000000000000'
}, function(error, transactionHash)

交易时给合约转账

执行转账时给合约转账

//给调用者转一个ether
function withdraw()public payable{
    
    
        msg.sender.transfer(1 ether);
    }

payable表名合约接受以太转账

remix操作
在这里插入图片描述
web3操作
sendTransaction

web3.eth.sendTransaction(transactionObject [, callback])
将交易发送到网络

 App.contract.function(参数,{
    
    from:addr,gas:300000,value:1000000},function(error,result)

代码示例

pragma solidity >=0.4.21 <0.7.0;

contract test{
    
    
	 constructor()public payable{
    
    
   		 }
    function trans2a(address payable a) public payable {
    
    
        //0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB;
        a.transfer(1 ether);
    }
    function withdraw()public payable{
    
    
        msg.sender.transfer(1 ether);
    }
    function tract_balance() public view returns (uint){
    
    
        return address(this).balance;
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_44932880/article/details/123825534