国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

以太坊智能合約開發第七篇:智能合約與網頁交互

sherlock221 / 3658人閱讀

摘要:原文發表于以太坊智能合約開發第七篇智能合約與網頁交互上一篇中,我們通過開發框架快速編譯部署了合約。智能合約與網頁交互啟動腳本修改完了之后,就需要與網頁進行整合。

原文發表于:以太坊智能合約開發第七篇:智能合約與網頁交互

上一篇中,我們通過truffle開發框架快速編譯部署了合約。本篇,我們將來介紹網頁如何與智能合約進行交互。

編寫網頁

首先我們需要編寫一個網頁。打開 smartcontract/app/index.html 文件,修改 head 區代碼如下:


  Hello - Truffle
  
  
  
  
  
  
  

修改 body 區代碼如下:


  
  

網頁呈現效果如下圖:

修改啟動腳本

smartcontract/app/javascripts/app.js 腳本文件是智能合約與網頁交互的核心,修改代碼如下:

//導入CSS
import "../stylesheets/app.css";
//導入web3和truffle-contract庫
import { default as Web3} from "web3";
import { default as contract } from "truffle-contract"

//導入Hello合約的ABI文件
import Hello_artifacts from "../../build/contracts/Hello.json"
//獲取Hello合約對象
var HelloContract = contract(Hello_artifacts);

window.App = {
  init: function() {
    //設置web3連接
    HelloContract.setProvider(web3.currentProvider);
  },

  //封裝合約中的say()方法調用過程,供javascript調用
  say: function(name, callback){
    //instance為Hello合約部署實例
    HelloContract.deployed().then(function(instance){
      //調用Hello合約中的say()方法,并傳入參數name
      instance.say.call(name).then(function(result){
        //將返回結果傳入回調函數
        callback(null, result);
      });
    }).catch(function(e){
      console.log(e, null);
    });
  }
};

window.addEventListener("load", function() {
  //設置web3連接  http://127.0.0.1:7545 為Ganache提供的節點鏈接
  window.web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:7545"));
  App.init();
});

前面的篇幅中,我們提到過 web3模塊是以太坊提供的工具包,主要用于與合約的通信。從上面的代碼中,我們可以看到,通過Hello合約的ABI文件獲取到合約對象之后,再配合web3工具,就可以與Hello合約進行通信了。其中 App.say() 是對Hello合約中say()方法的調用過程進行了封裝,方便前端代碼進行調用。

智能合約與網頁交互

啟動腳本修改完了之后,就需要與網頁進行整合。我們再返過來繼續修改 smartcontract/app/index.html 文件。在文件末尾添加如下交互代碼:

接下來,就是見證奇跡的時刻。
smartcontract 目錄下執行 npm run dev

注意圖中標識的部分。http://locahost:8083 為網頁訪問地址(每個人運行的端口號可能不一樣)。我們也能看出,truffle開發框架集成了 webpack 工具,對網頁中包含的靜態資源文件進行了打包。

最后,我們通過瀏覽器打開 http://locahost:8083 來測試下效果:

至此,一個簡單的Dapp應用示例就此完成了。我們也熟練掌握了通過truffle開發框架編寫合約代碼、快速編譯部署、構建Dapp的整個過程。

我的專欄:智能合約
智能合約開發QQ群:753778670

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24054.html

相關文章

  • python使用web3py以太智能合約交互

    摘要:合約規定了公共職能部門,以創造新的投資和撤資,這將成為對沖基金的主要職能。對沖基金的用戶通過其以太坊地址來識別,該地址相當于公鑰。我發現與其他程序如程序的以太坊智能合約進行交互的最簡單方法是使用他們的。 在以太坊和其他區塊鏈中,仍有很多被證明的概念正在實施,開發人員在嘗試如何應對這些新概念。作為dInvest 系列文章一部分,我也在研究以太坊并嘗試在區塊鏈中實施對沖基金。在上一篇文章中...

    Joyven 評論0 收藏0
  • 以太智能合約開發第二篇:理解以太相關概念

    摘要:原文發表于以太坊智能合約開發第二篇理解以太坊相關概念很多人都說比特幣是區塊鏈,以太坊是區塊鏈。它是以太坊智能合約的運行環境。是由以太坊節點提供。以太坊社區把基于智能合約的應用稱為去中心化的應用。 原文發表于:以太坊智能合約開發第二篇:理解以太坊相關概念 很多人都說比特幣是區塊鏈1.0,以太坊是區塊鏈2.0。在以太坊平臺上,可以開發各種各樣的去中心化應用,這些應用構成了以太坊的整個生態...

    yibinnn 評論0 收藏0
  • 工廠模式管理多個以太solidity智能合約

    摘要:在新智能合約的構造函數中,將引用我們的合約工廠的地址。以太坊,主要是針對工程師使用進行區塊鏈以太坊開發的詳解。以太坊入門教程,主要介紹智能合約與應用開發,適合入門。這里是原文用工廠模式管理多個智能合約 我們寫了一份小的計算合約作為Hello World。如果我們可以創建一個允許用戶創建自己的計數器的合約怎么辦? showImg(https://segmentfault.com/img/...

    leone 評論0 收藏0
  • 以太、EOS和Hyperledger等不同區塊鏈的比較

    摘要:以太坊背后的主要人物是。以太坊通過在區塊鏈上引入智能合約,徹底改變了加密世界。以太坊使用名為以太坊虛擬機的虛擬機執行其智能合約。以太坊最終將利用協議轉向權益證明。截至目前,以太坊在可擴展性方面都失敗了。 不同的區塊鏈智能合約和區塊鏈技術現在風靡一時。越來越多的人出于某種原因試圖進入這個神奇的世界。如果你是這項技術的新手并正在尋找基于區塊鏈的開發平臺的快速入門,那么本指南非常適合你。我們...

    harriszh 評論0 收藏0
  • 以太是什么 - 以太開發入門指南

    摘要:以太坊是什么以太坊是一個建立在區塊鏈技術之上,去中心化應用平臺。運行環境以太坊虛擬機是以太坊中智能合約的運行環境。是由以太坊客戶端提供的是典型的開發以太坊時使用的客戶端,基于語言開發。 本文首發于深入淺出區塊鏈社區原文鏈接:以太坊是什么 - 以太坊開發入門指南原文已更新,請讀者前往原文閱讀 很多同學已經躍躍欲試投入到區塊鏈開發隊伍當中來,可是又感覺無從下手,本文將基于以太坊平臺,以通俗...

    tomlingtm 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<