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


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

 

本文作為系列的首篇,以希望能詳細的把交互過程闡述清楚. 為學習者提供些許幫助.

概述

為了與合約交互而向Ethereum網絡發送請求,那么您很快就會意識到,我要使用什么編程語言,這里本人推薦,經本人反復償試最后鎖定用web3jAPI,是目前最好用的以太坊和傳統的程序進行交互的編程API接口,此接口是以nodejs作為服務器編程環境,而nodejs又是基於javascript腳本語言的服務器端程序框架,也就是說我們實現數據交換,需要的編程知識結構:

1.熟悉nodejs編程環境框架

2.熟練javascript語言。

3.熟悉web3jsAPI接口規范

4.熟悉以太坊智能合約的編寫solidity語言

5.網頁前端的html,當然也需要

6.還有重要一項數據庫,這里使用mysql

有了以上的知識背景,下面開始介紹幾個web3jAPI中相關概念:

讀寫數據

Ethereum網絡對向網絡寫入數據和從網絡讀取數據進行了區分,這種區分在如何編寫應用程序中起着重要作用。 通常,寫入數據稱為交易( transaction ),而讀取數據稱為調用( call )。事務和調用的處理方式非常不同,具有以下特征。

交易 (Transactions)

交易從根本上改變了網絡的狀態。交易可以是簡單到將以太幣發送到另一個帳戶,也可以是復雜到執行合約函數或向網絡添加新合約。 交易的定義特性是它寫入(或更改)數據。交易的運行成本很高,稱為“gas”,交易的處理需要時間。 當您通過交易執行合約的功能時,您不能接收該函數的返回值,因為交易沒有立即處理。一般來說,通過交易執行的函數不會返回值; 它們將返回一個交易id。所以總的來說,交易(Transactions)特性如下:

  • 消費 gas (以太幣 ether)
  • 修改網絡狀態
  • 不能馬上執行
  • 不會暴露一個返回值(之返回一個交易id)

調用 (Calls)

調用正好相反。調用可以是在網絡中執行代碼,不會永久的改變數據(狀態)。調用是免費的,它的特性就是讀取數據。 當你使用 call 調用一個合約中的一份方法時,函數會馬上返回。總的來說 Calls 的特性:

  • 免費(不消耗 gas)
  • 不改變網絡狀態
  • 馬上執行
  • 會暴露一個返回值

選擇使用 Tranaction 或 Call 很簡單,取決於你是讀取數據還是寫入數據。

今天先介紹到這


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM