Dapp-Development
如果沒有 web3 提供程序,Truffle 如何工作?
我對 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 提供者的情況下使用已部署的契約”而言
- 他們載入了一個 web3 提供程序。他們為你做。
- 他們知道合約部署在哪裡。他們在為您進行部署時對其進行跟踪。
- 他們解析您的合約和 ABI 並創建 JavaScript(版本 2)或 JSON(版本 3)抽象。
- 您處理的 app.js 是輸出可執行應用程序的管道的輸入。
希望能幫助到你。