Solidity 是一門面向合約的、爲實現智能合約而創建的高級編程語言。這門語言受到了 C++,Python 和Javascript 語言的影響,設計的目的是能在以太坊虛擬機(EVM)上運行。

Solidity 是靜態類型語言,支持繼承、庫和複雜的用戶定義類型等特性。

它的語法接近於Javascript,是一種面向對象的語言。但作爲一種真正意義上運行在網絡上的去中心合約,它又有很多的不同。以下就是Solidity 語言中隱藏的一些精妙之處。

以太坊的Solidity語言是可以創建用戶自己的智能合約這種新型金融程序的基礎。智能合約是以太坊在不同實體間實現去中心化及虛擬協議的方式。以太坊背後的願景是創建新型生態系統,讓各方可以通過一種近乎完全去中心化的方式彼此交流,不再總是需要中間人。

許多去中心化技術的基礎設施背後是工具,或者說是“工具包”,它們構成了技術的整體性質。在許多情況下,開發者使用現有框架或編程語言創建這類基礎設施。編程語言可以理解爲繪製一幅像所必需的調色板。因此,這幅畫本質上只有在創造力限制自身的情況下才會強大,但不同的調色板允許完全不同的圖畫類型。編程也是如此,若以以太坊的“Solidity”語言爲調色板,畫出的畫就是去中心化應用程序。

智能合約的核心概念與架構

在理解Solidity的作用及其如何改變幾乎所有去中心化系統的開發環境前,需要弄明白智能合約的核心概念及其構建目的。

在傳統工作流程中,通常擁有一份通過某種方式將多方綁定在一起的合約。以太坊背後的概念是,人們可以將這整個過程虛擬化,通過智能合約讓事務更加高效。若將前文的債務義務虛擬化,該公司就擁有了不可改變且透明的系統,債務永遠不會出現欺詐或錯誤計算的可能。

智能合約是建立在雙方之間的,不過雙方可以是一方1人而另一方50人。智能合約的另一個核心概念是它給金融產品領域的新機遇打開了大門。首次代幣發行(ICOs)的概念之所以成爲可能就是因爲智能合約的不可改變和透明性。擁有智能合約,你可以通過ERC20的以太坊標準發行原生代幣。

Solidity中的流

Solidity的基礎的設計是儘可能與現有的現代編程產品相似。像HTML這類標記語言的知識非常有限,這可能會給想要學習Solidity的人帶來阻礙,不過開發者一旦掌握它,操作起來就非常簡單了。

在設計Solidity的基礎時,以太坊團隊希望着重於可用性和簡單性。其原因是爲了讓儘可能多的人能夠使用工具包。以太坊的主要主張是Solidity要成爲去中心化應用程序(dApps)中的JavaScript。

儘管從技術上來說這種語言可以用於創建自己的基礎程序,例如高級循環、計算器等,但它主要是爲了智能合約編程和去中心化應用開發設計的。這意味着在程序員開始將其應用到智能合約開發中時,用戶才能完全感受到它真正的可用性。

如果讀者想要創建一個名爲“myContract”的智能合約,那麼開發人員必須通過“contractmyContract”來建立其實例。通過這個例子,我們可以感受到Solidity的流(flow)。它包括了許多設計和預編程關鍵字,這些關鍵字將集成到直接與Ethereum虛擬機(EVM)協調的以太坊平臺。

Solidity和dApps

雖然那些熟悉區塊鏈和數字貨幣的人理解去中心化系統工作原理的核心,但是初學者可能很難理解什麼是去中心化應用以及它們與可靠性的關係。

去中心化應用程序只是在網絡上運行的應用程序,而不是單獨的系統或用戶。可以這樣想:在爲Mac創建應用程序時,管理應用程序後端的網絡是Apple或單個實體。在創建去中心化應用時,控制其所有進程的網絡都是以太坊網絡上的進程,因此爲應用程序創建了一個“分佈式的”系統。

智能合約是建立與以太坊區塊鏈建立直接連接的虛擬協議。去中心化應用是一種使用智能合約連接到區塊鏈,從而實現去中心化的應用程序。Solidity只是一個用於在靜態應用程序和分佈式後端之間建立連接的工具。

Solidity不是智能合約,也不是去中心化應用,它是一種編程語言,用於創建智能合約,然後可以將應用程序鏈接到區塊鏈。在學習了Solidity之後,開發人員可以創建與區塊鏈交互的去中心化應用程序。

傳統的集中式應用程序包含在靜態點對數據庫中起作用的單一數據庫的連接。去中心化應用程序是分佈式的,且由於各種各樣的原因,它們在點對點(P2P)方式下發揮作用。其主要優點是維護正常運行時間,並限制任何潛在的集中成本或錯誤。

Solidity的競爭者們

Solidity每天都有新的版本,但這在社區中引起了一些爭議。Solidity是一門新興的語言,這意味着它仍然存在着許多錯誤,需要進一步的發展和完善才能使其完全合法化。輕易能夠創建像以太坊這樣的脆弱環境使得新開發人員的代碼容易出現災難性的錯誤,從而導致在創建智能合約時損失大量金錢。

在合約方面,以太坊的主要競爭對手通常被認爲是TRON(波場)和EOS的主流案例。然而,就實際的Solidity編程語言的競爭而言,似乎只有有限數量的實體直接使用它。比如說,EOS開發工具包提供了具有競爭力的智能合約創建能力,但是,合約是用現有的語言c++編寫的。在內部智能合約開發方面,其他編程語言可能暫時還無法超越Solidity。

作爲以太坊(Ethereum)智能合約編程語言, Solidity 語言很容易快速上手,希望有越來越多的人來掌握它。

相關文章