Can contracts transfer native assets on behalf of other contracts/addresses?

Can contracts transfer native assets on behalf of other contracts/addresses?


Not directly. The native assets on Fuel have no builtin mechanisms for “approvals” or designating “Operators”.
This is because in order for a contract to transfer native assets that it owns, it simply transfers them, rather than calling the token contract where these assets were minted.
As there is no need to call the mining contract in order to transfer, there’s no way to reliably enable transferring assets on a contract’s behalf.

If you really need this functionality, you could implement it at the application layer.

Example: Contract A could expose an abi function transfer(destination: Identity) and only permit this function to be called by Contract B.
Contract B could then call A.transfer(destination) and A would send the assets to the destination. This could be extended by storing a set of addresses that are permitted to transfer on behalf of Contract A.


How easy is gonna be to use for a regular not technical people?

That depends… If you’re the one writing the contract then I consider you “technical” and this would be fairly straightforward.
Otherwise, this is the responsibility of contract authors and is not something non-technical end-users should even have to think or care about. :slight_smile:


Great. I understand. Thanks for answering my question

1 Like

Thats a great answer !!!

basically, there is no need to have a centralized ledger like most ERC20 is doing in ETH → assets on fuel are all native assets.

1 Like

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.