前端小白入門區塊鏈系列04

前言(話很少說)

先解釋下<前端小白入門區塊鏈系列03的代碼>前端

pragma solidity ^0.4.22;   // 聲明solidity語言以及版本是0.4.22
contract Ballot {   // 聲明一個合約
    uint public amount;  // 聲明無符號整型
    mapping(address => uint) balances; // 聲明一個哈希結構複雜數據類型
    constructor(uint _amount)public{   // 夠着函數
        amount = _amount;    // 初始化金額
        balances[msg.sender] = amount; // 存儲初始化金額
    }
    // 發送幣 (ads: 發送的地址,coin:發送幣的數量)
    function sendCoin(address ads,uint coin) public returns (bool){
        require(coin<amount);
        balances[msg.sender]-=coin;
        balances[ads]+= coin;
        return true;
    }
    // 獲取地址金額
    function getAdsAmount(address ads) public view returns (uint){
        return balances[ads];
    }
    // 獲取餘額
    function getBalance()public view returns (uint){
        return this.balance;
    }
    // 獲取發送者地址
    function getMsgSender()public view returns (address){
        return msg.sender;
    }
    // 獲取發送者的值
    function getMsgValue()public view returns (uint){
        return msg.value;
    }
}
複製代碼

神神叨叨

紙上得來終覺淺,絕知此事要躬行.作傻事都不容易,不限理解概念就開幹,很容易產生不少的誤區,上面解釋了一番只是爲了讓你們興奮下.這期說下智能合約編程

什麼是智能合約

什麼是智能合約? 智能合約(Smart Contract)是一種旨在以信息化方式傳播、驗證或執行合同的計算機協議。智能合約容許在沒有第三方的狀況下進行可信交易,這些交易可追蹤且不可逆轉。bash

咱們這裏講的智能合約指的是區塊鏈領域的智能合約。app

區塊鏈領域的智能合約有如下特色:編程語言

  • 規則公開透明,合約內的規則以及數據對外部來說是可見的。模塊化

  • 全部交易公開可見,任何地址與智能合約進行交易,都會公開的展現起來,不會存在任何虛假或者隱藏的交易。函數

以前社會中的合同或者約定的行爲,都是由人來制定規則,而後由人去執行,遇到邊界問題或者異常,再由人去作界定。區塊鏈

可是智能合約不一樣,開發者經過智能合約去制定一套規則,而後發佈到線上,當人們去作事情與智能合約交互的,由機器去完成業務的部分,這樣就避免了由人來執行時形成的做弊行爲。ui

這樣就引入了去中心化自治組織(DAO,Decentralized Autonomous Organization)的概念,從理論上對智能合約的意義進行了昇華。this

智能合約的分類

1 以太坊 Solidity

Solidity 是以太坊的智能合約實現的編程語言,運行在以太坊的虛擬機 Ethereum Virtual Machine(EVM)上。

Solidity 是靜態類型的,支持繼承、庫和其餘功能中複雜的用戶定義類型。

Solidity 是本系列課程的主要內容,將在接下來的課程中詳細介紹。

Hyperledger Fabric Hyperledger Fabric™ 是 The Linux Foundation® 主辦的 Hyperledger® 項目之一。

Hyperledger Fabric 旨在做爲開發模塊化體系結構的區塊鏈應用程序的基礎,以便諸如共識和會員服務等組件能夠即插即用。

它使用容器技術來託管構成系統應用邏輯的智能合約(也稱爲鏈代碼),簡而言之,Hyperledger Fabric 是爲企業構建的領先的開源、通用區塊鏈結構。

和以太坊不一樣的是 Hyperledger 主要面對的是企業級的項目開發,Hyperledger 項目的主要推進者是 IBM。

咱們在 IBM 的 Bluemix 上看到的區塊鏈的服務,就是基於 Hyperledger 的。

下圖爲 Hyperledger Fabric v1.0 中的交易生命週期,因爲不是本文重點,這裏不重點描述。

2 以太坊 Ethereum 的 Solidity

Solidity 是太坊 Ethereum 的智能合約使用的的編程語言。

Solidity 是一種靜態類型的編程語言,用於開發在 EVM 上執行的智能合約,被編譯爲可在 EVM 上執行的字節碼。

藉由 Solidity,開發人員可以編寫出可自我執行其欲實現之商業邏輯的應用程序,該程式可被視爲一份具權威性且永不可悔改的交易合約,對已具有程式編輯能力的人而言,編寫 Solidity 的難易度就如同編寫通常的編程語言。

智能合約和代幣的關係

提起智能合約,不少人可能不是很清楚,可是一說 ICO,大部分人都是很感興趣的。

ICO 的本質就是,用智能合約創建規則,並存儲數據。用戶給智能合約發送必定數量的 Eth,智能合約就在本身的帳戶內創建對應地址的代幣數據。

1. ERC20

以太坊一直在維護一個項目,被成爲EIP(Ethereum Improvement Proposals)。

Ethereum Improvement Proposals (EIPs) describe standards for the Ethereum platform, including core protocol specifications, client APIs, and contract standards.

在這些標準中,就包含了關於智能合約的部分。

官方項目地址詳見這裏,咱們在 Finalized EIPs 中能夠找到 ERC20 的描述。

ERC20 定義了 ERC-20 Token 的通用標準,全部符合 ERC20 的智能合約建立出來的代幣,都被稱爲 ERC20 代幣,都可以被以太坊錢包(幾乎全部支持以太幣的錢包,包括 imToken、幣兜錢包等,也支持 ERC-20 的代幣)識別使用。

2 ERC223

因爲以前出現過智能合約的問題,致使至少有價值四十萬美圓的以太幣的損失,因此後來出現了 ERC20 的改良版本——ERC223。ERC223 標準是向下兼容 ERC20 的。

目前市面上絕大部分代幣都是基於 ERC20 標準的,基於 ERC223 的並很少,好比 ATN。

3 他們的關係 舉個簡單的例子,智能合約就像是一張白紙,代幣就像是用白紙疊成的紙飛機,咱們還能夠用這張白紙來作紙青蛙。

智能合約能給咱們帶來什麼?

從如今這個時間點來看,智能合約首先的應用是創造代幣,也就是你們提到的 ICO。

ICO 創造一種新的商業模式,它將社區的力量發揮出來。在技術圈內,社區一直是很重要的力量,不少知名的開源項目好比 Linux,都是集合了社區開發者的智慧變得愈來愈完善。

而 ICO 的意義在於,真正有價值的項目能夠不用經過傳統的風投而是經過社區人員衆籌來得到項目的啓動資金,而且隨着項目的發展,社區人員也能經過它來收到回報。這從必定程度上解決了技術人員有能力作項目,卻沒能力籌錢的問題。

可是 ICO 也暴露了人性的惡,2017 年開始,大量沒有技術背景的 ICO 出如今全球市場上,各類負面新聞也出現,到 2018 年年初,已經有大部分 ICO 以失敗了結。

智能合約的中心思想是用機器去實現既定的規則,讓規則內的人們不會去做弊,並提升了業務的效率。

除了發代幣以外,智能合約的應用場景很是多,好比投票、結合物聯網作智能家居等等。

在不久的未來,智能合約的應用註定會爆發。

結束語

  • 區塊鏈正在影響着咱們的生活,如今看來更多的是和錢打交道,等到他足夠火的時候,應該就能夠直接和你打交道了,哈哈.
  • 前端小白入門區塊鏈系列持續更新中.....
  • 你們加油~
相關文章
相關標籤/搜索