智慧型合約入門

2022-05-21 22:00:11 字數 2002 閱讀 6693

先從乙個非常基礎的例子開始

123

4567

891011

12

contract zhaoxistorage 

function get() constant returns (uint retval)

}

在solidity中,乙個合約由一組**(合約的函式)和資料(合約的狀態)組成。合約位於以太坊區塊鏈上的乙個位址。

uint storeddata; 這行**宣告了乙個狀態變數,變數名為storeddata,型別為無符號整數uint。可以看做資料庫裡面的一條記錄,可以通過呼叫函式查詢和修改它。在以太坊中,通常只有合約的擁有者才能這樣做。在這個例子中,函式 set 和 get 分別用於修改和查詢變數的值。

跟很多其他語言一樣,訪問狀態變數時,不需要在前面增加 this. 這樣的字首。

任何人都可以呼叫set方法設定乙個不同的數字覆蓋你發布的數字。但是你的數字將會留存在區塊鏈的歷史上。稍後我們會學習如何增加訪問限制。

接下來的合約將實現乙個形式最簡單的加密貨幣。通過這份**,任何人都可以傳送貨幣給其他人,不需要註冊使用者名稱和密碼,只要有一對以太坊的公私鑰即可。

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

28

contract zhaoxicoin 

// 合約建立者可以呼叫mint

function mint(address receiver, uint amount)

// send可以被擁有代幣的任何人呼叫

function send(address receiver, uint amount)

}

address public minter 這行**宣告了乙個可公開訪問的狀態變數,型別為address。address型別的值大小為160 bits,適用於儲存合約的位址或其他人的公私鑰。public關鍵字會自動為其修飾的狀態變數生成訪問函式。沒有public關鍵字的變數將無法被其他合約訪問。另外只有本合約內的**才能寫入。自動生成的函式如下:

1

function minter() returns (address)

123

function balances(address _account) returns (uint balance) 

event sent(address from, address to, uint value)這行**宣告了乙個「事件」。由send函式的最後一行**觸發。客戶端可以監聽這些由區塊鏈觸發的事件。事件觸發時,監聽者會同時接收到from,to,value這些引數值,可以方便的用於跟蹤交易。為了監聽這個事件,你可以使用如下**:

123

4567

8910

zhaoxicoin.sent().watch({}, '', function(error, result) 

}

這裡有個比較特殊的函式 zhaoxicoin。它是乙個建構函式,會在合約建立的時候執行,之後就無法被呼叫。它會永久得儲存合約建立者的位址。msg(以及tx和block)是乙個全域性變數,它包含了一些可以被合約**訪問的屬於區塊鏈的屬性。msg.sender 總是存放著當前函式的外部呼叫者的位址。

最後,真正被使用者或者其他合約呼叫,用來完成本合約功能的函式是mint和send。如果合約建立者之外的其他人呼叫mint,什麼都不會發生。而send可以被任何人(擁有一定數量的代幣)呼叫,傳送一些幣給其他人。

以上就是乙個簡單的加密貨幣的完整**和說明

智慧型合約入門

智慧型合約也稱為 自執行和約 或者叫 化的合約 這個小節裡面我們不聊智慧型合約的社會意義,而是假設你是一位開發者,準備上手智慧型合約的開發,那麼動手之前都有哪些基礎知識是必備的呢?本文為你呈現。智慧型合約的概念於 1994 年由 nick szabo 首次提出。廣義上來講,任何的能自動完成的合同就是...

位元幣智慧型合約入門(1)

當談及智慧型合約時,大多數人都會下意識地把位元幣排除在討論範圍之外,因為當下流行的觀點是位元幣不具有智慧型合約的能力。但是今天想跟大家介紹的內容則正好與此相反 即位元幣從誕生之日即擁有支援智慧型合約的能力,下面讓我們一起來探個究竟。位元幣底層採用了乙個很特別的交易模型設計,即 utxo unspen...

智慧型合約從入門到精通 智慧型合約的應用場景

簡介 上一章我們簡單介紹了區塊鏈技術的發展情況,並詳細介紹智慧型合約的基礎概念。可以說,區塊鏈1.0時代與現實生活相去甚遠。智慧型合約的出現,給區塊鏈帶來了驚天動地的變化,區塊鏈也從一種賬本形式,變成了下一代計算網路的雛形。這一章我們將聊聊智慧型合約的應用場景。一 黑客攻擊的風險。回到剛才的例子,人...