请问如何在前端调用函数从合约地址转账给用户钱包

萌新求助大佬们,我在做一个类似众筹的小系统,我的想法是用户先捐款,款都存在合约地址里,最后判断总金额是不是超过预计金额了,如果超过就从合约地址把钱转给发起众筹的用户钱包。现在前面基本都没问题了,就是我在前端调用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] }) } 求大佬解答啊啊啊啊,已经折磨一晚上了

请先 登录 后评论

2 个回答

Tiny熊
  擅长:智能合约,以太坊
请先 登录 后评论
用户_14041
请先 登录 后评论
  • 2 关注
  • 0 收藏,1787 浏览
  • zarovee4 提出于 2023-04-18 00:15