前言
經過前一篇文章,我發現我自己對於智慧合約還有很多認識不足的地方,很多地方可能認識的不夠透徹,所以通過這篇文章的內容再來溫習一下合約從開發到部署和呼叫的流程。這篇文章將使用最簡單的方式來開發一個簡單的智慧合約,部署使用控制檯的方式來部署。開發環境為windows10.
準備工作
合約程式碼
以太坊私鏈節點
remix線上編輯器
合約程式碼
這次教程我們使用一個愛情宣言來講述基礎的合約功能。
pragma solidity ^0.4.11;
contract Love{
string man;
string woman;
string love_words;//愛情宣言
string status="未簽訂";
function Love(string ma,string wom,string words){
woman=wom;
man=ma;
love_words=words;
}
function getloveWords() returns(string){
return love_words;
}
function getBothName() returns(string,string){
return (man,woman);
}
function order(){
status="已簽訂";
}
function getStatus()returns (string){
return (status);
}
}
複製程式碼
上面一共有4個成員變數和4個方法分別是:
- man
- woman
- love_words
- status
方法:
- getloveWords()
- getBothName()
- order()
- getStatus()
其成員變數分別存放 雙方的姓名,愛情宣言,簽訂狀態。
方法提供了獲取愛情宣言,獲取雙方姓名,簽訂和檢視簽訂狀態的方法。
最後這個合約還有一個建構函式:Love(string ma,string wom,string words)他和類名相同需要在建立合約時提供必要的引數(和java等語言中的建構函式一樣)。
合約編輯
合約編輯一般使用remix編輯器來實現,他提供了程式碼高亮,線上編譯,除錯,執行的功能。
我們將程式碼複製到程式碼區之後等待編譯完成,旁邊的detail從禁止狀態變成可以狀態說明已經編譯通過了。
合約的建立
- 通過編輯器建立除錯環境。
在remix中有一個run選項卡,通過該選項卡可以很簡單的建立和執行合約。
通過create按鈕建立新的合約例項,輸入框中的引數用逗號隔開,字串使用英文的雙引號引起來。建立好後的就可以很方便的呼叫了。
2.通過控制檯建立合約
通過控制檯建立合約稍微有點複雜,但是remix提供了很人性化的服務,將控制檯部署所需要的引數和程式碼都給一一列出來了。
合約釋出前需要先解鎖賬戶,使用personal.unlockAccount(賬戶id)來互動式的解鎖賬戶。
然後複製上面提到的程式碼,修改建構函式的引數,貼上到控制檯中。
啟動挖礦,等待挖礦處理完成後會得到合約的地址和交易hash,並且之前用到的 browser_snade_sol_love物件已經可以被呼叫了。
合約的呼叫
1.通過開發環境呼叫
通過例項的方法按鈕點選既可以呼叫合約的函式,部分需要傳引數的,通過資料庫輸入即可,和建立合約時類似。
從日誌窗體中可以很清楚的看到這次呼叫的花費,引數和響應的資訊。
2.通過控制檯呼叫合約
通過合約釋出時的物件可以很方便的呼叫合約方法其中方法呼叫分為:
- 方法名.sendTransaction
- 方法名()
- 方法名.call()
其中前兩個為當需要修改區塊鏈資料或者合約資料的時候的呼叫方法,call的形式主要用於本地呼叫且不修改任何資料只讀等函式呼叫使用。
在這裡有個坑,有可能會出現Error: invalid address
,原因是沒有傳from
,交易發起者的地址。
呼叫需要修改區塊鏈的方法後會得到一個收據號,通過收據號可以查詢處理進度。
總的來講合約的呼叫還是很簡單的,後面的文字還將講到其他的呼叫方式和通過其他語言來呼叫合約。
引用
web3.js編譯Solidity,釋出,呼叫全部流程(手把手教程)