❶ solidity 智能合約(3):使用truffle編譯部署及測試合約
先找源碼敲一遍,跑起來,後面慢慢講怎麼用solidity編寫以太坊智能合約。
這個文件編寫在 contracts 目錄下
這個文件在 migrations 目錄下
這個文件可以創建一個 test 目錄,然後放進去,我這里直接放在了根目錄,不太規范。
要編譯Truffle項目里的合約,請切換到項目工程所在根目錄,然後在終端中鍵入以下內容:
首次運行時,將編譯所有合約。 在後續運行中,Truffle將僅編譯自上次編譯以來有更改的合約。如果我們想覆蓋此行為,可以使用 --all 選項運行上面的命令。
編譯的目標文件 Artifacts 將放在 build/contracts/ 目錄中,相對於項目根目錄(如果該目錄不存在,將創建該目錄。)
這些 Artifacts 是Truffle內部工作的組成部分,它們在成功部署應用程序中起著重要作用。 不要去編輯這些文件,因為這些文件將被合約編譯和部署覆蓋。
編譯成功後
遷移腳本(JavaScript文件)可幫助我們將合約部署到以太坊網路。 這些文件負責暫存我們的部署任務,並且假設我們的部署需求會隨著時間的推移而發生變化。 隨著項目的發展,我們將創建新的遷移腳本,以進一步推動區塊鏈的發展。 先前運行的部署記錄通過特殊的 Migrations 遷移合約記錄在鏈上,詳細信息如下。
部署命令
要運行部署,請運行以下命令:
這將部署在項目的 migrations 目錄中的所有遷移文件。 最簡單的遷移只是一組管理部署腳本。 如果我們的遷移先前已成功運行,則 truffle migrate 將從上次運行的遷移開始執行,僅運行新創建的遷移。 如果不存在新的遷移, truffle migrate 將不會執行任何操作。 我們可以使用 --reset 選項從頭開始運行所有遷移。 對於本地測試,確保在執行 migrate 之前安裝並運行了 Ganache等 測試區塊鏈。
測試腳本中輸入數值 100 ,取出的數值為 64 (這個值是16進制格式,轉為十進制就是 100 ).
❷ 代幣開發工具:從 Truffle 到 Hardhat
踏上代幣開發之旅需要一個強大的工具包,而這種探索深入研究了關鍵選項:從 Truffle 到 Hardhat。Truffle 是一個廣受好評的開發環境,為以太坊開發提供了一整套工具,簡化了智能合約編譯、測試和部署等任務。其用戶友好的界面和內置的測試框架加快了開發過程,使其成為開發人員的寶貴資產。相反,新進入者 Hardhat 在區塊鏈社區中獲得了巨大的關注。
利用 TypeScript 進行智能合約,它提供了比 Truffle 更現代、更可擴展的替代方案。憑借高度可定製的架構和一系列插件,Harhat 使開發人員能夠根據特定的項目要求定製他們的工作流程。此次探索將剖析這兩種工具的優勢和細微差別,全面了解其功能,並幫助開發人員做出明智的決策,以加強其代幣開發工作。
什麼是代幣開發?
代幣開發是指在區塊鏈網路上創建和部署數字代幣的過程。這些代幣代表特定生態系統內的價值或所有權單位。開發過程通常涉及編寫和部署智能合約,這些合約是自動執行的合約,其條款和條件直接編碼到區塊鏈上。智能合約定義了代幣的規則和功能,包括如何創建、轉移和交互。開發人員使用專門的編程語言(例如基於以太坊代幣的 Solidity)來編寫這些合約。
此外,代幣開發可能涉及測試、審計和將智能合約部署到所選區塊鏈網路等任務。這一過程支持廣泛的應用,從比特幣和以太坊等加密貨幣到不可替代代幣(NFT)等獨特的數字資產。代幣開發在實現去中心化金融(DeFi)、游戲、供應鏈和各種其他基於區塊鏈的生態系統方面發揮著關鍵作用,徹底改變了數字領域中價值的創造、轉移和管理方式。
什麼是松露?
Truffle 是一種廣泛使用的開發環境和框架,用於在以太坊區塊鏈上構建去中心化應用程序 (DApp)。它提供了一套工具來簡化整個開發過程,包括智能合約創建、測試、部署和管理。Truffle 以其用戶友好的界面和內置的測試框架簡化了復雜的任務,使開發人員能夠高效地編寫和部署智能合約。它還提供自動化合同測試、遷移管理和訪問強大的開發人員社區等功能。總體而言,Truffle 是以太坊開發人員的必備工具,使他們能夠創建和部署安全高效的區塊鏈應用程序。
Ganache:模擬區塊鏈進行開發
Ganache 是一款軟體工具,允許開發人員模擬區塊鏈環境以進行開發。它提供了一個在您自己的機器上運行的本地私有區塊鏈網路,允許開發人員測試和部署智能合約,而無需與實時區塊鏈交互。Ganache 提供用戶友好的界面、詳細的事務日誌和一套開發人員友好的功能。它是在受控環境中測試、調試和完善基於區塊鏈的應用程序的寶貴工具,確保它們在部署到真正的區塊鏈網路之前按預期運行。Ganache 支持各種區塊鏈平台,使其成為以太坊、Tron 和其他區塊鏈生態系統開發人員的多功能選擇。
松露和安全帽的比較
Truffle 和 Hardhat 都是區塊鏈生態中強大的開發工具,各有各的優勢和特點。這是兩者之間的比較:
成熟度和採用度:Truffle :完善、廣泛採用,並被認為是以太坊開發的標准。 Hardhat :相對較新,但很快就流行起來,特別是對於更復雜或現代的開發需求。
語言支持:Truffle :主要使用 Solidity,但支持其他語言,如 Vyper。 Hardhat:支持 Solidity,還提供了 TypeScript 的選項,TypeScript 因其強類型而受到青睞。
測試和調試:Truffle:提供內置的測試框架和調試工具,簡化測試過程。 Hardhat:提供先進的測試能力,其可擴展的架構允許與各種測試庫集成。
插件生態系統:Truffle :完善的插件生態系統,提供額外的功能。 Hardhat:以其高度可擴展的架構而聞名,允許開發人員輕松創建和集成自定義插件。
配置和靈活性:Truffle :通常配置簡單,適合較簡單的項目。 Hardhat:提供廣泛的配置選項,使其能夠高度適應復雜或專門的要求。
網路管理:Truffle :簡化的網路管理,方便部署以及與不同區塊鏈網路的交互。 Hardhat:提供靈活性和廣泛的網路管理功能,允許開發人員精確配置和管理網路。
社區和支持:Truffle :成熟的社區,擁有豐富的資源和教程。 Hardhat :不斷發展的社區,積極開發,資源和社區貢獻的插件數量不斷增加。
與其他工具集成:Truffle :與其他以太坊開發工具和框架無縫集成。 Hardhat:以其與其他工具和庫的強大互操作性而聞名。
Hardhat:Truffle的現代替代品
Hardhat 是一種尖端的開發環境和框架,可作為 Truffle 的現代替代方案,用於在以太坊區塊鏈上構建去中心化應用程序 (DApp)。它通過利用靜態類型編程語言 TypeScript 提供現代的智能合約開發方法而脫穎而出。這為開發人員提供了增強的代碼質量和穩健性。Hardhat 的架構是高度可定製的,允許開發人員根據特定的項目要求定製他們的工作流程。
它還擁有豐富的插件生態系統,進一步擴展了其功能和適應性。憑借其前瞻性的功能和靈活性,Hardhat 迅速受到尋求更現代、可擴展的以太坊開發工具集的開發人員的歡迎。
高效代幣開發的技巧
當然!以下是高效代幣開發的一些技巧:
明確的目標:明確定義代幣的目的和功能。了解它是否用於實用、安全或 NFT 用例。
徹底的研究:了解您正在開發的區塊鏈平台及其遵循的標准(例如,以太坊的 ERC-20、ERC-721)。
安全第一:在智能合約開發中優先考慮安全性。遵循最佳實踐、進行代碼審查並考慮第三方審計。
使用已建立的工具:利用可靠的開發環境(如 Truffle、Hardhat 或 Remix)來簡化開發和測試。
版本控制:實施版本控制(例如 Git)來跟蹤更改、管理協作並確保干凈的代碼庫。
自動化測試:編寫全面的單元測試來驗證智能合約的功能並及早發現潛在問題。
Gas 效率:優化您的 Gas 消耗智能合約,以降低交易成本並增強可擴展性。
事件處理:有效地使用事件來通知外部系統狀態變化,增強與其他應用程序的互操作性。
文檔:為您的智能合約、API 和任何其他相關組件提供清晰、全面的文檔。
可升級性注意事項:如果需要,請規劃智能合約的可升級性或可遷移性,以適應未來的變化。
合規性和法規:確保遵守相關的法律和監管框架,尤其是證券型代幣。
用戶體驗:設計用戶友好的界面來與您的代幣進行交互,使其易於使用且直觀。
監控和維護:實施工具和流程來監控代幣的性能並及時解決任何問題。
社區參與:圍繞您的代幣項目培養支持性社區,並尋求反饋以改進其功能和可用性。
保持更新:及時了解區塊鏈技術的最新發展,因為它可以影響您的代幣的設計和功能。
通過遵循這些提示,您可以簡化令牌開發流程,並為您的特定用例創建更高效、更安全的令牌。
總之,從 Truffle 到 Hardhat 的代幣開發工具之旅,闡明了區塊鏈領域開發人員可以使用的多樣化景觀。Truffle 是一種久經考驗的解決方案,為以太坊開發提供了可靠且用戶友好的環境。其全面的功能,包括智能合約編譯和測試,使其成為該領域許多人的主要選擇。另一方面,Harhat 成為一個有前途的競爭者,它利用 TypeScript 等現代技術並提供高度可定製的框架。
其可擴展性和豐富的插件生態系統為開發人員提供了在區塊鏈上進行構建的定製方法。最終,Truffle 和 Hardhat 之間的選擇取決於特定的項目要求和開發人員偏好。這兩種工具都為不斷發展的區塊鏈開發格局做出了重大貢獻,使創作者能夠高效、精確地將他們的代幣創意變為現實。隨著生態系統的不斷發展,這些工具無疑將仍然是構建去中心化解決方案過程中不可或缺的一部分。
❸ 在windows下怎麼啟動Truffle
Truffle是一個世界級的開發環境,測試框架,以太坊的資源管理通道,致力於讓以太坊上的開發變得簡單,Truffle有以下:
內置的智能合約編譯,鏈接,部署和二進制文件的管理。
快速開發下的自動合約測試。
腳本化的,可擴展的部署與發布框架。
部署到不管多少的公網或私網的網路環境管理功能
使用EthPM&NPM提供的包管理,使用ERC190標准。
與合約直接通信的直接交互控制台(寫完合約就可以命令行里驗證了)。
可配的構建流程,支持緊密集成。
在Truffle環境里支持執行外部的腳本。
Truffle是最流行的開發框架,使命是讓開發更容易
安裝方式:
$ npm install -g truffle
環境要求
NodeJS 5.0+
Windows,Linux,或Mac OS X
Truffle需要以太坊客戶端,需要支持標準的JSON RPC API。對於開發來說,有一些更適合,後續章節會介紹(如:testRPC提供編碼調試時的實時反饋)。
Windows用戶的建議
如果你是Windows用戶,我們推薦你使用Powershell或Git BASH來安裝和使用Truffle框架。這兩個shell環境相對默認的,提供了更方便的一些特性。
如果你必須使用命令行,可以看這里的關於如何配置Truffle的討論。
❹ 以太坊是什麼丨以太坊開發入門指南
以太坊是什麼丨以太坊開發入門指南
很多同學已經躍躍欲試投入到區塊鏈開發隊伍當中來,可是又感覺無從下手,本文將基於以太坊平台,以通俗的方式介紹以太坊開發中涉及的各晦澀的概念,輕松帶大家入門。
以太坊是什麼
以太坊(Ethereum)是一個建立在區塊鏈技術之上, 去中心化應用平台。它允許任何人在平台中建立和使用通過區塊鏈技術運行的去中心化應用。
對這句話不理解的同學,姑且可以理解為以太坊是區塊鏈里的Android,它是一個開發平台,讓我們就可以像基於Android Framework一樣基於區塊鏈技術寫應用。
在沒有以太坊之前,寫區塊鏈應用是這樣的:拷貝一份比特幣代碼,然後去改底層代碼如加密演算法,共識機制,網路協議等等(很多山寨幣就是這樣,改改就出來一個新幣)。
以太坊平台對底層區塊鏈技術進行了封裝,讓區塊鏈應用開發者可以直接基於以太坊平台進行開發,開發者只要專注於應用本身的開發,從而大大降低了難度。
目前圍繞以太坊已經形成了一個較為完善的開發生態圈:有社區的支持,有很多開發框架、工具可以選擇。
智能合約
什麼是智能合約
以太坊上的程序稱之為智能合約, 它是代碼和數據(狀態)的集合。
智能合約可以理解為在區塊鏈上可以自動執行的(由事件驅動的)、以代碼形式編寫的合同(特殊的交易)。
在比特幣腳本中,我們講到過比特幣的交易是可以編程的,但是比特幣腳本有很多的限制,能夠編寫的程序也有限,而以太坊則更加完備(在計算機科學術語中,稱它為是「圖靈完備的」),讓我們就像使用任何高級語言一樣來編寫幾乎可以做任何事情的程序(智能合約)。
智能合約非常適合對信任、安全和持久性要求較高的應用場景,比如:數字貨幣、數字資產、投票、保險、金融應用、預測市場、產權所有權管理、物聯網、點對點交易等等。
目前除數字貨幣之外,真正落地的應用還不多(就像移動平台剛開始出來一樣),相信1到3年內,各種殺手級會慢慢出現。
編程語言:Solidity
智能合約的默認的編程語言是Solidity,文件擴展名以.sol結尾。
Solidity是和JavaScript相似的語言,用它來開發合約並編譯成以太坊虛擬機位元組代碼。
還有長像Python的智能合約開發語言:Serpent,不過建議大家還是使用Solidity。
Browser-Solidity是一個瀏覽器的Solidity IDE, 大家可以點進去看看,以後我們更多文章介紹Solidity這個語言。
運行環境:EVM
EVM(Ethereum Virtual Machine)以太坊虛擬機是以太坊中智能合約的運行環境。
Solidity之於EVM,就像之於跟JVM的關系一樣,這樣大家就容易理解了。
以太坊虛擬機是一個隔離的環境,在EVM內部運行的代碼不能跟外部有聯系。
而EVM運行在以太坊節點上,當我們把合約部署到以太坊網路上之後,合約就可以在以太坊網路中運行了。
合約的編譯
以太坊虛擬機上運行的是合約的位元組碼形式,需要我們在部署之前先對合約進行編譯,可以選擇Browser-Solidity Web IDE或solc編譯器。
合約的部署
在以太坊上開發應用時,常常要使用到以太坊客戶端(錢包)。平時我們在開發中,一般不接觸到客戶端或錢包的概念,它是什麼呢?
以太坊客戶端(錢包)
以太坊客戶端,其實我們可以把它理解為一個開發者工具,它提供賬戶管理、挖礦、轉賬、智能合約的部署和執行等等功能。
EVM是由以太坊客戶端提供的。
Geth是典型的開發以太坊時使用的客戶端,基於Go語言開發。 Geth提供了一個互動式命令控制台,通過命令控制台中包含了以太坊的各種功能(API)。Geth的使用我們之後會有文章介紹,這里大家先有個概念。
Geth控制台和Chrome瀏覽器開發者工具里的面的控制台是類似,不過是跑在終端里。
相對於Geth,Mist則是圖形化操作界面的以太坊客戶端。
如何部署
智能合約的部署是指把合約位元組碼發布到區塊鏈上,並使用一個特定的地址來標示這個合約,這個地址稱為合約賬戶。
以太坊中有兩類賬戶:
· 外部賬戶
該類賬戶被私鑰控制(由人控制),沒有關聯任何代碼。
· 合約賬戶
該類賬戶被它們的合約代碼控制且有代碼與之關聯。
和比特幣使用UTXO的設計不一樣,以太坊使用更為簡單的賬戶概念。
兩類賬戶對於EVM來說是一樣的。
外部賬戶與合約賬戶的區別和關系是這樣的:一個外部賬戶可以通過創建和用自己的私鑰來對交易進行簽名,來發送消息給另一個外部賬戶或合約賬戶。
在兩個外部賬戶之間傳送消息是價值轉移的過程。但從外部賬戶到合約賬戶的消息會激活合約賬戶的代碼,允許它執行各種動作(比如轉移代幣,寫入內部存儲,挖出一個新代幣,執行一些運算,創建一個新的合約等等)。
只有當外部賬戶發出指令時,合同賬戶才會執行相應的操作。
合約部署就是將編譯好的合約位元組碼通過外部賬號發送交易的形式部署到以太坊區塊鏈上(由實際礦工出塊之後,才真正部署成功)。
運行
合約部署之後,當需要調用這個智能合約的方法時只需要向這個合約賬戶發送消息(交易)即可,通過消息觸發後智能合約的代碼就會在EVM中執行了。
Gas
和雲計算相似,佔用區塊鏈的資源(不管是簡單的轉賬交易,還是合約的部署和執行)同樣需要付出相應的費用(天下沒有免費的午餐對不對!)。
以太坊上用Gas機制來計費,Gas也可以認為是一個工作量單位,智能合約越復雜(計算步驟的數量和類型,佔用的內存等),用來完成運行就需要越多Gas。
任何特定的合約所需的運行合約的Gas數量是固定的,由合約的復雜度決定。
而Gas價格由運行合約的人在提交運行合約請求的時候規定,以確定他願意為這次交易願意付出的費用:Gas價格(用以太幣計價) * Gas數量。
Gas的目的是限制執行交易所需的工作量,同時為執行支付費用。當EVM執行交易時,Gas將按照特定規則被逐漸消耗,無論執行到什麼位置,一旦Gas被耗盡,將會觸發異常。當前調用幀所做的所有狀態修改都將被回滾, 如果執行結束還有Gas剩餘,這些Gas將被返還給發送賬戶。
如果沒有這個限制,就會有人寫出無法停止(如:死循環)的合約來阻塞網路。
因此實際上(把前面的內容串起來),我們需要一個有以太幣余額的外部賬戶,來發起一個交易(普通交易或部署、運行一個合約),運行時,礦工收取相應的工作量費用。
以太坊網路
有些著急的同學要問了,沒有以太幣,要怎麼進行智能合約的開發?可以選擇以下方式:
選擇以太坊官網測試網路Testnet
測試網路中,我們可以很容易獲得免費的以太幣,缺點是需要發很長時間初始化節點。
使用私有鏈
創建自己的以太幣私有測試網路,通常也稱為私有鏈,我們可以用它來作為一個測試環境來開發、調試和測試智能合約。
通過上面提到的Geth很容易就可以創建一個屬於自己的測試網路,以太幣想挖多少挖多少,也免去了同步正式網路的整個區塊鏈數據。
使用開發者網路(模式)
相比私有鏈,開發者網路(模式)下,會自動分配一個有大量余額的開發者賬戶給我們使用。
使用模擬環境
另一個創建測試網路的方法是使用testrpc,testrpc是在本地使用內存模擬的一個以太坊環境,對於開發調試來說,更方便快捷。而且testrpc可以在啟動時幫我們創建10個存有資金的測試賬戶。
進行合約開發時,可以在testrpc中測試通過後,再部署到Geth節點中去。
更新:testrpc 現在已經並入到Truffle 開發框架中,現在名字是Ganache CLI。
Dapp:去中心化的應用程序
以太坊社區把基於智能合約的應用稱為去中心化的應用程序(DecentralizedApp)。如果我們把區塊鏈理解為一個不可篡改的資料庫,智能合約理解為和資料庫打交道的程序,那就很容易理解Dapp了,一個Dapp不單單有智能合約,比如還需要有一個友好的用戶界面和其他的東西。
Truffle
Truffle是Dapp開發框架,他可以幫我們處理掉大量無關緊要的小事情,讓我們可以迅速開始寫代碼-編譯-部署-測試-打包DApp這個流程。
總結
我們現在來總結一下,以太坊是平台,它讓我們方便的使用區塊鏈技術開發去中心化的應用,在這個應用中,使用Solidity來編寫和區塊鏈交互的智能合約,合約編寫好後之後,我們需要用以太坊客戶端用一個有餘額的賬戶去部署及運行合約(使用Truffle框架可以更好的幫助我們做這些事情了)。為了開發方便,我們可以用Geth或testrpc來搭建一個測試網路。
註:本文中為了方便大家理解,對一些概念做了類比,有些嚴格來不是准確,不過我也認為對於初學者,也沒有必要把每一個概念掌握的很細致和准確,學習是一個逐步深入的過程,很多時候我們會發現,過一段後,我們會對同一個東西有不一樣的理解。
❺ 以太坊的主要開發框架是什麼有什麼用
1. 以太坊的核心開發框架專注於智能合約的實現,這是在以太坊虛擬機(EVM)上運行的所有程序的基礎。
2. 在以太坊上,智能合約是通過幾種編程語言來編寫的,其中最廣泛使用的是Solidity和Vyper。此外,以太坊社區也在不斷開發其他編程語言。
3. 以下是幾種常用的以太坊開發框架介紹:
- Solidity:這是以太坊上最流行的智能合約編程語言,其設計靈感來源於C++、Python和Javascript。
- Truffle:一個集成了開發環境、測試框架和部署通道的工具集,旨在簡化智能合約的開發和部署過程。
- Embark:提供開發環境、測試框架,並且支持與以太坊、IPFS和Whisper等技術的集成。
- Waffle:一個高級智能合約開發和測試框架,基於ethers.js庫構建。
- Etherlime:基於ethers.js的框架,提供去中心化應用(DApps)的開發、部署、調試和測試功能。
- Buidler:一個任務運行工具,旨在輔助以太坊智能合約開發者。
4. 通過以上對以太坊主要開發框架的介紹,我們可以了解到它們的作用及如何幫助開發者構建和部署智能合約。希望這些信息對您在以太坊生態系統中進行開發有所幫助。