爲了與合約交互而向Ethereum網絡發送請求,那麼您很快就會意識到,我要使用什麼編程語言,這裏本人推薦,經本人反覆償試最後鎖定用web3jAPI,是目前最好用的以太坊和傳統的程序進行交互的編程API接口,此接口是以nodejs做爲服務器編程環境,而nodejs又是基於javascript腳本語言的服務器端程序框架,也就是說咱們實現數據交換,須要的編程知識結構:java
1.熟悉nodejs編程環境框架node
2.熟練javascript語言。mysql
3.熟悉web3jsAPI接口規範web
4.熟悉以太坊智能合約的編寫solidity語言sql
5.網頁前端的html,固然也須要數據庫
6.還有重要一項數據庫,這裏使用mysql編程
有了以上的知識背景,下面開始介紹幾個web3jAPI中相關概念:
讀寫數據
Ethereum網絡對向網絡寫入數據和從網絡讀取數據進行了區分,這種區分在如何編寫應用程序中起着重要做用。 一般,寫入數據稱爲交易( transaction ),而讀取數據稱爲調用( call )。事務和調用的處理方式很是不一樣,具備如下特徵。
交易 (Transactions)
交易從根本上改變了網絡的狀態。交易能夠是簡單到將以太幣發送到另外一個賬戶,也能夠是複雜到執行合約函數或向網絡添加新合約。 交易的定義特性是它寫入(或更改)數據。交易的運行成本很高,稱爲「gas」,交易的處理須要時間。 當您經過交易執行合約的功能時,您不能接收該函數的返回值,由於交易沒有當即處理。通常來講,經過交易執行的函數不會返回值; 它們將返回一個交易id。因此總的來講,交易(Transactions)特性以下:
- 消費 gas (以太幣 ether)
- 修改網絡狀態
- 不能立刻執行
- 不會暴露一個返回值(之返回一個交易id)
調用 (Calls)
調用正好相反。調用能夠是在網絡中執行代碼,不會永久的改變數據(狀態)。調用是免費的,它的特性就是讀取數據。 當你使用 call 調用一個合約中的一份方法時,函數會立刻返回。總的來講 Calls 的特性:
- 免費(不消耗 gas)
- 不改變網絡狀態
- 立刻執行
- 會暴露一個返回值
選擇使用 Tranaction 或 Call 很簡單,取決於你是讀取數據仍是寫入數據。
今天先介紹到這