Ipfs

IPFS 與使用 Embark 框架開發的 dapp 集成

  • January 12, 2017

這是合約程式碼。

     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 儲存和檢索值?

根據文件

  1. 設置提供者:

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'})

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