国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ERC 20 優(yōu)缺點(diǎn),以及 eth 3 種轉(zhuǎn)賬方式

這篇具有很好參考價(jià)值的文章主要介紹了ERC 20 優(yōu)缺點(diǎn),以及 eth 3 種轉(zhuǎn)賬方式。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

ERC 20 協(xié)議的產(chǎn)生(優(yōu)點(diǎn)):

  • 定義統(tǒng)一的函數(shù)名:名稱、發(fā)行量、轉(zhuǎn)賬函數(shù)、轉(zhuǎn)賬事件等
  • 以便交易所、錢包進(jìn)行集成
  • 所有實(shí)現(xiàn)了這些函數(shù)的合約都是 ERC20Token
  • ERC20 可以表示任何同質(zhì)的可以交易的內(nèi)容: 貨幣、股票、積分、債券、利息...
  • 可以用數(shù)量來表示的內(nèi)容 基本上可以ERC20 表示

ERC 20 的缺點(diǎn)

以下是一個(gè)遇到很多次的場景:有一天老板過來找你(開發(fā)者),最近存幣生息很火,我們也做一個(gè)合約吧, 用戶打幣過來給他計(jì)算利息, 看起來是一個(gè)很簡單的需求,你滿口答應(yīng)說好,結(jié)果自己一研究發(fā)現(xiàn),使用 ERC20 標(biāo)準(zhǔn)沒辦法在合約里記錄是誰發(fā)過來多少幣,從而沒法計(jì)算利息(因?yàn)榻邮照吆霞s并不知道自己接收到ERC20代幣)。

ERC20 標(biāo)準(zhǔn)下,可以通過一個(gè)變通的辦法,采用兩個(gè)交易組合完成,方法是:第1步:先讓用戶把要轉(zhuǎn)移的金額用 ERC20 的approve 授權(quán)的存幣生息合約(這步通常稱為解鎖),第2步:再次讓用戶調(diào)用存幣生息合約的計(jì)息函數(shù),計(jì)息函數(shù)中通過 transferFrom 把代幣從用戶手里轉(zhuǎn)移的合約內(nèi),并開始計(jì)息。

同樣由于ERC20 標(biāo)準(zhǔn)沒有一個(gè)轉(zhuǎn)賬通知機(jī)制,很多ERC20代幣誤轉(zhuǎn)到合約之后,再也沒有辦法把幣轉(zhuǎn)移出來,已經(jīng)有大量的ERC20 因?yàn)檫@個(gè)原因被鎖死。

另外一個(gè)問題是ERC20 轉(zhuǎn)賬時(shí),無法攜帶額外的信息,例如:我們有一些客戶希望讓用戶使用 ERC20 代幣購買商品,因?yàn)檗D(zhuǎn)賬沒法攜帶額外的信息, 用戶的代幣轉(zhuǎn)移過來,不知道用戶具體要購買哪件商品,從而展加了線下額外的溝通成本。

如何解決 ERC 20 中存在的問題

使用這個(gè)ERC777:send(dest, value, data) 解決。

ERC777 使用 send轉(zhuǎn)賬時(shí)會分別在持有者和接收者地址上使用ERC1820 的getInterfaceImplementer函數(shù)進(jìn)行查詢,查看是否有對應(yīng)的實(shí)現(xiàn)合約,ERC777 標(biāo)準(zhǔn)規(guī)范里預(yù)定了接口及函數(shù)名稱,如果有實(shí)現(xiàn)則進(jìn)行相應(yīng)的調(diào)用。

即便是一個(gè)普通用戶地址,同樣可以實(shí)現(xiàn)對 ERC777 轉(zhuǎn)賬的監(jiān)聽, 聽起來有點(diǎn)神奇,其實(shí)這是通過 ERC1820 接口注冊表合約來是實(shí)現(xiàn)的。

ERC1820 如此的重要,以至于ERC777單獨(dú)把它拆出來作為一個(gè)EIP。

ERC1820合約提過了兩個(gè)主要接口:

  • setInterfaceImplementer(address _addr, bytes32 _interfaceHash, address _implementer)
    用來設(shè)置地址(_addr)的接口(_interfaceHash 接口名稱的 keccak256 )由哪個(gè)合約實(shí)現(xiàn)(_implementer)。
  • getInterfaceImplementer(address _addr, bytes32 _interfaceHash) external view returns (address)
    這個(gè)函數(shù)用來查詢地址(_addr)的接口由哪個(gè)合約實(shí)現(xiàn)。

ERC1820 是一個(gè)全局的合約,有一個(gè)唯一在以太坊鏈上都相同的合約地址,它總是?0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24?,這個(gè)合約是通過非常巧妙的方式進(jìn)行部署的。

如果面試官問 :有沒有辦法不使用 erc 777 來解決誤轉(zhuǎn)入合約鎖死?

可以查看 erc 20 的源碼 發(fā)現(xiàn) transfer 方法如下 :

  function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

我們在實(shí)現(xiàn)自己的erc 20 合約的時(shí)候重載?_afterTokenTransfer 這個(gè)方法 。

并且判斷 我們這個(gè)代幣 如果轉(zhuǎn)入的是合約,就要就他實(shí)現(xiàn)一個(gè)接受代幣的方法 。

這種處理方式是有 副作用的 ,比如你轉(zhuǎn)到 uniswap ,等 ,他應(yīng)該是沒有實(shí)現(xiàn)你指定的方法 。

我思考 可以參考 erc 721 的做法增加一個(gè)新的函數(shù) ,叫safexxx 來執(zhí)行轉(zhuǎn)賬的邏輯。

eth 3 種轉(zhuǎn)賬方式的區(qū)別 :

erc20 transfer data,協(xié)議,區(qū)塊鏈,以太坊

erc 20:

如果要給合約轉(zhuǎn)賬,則需先授權(quán)給合約:合約能使用多少個(gè)幣,然后才能進(jìn)行轉(zhuǎn)賬

舉例說明,如果賬戶A有1000個(gè)ETH,想允許B賬戶隨意調(diào)用他的100個(gè)ETH,過程如下:?

A賬戶按照以下形式調(diào)用approve函數(shù)approve(B,100)
B賬戶想用這100個(gè)ETH中的10個(gè)ETH給C賬戶,調(diào)用transferFrom(A, C, 10)
調(diào)用allowance(A, B)可以查看B賬戶還能夠調(diào)用A賬戶多少個(gè)token

此處的token 需要是只要符合erc20 標(biāo)準(zhǔn)的token

ERC 777

參考上面提到的 :

ERC777 使用 send轉(zhuǎn)賬時(shí)會分別在持有者和接收者地址上使用ERC1820 的getInterfaceImplementer函數(shù)進(jìn)行查詢,查看是否有對應(yīng)的實(shí)現(xiàn)合約,ERC777 標(biāo)準(zhǔn)規(guī)范里預(yù)定了接口及函數(shù)名稱,如果有實(shí)現(xiàn)則進(jìn)行相應(yīng)的調(diào)用。

ERC 2612 (ERC20 permit)

線下簽名授權(quán)

(授權(quán))可以在線下簽名進(jìn)行,簽名信息可以在執(zhí)行接收轉(zhuǎn)賬交易時(shí)提交到鏈上,讓授權(quán)和轉(zhuǎn)賬在一筆交易里完成。 同時(shí)轉(zhuǎn)賬交易也可以由接收方(或其他第三方)來提交,也避免了用戶(ERC20的擁有者)需要有 ETH的依賴。文章來源地址http://www.zghlxwxcb.cn/news/detail-803754.html

到了這里,關(guān)于ERC 20 優(yōu)缺點(diǎn),以及 eth 3 種轉(zhuǎn)賬方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • .NET的發(fā)展歷程以及優(yōu)缺點(diǎn)

    .NET的發(fā)展歷程以及優(yōu)缺點(diǎn)

    .NET是由微軟推出的一個(gè)開放的編程平臺,它支持多種編程語言和操作系統(tǒng),旨在為開發(fā)人員提供一種快速、靈活、高效的應(yīng)用程序開發(fā)方法。下面是.NET的發(fā)展歷史: .NET Framework 1.0(2002年):.NET Framework 1.0 在2002年發(fā)布,這是.NET平臺的第一個(gè)版本,包含了基本的API和運(yùn)行時(shí)環(huán)

    2024年02月03日
    瀏覽(26)
  • singularity 運(yùn)行方式匯總,運(yùn)行方式的優(yōu)缺點(diǎn),及其調(diào)用方法

    1. Shell 模式 調(diào)用方法 : singularity shell [options] container_path 優(yōu)點(diǎn) : 提供了一個(gè)交互式的環(huán)境,用戶可以在容器內(nèi)探索和運(yùn)行命令,非常適合開發(fā)和測試。 不需要預(yù)先定義要運(yùn)行的命令或腳本,增加了靈活性。 缺點(diǎn) : 交互式使用可能不適合自動化腳本或批處理作業(yè)。 在容器內(nèi)手

    2024年02月22日
    瀏覽(51)
  • 淺談 iframe的優(yōu)缺點(diǎn)以及使用場景

    提示:以下是本篇文章正文內(nèi)容 iframe 是嵌入式框架,是 HTML框架 ,還是一個(gè) 內(nèi)聯(lián)元素 ,iframe元素會創(chuàng)建包含另一個(gè)文檔的內(nèi)聯(lián)框架(行內(nèi)框架),說白了就是,iframe用來在頁面嵌入其他的頁面。 通常我們使用iframe直接在頁面嵌套iframe標(biāo)簽指定src就可以了。 iframe能夠把嵌入

    2024年02月05日
    瀏覽(24)
  • 什么是js,以及js優(yōu)缺點(diǎn)

    JavaScript(簡稱 JS)是一種輕量級、解釋型的編程語言,通常用于在 Web 頁面上添加交互性、動態(tài)性和動畫效果。它是世界上最流行的編程語言之一,也是唯一一種可以在 Web 瀏覽器中運(yùn)行的編程語言。 JavaScript 的優(yōu)點(diǎn): 靈活性:JavaScript 可以用于多種應(yīng)用場景,例如創(chuàng)建交互

    2024年02月09日
    瀏覽(23)
  • TCP/UDP區(qū)別以及優(yōu)缺點(diǎn)詳解

    TCP/UDP區(qū)別以及優(yōu)缺點(diǎn)詳解

    TCP/IP協(xié)議的具體含義 TCP協(xié)議位于傳輸層,IP協(xié)議位于網(wǎng)絡(luò)層。 TCP/IP協(xié)議很多情況下只是利用IP進(jìn)行通信時(shí)所必須用到的協(xié)議群的統(tǒng)稱。具體來說,IP或ICMP、TCP和UDP、TELNET或FTP,以及FTTP等都屬于TCP/IP協(xié)議,有時(shí)候也稱TCP/IP為網(wǎng)絡(luò)協(xié)議群。 TCP、UDP協(xié)議的區(qū)別: 注:可從以下幾個(gè)方

    2024年02月04日
    瀏覽(42)
  • Torch中常見插值方式及各自的優(yōu)缺點(diǎn)

    Torch中常見插值方式及各自的優(yōu)缺點(diǎn)

    插值指的是利用已知數(shù)據(jù)去預(yù)測未知數(shù)據(jù),圖像插值則是給定一個(gè)像素點(diǎn),根據(jù)它周圍像素點(diǎn)的信息來對該像素點(diǎn)的值進(jìn)行預(yù)測。 當(dāng)我們調(diào)整圖片尺寸或者對圖片變形的時(shí)候常會用到圖片插值。 常見的插值算法可以 分為兩類 : 自適應(yīng)和非自適應(yīng) 。 自適應(yīng)的方法可以根據(jù)插

    2024年02月10日
    瀏覽(18)
  • Unity獲取物體組件的所有方法以及優(yōu)缺點(diǎn)

    1.GetComponent(): 獲取物體上的指定組件 T,如果物體上不存在該組件,則返回 null。 優(yōu)點(diǎn):簡單易用,可以快速獲取指定組件的實(shí)例,方便直接操作組件。 缺點(diǎn):如果需要獲取多個(gè)組件,需要多次調(diào)用該方法,較為繁瑣。 2.GetComponentInChildren(): 在物體及其子物體中查找指定組件

    2024年02月13日
    瀏覽(27)
  • Springboot四種實(shí)現(xiàn)鑒權(quán)方式各自的優(yōu)缺點(diǎn)

    攔截器 :攔截器是基于SpringMVC的一種機(jī)制,它可以在請求到達(dá)控制器之前或之后進(jìn)行攔截和處理,比如驗(yàn)證用戶身份,記錄日志,添加響應(yīng)頭等。 優(yōu)點(diǎn) :攔截器可以獲取到請求的上下文信息,如請求路徑,參數(shù),方法等,可以根據(jù)不同的業(yè)務(wù)邏輯進(jìn)行靈活的處理。攔截器也

    2024年02月10日
    瀏覽(23)
  • js常用判斷數(shù)據(jù)類型方法以及優(yōu)缺點(diǎn) 以及 instanceof 原理實(shí)現(xiàn)

    使用typeof操作符可以 判斷一個(gè)值的數(shù)據(jù)類型 。它返回一個(gè)表示數(shù)據(jù)類型的字符串。 優(yōu)點(diǎn):typeof 操作符是一種簡單、快速的方式來 判斷基本數(shù)據(jù)類型 。它返回的結(jié)果是一個(gè)字符串,可以直接用于條件判斷。 缺點(diǎn): 對于引用類型(除了函數(shù))的判斷結(jié)果都是\\\'object\\\' ,無法細(xì)

    2024年02月12日
    瀏覽(26)
  • 面試題:Spring 與 Springboot 的區(qū)別以及優(yōu)缺點(diǎn)

    Spring是一個(gè)開源的Java開發(fā)框架,旨在簡化企業(yè)級Java應(yīng)用程序的開發(fā)。它提供了一套完整的基礎(chǔ)設(shè)施,包括依賴注入、面向切面編程、聲明式事務(wù)管理等。 Spring Boot是一個(gè)用于創(chuàng)建獨(dú)立的、生產(chǎn)級別的基于Spring的應(yīng)用程序的框架。它將各種Spring組件和第三方庫整合到一個(gè)能夠

    2024年02月13日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包