1. 程式人生 > >Solidity語言實戰(一)Solidity語言的簡介(原創學習日誌未經作者許可請勿私自轉載)

Solidity語言實戰(一)Solidity語言的簡介(原創學習日誌未經作者許可請勿私自轉載)

you 進度 教程 學習方式 work window lock .com 快速學習

開頭想對partner說的話

首先,對前兩天的情緒失控感到抱歉,趁著剛好的周末,我思考了一下這個問題,既然已經要開始做這個項目了,就要好好做。我們在這個方面都是零基礎,我希望通過這次實訓,我們能夠互相學習一點東西,比如我自己欠缺的,遇到事情不夠冷靜,我會向可可同學來慢慢學習事件的處理方法,以及莉莉和嘉琪,可以向她們學習一下搜集資訊和PPT的制作方式以及文案的寫作,這方面我也是比較欠缺的。而我唯一熟練的一個就是如何在短期內快速學習一門程式語言,這點我會慢慢和組員一起學習這門程式語言並一起開發合作完成這個項目。

然後,寫作博文的習慣我一直保持著,如果你們覺得這個對自己有幫助,也可以進行創建一個博文賬戶,進行博文編輯,或者你們可以利用以往你們學習方式,進行手動書寫筆記,來記錄這段時間的學學習實戰內容。寫作博文的好處:1.防丟失。2.可以正確了解自己學習進度與隊友的差距。3.便於檢驗,在導師進行成功檢驗時,我們往往前期不能給出恰當作品,而學習進度正是你時時刻刻努力的一個proof of work。

1.1Solidity語言簡介

首先,了解一門語言,首先得了解這門語言的特點,比如,Java,我們通常會在本地配置jvm,配置環境變量,然後在cmd上運行一個HelloWorld,初步掌握Java語言的特性。Solidity也是一樣,了解一門語言,可以通過書籍,網絡課程進行了解。可可推薦2個網址進行學習這門語言http://www.tryblockchain.org/index.html?from=groupmessage https://solidity-cn.readthedocs.io/zh/develop/。我推薦2個課程,一個是我從淘寶購買的一個區塊鏈教程 https://pan.baidu.com/s/1wA1IPskumJ6TfHYxQYh-qQ 提取碼: 38l2,

希望大家可以及時保存到自己的雲盤,避免丟失,第二個是我在51CTO上看到的一個Solidity語言的免費課程https://edu.51cto.com/center/course/lesson/index?id=278083 ,僅供參考,我在學習Java的過程中意識到,很多課程並不能講的全面,所以建議2個視頻都進行觀看。

1.1.1Solidity語言的特性:

1.語言類似Java Script,是一種oop語言,與其他oop語言的區別如下:

  • 語言基於賬戶,需要一個特殊類型Address類型記錄地址,同時定位用戶,定位智能合約,定位合約代碼(智能合約本身也是需要一個賬戶的)
  • Solidity語言支持支付,提供一個關鍵字:payable,可在語言底層進行支付。
  • 存儲使用區塊鏈,數據每個狀態可以永久存儲,所以必須確定變量使用內存還是區塊鏈
  • 運行環境是在去中心化的網絡上,所以會比較強調函數的調用方法,之前在本地運行的函數變成了在網絡節點中運行
  • 異常處理,與Java不同,Java和C++是本地運行的程式,所以異常操作可以及時終止代碼,重新運行,而Solidity的程式,需要和SQL一樣,進行事務操作回滾,因為操作不可逆,為了保持合約的原子性,我們通常會采用回滾操作

1.1.2Solidity語言的HelloWorld:

在我大一學習C++,Java,VB或者Html,jsp等的任何程式語言或者腳本語言,我首先得能夠手寫編輯HelloWorld,在Solidity語言也一樣,首先這個代碼必須牢記

pragma solidity ^0.4.0 //表示編譯solidity語言的compile version必須大於等於0.4.0
contract HelloWorld{    //類似Java的類,在今後我們通常叫新建一個合約
    function add(int a,int b) returns (uint){//這裏類似Java Script語法,function+函數名(參數類型 參數名) 
//註意後面一定要加返回類型,uint是指無符號整型,我在寫這篇文章的時候實際後面的基本類型已經開始了學習,如果不清楚,學到後面基本類型會提到uint
return a+b; } }

1.1.3安裝本地remix開發環境:

在之前項目未開始前,我們探討的是Solidity是什麽,當時我對這個概念十分模糊,看了youtube上一些教程是要在一個網絡編輯器上運行的,實質,網絡編輯器就是一個在線的IDE。

  1.1.3.1.在線開發程式:remix.ethereum.org這個地址是在線開發程式地址,我們可以在該網址進行在線開發,而實際,我們通常得在本地配布進行開發,或者在之後,我們會用到JetBrains的一款IDE進行集成開發(ps:在大二上學期,我看到我們班有很多人都在使用InterJ IDEA進行開發Java程式,據說會比MyEclipse高效,實際我對MyEclipse的使用更了解一點,但是,趁著這次機會,我可以了解一下JetBrains的系列工具是如何讓開發更加高效的)

  1.1.3.2.本地開發程式:remix的本地支持3個平臺,Mac OSX,Linux,Windows平臺

所有系統的步驟都大致方法如下:(需有Linux基礎,你們可以先試著安裝,不會的話下周見面進行探討)

    1.安裝git:http://git-scm.com/download/

    2.執行:git clone https://github.com/ethereum/browser-solidity

    3.安裝node.js,進入官網安裝

    4.執行node命令:npm install xxx

    5.訪問localhost:8080,即可線下編輯

1.1.4編譯與測試solcjs和testrpc的應用

  思考題:編寫一個智能合約程式,通過一個函數進行計算階乘,通過以下兩種方式進行測試

  1.1.4.1

Solidity語言實戰(一)Solidity語言的簡介(原創學習日誌未經作者許可請勿私自轉載)