將以太坊封裝為 ERC20

將以太坊封裝為 ERC20 TOKEN

很多 DAPP 都是在處理 ERC20接口的 token, 其實很容易將以太坊封裝為 ERC20,這樣就可以統一處理,
至少我目前在做的雷電網絡就是這么處理的.

主要內容復制在網絡
https://programtheblockchain.com/posts/2018/05/26/wrapping-ether-in-an-erc20-token/

直接上代碼,核心部分是

pragma solidity ^0.4.24;import "baseerc20token.sol";contract EtherToken is BaseERC20Token {constructor(string _name, string _symbol)BaseERC20Token(0, 18, _name, _symbol) public{}function buy() public payable {balanceOf[msg.sender] += msg.value;totalSupply += msg.value;emit Transfer(address(0), msg.sender, msg.value);}function sell(uint256 amount) public {require(balanceOf[msg.sender] >= amount, "Insufficient balance.");balanceOf[msg.sender] -= amount;totalSupply -= amount;msg.sender.transfer(amount);emit Transfer(msg.sender, address(0), amount);}
}

它提供了以太坊和 ERC20互換的接口,換成 ERC20以后就很簡單了.
實際上baseerc20token.sol只是一個非常標準的 ERC20實現

pragma solidity ^0.4.23;contract BaseERC20Token {mapping (address => uint256) public balanceOf;string public name;string public symbol;uint8 public decimals;uint256 public totalSupply;event Transfer(address indexed from, address indexed to, uint256 value);constructor (uint256 _totalSupply,uint8 _decimals,string _name,string _symbol)public{name = _name;symbol = _symbol;decimals = _decimals;totalSupply = _totalSupply;balanceOf[msg.sender] = _totalSupply;emit Transfer(address(0), msg.sender, _totalSupply);}function transfer(address to, uint256 value) public returns (bool success) {require(balanceOf[msg.sender] >= value);balanceOf[msg.sender] -= value;balanceOf[to] += value;emit Transfer(msg.sender, to, value);return true;}event Approval(address indexed owner, address indexed spender, uint256 value);mapping(address => mapping(address => uint256)) public allowance;function approve(address spender, uint256 value)publicreturns (bool success){allowance[msg.sender][spender] = value;emit Approval(msg.sender, spender, value);return true;}function transferFrom(address from, address to, uint256 value)publicreturns (bool success){require(value <= balanceOf[from]);require(value <= allowance[from][msg.sender]);balanceOf[from] -= value;balanceOf[to] += value;allowance[from][msg.sender] -= value;emit Transfer(from, to, value);return true;}
}

這樣簡單部署,就可以在雷電網絡中將以太坊當做普通的 ERC20 TOKEN進行處理了.

轉載于:https://www.cnblogs.com/baizx/p/9174862.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452320.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452320.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452320.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

javascript高級程序設計學習之數值轉換 |Number(),parseInt(),parseFloat()

2019獨角獸企業重金招聘Python工程師標準>>> 將非數值轉換成數值的函數有三個&#xff1a;Number(),parseInt(),parseFloat(); 小記tip&#xff1a;Number()可以用于任何數據類型&#xff1b;parseInt(),parseFloat()針對的是將字符串&#xff1b; Number()的轉換規…

軟件的可維護性

可以把軟件的可維護性定性地定義為&#xff1a;維護人員理解、改正、改動或改進這個軟件的難易程度。 提高可維護性是支配軟件工程方法學所有步驟的關鍵目標。

服務器內存延遲,內存帶寬、延遲性能測試

內存帶寬、延遲性能測試華為FusionServer 2488H V5服務器主板集成了48個內存插槽&#xff0c;但送測機器配備有限。由于送測機型整合了四通道內存控制器&#xff0c;這樣使得平臺的內存帶寬得到了明顯的提升。SiSoftware Sandra Lite 2011中提供了內存帶寬、內存延遲和緩存性能…

Git學習的最佳教程

身為網頁設計師或者網頁開發者的你&#xff0c;可能已經聽說過Git這個正快速成長的版本控制系統。它由GitHub維護&#xff1b;GitHub是一個開放性的、存儲眾人代碼的網站。如果你想學習如何使用Git&#xff0c;請參考本文。在文章最后&#xff0c;我們羅列了其他Git學習資源。 …

如何使用idea快速創建SpringBoot項目

文章目錄一、二、三、四、五、一、 二、 三、 四、 五、

解決pip安裝模塊報錯Cannot fetch index base URL http://pypi.python.org/simple/

產生這個問題的原因呢和github一樣,因為他們用的cdn被墻.經小伙伴反饋,解決辦法如下. 通過指定國內鏡像源來安裝: pip --trusted-host 鏡像源 install 模塊名 -i 鏡像源路徑 例如:pip --trusted-host pypi.doubanio.com install paramiko -i http://pypi.doubanio.com/simple 注…

閃光css,CSS實現的一閃而過的圖片閃光效果

只需要兩個html元素和一個css變換&#xff0c;我就能創造出我自己的閃光效果。讓我們來實現它&#xff01;呈現光澤圖片下面就是這張addy在他博客上使用的圖片&#xff1a;比我需要的要大一些&#xff0c;但你可以把它裁剪一些。注意&#xff1a;左邊的那張是純白色的&#xff…

什么是可重用性

所謂重用&#xff08;reuse&#xff09;是指同一事物不做修改或稍加改動就在不同環境中多次重復使用。大量使用可重用的軟件構件來開發軟件&#xff0c;可以從下述兩個方面提高軟件的可維護性。 (1) 通常&#xff0c;可重用的軟件構件在開發時都經過很嚴格的測試&#xff0c;可…

MATLAB矩陣操作和算術運算符

矩陣的表示 矩陣之間用空格或者是逗號間隔 矩陣可以拼接&#xff08;可以用矩陣拼接&#xff09; 實部矩陣和虛部矩陣構成復數矩陣&#xff0c;一一對應。 冒號表達式&#xff1a; 格式&#xff1a; e1:e2:e3 e1表示初始值 e2表示步長 e3表示終止值 e2省略則e2為1 lins…

循序漸進學好編程,不要太急!!!

軟件開發人員是一個日新月異的領域—–IT中的大師&#xff0c;今天的編程方式與明天的編程或許截然不同&#xff0c;技術在不斷地革新&#xff0c;新語言、新平臺的如雨后春筍般出現、更好的解決方案的冒出&#xff0c;因此我們需要跟得上節奏&#xff0c;我們別無選擇&#xf…

django學習之路

1. 菜鳥教程 http://www.runoob.com/django/django-first-app.html 2. https://blog.csdn.net/Sunshine_ZCC/article/details/73918408轉載于:https://www.cnblogs.com/haimishasha/p/9189199.html

x230無線網卡驅動服務器版,ThinkPad X230網卡驅動

ThinkPad X230網卡驅動是一款專為ThinkPad X230打造的無線網卡驅動程序&#xff0c;當然&#xff0c;這款驅動也支持其他機型&#xff0c;包括ThinkPad X220,X220i,X220 Tablet,X220i Tablet等等&#xff0c;如果您的筆記本電腦屬于下列所列機型中的一款&#xff0c;歡迎您來歐…

文檔

文檔是影響軟件可維護性的決定因素。由于長期使用的大型軟件系統在使用過程中必然會經受多次修改&#xff0c;所以文檔比程序代碼更重要。軟件文檔應該滿足下述要求&#xff1a; (1) 必須描述如何使用這個系統&#xff0c;沒有這種描述時即使是最簡單的系統也無法使用。 (2)…

學成在線--0.項目概述

文章目錄0.前言1.功能架構2.技術架構3.技術棧4.開發步驟0.前言 當前市場的在線教育模式多種多樣&#xff0c;包括&#xff1a;B2C、C2C、B2B2C等業務模式&#xff0c;學成在線采用B2B2C業務模式&#xff0c;即向 企業或個人提供在線教育平臺提供教學服務&#xff0c;老師和學生…

【Java學習】JDBC可以再深一點理解

JDBC驅動程序 JDBC驅動程序是JDBC API中實現定義的接口。JDBC是java語言中的與數據庫連接的接口。也就是說JDBC是Java API&#xff0c;使得Java可以與數據庫進行連接&#xff0c;而JDBC驅動程序是JDBC API&#xff0c;驅動JDBC進一步與數據庫進行交互。 例如&#xff1a;使用JD…

想成為優秀的技術人員你必須做到的幾件事情

找工作的這幾天&#xff0c;收獲頗多。思考得最多的問題可能就是對未來的一個規劃。無意中看到下面幾條經驗&#xff0c;發現和自己想的也差不多&#xff0c;就分享出來。我要求自己做到這些&#xff0c;同時也希望對您也有所幫助。 1、保持學習 一個非常重要的觀點是&#x…

第 五 課 golang語言變量

1 變量三種聲明&#xff1a; &#xff08;第一種的var和類型都是多余&#xff1b; 第二種最簡潔&#xff0c;但是第二種只能用在函數中&#xff0c;不能是全局變量的聲明&#xff09; 第一種&#xff1a; var v_name v_type&#xff08;注意順序&#xff09;v_name value pack…

wordpress 評論ajax,WordPress教程 WordPress實現提交評論ajax翻頁效果教程

WordPress提交評論ajax翻頁的效果會很大的提高用戶體驗度&#xff0c;雖然我們一般的個人WordPress博客評論也不會有很多&#xff0c;但是用戶體驗至上嘛&#xff0c;所以WordPress主題站小編為大家分享WordPress實現提交評論ajax翻頁效果教程&#xff0c;希望能給大家能用得上…

Lombok的使用方法

文章目錄0.Lombok簡介1.在項目中添加Lombok的依賴2.在IDEA開發工具中添加Lombok插件0.Lombok簡介 Lombok是一個實用的java工具&#xff0c;使用它可以消除java代碼的臃腫&#xff0c;Lombok提供一系列的注解&#xff0c;使用這些注解可 以不用定義getter/setter、equals、構造…

【Python3網絡爬蟲開發實戰】4-解析庫的使用-3 使用pyquery

在上一節中&#xff0c;我們介紹了Beautiful Soup的用法&#xff0c;它是一個非常強大的網頁解析庫&#xff0c;你是否覺得它的一些方法用起來有點不適應&#xff1f;有沒有覺得它的CSS選擇器的功能沒有那么強大&#xff1f;如果你對Web有所涉及&#xff0c;如果你比較喜歡用CS…