Hi I have some questions regarding solidity security/syntax

Cryptocurrency News and Public Mining Pools

Hi I have some questions regarding solidity security/syntax

Hi guys I'm learning Solidity and have a few questions I'd like clarified. I hope I can post this here, I posted on r/ethdev too but I think r/ethereum is more active.

  • When sending eth to an address that calls a function is this the right way to do it? :

    (bool success,) = msg.sender.call{value: amt}("");

    require(success);

I just don't understand where the actual "send" is happening. Like I get it's making a call to the sender's address but when is it actually sending the value?

  • How do fallback functions work? I'm trying to learn about reentrancy attacks and was a bit confused. Is the point that when a contract calls another's withdraw function it immediately goes to the fallback function once the eth is withdrawn?

  • I'm trying to understand the concept of tx.origin. For example if i have Contract A and Contract B. If I as a user call a function through etherscan or remix or something on Contract A that calls some function in B that is to return the tx.origin, does that mean B will return my user address? Sorry if that's a little unclear, please let me know if I need to clarify

  • Along with the above question – can using tx.origin instead of msg.sender open a contract to a reentrancy style attack? I figure if contract B were to store some data it uses for comparison or a require and accesses it using tx.origin – an intermediary contract A could be used to drain the funds since you're not using msg.sender's data – rather the user's data who called the malicious contract.

I really appreciate any help anyone can give me. I'm kind of struggling with these concepts – particularly the security related things. Apologies for the subpar formatting.

submitted by /u/RUScrewCrew
[link] [comments]