91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Solidity智能合約怎么實現

發布時間:2021-12-24 17:10:24 來源:億速云 閱讀:153 作者:iii 欄目:互聯網科技

這篇文章主要介紹“Solidity智能合約怎么實現”,在日常操作中,相信很多人在Solidity智能合約怎么實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Solidity智能合約怎么實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

比特幣

比特幣是第一個真正意義上的區塊鏈,不過,從嚴格意義上來講,它對智能合約的開發者是不友好的。

可以用一種低門檻的編程語言Bitcoin Script在比特幣系統上編寫智能合約。每個比特幣地址都對應著一個Bitcoin Script程序。看起來是這樣:

IF 
    2 <Alices' pubkey> <Bob's pubkey> <Escrow's pubkey> 3 CHECKMULTISIG
ELSE
    "30d" CHECKSEQUENCEVERIFY DROP
    <Alices' pubkey> CHECKSIG
ENDIF

另一種較高級別的語言是Ivy,它可以編譯成Bitcoin Script。Ivy能夠幫助你編寫自定義的比特幣地址,這種地址與隔離見證(SegWit)兼容,在比特幣協議(包括簽名檢查、hash特征值(commitment)和時間鎖)的支持下,可以執行任意條件組合。例如:

contract EscrowWithDeplay{
    sender: PublicKey
    recipient: PublicKey,
    escrow: PublicKey,
    delay: Duration,
    val: Value
}{
    clause transfer(sig1: Signature, sig2: Signature){
        verify checkMultiSig([sender, recipient, escrow],[sig1, sig2])
        unlock val
    }
    clause timeout(sig: Signature){
        verify checkSig(sender, sig)
        verify older(delay)
        unlock val
    }
}

比特幣“虛擬機”——協議中負責執行Bitcoin Script程序的一部分——與以太坊或者Chain Protocol等其它智能合約平臺的虛擬機相比(功能)更加有限,其指令系統甚至不是圖靈完備的。但Bitcoin Script的確提供了一組很有用的基礎原語(primitives)——簽名校驗、哈希計算以及相對和絕對的時間鎖——另外還能對這些原語進行自由組合。

超級賬本fabric

fabric是超級賬本大家庭中最成熟的一個區塊鏈項目,主要用于行業鏈、聯盟聯或私有鏈,它不需要通過挖礦來形成共識,因此可以達到很高的交易速度。

在fabric中,智能合約被稱為鏈碼(Chaincode),實質上是控制區塊鏈網絡中的不同實體或相關方如何相互交互或交易的業務邏輯。簡言之,鏈代碼將業務網絡交易封裝在代碼中。可以調用鏈代碼來設置和獲取賬本或 world state。

超級賬本可以使用go、java或者nodejs來開發智能合約,不過支持最好的還是go語言。下面是使用go開發的一個簡單地fabric智能合約:

package main
 
import "fmt"
import "github.com/hyperledger/fabric/core/chaincode/shim"
 
type SampleChaincode struct {
}
 
func (t *SampleChaincode) Init(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) {
    return nil, nil
}
 
func (t *SampleChaincode) Query(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) {
    return nil, nil
}
 
func (t *SampleChaincode) Invoke(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) {
    return nil, nil
}
 
func main() {
    err := shim.Start(new(SampleChaincode))
    if err != nil {
        fmt.Println("Could not start SampleChaincode")
    } else {
        fmt.Println("SampleChaincode successfully started")
    }
 
}

frabric的智能合約可以使用一個go中的類實現,它必須要實現約定的借口Init和Query。

Init 方法 在鏈代碼首次部署到區塊鏈網絡時調用,將由部署自己的鏈代碼實例的每個對等節點執行。而只要在區塊鏈狀態上執行任何讀取/獲取/查詢操作,就會調用 Query 方法。

訪問這里了解更多關于fabric的智能合約開發的相關信息:Fabric Chaincode

以太坊

以太坊是第一個提供完善的智能合約開發框架的區塊鏈,因此它也被稱為區塊鏈2.0的代表。事實上,目前絕大多數的區塊鏈應用,包括ICO代幣發行,都是基于以太坊來實現的智能合約應用。

以太坊有四種專用語言可以用來開發智能合約:

  • Solidity ,受JavaScript 啟發

  • Serpent ,受Python啟發

  • Mutan,受Go 啟發

  • LLL 受Lisp 啟發

這四種語言都是為面向合約編程而從底層開始設計的語言,但從目前的發展來看,Solidity已經稱為以太坊智能合約開發當之無愧的首選語言。

Solidity的語法類似于JavaScript,這降低了學習門檻,易于被掌握和使用,因為JavaScript是Web開發者的常用語言。例如,下面是一個使用Solidity開發的簡單但完整的智能合約:

pragma solidity ^0.4.21;

contract HelloWorld {
    string hello = "Hello World!!!";
    event say(string _value);
    
    function sayHello() public {
        emit say(hello);
    }   
}

合約代碼第一行指定該合約使用的Solidity版本為0.4.21,不支持高于0.4.21版本的Solidity特性。

在Solidity中,contract關鍵字包含的代碼段即表示一個智能合約,它擁有一些成員變量和函數,看起來非常類似于傳統的面向對象開發中的類。

到此,關于“Solidity智能合約怎么實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宕昌县| 峨山| 封开县| 元朗区| 康马县| 文山县| 富民县| 绥宁县| 洪洞县| 榆林市| 临猗县| 浦北县| 宕昌县| 卢龙县| 云梦县| 天全县| 武强县| 闽侯县| 郸城县| 陇南市| 洛浦县| 民乐县| 民勤县| 永靖县| 西充县| 乡城县| 红安县| 开封县| 江阴市| 通辽市| 海原县| 贵港市| 清流县| 通江县| 乌拉特前旗| 思南县| 罗源县| 定日县| 淄博市| 玉树县| 闵行区|