如何編寫和部署您的第一個智能合約?
已發表: 2020-02-13智能合約是當今區塊鏈技術的領先趨勢。 如果您正在考慮在該領域建立職業生涯,本文將幫助您了解編寫第一個智能合約所需的所有知識!
從世界頂級大學學習在線軟件課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
目錄
如何編寫你的第一個智能合約?
今天的數字時代允許兩方在沒有第三方參與的情況下簽訂協議。 這些數字合約由區塊鏈處理並存儲在公共數據庫中。 因此,交易是可追踪且不可逆轉的。
如果你想編寫你的第一個智能合約,下面編譯的資源會讓你走上正軌。
閱讀:2020 年 10 個區塊鏈趨勢和預測
定義智能合約
“智能合約”一詞最早由美國計算機科學家 Nick Szabo 於 1996 年提出。它是一種計算機或數字協議,可促進、驗證和強制執行合同。 作為通用計算,智能合約駐留在區塊鍊或分佈式賬本上。

換言之,合約以計算機程序的形式內置於代碼中。 並且指定的參與者獲得執行程序功能的權限。 為成功執行智能合約,應滿足預定義規則。
以採購訂單 (PO) 為例。 這是買賣雙方之間的簡單合同。 執行採購訂單必須滿足某些條件。 這些規格包括買方成功付款、供應商按照購買時商定的條款交付貨物、退貨條件等。
因此,買方可以下訂單,供應商可以以數字格式完成訂單。 在計算網絡上,所有的動作都稱為事務。 並且所有交易都由網絡驗證和執行。 一旦確認,交易將無法恢復。
閱讀:學習區塊鏈的先決條件。 這不是你想的那樣
建立智能合約的要求
有多種編程語言可用於構建智能合約。 語言的選擇主要取決於區塊鏈平台。 例如,Solidity、Vyper、eWASM 和以太坊字節碼是以太坊區塊鏈平台最流行的一些智能合約語言。
智能合約開發環境
在你編寫你的第一個智能合約之前,為它的開發設置操場。 如果沒有開發環境的知識,深入區塊鏈世界將是一件棘手的事情。 您可以從以下備選方案中進行選擇。
- Remix IDE:它是一個用於構建和測試智能合約的集成開發環境。 強烈建議初學者使用這個完全在線的選項,因為它不需要安裝。 此外,它對智能合約的原型設計和快速驗證帶來的挑戰更少。
- 本地設置:本地機器為智能合約開發提供了另一種資源。 這些工具為企業級應用程序提供了更大的靈活性。 儘管設置此環境需要時間,但為分佈式應用程序或 DApp 選擇工具是一個相當簡單的過程。
智能合約的結構
讓我們探索使用 Solidity 編程語言開發的採購訂單合同。
Solidity 智能合約遵循標準結構,包括“數據”和“功能”。 雖然數據保持智能合約的當前狀態,但該函數應用邏輯來轉換此狀態。
合同以名為“ pragma directive ”的聲明開頭。 關鍵字“pragma”啟用編譯器檢查或功能。 考慮下面的陳述:
實用性 >=0.4.0 <=0.6.0
該聲明旨在確保智能合約不會使用 0.40 之前和 0.60 之後的編譯器版本進行編譯。
接下來是“合同聲明”。 以下語句使用“contract”關鍵字,並通過名稱“Purchase Order”標識一個空合約。
合同 PurchaseOrder{}
存儲數據
每個合同或計算機程序都存儲有數據。 變量提供了一種存儲、標記、檢索和操作數據的方法。 Solidity 中存在兩種類型的變量——值和參考。 值類型變量在用作函數參數時總是被複製,例如布爾值、整數等。
而引用類型變量存儲數據位置。 一個參考變量的任何變化都會影響另一個變量。 因此,必須小心管理它們。 示例包括數組和結構。
添加數據
在採購訂單中,通常會有與其關聯的產品數量。 所以,現在,讓我們在智能合約中添加一個數據變量。 我們將添加一個變量 product_quantity,假設它只有正值。
首先,我們介紹一個用 uint256 表示的無符號整數。 這裡,無符號(u)表示只能表示正整數的變量類型,256表示存儲256位。
合同採購訂單{uint256 product_quantity;}
構造函數
構造函數在部署合約時使用一些值初始化智能合約。 假設產品數量設置為 100。

構造函數()公共{product_quantity = 100;}
需要注意的是,關鍵字或訪問修飾符“public”指定該功能不受限制。 因此,任何人都可以訪問它。
添加功能
添加函數使您的程序具有交互性。 這些是受控功能,前面有關鍵字“功能”。 聲明包括函數名、訪問修飾符、狀態修改器和返回值。
為了讀取存儲的值,我們添加了“get 函數”。 使用“get_quantity”,此函數可以獲得檢索或讀取存儲數據的能力。 看看下面給出的聲明。
function get_quantity() public view returns(uint256){return product_quantity;}
進一步分解,我們看到:
- 函數名:get_quantity(“()”表示不傳參數)
- 訪問修飾符:public(訪問不受限制)
- State Mutator:view(表示該函數不會改變合約的狀態,只是讀取)
- Returns:定義函數返回什麼,即uint256類型的變量
設置器函數
當您想要寫入或更新數據時,setter 函數就會出現。 該函數從用戶那裡獲取一個輸入參數,並根據該參數更新“product_quantity”變量的值。 設置函數(update_quantity)是這樣插入的:
update_quantity(uint256 value) public {product_quantity = product_quantity + value;}
現在,插入上面給出的所有語句來編寫你的第一個智能合約。

部署智能合約
一旦你完成了前面提到的步驟,就該測試你的智能合約了。 您可以使用 Remix IDE 來做同樣的事情,它提供了 Solidity 編譯器功能來在線創建、測試和驗證您的智能合約。
以下是使用 Remix Online IDE 設計和部署智能合約的分步說明:
- 單擊加號圖標以創建一個新的(空)文件
- 點擊打開空文件
- 將您的合同粘貼到此文件中
- 轉到左側菜單,然後單擊文件圖標下方的第二個圖標。 這樣,solidity編譯器選項就會出現
- 進入編譯器標籤選擇編譯器版本
- 點擊文件編譯智能合約
- 編譯完成後,點擊編譯器詳情按鈕,了解字節碼和應用二進制接口。 字節碼包含了以太坊的操作代碼和轉換編譯後的智能合約邏輯
- 在左側菜單中,單擊編譯圖標下方的圖標以部署您的智能合約
與已部署的合約交互
合約中提到的公共方法提供了與已部署合約交互的方式。 在採購訂單的上下文中,“update_quantity”和“get_quantity”是可用的兩種交互方法。 您也可以使用輸入框輸入您的參數。 請記住,任何更改合約變量的操作都會導致交易。
至此,我們介紹瞭如何編寫您的第一個智能合約的基礎知識,以及如何在在線開發環境中使用 Solidity 編程語言對其進行測試和部署。 我們還了解與智能合約交互和發起交易的過程。 因此,今天就應用您的學習並創建智能合約。 畢竟,熟能生巧!
包起來
區塊鏈技術的職業生涯正在興起,區塊鏈永遠極大地改變了技術行業的面貌。 如果您有興趣成為區塊鏈開發人員並構建智能合約和鏈碼,請查看 IIIT-B 和 upGrad 的區塊鏈技術高級證書計劃
智能合約有哪些可能的應用?
智能合約是自動執行合約條件的計算機程序。 他們使用區塊鏈技術,這是一種分佈式數據庫,可實現安全、透明和防篡改的交易。 汽車租賃、酒店預訂和活動門票只是如何使用智能合約的幾個例子。
為什麼智能合約被認為比常規合約更安全?
由於智能合約是在區塊鍊網絡上實施的,因此它們被認為比傳統合約更安全。 區塊鍊是一種加密保護的分佈式數據庫。 這意味著區塊鏈上的信息不能被篡改或黑客攻擊。 因此,可以保證智能合約的執行是精確和可靠的。 它們也是公開的和可審計的,這意味著區塊鏈上的每個人都可以查看合約的條件並檢查它是否正在執行。 另一方面,智能合約可以幫助降低欺詐和衝突的風險。 最重要的是它們具有很多功能並且易於使用。
為什麼智能合約越來越流行?
智能合約最重要的優勢之一是它們可以幫助組織自動化程序並降低成本。 例如,一家公司可以利用智能協議在交付後立即向其供應商付款。 這將減少公司手動處理付款的需要,從而節省時間和金錢。 它還可用於在公司與其客戶之間建立信任。 例如,智能合約可用於構建安全的在線支付系統。 這將允許客戶進行付款,而不必擔心他們的個人信息被洩露。 最後但同樣重要的是,它可用於為個人和企業構建數字身份。 因此,企業將能夠驗證其客戶的身份並保護他們免受欺詐。