1

これは私がすでにstackexchangeで尋ねている質問です-イーサリアム(https://ethereum.stackexchange.com/questions/97124/truffle-test-doesnt-send-funds-to-msg-sender)ですが、次のようには見えません多くの活動があるので、ここで何か助けを見つけられることを願っています。


ガナッシュまたはトリュフの設定が間違っているようです...

私はすでにここで同様の質問をしています: https://ethereum.stackexchange.com/questions/96681/owner-of-contract-is-set-to-contract-address

基本的に、私のローカル チェーンのアドレスには混乱があります (テストネットで動作します)。

セットアップ/移行はリンクと同じです。

実際の機能:

    function claim(uint256 pid, uint256 cAmount, address test) external nonReentrant returns (bool){
        return _claim(pid, cAmount, test);
    }

    function _claim(uint256 pid, uint256 cAmount, address test) internal returns (bool){
        require(test == msg.sender, "ERROR");
        bool success;
        uint256 possibleClaim = _getClaimableAmount(pid, test);
        require(possibleClaim >= cAmount, "Claim: Not enough claimable amount");
        _reflow(pid);
        uint256 tempDaoFee = cAmount.mul(_poolInfo[pid].claimFee);
        uint256 daoFee = tempDaoFee.div(100);
        success = IERC20(_poolInfo[pid].poolT.rewardToken).transfer(test, cAmount.sub(daoFee));
        _poolInfo[pid].poolT.rewardToken.transfer(_poolInfo[pid].daoWallet, daoFee);
        return success;
    }

テスト:

it("7.1 Claim: ...", async ()=> {
        const adr = await irs.getRewardToken("0");

        console.log("Address: ",adr)
        console.log("TokenAddress: ", iwbtc.address)
        console.log("ContractAddress: ", irs.address)

        const balanceOFContract0 = await iwbtc.balanceOf(irs.address);
        const bal0 = await iwbtc.balanceOf(accounts[6])

        console.log("balanceOFContract = ", balanceOFContract0.toString())
        console.log("balanceBeforClaim = ", bal0.toString())

        const claimable = await irs.getClaimableAmount("0",accounts[6]);
        const val = claimable / 2;

        console.log("Val = ", val.toString())

        const success = await irs.claim("0",val,accounts[6], {from: accounts[6]});

        const bal1 = await iwbtc.balanceOf(accounts[6])
        const balanceOFContract1 = await iwbtc.balanceOf(irs.address);

        console.log("balanceOFContract = ", balanceOFContract1.toString())
        console.log("balanceBeforClaim = ", bal1.toString())
        console.log("Transaction:", success)

    });

出力:

Address:  0xFFCb10BeEE65E616cc231e1760C1FdBcb70ce821
TokenAddress:  0xFFCb10BeEE65E616cc231e1760C1FdBcb70ce821
ContractAddress:  0xdCA8a4625c00f739Adc6F245DaC8E1d5cB5fd06A
balanceOFContract =  154000
balanceBeforClaim =  70000
Val =  70000
balanceOFContract =  84000
balanceAfterClaim =  70000
Transaction: {
  tx: '0xe455ce4e24fe1aaeaa0d82dec41ffe5fedb647832dcc5421babd25aae44f901e',
  receipt: {
    transactionHash: '0xe455ce4e24fe1aaeaa0d82dec41ffe5fedb647832dcc5421babd25aae44f901e',
    transactionIndex: 0,
    blockHash: '0x8538f51b7266acc730e3e5bd344e5bbe2c67f335f8c427c40454751dee42e73a',
    blockNumber: 538,
    from: '0xb8917e63f9d6603366ff30871610f9af48804557',
    to: '0xdca8a4625c00f739adc6f245dac8e1d5cb5fd06a',
    gasUsed: 218583,
    cumulativeGasUsed: 218583,
    contractAddress: null,
    logs: [],
    status: true,
    logsBloom: '0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000010000000000000000000000000000000100000000000000000000000000400000000000000000000000010000000000000000000000000400000001000000000000000000000000000000000000000000000000000000000000000000000000000000040000000020400000000000000000002000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000020001000000000000000000000',        
    rawLogs: [ [Object], [Object] ]
  },
  logs: []
}
    √ 7.1 Claim: ... (3795ms)

そう ...

  1. トランザクションは発生しますが、送信者は資金を受け取りませんが、コントラクトはそれを送信しました。
  2. msg.sender は givin パラメータです... (_claim で必要) 資金を取得せず、トランザクションに参加していません

IERC20() を使って試してみましたが、違いはありません (とにかく不思議に思うでしょう)。

ここで何が起こっているのか誰にもわかりませんか?

4

0 に答える 0