Ipfs
IPFS 與使用 Embark 框架開發的 dapp 集成
這是合約程式碼。
pragma solidity ^0.4.2; contract SimpleStorage { uint storedData; function set(uint x) { storedData = x; } function get() constant returns (uint retVal) { return storedData; } }
這是使用的 javascript 程式碼 (index.js)
var addToLog = function(txt) { $(".logs").append("<br>" + txt); }; $(document).ready(function() { $("button.set").click(function() { var value = parseInt($("input.text").val(), 10); SimpleStorage.set(value); addToLog("SimpleStorage.set(" + value + ")"); }); $("button.get").click(function() { SimpleStorage.get().then(function(value) { $(".value").html(value.toNumber()); }); addToLog("SimpleStorage.get()"); }); });
這是 html 文件(index.html)的程式碼
<html> <head> <title>Embark - SimpleStorage Demo</title> <link rel="stylesheet" href="css/app.css"> <script src="js/app.js"></script> </head> <body class="container"> <h3>Embark - SimpleStorage Demo</h3> <h3> 1. Set the value in the blockchain</h3> <div class="form-group form-inline"> <input type="text" class="text form-control" > <input type="text" class="text form-control"> <button class="set btn btn-primary">Set Value</button> </div> <h3> 2. Get the current value</h3> <div class="form-group"> <div> current value is <span class="value"></span> </div> <button class="get btn btn-primary">Get Value</button> </div> <h3> 3. Contract Calls </h3> <div class="logs"> <p>Javascript call being made: </p> </div> </body> </html>
我正在嘗試集成 ipfs 以在 ipfs 中儲存“x”。我正在使用 board 框架來開發 dapp。
我已經使用 npm 安裝了 ipfs-api,如下所示。
npm install --save ipfs-api
然後我用以下幾行更新了上面的 index.js
var ipfsAPI = require('ipfs-api') // connect to ipfs daemon API server var ipfs = ipfsAPI('localhost', '5001', {protocol: 'http'})
index.js 和 index.html 文件中需要哪些進一步修改才能使用 ipfs 儲存和檢索值?
根據文件
- 設置提供者:
EmbarkJS.Messages.setProvider('orbit', {server: 'localhost', port: 5001})
2. 保存文本
EmbarkJS.Storage.saveText("hello world").then(function(hash) {});
3. 檢索數據/文本
EmbarkJS.Storage.get(hash).then(function(content) {});
部署到 IPFS
要將 dapp 部署到 IPFS,您需要做的就是執行本地 IPFS 節點,然後執行
embark ipfs
. 如果您想部署到 livenet,那麼在config/blockchain.json
生產環境上配置您的帳戶後,您可以通過指定 environment 部署到該鏈embark ipfs production
。來自@iurimatias 的編輯:一個小提示:從 2.2.0 開始,要上傳到 ipfs,新命令
embark upload ipfs
還需要設置提供程序:EmbarkJS.Storage.setProvider('ipfs',{server: 'localhost', port: '5001'})