在以太坊上用代幣如何與智能合約交互,進行數據傳遞(1)

從接觸區塊鏈概念到進入開發狀態,也有一段時間了,最近也在以太坊上發了幾個智能合約,現把我的的經驗總結如下,也算是學習總結吧,但願後來者減小一些坑.如你有不明清楚的,也能夠直接和本人聯繫,微信yyy99966,共同窗習javascript

 

本文做爲系列的首篇,以但願能詳細的把交互過程闡述清楚. 爲學習者提供些許幫助.html

概述前端

爲了與合約交互而向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 很簡單,取決於你是讀取數據仍是寫入數據。

今天先介紹到這

相關文章
相關標籤/搜索