以太坊(Ethereum)智能合約開發(fā)快速入門

一媳叨、簡介

  1. 智能合約
    首先邑茄,智能合約并不是像人工智能AI那樣的超級智能晶密,智能合約的英文名叫Smart contract瞬女,僅僅是Smart而已,還沒有到人工智能的intelligence榕茧。所以垃沦,我們可以把智能合約想象成一種自動售貨機,出售的是通證(token):投資者(用戶)發(fā)起交易用押,向智能合約轉(zhuǎn)入以太幣(ETH)肢簿,智能合約自動運轉(zhuǎn),在滿足一定規(guī)則后蜻拨,它向投資者賬戶轉(zhuǎn)入相應數(shù)量的通證池充。

  2. NFT
    上面我們知道了,智能合約類似一種自動售貨機缎讼,出售的是通證(token)收夸。如果出售的token的類型是獨一無二的,并且是不可分割的血崭,這種token就叫做 Non-Fungible Token卧惜,即是 NFT(需要符合ERC-721標準)。例如一個token代表一張體育比賽的門票夹纫,因為每一張門票座位編號不一樣咽瓷,所以對應的token獨一無二,又因為座位只能出售給一個人捷凄,因為對應的token也不能分割忱详。

一、以太坊區(qū)塊鏈網(wǎng)絡簡介

以太坊區(qū)塊鏈網(wǎng)絡
  1. 以太坊公共區(qū)塊鏈網(wǎng)絡
    對區(qū)塊鏈最好的描述是將其描述為一個公共數(shù)據(jù)庫跺涤,它由網(wǎng)絡中的許多計算機更新和共享匈睁,并且任何人都可以接入。以太坊公共區(qū)塊鏈網(wǎng)絡也不例外桶错。目前航唆,以太坊公共區(qū)塊鏈網(wǎng)絡提供了主網(wǎng)和三個測試網(wǎng),主網(wǎng)就是智能合約正式上線的區(qū)塊鏈網(wǎng)絡院刁,三個測試網(wǎng)分別為Kovan糯钙、Rinkeby和Ropsten。Ropsten是官方提供的和主網(wǎng)最相似的網(wǎng)絡退腥,使用工作量證明任岸;Rinkeby也是官方提供的,使用權(quán)益證明狡刘。以太坊公共區(qū)塊鏈網(wǎng)絡具體的說明[見這里]享潜。(https://ethereum.org/zh/developers/docs/networks/)

  2. 節(jié)點、Geth嗅蔬、Infura
    我們的程序需要訪問以太坊節(jié)點剑按,才能連接到以太坊公共區(qū)塊鏈網(wǎng)絡疾就。有幾種方法可以做到這一點,可以使用官方的Geth運行自己的以太坊節(jié)點艺蝴。但這需要從區(qū)塊鏈下載大量數(shù)據(jù)并保持同步猬腰,很麻煩,成本也高猜敢。比較方便的方法是姑荷,使用Infura訪問以太坊節(jié)點。
    Infura 是什么锣枝?專業(yè)一點講厢拭,Infura 是一種 IaaS(Infrastructure as a Service)產(chǎn)品,目的是為了降低訪問以太坊數(shù)據(jù)的門檻撇叁。通俗一點講供鸠,Infura 就是一個可以讓你的 DApp 快速接入以太坊的平臺,不需要本地運行以太坊節(jié)點陨闹。
    Infura是一個免費提供以太坊節(jié)點的服務楞捂。接下來有Infura的使用說明。

一趋厉、智能合約應用模塊簡介

我們的智能合約應用使用Solidity Template 項目模板開發(fā)框架來開發(fā)寨闹。下面簡單介紹Solidity Template 的組成。

智能合約應用組成模塊
  1. Solidity Template —— 項目模板
    Solidity Template 是一個 Hardhat 項目的模板君账,除了集成 Hardhat繁堡,還集成了以太坊 linter、代碼格式化乡数、代碼覆蓋率測試等工具椭蹄。Solidity Template 直接clone或者下載回來就能使用,非常方便净赴。

  2. Hardhat —— 項目主框架
    Hardhat 是一個編譯绳矩、部署、測試和調(diào)試以太坊應用的開發(fā)環(huán)境玖翅。使用 Hardhat 可以方便地開發(fā)以太坊的智能合約和dApps翼馆。

  3. Waffle —— 智能合約應用測試庫
    Waffle 是一個編寫和測試以太坊智能合約的庫,比Truffle更加好用金度,簡單和快速应媚,它內(nèi)部使用了ethers-jsMochaChai猜极。我們將使用它來編寫智能合約應用的測試代碼珍特。

  1. Ethers.js —— 智能合約API庫
    Ethers.js 是一個編譯、部署魔吐、測試和調(diào)試以太坊應用的開發(fā)環(huán)境扎筒。使用 Hardhat 可以方便地開發(fā)以太坊的智能合約和dApps。這是我們開發(fā)智能合約應用所用的最多API的庫酬姆。這里有中文文檔嗜桌,和官方英文文檔

  2. Mocha和Chai —— 測試框架和斷言庫
    Mocha是一個功能豐富的javascript測試框架辞色,運行在node.js和瀏覽器中骨宠,使異步測試變得簡單有趣。Chai 是一個針對 Node.js 和瀏覽器的行為驅(qū)動測試和測試驅(qū)動測試的診斷庫相满,可與任何 JavaScript 測試框架集成层亿。

二、開發(fā)環(huán)境搭建

  1. 安裝vscode Visual Studio Code

  2. 安裝以太坊開發(fā)的vscode相關插件立美,打開下面的網(wǎng)址匿又,在點擊 install 即可。

https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity
https://marketplace.visualstudio.com/items?itemName=hosho.solidity-debugger

三建蹄、注冊相關賬號

  1. 上面說了碌更,我們的程序需要訪問Ethereum節(jié)點,才能連接到公共區(qū)塊鏈網(wǎng)絡洞慎,為了方便痛单,我們使用Infura訪問Ethereum節(jié)點。我們應用使用Infura只需要Infura的API KEY(即是API網(wǎng)址)即可劲腿。在Infura上注冊賬號旭绒,創(chuàng)建項目,在項目詳情頁上可以查看API KEY焦人。我們先用測試網(wǎng)goerli的API KEY挥吵,等到正式上線再用mainnet的API Key:

    Infura api key

  2. 以太坊帳戶由公鑰和私鑰加密對組成。因為密鑰不方便記憶垃瞧,我們不直接創(chuàng)建密鑰蔫劣,而是使用助記詞來自動生成。助記詞是由十二到二十四個單詞組成的密碼个从,它被用于生成區(qū)塊鏈賬戶系統(tǒng)中512位的種子(seed)脉幢,而種子可以生成私鑰(prikey),由私鑰可以導出公鑰(pubkey)嗦锐,公鑰經(jīng)過變換后可以得到我們經(jīng)常在區(qū)塊鏈賬本上看到的地址(address)嫌松。點擊這里來生成助記詞(注意空格也是助記詞的一部分):

    生成助記詞

助記詞相當于以太坊的賬號密碼,千萬要保存好奕污,千萬不要隨便告訴別人萎羔。

四、項目搭建

  1. 下載 Solidity Template 的源代碼碳默,

https://github.com/paulrberg/solidity-template

  1. 用 vscode 打開下載的源代碼贾陷,將 .env.example 復制一份缘眶,改名為 .env,填入上面注冊時的 API KEY 和助記詞髓废。

  2. 使用下面的命令來安裝項目依賴庫:
    $ yarn install

  3. 編譯合約

要編譯合約巷懈,請在終端中運行 npx hardhat compilecompile任務是hardhat內(nèi)置任務之一慌洪。

$ npx hardhat compile
Compiling...
Compiled 1 contract successfully

合約已成功編譯顶燕,可以使用了。

五冈爹、編寫智能合約(待續(xù)涌攻。。频伤。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末恳谎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子剂买,更是在濱河造成了極大的恐慌惠爽,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞬哼,死亡現(xiàn)場離奇詭異婚肆,居然都是意外死亡,警方通過查閱死者的電腦和手機坐慰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門较性,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人结胀,你說我怎么就攤上這事赞咙。” “怎么了糟港?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵攀操,是天一觀的道長。 經(jīng)常有香客問我秸抚,道長速和,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任剥汤,我火速辦了婚禮颠放,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吭敢。我一直安慰自己碰凶,他們只是感情好,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著欲低,像睡著了一般辕宏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伸头,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天匾效,我揣著相機與錄音,去河邊找鬼恤磷。 笑死,一個胖子當著我的面吹牛野宜,可吹牛的內(nèi)容都是我干的扫步。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼匈子,長吁一口氣:“原來是場噩夢啊……” “哼河胎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起虎敦,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤游岳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后其徙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胚迫,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年唾那,在試婚紗的時候發(fā)現(xiàn)自己被綠了访锻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡闹获,死狀恐怖期犬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情避诽,我是刑警寧澤龟虎,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站沙庐,受9級特大地震影響鲤妥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜轨功,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一旭斥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧古涧,春花似錦垂券、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽算芯。三九已至,卻和暖如春凳宙,著一層夾襖步出監(jiān)牢的瞬間熙揍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工氏涩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留届囚,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓是尖,卻偏偏與公主長得像意系,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子饺汹,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容