在本文中,我們將學習如何將以太坊智能合約連接到React應用程序,并使用戶能夠與之交互。
要在瀏覽器中安裝MetaMask擴展
一個代碼編輯器
關于以下主題的一些知識:以太坊,MetaMask, React, TypeScript
在以太坊主網上工作要花真金白銀!
在本教程中,我假設的是你的MetaMask設置為使用Rinkeby。Rinkeby是一個復制主網的測試網絡,允許我們免費部署和使用智能合約。
我們將為這個基于區塊鏈的聊天建立一個界面,如下所示:
左邊的側邊欄包含一個按鈕,用于連接到聊天或指示連接用戶的地址。
右側的聊天框,顯示消息和輸入欄。
在本篇文章中,我們不會關注如何讓UI更漂亮,我們的目標是關注如何用最直接的方式與智能合約交互。
我已盡力使本教程易于理解,但如果有些東西還是不甚清晰,也不用灰心,你會在本文的最后找到一個包含已完成項目的 GitHub 存儲庫的鏈接。
首先,我們要連接到前端的智能合約,如下所示:
event?、emit 這些東西是什么?
event 用于通知外部用戶區塊鏈上發生的事情。
在我們的例子中,“外部用戶”是我們的前端應用程序,它將監聽發送到智能合約的新消息,因此我們可以立即在我們的UI中顯示它們。
尼日利亞證券監管機構稱Binance的活動是非法的:金色財經報道,尼日利亞證券交易委員會在一份通知中表示,Binance的活動在尼日利亞是非法的,該委員會還命令所有加密貨幣平臺提供商停止招攬尼日利亞公民。
尼日利亞證券交易委員會稱,該公告重申6月9日的警告,其中提到了一家名為Binance Nigeria Ltd.的公司。Binance當時表示,該公司與其并無關聯。在周五的通知中,尼日利亞SEC特別提到了這家加密貨幣交易所的網站。
尼日利亞證券交易委員會去年表示,它將所有加密貨幣視為證券。該國一直在處理加密交易所的注冊申請,但在與中央銀行達成協議之前,不會完成注冊。中央銀行阻止了當地金融機構與加密服務提供商的互動。[2023/7/31 16:08:57]
我準備了一個樣板,這樣你就可以馬上開始編碼了。
以下是啟動項目的Github鏈接:
https://github.com/thmsgbrt/web3-chat-powered-by-ethereum-starter
一旦你克隆了項目,使用npm install安裝依賴項,并用npm start啟動了它,那么花幾分鐘檢查幾個文件以了解應用是如何構造的,也是有必要的。這是非常基本的React,就不在此贅述了。
以下是我們的行動計劃:
A-允許用戶通過MetaMask連接到聊天
B-在我們的前端實例化智能合約
C-從我們的智能合約中獲取消息并顯示它們
D-允許用戶在聊天中發布消息
E-收聽新信息
A - 允許用戶通過MetaMask連接到聊天
A股收盤:深證區塊鏈50指數上漲1.45%:金色財經消息,A股收盤,上證指數報3155.22點,收盤上漲1.01%,深證成指報11332.01點,收盤上漲2.13%,深證區塊鏈50指數報2917.12點,收盤上漲1.45%。區塊鏈板塊收盤上漲0.28%,數字貨幣板塊收盤上漲0.6%。[2023/1/5 10:23:05]
要做到這一點,我們首先需要確保MetaMask擴展安裝在了瀏覽器上。
讓我們創建一個Hook來實現這一點:
解釋:
MetaMask在window.ethereum注入了一個全局API。該API允許網站請求用戶的以太坊賬戶,從用戶連接的區塊鏈讀取數據,并建議用戶簽署消息和交易。
現在我們已經準備好了Hook,轉向Sidebar.tsx,這樣我們就可以利用它:
以現在,我們有一種方法來檢測是否安裝了MetaMask,如果沒有安裝MetaMask,我們可以警告用戶,他們需要在瀏覽器上安裝MetaMask。
接下來,讓我們為“Connect With MetaMask”按鈕添加一個onClick處理程序:
河南:到2025年全省元宇宙產業發展初具規模,核心產業規模超過300億元:金色財經報道,河南省人民政府辦公廳近日印發《河南省元宇宙產業發展行動計劃(2022-2025年)》。《行動計劃》明確,到2025年,全省元宇宙產業發展初具規模,核心產業規模超過300億元,帶動相關產業規模超過1000億元,初步形成具有重要影響力的元宇宙創新引領區。建成1個元宇宙核心園區、3-5個特色園區,培育10家具有核心競爭力的元宇宙骨干企業、200家細分領域“專精特新”企業、500家創新型中小企業。[2022/9/27 22:33:10]
現在,當用戶單擊 Connect With MetaMask 時,MetaMask 擴展程序將提示一個模式并詢問要使用哪個帳戶:
MetaMask 要求我們連接到我們的聊天
現在已連接!
側邊欄現在顯示你的以太坊地址!
為了能夠獲取信息并使用戶能夠發送消息,我們需要有一種方法與我們的智能合約進行通信。
我們要使用ethers庫。
ethers是一個庫,可以幫助我們的前端與智能合約進行對話。ethers通過提供商(在我們的例子中是MetaMask)連接到以太坊節點,它可以幫我們做很多事情。
MakerDAO正投票決定5億枚DAI的投資策略分配方式:6月28日,據官方治理網站,MakerDAO正在投票決定5億枚DAI在不同的投資策略之間分配的方式。分配方案包括100%購買美國短期國債和80%購買美國國債+20%購買IG Corp債券以及否決上述分配方式,80%購買美國國債+20%購買IG Corp債券的方案目前已獲得18,829枚MKR贊同,支持率為69.12%。投票已于北京時間6月28日凌晨0時開始,將于7月1日凌晨0時結束。
據悉,雖然在之前的民意調查中,100%購買美國短期國債的方式獲得了最多支持率(52%),但MakerDAO將按照鏈上投票的決定執行資本部署。
此前MakerDAO在MIP65中加入并激活一個RWA財庫,該財庫通過PSM收購USDC,并將其投資于經批準的債券策略。[2022/6/28 1:35:51]
讓我們創建另一個Hook,它將允許我們在ethers的幫助下與我們的智能合約交互:
讓我們來分解一下:
我們先檢查一下window.ethereum 是否存在并從中獲取了 Web3 Provider。
如果已經定義了accountis,這意味著用戶點擊了“Connect With MetaMask”按鈕,webThreeProvider.getSigner()會返回給我們他們的地址。
最后,返回一個帶有新的ether . contract()的合約實例。
觀點:不應冒險投資加密資產:6月11日消息,CNBC主持人Jim Cramer表示,他堅信數字資產BTC和ETH的價值,但同時警告投資者不應冒險投資。
根據CNBC Make It最近的一份報告,盡管Cramer是BTC和ETH的信徒,但他表示加密資產具有高度投機性,在交易者投資組合中的占比不應超過 5%。,交易者更不應該借錢投資加密資產。(Dailyhodl)[2022/6/11 4:18:29]
實例化我們的智能合約
前往App.tsx,在那里我們可以使用我們創建的hook:
你是否注意到了,我們這里有一個錯誤,需要去做兩件事情來解決問題:
contractAddress不是合約地址。
./contract/BlockchainChat-artifact.json是空的。
合約地址
這個地址告訴我們在哪里找到區塊鏈上的區塊鏈聊天智能合約。
你可以使用我為大家部署到 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
應用程序現在應該沒有錯誤了!
現在我們已經在前端實例化了智能合約,我們終于可以獲取消息了。打開Chat.tsx并添加以下getMessages函數:
Chat.tsx通過它的 props接收chatContract實例,我們可以用它來調用chatContract.getMessages()。通過接收到的消息,我們填充messages狀態變量。
如果你的聊天智能合約發布了消息,它們應該在聊天框中可見。否則,讓我們繼續允許用戶發送消息。以下是目前為止你應該看到的:
在Chat.tsx中,添加以下sendMessage函數來發布消息:
讓我們繼續,在textarea中輸入一條消息并發送它!這應該會提示MetaMask,要求驗證交易,繼續:
我們UI中的“send message”按鈕有不同的狀態。它的內容根據交易狀態而變化:
“WAIT”表示交易需要用戶批準。
“SENDING”表示交易正在被驗證。
要查看剛剛發布的消息,請重新加載頁面。它就應該會被添加。
但是在用戶體驗方面,必須重新加載頁面以查看是否有新消息發布并不是非常友好的。
回到我們的智能合約。正如你所看到的,當用戶發布一條消息時,會觸發一個事件:
我們可以通過添加以下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:METAETAMETCHAMusk Metaversemetamask官方網站HELMET幣plugchain幣總量
原文來源:以太坊 Reddit原文作者:以太坊基金會研究團隊2022 年 7 月 7 日,以太坊基金會研究團隊在 Reddit 上舉行了第八次 AMA.
1900/1/1 0:00:00大家下載鏈接:https://m.cryptopal.live/?name=s1(可復制到手機瀏覽器.
1900/1/1 0:00:00金色晚報 | 1月30日晚間重要動態一覽:12:00-21:00關鍵詞:Tether、天橋資本、DeFi研究報告、Cardano 1. 2020年以太坊鏈上ETH及穩定幣結算量超過1.
1900/1/1 0:00:00根據最新數據,恐慌性拋售導致比特幣價格下跌的觀點似乎不那么站得住腳了。每個人都在期待比特幣再次出現投降事件,但數據顯示,大規模買入已經開始.
1900/1/1 0:00:00這是全球首個以完整的 Web3 視角觀察行業的綜合性報告。作為長期的從業者, 我們清晰地看到了隨著區塊鏈技術的不斷成熟, 算力、加密市場、元宇宙、Web3 等領域蓬勃發展, 這個行業的邊界在一步.
1900/1/1 0:00:001.金色觀察 | 穩定幣未來:成為美元霸權守護者或是去中心化殉道者隨著美聯儲實施緊縮政策,市場流動性正在迅速枯竭。因此,加密貨幣市場也面臨寒冬.
1900/1/1 0:00:00