Question:

In Eosbetdice contract, in the transfer action, why it is able to emplace a new row in this table?

Ava: 21 May 2022

In Eosbetdice contract, https://gitlab.com/EOSBetCasino/eosbetdice_public/blob/master/EOSBetDice.cpp#L193

The code of the contract in this line should be "eosio.token". I wonder why it doesn't get "cannot modify objects in table of another contract" error as it is trigger by contract eosio.token and trying to create new record in other contract's table.

Answer:
Evelyn: 22 May 2022

Because it is being paid for by _self, which is always allowed.

In general, you can not charge other people RAM when doing transfers, only yourself.

You can charge other people RAM when performing any other action.