# Have two different ways of paying fees

**URL:** <https://community.metamask.com/t/have-two-different-ways-of-paying-fees/30360>\
**Category:** Feature Requests\
**Created:** [April 22, 2025, 8:45am UTC](https://community.metamask.com/t/have-two-different-ways-of-paying-fees/30360 "2025-04-22T08:45:42Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![dreamer](https://avatars.discourse-cdn.com/v4/letter/d/6bbea6/32.png) [@dreamer](https://community.metamask.com/u/dreamer)\
**Post date:** [April 22, 2025, 8:45am UTC](https://community.metamask.com/t/have-two-different-ways-of-paying-fees/30360/1 "2025-04-22T08:45:42Z")

</div>

**Description:**  
Adding a watch ads as second option to replace fees.

**Purpose:**  
This would help people who don’t really know how to use gas fees facilitate their payments with ease. A case whereby they watch ads equivalent to the fee they are going to pay.

**Extension/Mobile/Both:**  
Mobile

**Images/Attachments:**

---

<div class="post-metadata">

**Author:** ![xf0707](https://dub1.discourse-cdn.com/metamask/user_avatar/community.metamask.com/xf0707/32/38482_2.png) [@xf0707](https://community.metamask.com/u/xf0707)\
**Post date:** [April 22, 2025, 9:05am UTC](https://community.metamask.com/t/have-two-different-ways-of-paying-fees/30360/2 "2025-04-22T09:05:01Z")

</div>

Welcome to the MetaMask community  
I personally feel you are insightful unique, but based on the user experience and technology implementation may not be simple.  
Just a discussion and purely personal opinion.

---

<div class="post-metadata">

**Author:** ![HiroProtagonist](https://dub1.discourse-cdn.com/metamask/user_avatar/community.metamask.com/hiroprotagonist/32/9884_2.png) [@HiroProtagonist](https://community.metamask.com/u/HiroProtagonist)\
**Post date:** [April 23, 2025, 1:20pm UTC](https://community.metamask.com/t/have-two-different-ways-of-paying-fees/30360/3 "2025-04-23T13:20:25Z")

</div>

It’s an interesting idea. While I don’t think it’s something that really aligns with the ConsenSys values (eg: I can suggest it to development teams, but I dont think it’s something we are likely to build internally) I can see a few paths that this might become a viable feature.

The easiest way to add new capabilities to MetaMask is through a feature called MM Snaps. You’ll also need some of the features offered by upcoming Pectra upgrade, namely sponsored txns. They allow for a “paymaster” to pay gas fees for another wallet.

So what I’m envisioning is a Snap that creates a Pectra compliant “smart account.” Viewing ads would build up “gas credit” that could then be used to pay for txns. We host internal & external hackathons, and this sounds like a textbook entry there.

In your shoes, I would get in touch with the Linea Builders Club, get a team together, and get hacking. LBC is run by a group of our developers that work with community teams to help get their ideas built into projects built & on-chain. You can get linked up with them in the Developer channels on the Linea Discord - [Linea](https://discord.gg/Linea)

If you’re not interested in trying to build the thing yourself, and just want the feature to exist; I can also pass the suggestion along to some people that might be interested.

---

<div class="post-metadata">

**Author:** ![dreamer](https://avatars.discourse-cdn.com/v4/letter/d/6bbea6/32.png) [@dreamer](https://community.metamask.com/u/dreamer)\
**Post date:** [April 23, 2025, 3:58pm UTC](https://community.metamask.com/t/have-two-different-ways-of-paying-fees/30360/4 "2025-04-23T15:58:12Z")

</div>

The feature would really be nice. Two options for covering gas fees👍

---

<div class="post-metadata">

**Author:** ![dreamer](https://avatars.discourse-cdn.com/v4/letter/d/6bbea6/32.png) [@dreamer](https://community.metamask.com/u/dreamer)\
**Post date:** [April 27, 2025, 1:08pm UTC](https://community.metamask.com/t/have-two-different-ways-of-paying-fees/30360/5 "2025-04-27T13:08:20Z")

</div>

class MetamaskLikeApp:  
def **init** (self):  
self.gas\_price = self.get\_current\_gas\_price() # Get current gas price  
self.ad\_service = AdService() # Assume an ad service integration

```
def get_current_gas_price(self):
    # In a real application, this would fetch the current gas price
    return 0.00002 # Example gas price in ETH

def initiate_transaction(self, recipient, amount):
    gas_required = self.calculate_gas_for_transaction(recipient, amount)
    total_cost = amount + gas_required

    print(f"Transaction details:\n Recipient: {recipient}\n Amount: {amount} ETH\n Estimated Gas Fee: {gas_required} ETH\n Total Cost: {total_cost} ETH")

    if self.prompt_user_for_gas_fee_option():
        if self.watch_ads_to_cover_gas(gas_required):
            print("Gas fee covered by watching ads.")
            self.submit_transaction(recipient, amount, gas_fee=0) # Submit with zero gas fee for the user
        else:
            print("Failed to cover gas fee with ads. Transaction cancelled.")
    else:
        self.submit_transaction(recipient, amount, gas_fee=gas_required)

def calculate_gas_for_transaction(self, recipient, amount):
    # In a real application, this would estimate gas based on transaction complexity
    return 0.00001 # Example gas units

def prompt_user_for_gas_fee_option(self):
    user_input = input("Do you want to watch ads to cover the gas fee? (yes/no): ").lower()
    return user_input == "yes"

def watch_ads_to_cover_gas(self, gas_required):
    required_ads = self.ad_service.calculate_required_ads(gas_required)
    print(f"You need to watch {required_ads} ads to cover the gas fee.")
    ads_watched = self.ad_service.watch_ads(required_ads)
    if ads_watched >= required_ads:
        if self.ad_service.verify_ads_watched(ads_watched):
            # In a real application, this would trigger the gas fee coverage mechanism
            print("Ads watched and verified.")
            return True
        else:
            print("Ad verification failed.")
            return False
    else:
        print("Not enough ads watched.")
        return False

def submit_transaction(self, recipient, amount, gas_fee):
    print(f"Submitting transaction to {recipient} for {amount} ETH with gas fee: {gas_fee} ETH")
    # In a real application, this would interact with the blockchain to submit the transaction

```

class AdService:  
def calculate\_required\_ads(self, gas\_amount):  
# This would depend on the ad service’s reward system  
# Example: 1 ad covers 0.000005 ETH of gas  
return int(gas\_amount / 0.000005) + 1

```
def watch_ads(self, num_ads):
    print(f"Watching {num_ads} ads...")
    # Simulate watching ads
    return int(input("Enter the number of ads you have watched: "))

def verify_ads_watched(self, watched_count):
    # In a real application, this would communicate with the ad service for verification
    # For simplicity, we'll just assume verification is successful if the count matches
    return True

```

# Example usage

MetaMask\_like\_app = MetamaskLikeApp()  
MetaMask\_like\_app.initiate\_transaction(“0x123…”, 0.01)
