swarms/ideas/150-gas-abstraction.md

116 lines
4.6 KiB
Markdown

---
id: 150-gas-abstraction
title: Gas Abstraction
status: Draft
created: 2018-02-01
category: core
lead-contributor: 3esmit
contributors:
- 3esmit
- richard-ramos
- iurimatias
- alexvandesande
exit-criteria: no
success-metrics: yes
clear-roles: yes
future-iterations: no
---
# Gas Abstraction
## Preamble
Idea: 150-gas-abstraction
Title: Gas Abstraction
Status: Draft
Created: 2018-02-01
Requires: 145-identity
Replaces: 073-economic-abstraction
## Summary
Enable Status users to pay gas fee with any token that is valueable to society.
Users would sign a message request to contracts which will use user's Identity balance of selected token to refund proportional used gas to a incentivezed ETH owner to include that message in a transction.
## Swarm Participants
- Lead Contributor: Ricardo Guilherme Schmidt
- Contributor: Richard Ramos
- Contributor: Iuri Matias
- UX (Mist): Alexandre Van de Sande
- UX (Status): (help needed)
## Product Overview
A barrier for user adoption to blockchain through Status would be the need of holding two tokens for paying fees, ether gas for moving the [SNT](https://etherscan.io/address/0x744d70fdbe2ba4cf95131626614a1763df805b9e#readContract) fee from user balance to decentralized service provider.
The product solve this by emulating a gas abstraction by adding "Gas Relayer Actor" in top of smart contracts as: [Identity](https://github.com/status-im/contracts/blob/73-economic-abstraction/contracts/identity/Identity.sol)[GasRelay](https://github.com/status-im/contracts/blob/73-economic-abstraction/contracts/identity/IdentityGasRelay.sol), MultiSigWallet, [SNTController](https://github.com/status-im/contracts/blob/73-economic-abstraction/contracts/status/SNTController.sol#L82) (updated from SNTPlaceHolder).
- Allows SNT holder to broadcast ethereum signed messages to anyone with ETH to validate them in the GasRelay smart contracts, and offering a refund of gas used in a gas price set in SNT.
- Whoever have ether could verify if the gas price worth the SNT gas price offered.
- This becomes a micro trade of ETH->SNT.
- Allow user to use any token they want (even ETH, or ETH stored in Identity).
### Product Description
Gas Relay node:
- Status Destkop extension or an independent node can include messages by making automatic transactions calls to smart contracts to earn tokens being offered as gas price refund.
- Configuration for tokens accepted and types of contract willing to interact with.
Important as fundamental pivot actor.
Identity Gas Relay adaptor:
- include smart contract terms for accepting ethereum signed messages representing authorization to call by/for Identity owner offering a gas price refund for relayer.
- Identity UI should allow user to choose what token it wants to use as gas price.
Important for gas abstraction of call.
SNTController Gas Relay adaptor:
- include smart contract terms for accepting ethereum signed messages to call `IdentityGasRelayFactory` and for moving the tokens from there using SNT controller contract.
- a "wizard" UI would make the calls to create a Identity and send user SNT to Identity (so it can be used as ether gas).
Important for opt-in gas abstraction without ever holding ether.
### Requirements & Dependancies
Idea [145-identity](https://github.com/status-im/ideas/pull/145) is important to seamless and safe integration of gas abstraction for any type of call, so identity can become `msg.sender` for other contracts.
### Minimum Viable Product
Goal Date: 2018-05-15
Description:
- Users can use Identity paying gasPrice in any token.
- Users can create Identity using SNTController and paying with SNT.
- Users can earn tokens running a node that include other's messages
#### Identity Gas RelayIdentity UX should allow user to choose what token it wants to use as gas price.
Goal Date: 2018-04-20
Description:
- Gas Relay Node that recieve whisper messages from Identity owners,
- Identity User Interface with Gas Relayed option of calls
#### SNT Gas Relayer
Goal Date: 2018-04-27
Description:
- Gas Relay Node implements watching messages for SNTController
- User interface for creating Identity (pay gas in SNT)
- Moving SNT to other address from SNTController terms (paying gas in SNT)
#### UX Integration
Goal Date: 2018-05-15
Description:
- User can create Identity paying in SNT.
- User can select differnt tokens in gasPrice when using Identity.
## Success Metrics
Users are able to use Ethereum Virtual Machine and Status Network with only ever holding SNT.
## Supporting Role Communication
## Copyright
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).