我是这个智能合约世界的新手。从不同的来源阅读后,我知道坚固性还不成熟并且还在发展。
我正在remix IDE上运行此代码。除了function transfertocontracts(uint amount) public
之外,其他一切都正常。我在这里想要做的是,我正在尝试将例如:10的一些醚转移到我的合约中,然后稍后使用此功能function Transfer_Contract_Amount() public
,我会将所有合约金额转移到特定地址。 / p>
现在是什么问题?
问题是当我运行此function transfertocontracts(uint amount) public
时遇到此错误:Note: The constructor should be payable if you send value. debug the transaction to get more information.
所以请任何人在这里帮助我!
还建议我的方法是否正确?
谢谢!
contract SLA{
address seller;
event DepositFunds(address from, uint amount);
constructor() payable public {
seller = msg.sender;
}
function transfertocontracts(uint amount) public{
address(this).transfer(amount);
}
function seePerson_Amount() public view returns(uint){
return seller.balance;
}
function seeContract_Amount() public view returns(uint){
return address(this).balance;
}
function Transfer_Contract_Amount() public{
seller.transfer(address(this).balance);
}
}
答案 0 :(得分:0)
您只能使用与智能合约进行交互时可以设置的value属性来发送以太币。以下是工作代码
pragma solidity >=0.4.22 <0.6.0;
contract SLA{
address payable seller;
event DepositFunds(address from, uint amount);
constructor() payable public {
seller = msg.sender;
}
function transfertocontracts(uint amount) payable public{
}
function seePerson_Amount() public view returns(uint){
return seller.balance;
}
function seeContract_Amount() public view returns(uint){
return address(this).balance;
}
function Transfer_Contract_Amount() payable public{
seller.transfer(address(this).balance);
}
}
要进行检查,您可以在remix上运行它,并且在左侧的运行选项卡上,可以放置以太币的值来发送并运行transfertocontracts函数以进一步存储该值,使用msg.value。