亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

I_Am / 1210人閱讀

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

Blockstack.js 工具教程

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

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

使用blockstack驗(yàn)證用戶

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

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

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

我們將使用以下工具:

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

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

用于驗(yàn)證用戶和訪問Gaia存儲(chǔ)的blockstack

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

添加publish _ data作用域以登錄請(qǐng)求

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

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

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

安裝與生成

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

npm install -g yo generator-blockstack

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

mkdir publik && cd publik

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

yo blockstack:react

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

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

npm start

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

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

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

因此,我們需要做的第一件事是修改身份驗(yàn)證請(qǐng)求以包括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"])
}

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

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

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

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)