Ethereum Gas Station Network (GSN)
Binubuo ng Ethereum Gas Station Network (GSN) ang proseso ng pagbabayad para sa gas mula sa mga end user na nagpapaliit sa UX friction para sa mga dapps. Sa GSN, ang mga kliyenteng walang gas ay maaaring makipag-ugnayan sa mga Ethereum smart contract nang hindi nangangailangan ang mga user ng ETH para sa mga bayarin sa transaksyon. Ang GSN ay isang desentralisadong sistema na nagpapahusay sa kakayahang magamit ng dapp nang hindi sinasakripisyo ang seguridad.
Halimbawa ng mga kaso ng paggamit para sa GSN:
- Privacy : Paganahin ang ETH-less withdrawal ng mga token na ipinadala sa mga stealth address
- Magbayad para sa gas sa mga sinusuportahang ERC-20 token : Payagan ang mga user na magbayad para sa gas sa ERC-20 token na sumusuporta sa
permit
function - Magbayad para sa gas off-chain : Payagan ang mga user na magbayad ng gas nang hindi direkta sa pamamagitan ng L2 rollup o credit card
- Onboarding : Payagan ang mga dapps na i-subsidize ang proseso ng onboarding para sa mga bagong user
Ang problema
Kung walang GSN, ang sinumang magpapadala ng transaksyon sa Ethereum ay kailangang magkaroon ng ETH upang magbayad para sa mga bayarin sa gas. Pinipilit nito ang mga bagong user na ipasa ang KYC at bumili ng ETH bago sila magsimulang gumamit ng anumang dapp. Ito ay maaaring maging isang malaking hadlang para sa mga user na walang paunang karanasan sa crypto na hindi pamilyar sa konsepto ng pangangailangang panatilihin ang ETH sa kanilang wallet para sa gas.
Isa rin itong sakit sa UX para sa mga kasalukuyang user na kailangang patuloy na palitan ang kanilang balanse sa ETH upang magbayad para sa mga bayarin sa gas kahit na mayroon silang sapat na ERC-20 token sa kanilang wallet upang bayaran ang mga transaksyong kailangan nila.
Arkitektura
Client: pumipirma at nagpapadala ng meta transaction sa relay server
Ang meta-transaction ay isang magarbong pangalan para sa isang simpleng ideya: ang isang relay server ay maaaring magpadala ng transaksyon ng isang user at magbayad para sa gas cost mismo. Sa halip na pumirma sa isang transaksyon sa Ethereum, na mangangailangan ng ETH para sa gas, pinirmahan ng isang user ang isang mensahe na naglalaman ng impormasyon tungkol sa isang transaksyon na gusto nilang isagawa at ipapadala ito sa isang relay server.
Mga relay server: nagsusumite ng transaksyon at nagbabayad ng Ethereum protocol gas fee para sa paggawa nito
Sa pagtanggap ng kahilingang mag-relay ng transaksyon mula sa kliyente, i-validate ng Relay server ang transaksyong ito upang matiyak na mababayaran nito ang halaga ng ETH na sumasaklaw sa mga gastos sa pagsusumite nito at ilang dagdag na bayad upang payagan ang relayer na kumita.
Kung maayos ang lahat, pipirmahan ng relayer ang isang native na transaksyon sa Ethereum, isusumite ito sa mempool at ibabalik ang isang nilagdaang transaksyon sa kliyente para sa pagpapatunay. Kung sakaling may mali, ang kliyente ay maaari lamang pumili ng ibang relay server at subukang magpadala ng transaksyon sa pamamagitan ng bago.
Lumilikha ito ng “isa para sa lahat at lahat para sa isa” na epekto kung saan ang pagtanggal sa frontend ng anumang dapp ay kasing hirap ng pagtanggal sa buong network. Kung mas maraming dapps ang lumahok, mas matatag ang garantiya sa availability.
Paymaster: sumasang-ayon na i-refund ang relay server para sa mga bayarin sa gas
Sa GSN ang lahat ng lohika ng refund ng gas ay ipinatupad sa loob ng mga kontrata ng Paymaster. Ang isang paymaster ay nagpapanatili ng balanse ng ETH sa RelayHub at maaaring magpatupad ng anumang lohika ng negosyo upang magpasya kung tatanggapin o tatanggihan ang isang meta transaction. Halimbawa, ang pagtanggap lamang ng mga transaksyon ng mga naka-whitelist na user, o sa mga pamamaraan ng kontrata na kinakailangan para sa mga onboarding na user na nagpasa din ng captcha, o mga transaksyon lang na may kasamang pagbabayad sa mga token sa Paymaster, atbp.
Forwarder: bini-verify ang pirma ng nagpadala at nonce
Umaasa lang ang mga kontrata ng tatanggap ng meta transaction sa maliit na pinagkakatiwalaang forwarder para sa kanilang seguridad. Bine-verify ng kontratang ito ang pirma at wala ng orihinal na nagpadala.
Kontrata ng tatanggap: nakikita ang orihinal na nagpadala at isinasagawa ang orihinal na transaksyon
Ang anumang pampublikong paraan ng kontrata ng tatanggap ay maaaring isagawa sa pamamagitan ng GSN.
Upang suportahan ang mga meta transaction, ang mga kontrata ng tatanggap ay nagmamana mula sa isang simpleng base class at pinapalitan msg.sender
ng _msgSender()
. Ibinabalik nito ang orihinal na nagpadala na pumirma sa kahilingan sa meta transaction.
Posible pa ring gumawa ng katutubong tawag sa transaksyon sa kontratang ito. Ang _msgSender()
pamamaraan ay babalik lamang msg.sender
kung ang kontrata ay tinawag nang direkta.
RelayHub: coordinate ang proseso sa isang walang tiwala na paraan
Ikinokonekta ng RelayHub ang mga user na nagpapatakbo ng mga kliyente, relay server, at mga paymaster upang hindi na kailangang malaman ng mga kalahok ang tungkol o magtiwala sa isa’t isa.
Ang mga developer ng Dapp ay hindi kailangang maunawaan o magtiwala sa mga panloob na gawain ng RelayHub upang maisama sa GSN. Ang mga kontrata ng tatanggap ay hindi nakalantad sa mga potensyal na isyu sa seguridad sa RelayHub.
Sa ilalim ng hood, tinutulungan ng RelayHub ang mga kliyente na matuklasan ang pinakamahusay na third-party na relay server, pinipigilan ang mga third-party na relay server mula sa pag-censor ng mga transaksyon, at tinitiyak na ang mga Paymaster ay nagbabayad ng mga relay server para sa mga bayarin sa gas at mga bayarin sa transaksyon.
Reviews
There are no reviews yet.