成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

如何在blockstack上寫一個區(qū)塊鏈“微博”程序?

I_Am / 1132人閱讀

摘要:工具教程在本教程中,我們將使用存儲系統(tǒng)構(gòu)建一個區(qū)塊鏈微博應(yīng)用程序,從而使用戶提交的文字和圖片沒有發(fā)布到中心服務(wù)器中,而是在自己的本地電腦。

Blockstack.js 工具教程

在本教程中,我們將使用Gaia存儲系統(tǒng)構(gòu)建一個區(qū)塊鏈微博應(yīng)用程序,從而使用戶提交的文字和圖片沒有發(fā)布到中心服務(wù)器中,而是在自己的本地電腦。
此應(yīng)用程序?qū)⑹且粋€完全分散且無需服務(wù)器的access . js應(yīng)用程序。標(biāo)識和存儲服務(wù)將由blockstack提供,

應(yīng)用程序?qū)⒛軌驁?zhí)行以下操作:

使用blockstack驗證用戶

用戶發(fā)布類似傳統(tǒng)微博(微信朋友圈)樣式的新狀態(tài)

在用戶配置文件中顯示狀態(tài)

查找其他用戶并查看其配置文件和狀態(tài)

我們將使用以下工具:

用于管理依賴關(guān)系和腳本的NPM

yo為塊堆棧反應(yīng)應(yīng)用程序生成樣板文件

用于驗證用戶和訪問Gaia存儲的blockstack

對于經(jīng)驗豐富的blockstack開發(fā)人員:

添加publish _ data作用域以登錄請求

使用getFile ( " filename . JSON ",{username: " username . id ",decrypt: false } )從其他用戶讀取文件。

使用lookupProfile ( "username. id " )查找用戶配置文件

如前所述使用putFile ( " filename . JSON ",file,options ),其中選項設(shè)置為{ encrypt : false },以便禁用加密,其他人可以讀取您的文件。

安裝與生成

首先,安裝Yeoman以及blockstack應(yīng)用程序生成器:

npm install -g yo generator-blockstack

接下來,為我們的應(yīng)用程序創(chuàng)建一個目錄,取個新的名字Publik :

mkdir publik && cd publik

然后,使用blockstack應(yīng)用程序生成器生成一個簡單的blockstack應(yīng)用程序:

yo blockstack:react

響應(yīng)提示后,應(yīng)用程序生成器將創(chuàng)建所有應(yīng)用程序文件,然后安裝所有依賴項。

要在本地運行應(yīng)用程序:

npm start

并將瀏覽器打開到http://localhost : 8080?,F(xiàn)在您應(yīng)該看到一個簡單的react應(yīng)用程序,您可以使用blockstack ID登錄。

多用戶層數(shù)據(jù)存儲

在多用戶層數(shù)據(jù)存儲中,存儲在Gaia上的用戶文件通過用戶配置文件中的apps屬性對其他用戶可見。使用多用戶層數(shù)據(jù)存儲的每個應(yīng)用程序都必須將其自身添加到用戶的配置文件. JSON文件中。在身份驗證期間請求publish _ data作用域時,blockstack瀏覽器將自動處理此部分。

因此,我們需要做的第一件事是修改身份驗證請求以包括publish _ data范圍。
打開src/components/App.jsx并找到下面的方法:

handleSignIn(e) {
  e.preventDefault();
  redirectToSignIn();
}

將方法修改為:

handleSignIn(e) {
  e.preventDefault();
  const origin = window.location.origin
  redirectToSignIn(origin, origin + "/manifest.json", ["store_write", "publish_data"])
}

請注意,默認(rèn)情況下,身份驗證請求包括啟用存儲的store _ write范圍。
如果您想注銷并再次登錄,程序?qū)樘崾居脩羯矸蒡炞C的請求,你將會允許該程序發(fā)布你本地所存儲的文字或圖片。

發(fā)布狀態(tài):

在此步驟中,我們將添加允許發(fā)布和顯示“狀態(tài)”的功能。
讓我們打開src / components / profile . jsx,然后從blockstack. js中導(dǎo)入我們將使用的幾個方法。這些方法是putFile ( )、getFile ( )和lookupProfile ( )。將它們添加到文件頂部附近blockstack的import語句中:

import {
  isSignInPending,
  loadUserData,
  Person,
  getFile,
  putFile,
  lookupProfile
} from "blockstack";

然后,我們需要在構(gòu)造函數(shù)( )的初始狀態(tài)中添加一些屬性。構(gòu)造函數(shù)應(yīng)如下所示:

constructor(props) {
  super(props);

  this.state = {
    person: {
      name() {
        return "Anonymous";
      },
      avatarUrl() {
        return avatarFallbackImage;
      },
    },
    username: "",
    newStatus: "",
    statuses: [],
    statusIndex: 0,
    isLoading: false    
  };
}

現(xiàn)在,讓我們修改render ( )方法以添加文本輸入和提交按鈕,以便可以發(fā)布用戶的“微博狀態(tài)”。將render ( )方法替換為以下內(nèi)容:

render() {
  const { handleSignOut } = this.props;
  const { person } = this.state;
  const { username } = this.state;

  return (
    !isSignInPending() && person ?
    

{ person.name() ? person.name() : "Nameless Person" }

{username}  |  (Logout)