以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > 比特幣 > Info

教程:創建由以太坊支持的 Web3 聊天_ASK

Author:

Time:1900/1/1 0:00:00

在本文中,我們將學習如何將以太坊智能合約連接到React應用程序,并使用戶能夠與之交互。

先決條件

要在瀏覽器中安裝MetaMask擴展

一個代碼編輯器

關于以下主題的一些知識:以太坊,MetaMask,React,TypeScript

在以太坊主網上工作要花真金白銀!

在本教程中,我假設的是你的MetaMask設置為使用Rinkeby。Rinkeby是一個復制主網的測試網絡,允許我們免費部署和使用智能合約。

項目

我們將為這個基于區塊鏈的聊天建立一個界面,如下所示:

左邊的側邊欄包含一個按鈕,用于連接到聊天或指示連接用戶的地址。

右側的聊天框,顯示消息和輸入欄。

在本篇文章中,我們不會關注如何讓UI更漂亮,我們的目標是關注如何用最直接的方式與智能合約交互。

我已盡力使本教程易于理解,但如果有些東西還是不甚清晰,也不用灰心,你會在本文的最后找到一個包含已完成項目的GitHub存儲庫的鏈接。

智能合約

首先,我們要連接到前端的智能合約,如下所示:

event?、emit這些東西是什么?

event用于通知外部用戶區塊鏈上發生的事情。

在我們的例子中,“外部用戶”是我們的前端應用程序,它將監聽發送到智能合約的新消息,因此我們可以立即在我們的UI中顯示它們。

Mask Network向伊利諾伊大學吉斯商學院的區塊鏈倡議基金捐贈3.3萬枚MASK:金色財經報道,Mask Network宣布已向伊利諾伊大學吉斯商學院的區塊鏈倡議基金捐贈了3.3萬枚MASK(約14萬美元)。Mask Network表示,此次捐贈旨在幫助發展伊利諾伊大學的區塊鏈教育,讓更多學生參與區塊鏈和Web3世界。[2023/2/7 11:51:46]

前端

我準備了一個樣板,這樣你就可以馬上開始編碼了。

以下是啟動項目的Github鏈接:

https://github.com/thmsgbrt/web3-chat-powered-by-ethereum-starter

一旦你克隆了項目,使用npminstall安裝依賴項,并用npmstart啟動了它,那么花幾分鐘檢查幾個文件以了解應用是如何構造的,也是有必要的。這是非常基本的React,就不在此贅述了。

以下是我們的行動計劃:

A-允許用戶通過MetaMask連接到聊天

B-在我們的前端實例化智能合約

C-從我們的智能合約中獲取消息并顯示它們

D-允許用戶在聊天中發布消息

E-收聽新信息

A-允許用戶通過MetaMask連接到聊天

要做到這一點,我們首先需要確保MetaMask擴展安裝在了瀏覽器上。

讓我們創建一個Hook來實現這一點:

解釋:

MetaMask在window.ethereum注入了一個全局API。該API允許網站請求用戶的以太坊賬戶,從用戶連接的區塊鏈讀取數據,并建議用戶簽署消息和交易。

公鏈Klaytn與ZetaChain(ZETA)合作,推進內置Omnichain互操作性:10月3日消息,韓國區塊鏈平臺Klaytn宣布與跨鏈智能合約平臺ZetaChain(ZETA)建立合作伙伴關系,此次集成將使Klaytn開發人員能夠快速為現有和新的智能合約帶來全鏈互操作性。這些“全鏈”智能合約可以在連接的區塊鏈之間發送數據和價值,包括以太坊、Polygon、BNB Chain以及最終的非智能鏈,如比特幣。[2022/10/3 18:38:26]

現在我們已經準備好了Hook,轉向Sidebar.tsx,這樣我們就可以利用它:

以現在,我們有一種方法來檢測是否安裝了MetaMask,如果沒有安裝MetaMask,我們可以警告用戶,他們需要在瀏覽器上安裝MetaMask。

接下來,讓我們為“ConnectWithMetaMask”按鈕添加一個onClick處理程序:

現在,當用戶單擊ConnectWithMetaMask時,MetaMask擴展程序將提示一個模式并詢問要使用哪個帳戶:

美銀CEO將在國會聽證會上闡述數字投資和加密貨幣等內容:金色財經報道,美國銀行(BAC.US)首席執行官Brian Moynihan將在周三的眾議院金融服務委員會聽證會上討論該銀行深入參與數字投資和加密貨幣研究等話題。根據準備好的證詞,Moynihan將強調美國銀行在2022年35億美元的投資計劃,旨在增強該銀行的平臺、資助下一代項目并將其數字領導力擴展到未來。

在加密貨幣領域,他表示:通過仔細篩選客戶,我們正在與融入數字資產生態系統的精選公司就融資、并購和其他銀行服務進行對話。同時探索在多個領域使用這種區塊鏈技術,包括標記內部客戶文件、即時跨境支付、銀行賬戶。并且還在尋找讓員工更快賺取資金的方法。[2022/9/21 7:11:58]

MetaMask要求我們連接到我們的聊天

現在已連接!

側邊欄現在顯示你的以太坊地址!

B-在我們的前端實例化智能合約

為了能夠獲取信息并使用戶能夠發送消息,我們需要有一種方法與我們的智能合約進行通信。

我們要使用ethers庫。

ethers是一個庫,可以幫助我們的前端與智能合約進行對話。ethers通過提供商(在我們的例子中是MetaMask)連接到以太坊節點,它可以幫我們做很多事情。

讓我們創建另一個Hook,它將允許我們在ethers的幫助下與我們的智能合約交互:

福建省發布首個數字藏品行業團體標準:8月3日消息,福建省首個區塊鏈行業團體標準《區塊鏈數字藏品通用技術要求》(征求意見稿)正式發布,并對外廣泛征求意見。該技術標準由福建省區塊鏈協會發布,熵鏈科技(廈門)有限公司、特步 (中國)有限公司等二十余家企業共同參與標準制定。

本版技術標準從區塊鏈技術選型、生命周期管理要求、數字藏品技術存儲要求、數字藏品核驗等多個角度為數字藏品行業設定技術標準,指明行業未來發展方向。本次對外發布標準“征求意見稿”,旨在邀請區塊鏈、數字藏品相關行業有識之士參與,提出寶貴意見,共同為數字藏品建設發展出謀劃策,為數字中國建設做出貢獻。[2022/8/3 2:57:07]

讓我們來分解一下:

我們先檢查一下window.ethereum是否存在并從中獲取了Web3Provider。

如果已經定義了accountis,這意味著用戶點擊了“ConnectWithMetaMask”按鈕,webThreeProvider.getSigner()會返回給我們他們的地址。

最后,返回一個帶有新的ether.contract()的合約實例。

實例化我們的智能合約

前往App.tsx,在那里我們可以使用我們創建的hook:

你是否注意到了,我們這里有一個錯誤,需要去做兩件事情來解決問題:

contractAddress不是合約地址。

./contract/BlockchainChat-artifact.json是空的。

合約地址

日本央行發現一些CBDC設計在處理高交易量時遇到瓶頸:6月6日消息,日本央行的一項試驗發現,中央銀行數字貨幣 (CBDC) 的一些設計在處理高交易量時遇到了瓶頸。據悉,日本央行于5月26日公布了其CBDC概念驗證第一階段的調查結果。該試驗探索了三種可能的分類帳設計,并在基于公共云的實驗環境中對每種設計進行了測試。(Central Banking)[2022/6/6 4:05:35]

這個地址告訴我們在哪里找到區塊鏈上的區塊鏈聊天智能合約。

你可以使用我為大家部署到Rinkeby的以下地址之一:

0x56cD072f27f06a58175aEe579be55601E82D8fcD

0xD99f113cAd1fe2eeebe0E7383415B586704DB5a3

0x23CAEEA0Bb03E6298C2eAaa76fBffa403c20984f

選擇其中任何一個,它們都是指向已部署的區塊鏈Chat智能合約的地址。

合約的ABI

我們的Hook期望一個來自BlockchainChatArtifact的ABI。這是兩個新概念…

當你編譯一個智能合約時,你會得到所謂的工件。

在Remix中(一個用于創建、編譯、測試和部署智能合約的IDE),一旦你的智能合約已經編譯完成,你將在contracts/artifacts下找到工件。

這個工件包含庫的鏈接、字節碼、部署的字節碼、gas估計、方法標識符和ABI。它用于將庫地址鏈接到文件。

現在,什么是“ABI”:

ABI代表應用程序二進制接口。ethers需要我們的BlockchainChat智能合約的ABI,以便知道我們的智能合約可以做什么(方法、事件、錯誤等),并為我們的前端提供與它交互的一種方式。

如果你沒有自己部署智能合約,仍然可以通過復制./contract/blockchainchat-artifacts.json中的以下工件來繼續本文。

指向工件的Gist鏈接:

https://gist.github.com/thmsgbrt/1db36bc688d6984070badb14652ed65c

應用程序現在應該沒有錯誤了!

C-從我們的智能合約中獲取消息并顯示它們

現在我們已經在前端實例化了智能合約,我們終于可以獲取消息了。打開Chat.tsx并添加以下getMessages函數:

Chat.tsx通過它的props接收chatContract實例,我們可以用它來調用chatContract.getMessages()。通過接收到的消息,我們填充messages狀態變量。

如果你的聊天智能合約發布了消息,它們應該在聊天框中可見。否則,讓我們繼續允許用戶發送消息。以下是目前為止你應該看到的:

D-允許用戶在聊天中發布消息

在Chat.tsx中,添加以下sendMessage函數來發布消息:

讓我們繼續,在textarea中輸入一條消息并發送它!這應該會提示MetaMask,要求驗證交易,繼續:

我們UI中的“sendmessage”按鈕有不同的狀態。它的內容根據交易狀態而變化:

“WAIT”表示交易需要用戶批準。

“SENDING”表示交易正在被驗證。

要查看剛剛發布的消息,請重新加載頁面。它就應該會被添加。

但是在用戶體驗方面,必須重新加載頁面以查看是否有新消息發布并不是非常友好的。

E-收聽新信息

回到我們的智能合約。正如你所看到的,當用戶發布一條消息時,會觸發一個事件:

我們可以通過添加以下setupMessageListener函數來監聽這個事件:

接著,發送一條新消息,這一次,就應該不必重新加載頁面來查看剛剛發布的消息。如果另一個用戶發送消息,這顯然也是有效的。

最終項目

恭喜完成了本教程的學習。正如上面所承諾的,這里有一個最終項目的鏈接:

https://github.com/thmsgbrt/web3-chat-powered-by-ethereum-finished-project

Source:https://betterprogramming.pub/create-a-web3-chat-powered-by-ethereum-6886824fad7

Tags:ASKMASKMASETAICK MaskDMASKmast幣錢包SHIBAMETA

比特幣
金色前哨 | Sango Coin和BTC將作為公認加密貨幣存在于中非共和國_比特幣

外媒消息指出,中非共和國推出名為“SangoCoin”的國家加密貨幣。SangoCoin和比特幣將作為公認的加密貨幣存在于中非共和國。該代幣將用于使該國的基礎設施和計劃中的元宇宙項目現代化.

1900/1/1 0:00:00
音樂人的 NFT 指南_NFT

摘要: 本指南涵蓋了音樂人從0到1創建NFT所需要的所有內容,包括:音樂NFT的定義及優勢、如何選擇合適的區塊鏈、如何鑄造、如何定價、如何建立社區、如何制定版權規則以及一些可參考的優秀案例;適合.

1900/1/1 0:00:00
DAO 能否取代 VC 作為一種投資方式?_DAO

加密行業、區塊鏈技術和Web3的興起帶來了新的金融市場,這些市場引發了各方的興趣。此外,人們正在創造以去中心化自治組織為最突出的投資加密貨幣的新方法.

1900/1/1 0:00:00
晚間必讀5篇 | 從五大維度 建立起Layer 1評估框架_NFT

1.金色觀察|TheBlock:Axie5.4億美元是被黑客一份假Offer盜走的2022年7月7日TheBlock披露,2022年3月以太坊側鏈Ronin被盜5.4億美元的原因.

1900/1/1 0:00:00
金色早報 | 美國政府可能在年底前通過穩定幣立法_加密貨幣

頭條 ▌美國政府可能在年底前通過穩定幣立法金色財經消息,一位美國政府官員表示,美國聯邦政府正在與國會合作制定穩定幣立法,該立法可能在今年年底成為法律.

1900/1/1 0:00:00
金色Web3.0日報 | 多鏈NFT協議Citizen Finance疑似被攻擊_NFT

DeFi數據 1.DeFi代幣總市值:372.3億美元 DeFi總市值數據來源:coingecko2.過去24小時去中心化交易所的交易量:31.

1900/1/1 0:00:00
ads