EVM-以太坊虛擬機??
是以太坊中智能合約的運行環境。
以太坊客戶端
也稱錢包,提供賬戶管理、挖礦、轉賬、智能合約的部署和執行等等功能,以太坊節點利用以太坊客戶端接入到以太坊網絡。 現在以太坊客戶端主要有:Wallent/ist , Geth, Parity, Harmony,
Geth
go-ethereum的簡稱,由以太坊基金會提供的官方客戶端軟件,用Go語言編寫,用于創建一個本地的測試網絡。geth是真正的以太坊環境。
Solidity語言
一種高級語言,以太坊編寫智能合約最流行的編程語言。在Remix IDE中編寫,然后編譯成在EVM上可運行的字節碼。
Remix
以太坊官方推薦的智能合約開發IDE,適合新手,可以在瀏覽器中快速部署測試智能合約。
運行Remix IDE環境:
http://remix.ethereum.org/#optimize=false&version=soljson-v0.4.21+commit.dfe3193c.js
Web3.js
javascript庫,可以用來與一個節點進行交互。
當Solidity合約編譯好并且發送到網絡上之后,你可以使用以太坊的web3.js JavaScript API來調用它,構建能與之交互的web應用。
web3.js的接口文檔:https://github.com/ethereum/wiki/wiki/JavaScript-API
web3.js的代碼庫:https://github.com/ethereum/web3.js
JavaScript格式化工具(能正常恢復被壓縮的JS代碼):http://tool.oschina.net/codeformat/js
Truffle
Truffle 和 Embark 是用于開發以太坊 DApps的兩個最常用的框架。 它們抽象出在區塊鏈上編譯和部署合同的許多復雜的東西。
Truffle讓你可以迅速進入寫代碼-編譯-部署-測試-打包DApp這個流程。(Truffle ['tr?fl] 、Embark [?m'bɑrk] )
本地的用來編譯、部署智能合約的工具。
testrpc
testrpc不同于geth,geth是真正的以太坊環境,testrpc是在本地使用內存模擬的一個以太坊環境,對于開發調試來說,更為方便快捷,當你的合約在testrpc中測試通過后,再可以部署到geth中去。
Ganache
Ganache是為以太坊開發準備的個人區塊鏈錢包,你可以用它執行智能合約,研發應用和執行測試用例。Ganache的前身是testrpc,跟testrpc一樣的功能。
Ganache現在有兩個版本,一個是帶圖形界面的版本,下載地址:
https://github.com/trufflesuite/ganache/releases
MetaMask
【定義】MetaMask 是一款插件形式的以太坊輕客戶端,開發過程中使用MetaMask和我們的dapp進行交互是個很好的選擇。
百度云盤獲取鏈接:https://pan.baidu.com/s/1N0oH5AzbLqU0B3YIwNSvjQ 密碼:77sl
Solc
編譯器,用Solidity寫好智能合約之后,需要用solc來編譯。它是一個來自C++客戶端實現的組件。
Gas
可理解成汽油, 在以太坊上執行程序以及保存數據都要消耗一定量的以太幣,Gas是以太幣轉換而成。這個機制用來保證效率。
油費計算?
油費 = gasPrice 油價 ×?gasLimit 用油限制
gasCost = gasPrice??* gasLimit(used gas)
注意gasLimit只是一個最大使用值,如果沒有使用完全則會退回賬戶。就像是開車去某個目的地一樣,gasPrice就是油價,油箱大小就是gasLimit,油夠,到達目的地多余的油會留在油箱里面,也就是轉賬成功,多余的油費會返回賬戶。如果少了那就到達不了,意味著轉賬失敗。
貨幣單位(Ether Units):Gwei / wei / Eth之間的關系
gasPrice單位一般用 Gwei表示,三者之間的轉換關系為:
1 eth = 1e9 Gwei = 1e18 wei
【注意】1e9 代表的是10的9次方
智能合約也是一樣的,當一個發起者部署運行一段智能合約時,以太坊會收取gas費用,就像汽車行駛需要燒油一樣,直到你的智能合約運行完畢,“油箱”中剩余的gas會退還給你,如果你的代碼死循環了,耗盡了你“油箱”中的gas,那么以太坊會自動報出異常停止你的智能合約。
一個數字常量(字面量)后面跟隨一個后綴wei,?finney,szabo或ether,這個后綴就是貨幣單位。不同的單位可以轉換。不含任何后綴的默認單位是wei。
不同的以太幣單位轉換關系如下:
1 ether == 10^3 finney == 1000 finney
1 ether == 10^6 szabo
1 ether == 10^18 wei
插曲:以太幣單位其實是密碼學家的名字,是以太坊創始人為了紀念他們在數字貨幣的領域的貢獻。他們分別是:
wei: Wei Dai 戴偉 密碼學家 ,發表 B-money
finney: Hal Finney 芬尼 密碼學家、工作量證明機制(POW)提出
szabo: Nick Szabo 尼克薩博 密碼學家、智能合約的提出者
賬戶
以太坊中有兩類賬戶,它們共用同一個地址空間:
外部賬戶,該類賬戶被公鑰-私鑰對控制(人類)。
合約賬戶,該類賬戶被存儲在賬戶中的代碼控制。
外部賬戶的地址是由公鑰決定的,合約賬戶的地址是在創建改合約時確定的(這個地址由合約創建者的地址和該地址發出過的交易數量計算得到,地址發出過的交易數量也被稱作"nonce")
合約賬戶存儲了代碼,外部賬戶則沒有,除了這點以外,這兩類賬戶對于EVM來說是一樣的。
每個賬戶有一個key-value形式的持久化存儲。其中key和value的長度都是256bit,名字叫做storage.
另外,每個賬戶都有一個以太幣余額(單位是“Wei"),該賬戶余額可以通過向它發送帶有以太幣的交易來改變。
ERC-20
代幣合約標準,一系列通過以太坊智能合約發布的代幣制定了代幣發放的通用規則。該標準是目前通過ICO發行代幣的基礎準則。?
該標準能夠確保基于以太坊的代幣在整個生態系統中以一種可預測的方式進行,使去中心化應用程序和智能合約可以在整個平臺上彼此協作,所有代幣都遵循一個固定的安全標準。
ERC721
ERC721 是由Dieter Shirley 在2017年9月提出。Dieter Shirley 正是謎戀貓CryptoKitties背后的公司Axiom Zen的技術總監。因此謎戀貓也是第一個實現了ERC721 標準的去中心化應用。ERC721號提議已經被以太坊作為標準接受,但該標準仍處于草稿階段。
ERC721同樣是一個代幣標準,ERC721官方簡要解釋是Non-Fungible Tokens,簡寫為NFTs,多翻譯為非同質代幣。非同質代表獨一無二,謎戀貓為例,每只貓都被賦予擁有基因,是獨一無二的(一只貓就是一個NFTs),貓之間是不能置換的。這種獨特性使得某些稀有貓具有收藏價值,也因此受到追捧。
DAPP(分布式應用)
DAPP是Decentralized Application的縮寫,中文叫分布式應用/去中心化應用。通常來說,不同的DAPP會采用不同的底層區塊鏈開發平臺和共識機制,或者自行發布代幣(也可以使用基于相同區塊鏈平臺的通用代幣)。DAPP于區塊鏈,就好比APP之于IOS和Android。
根據David Johnston對DAPP的定義,一個真正的DAPP應用,需要同時滿足一下幾個條件:
1、應用必須完全開源、自治,且沒有一個實體控制著該應用超51%Token。該應用必須能夠根據用戶的反饋及技術要求進行升級,且應用升級必須由大部分用戶達成共識之后方可進行;
2、應用的數據必須加密后存儲在公開的區塊鏈上;
3、應用必須擁有Token機制(可用基于相同底層區塊鏈平臺的通用代幣或自行發行新幣),礦工或應用維護節點需要得到代幣獎勵;
4、應用代幣的產生必須依據標準的加密算法,有價值的節點可以根據該算法獲取應用的代幣獎勵。
IPFS
星際文件系統IPFS(InterPlanetary File System)是一個面向全球的、點對點的分布式版本文件系統,目標是為了補充(甚至是取代)目前統治互聯網的超文本傳輸協議(HTTP),將所有具有相同文件系統的計算設備連接在一起。原理用基于內容的地址替代基于域名的地址,也就是用戶尋找的不是某個地址而是儲存在某個地方的內容,不需要驗證發送者的身份,而只需要驗證內容的哈希,通過這樣可以讓網頁的速度更快、更安全、更健壯、更持久。
IPFS想打造一個點對點的網絡拓撲,相當于顛覆HTTP所代表的分布關系,它具有內容可尋址的特點,通過文件內容生成唯一的哈希標識,一定程度上節約了空間開銷的成本。
Lite Server
它是一個全功能的網站架設工具軟件包,內置有Web、FTP、Telnet and E-Mail等服務器,你可以容易地進行設置,方便初學者使用。
lite-server 是輕量級的,僅適用于開發 的 node 服務器, 它僅支持 web app。?
安裝FTP服務器
參考文章鏈接:
https://blog.csdn.net/mgsky1/article/details/77825386
Markdown 語法整理大集合2017
這個跟以太坊無關,筆者寫文章需要,就臨時存放這兒了。
http://www.lxweimin.com/p/b03a8d7b1719
GITHUB
gitHub是一個面向開源及私有軟件項目的托管平臺,因為只支持git 作為唯一的版本庫格式進行托管,故名gitHub。
gitHub于2008年4月10日正式上線,除了git代碼倉庫托管及基本的 Web管理界面以外,還提供了訂閱、討論組、文本渲染、在線文件編輯器、協作圖譜(報表)、代碼片段分享(Gist)等功能。目前,其注冊用戶已經超過350萬,托管版本數量也是非常之多,其中不乏知名開源項目?Ruby?on Rails、jQuery、python?等。
中文幫助文檔:
http://gitbeijing.com/
中文教程:
https://www.imooc.com/learn/390
DAG
DAG(Directed Asyclic Graph)意思是有向無環圖,所謂有向無環圖是指任意一條邊有方向,且不存在環路的圖。相比較于比特幣的最長鏈共識, DAG 將最長鏈共識改成最重鏈共識機制, 通過交易權重與節點間建立局部共識來確認新的交易,將工作量證明巧妙的和每一筆交易綁定一起,不但打破了目前比特幣挖礦集中化的問題,而且大幅度提升了整個分布式網絡的吞吐能力,帶來極低的交易成本。
SPV
SPV( Simple Payment Verification , 簡單支付驗證) 是一種無須維護完整的區塊鏈信息,只需要保存所有的區塊頭部信息即可進行支付驗證的技術。
ABI
ABI是Application Binary Interface的縮寫,它是智能合約的接口說明。
參考文檔:http://me.tryblockchain.org/Solidity-abi-abstraction.html
JSON-RPC遠程調用協議
JSON-RPC是一種基于JSON的跨語言遠程調用協議。有文本傳輸數據小,便于調試擴展的特點。
參考文檔:https://www.cnblogs.com/cielosun/p/6762550.html
https://www.cnblogs.com/chunguang/p/5724782.html
算法
1)比原鏈 - 圖解比原鏈Tensority算法:如何讓POW做到人工智能友好
ABI壓縮網站
http://www.bejson.com/zhuanyi/
推薦幾個區塊鏈技術文章博主
1,深入淺出區塊鏈 - 熊麗兵
https://blog.csdn.net/xilibi2003
2,?
國內知名區塊鏈公鏈項目網址
1,比原鏈官網地址:https://bytom.io/
2,幣乎官網地址:https://www.bihu.com/
3,量子鏈官網地址:https://www.qtum.org/zh/
4,小蟻鏈官網地址:https://neo.org/
入門培訓教程
1,?以太坊DApp開發入門 -?匯智網?
網址:http://xc.hubwiz.com/course/5a952991adb3847553d205d1
2,以太坊電商DApp實戰?-?匯智網?
網址:http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6
打包GOOGLE插件的方法
獲取google商店的插件ID,例如https://chrome.google.com/webstore/detail/scatter/ammjpmhgckkpcamddpolhchgomcojkle?hl=zh-CN的插件ID為ammjpmhgckkpcamddpolhchgomcojkle。
在http://yurl.sinaapp.com/crx.php輸入ID即可完成打包工作。
vmware虛擬機啟動提示"內部錯誤"
現象描述:windows上安裝的虛擬機多日不用,打開“VMware Workstation”時提示"內部錯誤”,點擊快照也不能恢復。
解決方法:關閉VMware Workstation后,右鍵點擊圖標“VMware Workstation”,選擇“以管理員身份運行”就恢復了。
如何獲知NPM有哪些安裝包及操作命令?
https://www.npmjs.com/
登錄注冊后即可查找truffle-hdwallet-provider,openzeppelin-solidity都是存在的。
(例如輝哥注冊了賬號:duncanwang)
以太坊開發者資源工具集
常用以太坊交互代碼庫
Web3.js?- 以太坊官方的 Javascript API
Eth.js?- 優化過的 Web3.js
Web3.php?- PHP 版的 Web3
Web3j?- Java 版的 Web3
Web3.py?- Python 版的 Web3
錢包
Gnosis multisig wallet?- 多重簽名錢包
imToken?- 廣為使用的閉源錢包
WallETH?- 開源的 Android 以太坊錢包
gas 計算
EthGasStation?- 估計交易費用和時間的網站
Petrometer?- 計算特定賬戶每天所花費的 gas
CryptoProf?- 智能合約 gas 消耗測量工具
相關服務
ENS?- 以太坊域名系統
Name Bazaar?- 以太坊域名市場
Quantstamp?- 安全審計
SmartCheck?- solidity 源碼靜態分析
MD4 Online Hash Function?- hash 算法在線工具
合約代碼庫
Zeppelin?- 經過測試的可重用合約庫比如?SafeMath、?ZeppelinOS?等
Modular Libraries?- 另一個合約庫
測試
Solidity code coverage- solidity 單元測試覆蓋率
Solidity coverage- 另一個 solidity 代碼覆蓋率工具
Solidity function profiler- 列出合約函數
Espresso- solidity 測試框架
Eth tester- 以太坊應用測試套件
Cliquebait- 簡化驗收測試的工具
Hevm- 專為合約測試的 EVM 實現
Ethereum graph debugger- solidity 調試圖形化工具
安全
Mythril- 智能合約靜態安全分析
Oyente- 智能合約靜態安全分析
Porosity- 智能合約反編譯與靜態安全分析
Ethersplay- EVM 反匯編
Evmdis- EVM 反匯編
Hydra- 去中心化的合約安全分析框架
Solgraph- 圖形化智能合約處理流程
Manticore- 合約分析工具
Solidity security blog- 合約安全分析博客
Awesome Buggy ERC20 Tokens- 問題合約匯集
智能合約最佳實踐- by ConsenSys
Safety wiki- 以太坊安全