Dapp-Development

如果沒有 web3 提供程序,Truffle 如何工作?

  • March 30, 2018

我對 Truffle 的 init 項目有疑問。

我無法理解 - 在 app.js 中 - 他們如何在沒有 web3 提供者的情況下使用已部署的契約,如下所示:

var provider = new Web3.providers.HttpProvider("http://localhost:8545");
var contract = require("truffle-contract");

var MyContract = contract({
 abi: ...,
 unlinked_binary: ...,
 address: ..., // optional
 // many more
})
MyContract.setProvider(provider);

在帶有 truffle-default-builder 的 Truffle 0.2.x 或 0.3.x 中,./build 文件夾中的 app.js 將包含大量設置階段的引導程式碼。

這就是為什麼當源似乎駐留在 ./app 中時(通常),HTML 應該連結到 ./build 文件夾的原因。這是應該提供的建構輸出。

Truffle 在所有項目中都包含一個簡單的 Migrations.sol 合約。當您$ truffle migrate使用$ truffle networks.

在此處輸入圖像描述

每個合約都有一個 JavaScript 包裝器——通常是contractName.sol.js. 這就是很多 ABI 和有前途的事情發生的地方。

當您擁有 app.js 前端並使用建構管道時,truffle 會在 ./build 文件夾中註入有關您的程式碼的程式碼。您可以在那裡看到 Web3,還可以看到涉及遷移。

在此處輸入圖像描述

他們有一個配置文件,描述要包含在建構過程中的文件,以及區塊鏈的網路配置。Truffle 在建構和遷移期間使用它。

在此處輸入圖像描述

例如,我在我的一個 app.js 輸出文件中發現了這一點。

在此處輸入圖像描述

因此,就“我無法理解 - 在 app.js 中 - 他們如何在沒有 web3 提供者的情況下使用已部署的契約”而言

  1. 他們載入了一個 web3 提供程序。他們為你做。
  2. 他們知道合約部署在哪裡。他們在為您進行部署時對其進行跟踪。
  3. 他們解析您的合約和 ABI 並創建 JavaScript(版本 2)或 JSON(版本 3)抽象。
  4. 您處理的 app.js 是輸出可執行應用程序的管道的輸入。

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/12548