当前位置:   article > 正文

智能合约转账_写一个可以转账的智能合约

写一个可以转账的智能合约

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

1.先给合约转账

部署时转账

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

 constructor()public payable{
    }
  • 1
  • 2

使用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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

交易时给合约转账

执行转账时给合约转账

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

payable表名合约接受以太转账

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

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

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

代码示例

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;
    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/369278
推荐阅读
相关标签
  

闽ICP备14008679号