這篇文章主要講解了“ERC777規(guī)范內(nèi)容是什么”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ERC777規(guī)范內(nèi)容是什么”吧!
創(chuàng)新互聯(lián)建站于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務公司,擁有項目網(wǎng)站設計制作、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元新城做網(wǎng)站,已為上家服務,為新城各地企業(yè)和個人服務,聯(lián)系電話:028-86922220
有別于ERC20的自由散漫,ERC777利用了新的ERC820標準提供的集中式的智能合約注冊表和合約接口實現(xiàn)查詢功能,以實現(xiàn)某種程度的內(nèi)省。中心化的注冊機制有助于后向兼容性以及更好的功能擴展。一個期望調(diào)用ERC777的DApp或智能合約,就可以利用EIP-820返回的ITokenReceipt接口來確定目標合約是否實現(xiàn)了期望的接口。
ERC777改進了ERC20代幣中存在的很多不足,例如,ERC777支持操作員白名單,提供以太幣兼容的send()接口,利用ERC20實現(xiàn)后向兼容等。下圖展示了ERC777代幣的轉(zhuǎn)賬實現(xiàn)流程:

要快速掌握以太坊區(qū)塊鏈應用開發(fā),推薦匯智網(wǎng)的在線互動教程:
以太坊DApp開發(fā)入門 | 以太坊電商DApp實戰(zhàn) | ERC721以太坊通證實戰(zhàn) Web3j以太坊開發(fā)詳解 | Php以太坊開發(fā)詳解 | Python以太坊開發(fā)詳解 | C#以太坊開發(fā)詳解 | Flutter以太坊開發(fā)詳解 |
與ERC20相比,ERC777有以下方面的優(yōu)勢:
采用與以太幣一致的哲學發(fā)送代幣,即采用接口send(dest,value,data)。
任何合約都可以定義收到代幣時觸發(fā)的tokensReceived事件,這避免了在ERC20代幣 中存在的雙重調(diào)用問題。
合約和常規(guī)地址都可以通過注冊一個tokensToSend或tokensReceivedFunction 函數(shù)來控制或拒絕發(fā)送或接收的代幣,避免ERC20代幣中存在的代幣卡死問題。
代幣持有者可以授權(quán)或回收管理其代幣的操作員權(quán)限。這些操作員通常是交易所 合約或自動收費系統(tǒng)中的支付處理器。
每個代幣交易都包含userData數(shù)據(jù)字段,在操作員操作時也有類似的operatorData 字段,從而可以自由地將數(shù)據(jù)傳遞給接收方。
可以后向兼容那些不支持tokensReceived函數(shù)的錢包。
下面是ERC777規(guī)范的內(nèi)容,完整描述可以到官網(wǎng)查看:
interface ERC777Token {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function totalSupply() external view returns (uint256);
    function balanceOf(address holder) external view returns (uint256);
    function granularity() external view returns (uint256);
    function defaultOperators() external view returns (address[] memory);
    function isOperatorFor(
        address operator,
        address holder
    ) external view returns (bool);
    function authorizeOperator(address operator) external;
    function revokeOperator(address operator) external;
    function send(address to, uint256 amount, bytes calldata data) external;
    function operatorSend(
        address from,
        address to,
        uint256 amount,
        bytes calldata data,
        bytes calldata operatorData
    ) external;
    function burn(uint256 amount, bytes calldata data) external;
    function operatorBurn(
        address from,
        uint256 amount,
        bytes calldata data,
        bytes calldata operatorData
    ) external;
    event Sent(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256 amount,
        bytes data,
        bytes operatorData
    );
    event Minted(
        address indexed operator,
        address indexed to,
        uint256 amount,
        bytes data,
        bytes operatorData
    );
    event Burned(
        address indexed operator,
        address indexed from,
        uint256 amount,
        bytes data,
        bytes operatorData
    );
    event AuthorizedOperator(
        address indexed operator,
        address indexed holder
    );
    event RevokedOperator(address indexed operator, address indexed holder);
}ERC777代幣合約必須通過ERC820標準注冊ERC777Token接口。基準單位必須是101?。

ERC777代幣logo采用Creative Commons Attribution-ShareAlike 4.0授權(quán),并且不可以用于廣告、推廣或其他任何不兼容ERC777的技術(shù)。
ERC777沒有引入后向不兼容問題,因此可以兼容之前的ERC20代幣標準。
在這個RIP中,沒有使用transfer和transferFrom進行代幣轉(zhuǎn)賬,而是使用send和operatorSend來避免混淆與潛在的錯誤。與此同時,ERC777允許你實現(xiàn)ERC20中的transfer、transferFrom、approve和allowance以便兼容ERC20。
因此一個代幣合約可以同時實現(xiàn)ERC20和ERC777。只讀函數(shù)例如name、symbol、balanceOf、tokenSupply以及內(nèi)部數(shù)據(jù)例如余額映射表等都可以毫無問題的重疊使用。但是需要注意的是,以下函數(shù)是ERC777規(guī)范強制要求的:name 、 symbol,不過decimal并非ERC777標準中的要求。
兩個標準中的寫操作函數(shù)都是解耦的,可以彼此獨立的操作。注意ERC20函數(shù)應當僅限于既有合約的調(diào)用。
如果代幣合約實現(xiàn)了ERC20,那么它必須通過ERC820注冊ERC20Token接口。如果合約支持切換啟用或禁止ERC20的方法,那么每次進行切換時,該代幣合約必須通過ERC820注冊或解除RC20Token接口的注冊。
對于實現(xiàn)ERC20的新合約而言,唯一的區(qū)別在于ERC777TokensSender和ERC777TokensRecipient通過ERC820的注冊必須早于ERC20的注冊。這意味著即使是對ERC20的transfer方法的調(diào)用,代幣合約也必須通過ERC820檢查from或to是否實現(xiàn)了tokensToSend/tokensReceived接口并在可用時進行調(diào)用。注意當調(diào)用合約的ERC20的transfer方法時,如果合約沒有實現(xiàn)tokensReceived接口,那么transfer也應當被接受,這意味著代幣可能會被鎖定。
感謝各位的閱讀,以上就是“ERC777規(guī)范內(nèi)容是什么”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對ERC777規(guī)范內(nèi)容是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
                分享題目:ERC777規(guī)范內(nèi)容是什么
                
                當前網(wǎng)址:http://chinadenli.net/article38/gghesp.html
            
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、微信公眾號、標簽優(yōu)化、App開發(fā)、手機網(wǎng)站建設、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)