什么是ERC-777代幣又有啥作用
背景
ERC-777代幣來(lái)自最初的EIP(以太坊改進(jìn)建議)——https://eips.ethereum.org/EIPS/eip-777,由Jacques Dafflon、Jordi Baylina和Thomas Shababi編寫(xiě)。名稱(chēng)中的777實(shí)際上沒(méi)有任何意義,只是由于 githubissues的當(dāng)前索引生成。但是,您不能否認(rèn),這是一個(gè)讓各地開(kāi)發(fā)人員都情有獨(dú)鐘的數(shù)字。這個(gè)提議的最初動(dòng)機(jī)是提供比當(dāng)前ERC-20規(guī)范具有更少摩擦的事務(wù)。如果您在該領(lǐng)域工作的時(shí)間足夠長(zhǎng),您就會(huì)知道維護(hù)自己鑰匙和錢(qián)包的個(gè)人之間的交易很容易。您還知道,一旦您偏離了這個(gè)簡(jiǎn)單的用例,事情就會(huì)變得更加困難。
ERC-777將如何阻止傷害
以下是我在與以太坊合作時(shí)經(jīng)歷過(guò)的一些常見(jiàn)事情,以及ERC-777規(guī)范將如何為人們提供幫助。
第三方支出-運(yùn)營(yíng)商
ERC-20
在典型的ERC-20場(chǎng)景中,如果我想批準(zhǔn)第三方帳戶(hù)或智能合約使用我?guī)?hù)的代幣,我將需要兩個(gè)事務(wù)來(lái)執(zhí)行單個(gè)轉(zhuǎn)賬。我需要打電話來(lái)批準(zhǔn)揮金人和他們被授權(quán)的支出金額,智能合約或地址將需要執(zhí)行交易。問(wèn)題不在于我必須批準(zhǔn)這個(gè)賬戶(hù),而在于我必須給它一個(gè)支出限制,確保它總是足夠我進(jìn)行交易。
ERC - 777
ERC-777標(biāo)準(zhǔn)希望通過(guò)引入運(yùn)營(yíng)商的概念來(lái)解決第三方支出問(wèn)題。在服務(wù)體系結(jié)構(gòu)中,運(yùn)營(yíng)商是一個(gè)眾所周知的概念,因?yàn)樗鼈兪蔷哂袌?zhí)行特定任務(wù)的特定權(quán)限帳戶(hù)。對(duì)于ERC-777代幣,運(yùn)營(yíng)商有兩種類(lèi)型——常規(guī)運(yùn)營(yíng)商和默認(rèn)運(yùn)營(yíng)商 常規(guī)操符是一個(gè)地址,允許代表另一個(gè)地址發(fā)送和刻錄代幣。默認(rèn)運(yùn)營(yíng)商是允許所有代幣持有者發(fā)送和刻錄代幣的地址。
天然氣消費(fèi)解決方案
在交易所或dApp上使用錢(qián)包時(shí),一個(gè)常見(jiàn)的問(wèn)題是支付交易的天然氣費(fèi)。用戶(hù)不希望或不需要關(guān)心是哪個(gè)塊阻止了他們的事務(wù),只要它是合理的速度就行了。使用“運(yùn)營(yíng)商”可以讓您作為dApp或交易所所有者來(lái)管理消費(fèi)成本,以維護(hù)用戶(hù)體驗(yàn)。
所有權(quán)與支出
ERC20標(biāo)準(zhǔn)的優(yōu)點(diǎn)之一是有很多代幣與之兼容。這為它的開(kāi)發(fā)和用戶(hù)采用提供了一個(gè)很好的生態(tài)系統(tǒng)基礎(chǔ)。然而,當(dāng)您擁有以太坊錢(qián)包時(shí),每個(gè)地址構(gòu)成一個(gè)具有唯一公鑰/私鑰的帳戶(hù),如果您在一個(gè)交易所擁有數(shù)千名用戶(hù),但是您沒(méi)有該用戶(hù)資金的私鑰,您如何提供結(jié)算呢?運(yùn)營(yíng)商將是一個(gè)很好的用例,因?yàn)樗⒉徽嬲龢?gòu)成所有權(quán),但將允許您為交易結(jié)算轉(zhuǎn)移資金。需要注意的是,地址可以在任何時(shí)候添加/刪除運(yùn)營(yíng)商,所以這是一件棘手的事情。
ERC-820合約
操作者的使用最終由另一個(gè)合約ERC-820啟用。本合約作為一個(gè)通用的、無(wú)所有者的注冊(cè)中心,任何帳戶(hù)/地址都可以在其中檢查它們?cè)噲D發(fā)送的代幣,以及發(fā)送到的目的地是否能夠接收/管理這些類(lèi)型的代幣。這似乎是ERC-223的改進(jìn),該標(biāo)準(zhǔn)旨在幫助防止用戶(hù)將代幣發(fā)送到不兼容的智能合約。在正常的ERC-20用例中,發(fā)送方必須發(fā)送一個(gè)“批準(zhǔn)”事務(wù),然后才能將任何PokerCointoken發(fā)送到SureThing智能合約。在這種情況下,PokerCoin代幣(ERC-777)開(kāi)發(fā)人員只需向ERC-820注冊(cè)他們的代幣,并聲明它與PokerCoin合約兼容。任何試圖將未注冊(cè)的pokercoin發(fā)送到ERC-820合約中的嘗試都將失敗。
ERC-777標(biāo)準(zhǔn)的另一個(gè)承諾是Hook。它們對(duì)我來(lái)說(shuō)仍然有點(diǎn)神秘,但本質(zhì)上它們將允許開(kāi)發(fā)人員實(shí)現(xiàn)在事務(wù)執(zhí)行前/后執(zhí)行的代碼塊,以便通過(guò)事件發(fā)送通知、需要額外的輸入、塊地址或其他與流程相關(guān)的項(xiàng)。
總結(jié)
運(yùn)營(yíng)商和ERC-820的組合意味著我們知道可以在哪里發(fā)送代幣,以及委托誰(shuí)使用代幣。作為我們虛構(gòu)的dApp的用戶(hù),我可以放心地將PokerCoin的合約地址設(shè)置為“我的運(yùn)營(yíng)商”,并且根據(jù)開(kāi)發(fā)商在PokerRegistry ERC-820智能合約上的注冊(cè),我可以將這些代幣發(fā)送到的唯一目的地是PokerCoin合約。