萌新求助大佬们,我在做一个类似众筹的小系统,我的想法是用户先捐款,款都存在合约地址里,最后判断总金额是不是超过预计金额了,如果超过就从合约地址把钱转给发起众筹的用户钱包。现在前面基本都没问题了,就是我在前端调用transfer函数(就是把钱从合约转给用户的函数)时,不知道from地址怎么写。 这是我的transfer函数:
`function transfer(uint _Charity_project_Id) public {
Charity_project storage _Charity_project = Charity_project_map[_Charity_project_Id];
uint _value = Project_pool[_Charity_project_Id]; // 本项目交易池中的金额数
payable(_Charity_project.Charity_address).transfer(_value);
_Charity_project.iscomplete = true; // 项目成功
// 修改每笔捐款的标志位
uint len = _Charity_project.Donate_detail_Id.length;
for(uint i = 1; i <= len; ++i){
Donate_detail_map[_Charity_project.Donate_detail_Id[i]].isarrival = true;
}
emit ProjectComplete_event(_Charity_project_Id, block.timestamp, _value);
Project_pool[_Charity_project_Id] = 0;
}`
下面是我前端的转账函数,b就是众筹项目的id,这个from里的地址我实在不知道写哪个了,我试过写合约地址,但是报错说该地址未授权,写account[0]报错说交易有问题。。。
if(flag == true) { contract.methods.transfer(b).send({ from:account[0] }) }
求大佬解答啊啊啊啊,已经折磨一晚上了