これは私がすでに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)
そう ...
- トランザクションは発生しますが、送信者は資金を受け取りませんが、コントラクトはそれを送信しました。
- msg.sender は givin パラメータです... (_claim で必要) 資金を取得せず、トランザクションに参加していません
IERC20() を使って試してみましたが、違いはありません (とにかく不思議に思うでしょう)。
ここで何が起こっているのか誰にもわかりませんか?