国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

I_Am / 1122人閱讀

摘要:工具教程在本教程中,我們將使用存儲系統構建一個區塊鏈微博應用程序,從而使用戶提交的文字和圖片沒有發布到中心服務器中,而是在自己的本地電腦。

Blockstack.js 工具教程

在本教程中,我們將使用Gaia存儲系統構建一個區塊鏈微博應用程序,從而使用戶提交的文字和圖片沒有發布到中心服務器中,而是在自己的本地電腦。
此應用程序將是一個完全分散且無需服務器的access . js應用程序。標識和存儲服務將由blockstack提供,

應用程序將能夠執行以下操作:

使用blockstack驗證用戶

用戶發布類似傳統微博(微信朋友圈)樣式的新狀態

在用戶配置文件中顯示狀態

查找其他用戶并查看其配置文件和狀態

我們將使用以下工具:

用于管理依賴關系和腳本的NPM

yo為塊堆棧反應應用程序生成樣板文件

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

對于經驗豐富的blockstack開發人員:

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

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

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

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

安裝與生成

首先,安裝Yeoman以及blockstack應用程序生成器:

npm install -g yo generator-blockstack

接下來,為我們的應用程序創建一個目錄,取個新的名字Publik :

mkdir publik && cd publik

然后,使用blockstack應用程序生成器生成一個簡單的blockstack應用程序:

yo blockstack:react

響應提示后,應用程序生成器將創建所有應用程序文件,然后安裝所有依賴項。

要在本地運行應用程序:

npm start

并將瀏覽器打開到http://localhost : 8080。現在您應該看到一個簡單的react應用程序,您可以使用blockstack ID登錄。

多用戶層數據存儲

在多用戶層數據存儲中,存儲在Gaia上的用戶文件通過用戶配置文件中的apps屬性對其他用戶可見。使用多用戶層數據存儲的每個應用程序都必須將其自身添加到用戶的配置文件. 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"])
}

請注意,默認情況下,身份驗證請求包括啟用存儲的store _ write范圍。
如果您想注銷并再次登錄,程序將為提示用戶身份驗證的請求,你將會允許該程序發布你本地所存儲的文字或圖片。

發布狀態:

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

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

然后,我們需要在構造函數( )的初始狀態中添加一些屬性。構造函數應如下所示:

constructor(props) {
  super(props);

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

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

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

  return (
    !isSignInPending() && person ?
    

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

{username}  |  (Logout)