自BCH在去年5月份升級(jí)之后,實(shí)現(xiàn)智能合約功能一直都是BCH發(fā)展的其中一個(gè)方向。BCH社區(qū)的開(kāi)發(fā)者為了實(shí)現(xiàn)這一功能在不斷努力。經(jīng)歷一年多的時(shí)
自BCH在去年5月份升級(jí)之后,實(shí)現(xiàn)智能合約功能一直都是BCH發(fā)展的其中一個(gè)方向。BCH社區(qū)的開(kāi)發(fā)者為了實(shí)現(xiàn)這一功能在不斷努力。經(jīng)歷一年多的時(shí)間,BCH在智能合約、公鏈方面也取得了一定的成績(jī)。
BCH經(jīng)過(guò)升級(jí),在OP-return容量擴(kuò)大的基礎(chǔ)上,BCH社區(qū)相繼推出蟲(chóng)洞、SLP等代幣方案實(shí)現(xiàn)了BCH區(qū)塊鏈發(fā)行Token的功能。目前已經(jīng)有多種代幣通過(guò)BCH網(wǎng)絡(luò)被創(chuàng)建出來(lái),其中包括合規(guī)的穩(wěn)定幣USDH等。
去年11月的那次升級(jí),BCH又新增了一個(gè)極其重要的操作碼op_checkdatasig,它允許腳本驗(yàn)證來(lái)自區(qū)塊鏈外部的任意消息,從而打開(kāi)了許多令人興奮的可能用例,其中也包括智能合約用例,例如區(qū)塊鏈上的國(guó)際象棋。利用op_checkdatasig操作碼,BCH可以實(shí)現(xiàn)有狀態(tài)的智能合約。Local Bitcoin.com交易平臺(tái)的去中心化實(shí)現(xiàn)有很大一部分正是op_checkdatasig的功勞。
雖然BCH的智能合約功能早就已經(jīng)實(shí)現(xiàn),但是BCH鏈上的智能合約用例卻是寥寥無(wú)幾,這是為什么呢?
其中,最主要的原因是缺少編程工具。眾所周知,ETH的智能合約之所以應(yīng)用廣泛,最重要的原因是簡(jiǎn)單。ETH有很多可參考的智能合約案例,用戶可以直接套用。相比之下,BCH社區(qū)中的智能合約并沒(méi)有統(tǒng)一的語(yǔ)言和編程工具,僅有的幾個(gè)案例也都是技術(shù)非常強(qiáng)的開(kāi)發(fā)者編寫(xiě),普通開(kāi)發(fā)者即使想要?jiǎng)?chuàng)建智能合約也一籌莫展,不知道如何入手。
不過(guò),這一問(wèn)題即將得到解決。Cashscript是一種高級(jí)編程語(yǔ)言,可以在BCH主鏈上實(shí)現(xiàn)智能合約,允許用戶以熟悉的方式編寫(xiě)智能合約。據(jù)它的開(kāi)發(fā)者 Rosco Kalis表示,Cashscript的靈感來(lái)自以太坊的Solidity,但并不相同。CashScript語(yǔ)言允許用戶以非常直接,可讀和可維護(hù)的方式編寫(xiě)現(xiàn)金合約。與以太坊相比,比特幣現(xiàn)金的智能合約雖然在功能上是有限的,但是它允許用戶在貨幣支出上設(shè)置較為復(fù)雜的條件。
CashScript的出現(xiàn)將BCH智能合約的編寫(xiě)過(guò)程變得簡(jiǎn)單規(guī)范,而且也提高了開(kāi)發(fā)者的效率。開(kāi)發(fā)者通過(guò)使用CashScript可以快速高效的編寫(xiě)智能合約案例。
昨天,開(kāi)發(fā)者Gabriel Cardona在其推特上宣布,CashScript文檔已經(jīng)發(fā)布。這對(duì)于開(kāi)發(fā)者來(lái)說(shuō),無(wú)疑是一個(gè)非常好的消息。
CashScript文檔主要分為4部分:入門(mén),Cashc CLI,CashScript SDK參考,CashScript語(yǔ)言。在CashScript文檔中有很多智能合約的案例,而且還有一些CashScript語(yǔ)言的使用方法。開(kāi)發(fā)者可以依照此文檔創(chuàng)建基于BCH網(wǎng)絡(luò)的智能合約。
根據(jù)CashScript文檔,CashScript中的合約是一組函數(shù)的集合,這些函數(shù)可用于支付鎖定在該合約中的資金。用戶可以使用合約的參數(shù)將這些合約實(shí)例化,并且可以通過(guò)指定正確的函數(shù)參數(shù)來(lái)調(diào)用這些的函數(shù)。CashScript語(yǔ)言唯一的控制結(jié)構(gòu)是if和else,由于它們與底層比特幣腳本不兼容而導(dǎo)致循環(huán)和返回語(yǔ)句被遺漏。If-else語(yǔ)句遵循C或JavaScript中已知的常用語(yǔ)義。CashScript是一種靜態(tài)類型語(yǔ)言,這意味著需要指定每個(gè)變量的類型。類型可以在包含運(yùn)算符的表達(dá)式中相互交互。
CashScript將編譯器作為獨(dú)立的命令行工具,稱為cashc。它可以通過(guò)npm安裝,用于將.cash文件編譯成.json工件文件。這些文件可以導(dǎo)入CashScript JavaScript SDK(或?qū)?lái)的其他SDK)。CashScript SDK還具有直接導(dǎo)入和編譯.cash文件的功能,因此不需要使用cashc命令行工具。
目前,與智能合約交互并將其集成到應(yīng)用程序中的主要方式是使用CashScript SDK。此SDK允許用戶編譯.cash文件或?qū)?json工件文件,并將它們轉(zhuǎn)換為Contract對(duì)象。這些對(duì)象可用于創(chuàng)建新的合約實(shí)例。而這些實(shí)例可使用.cash文件中實(shí)現(xiàn)函數(shù)與合約進(jìn)行交互。
CashScript文檔的推出對(duì)于普通的開(kāi)發(fā)者而言,不僅提高了開(kāi)發(fā)效率,而且降低了開(kāi)發(fā)難度,開(kāi)發(fā)者可以根據(jù)文檔中的內(nèi)容和參考案例進(jìn)行智能合約的搭建。與此同時(shí),BCH智能合約的參與門(mén)檻也會(huì)有所降低,從而吸引更多的開(kāi)發(fā)者加入到BCH智能合約的創(chuàng)建中來(lái),這將為BCH網(wǎng)絡(luò)出現(xiàn)殺手級(jí)應(yīng)用奠定基礎(chǔ)。CashScript亦將書(shū)寫(xiě)B(tài)CH智能合約新篇章。
關(guān)鍵詞: BCH Cashscript 智能合約