宇宙链 宇宙链
Ctrl+D收藏宇宙链

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

作者:

时间:1900/1/1 0:00:00

在本文中,我们将学习如何将以太坊智能合约连接到React应用程序,并使用户能够与之交互。

要在浏览器中安装MetaMask扩展

一个代码编辑器

关于以下主题的一些知识:以太坊,MetaMask, React, TypeScript

在以太坊主网上工作要花真金白银!

在本教程中,我假设的是你的MetaMask设置为使用Rinkeby。Rinkeby是一个复制主网的测试网络,允许我们免费部署和使用智能合约。

我们将为这个基于区块链的聊天建立一个界面,如下所示:

左边的侧边栏包含一个按钮,用于连接到聊天或指示连接用户的地址。

右侧的聊天框,显示消息和输入栏。

在本篇文章中,我们不会关注如何让UI更漂亮,我们的目标是关注如何用最直接的方式与智能合约交互。

我已尽力使本教程易于理解,但如果有些东西还是不甚清晰,也不用灰心,你会在本文的最后找到一个包含已完成项目的 GitHub 存储库的链接。

首先,我们要连接到前端的智能合约,如下所示:

event?、emit 这些东西是什么?

event 用于通知外部用户区块链上发生的事情。

在我们的例子中,“外部用户”是我们的前端应用程序,它将监听发送到智能合约的新消息,因此我们可以立即在我们的UI中显示它们。

Opside已上线Pre-alpha激励测试网,预计将运行大约三个月:5月24日消息,去中心化ZK Raas平台Opside宣布,已上线Pre-alpha激励测试网,预计将运行大约三个月,鼓励PoS验证者、PoW矿工、开发人员和所有最终用户的广泛参与。Opside旨在通过该测试网测试和完善以下功能:1.混合PoS和PoW共识机制的集成与有效性;2.成功适应并与ETH2.0共识模型保持一致;3.ZK-Rollup执行环境的操作性能和灵活性;4.实施各种策略,以实现不同层和ZK-Rollups之间顺利和安全的资产转移;5.代币经济学模型的实际应用。[2023/5/24 15:22:33]

我准备了一个样板,这样你就可以马上开始编码了。

以下是启动项目的Github链接:

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

一旦你克隆了项目,使用npm install安装依赖项,并用npm start启动了它,那么花几分钟检查几个文件以了解应用是如何构造的,也是有必要的。这是非常基本的React,就不在此赘述了。

以下是我们的行动计划:

A-允许用户通过MetaMask连接到聊天

B-在我们的前端实例化智能合约

C-从我们的智能合约中获取消息并显示它们

D-允许用户在聊天中发布消息

E-收听新信息

A - 允许用户通过MetaMask连接到聊天

要做到这一点,我们首先需要确保MetaMask扩展安装在了浏览器上。

昨日BRC-20相关交易费用骤降至30 BTC:金色财经报道,据 Dune Analytics 数据显示,BRC-20 相关交易(铸造、转移和部署)费用连续三日下滑,昨日BRC-20相关交易费用骤降至30 BTC附近。占比特币当日全部交易手续费的15%。[2023/5/12 14:59:35]

让我们创建一个Hook来实现这一点:

解释:

MetaMask在window.ethereum注入了一个全局API。该API允许网站请求用户的以太坊账户,从用户连接的区块链读取数据,并建议用户签署消息和交易。

现在我们已经准备好了Hook,转向Sidebar.tsx,这样我们就可以利用它:

以现在,我们有一种方法来检测是否安装了MetaMask,如果没有安装MetaMask,我们可以警告用户,他们需要在浏览器上安装MetaMask。

接下来,让我们为“Connect With MetaMask”按钮添加一个onClick处理程序:

MolochDAO推出基于零知识证明的“隐私池”加密混合服务:3月7日消息,为以太坊基础设施项目提供资金支持的去中心化自治组织MolochDAO推出基于零知识证明的“隐私池”加密混合服务,旨在保护链上交易时的隐私,同时还允许用户证明他们遵守当地法规。

据悉,MolochDAO的隐私池(Privacy Pools)将利用零知识证明这一隐私保护技术,使用户能够证明他们正在将受制裁的钱包列入黑名单,同时无需透露他们是谁,也无需披露全部交易历史。(The Defiant)[2023/3/7 12:46:33]

现在,当用户单击 Connect With MetaMask 时,MetaMask 扩展程序将提示一个模式并询问要使用哪个帐户:

MetaMask 要求我们连接到我们的聊天

现在已连接!

侧边栏现在显示你的以太坊地址!

为了能够获取信息并使用户能够发送消息,我们需要有一种方法与我们的智能合约进行通信。

我们要使用ethers库。

ethers是一个库,可以帮助我们的前端与智能合约进行对话。ethers通过提供商(在我们的例子中是MetaMask)连接到以太坊节点,它可以帮我们做很多事情。

让我们创建另一个Hook,它将允许我们在ethers的帮助下与我们的智能合约交互:

彭博社:FTX破产前SBF曾与拜登高级顾问至少有过4次未披露的会晤:金色财经报道,据彭博社披露,FTX破产前SBF曾与拜登高级顾问至少有过4次会晤。据悉,SBF于9 月 8 日会见拜登高级顾问之一史蒂夫·里凯蒂 (Steve Ricchetti),这次会议以前没有被报道过,此前也曾于4 月 22 日和5 月 12 日造访白宫,每次都于史蒂夫·里凯蒂会面,5 月 13 日又和拜登另一位高级助手布鲁斯·里德会面。

此外,SBF的兄弟Gabriel Bankman-Fried也造访过白宫,有官员称Gabriel Bankman-Fried主要讨论其 运营的 Guarding Against Pandemics 基金会事物。此前报道,SBF是美国民主党2022 年选举周期中的第二大个人捐助者。[2022/12/30 22:16:05]

让我们来分解一下:

我们先检查一下window.ethereum 是否存在并从中获取了 Web3 Provider。

如果已经定义了accountis,这意味着用户点击了“Connect With MetaMask”按钮,webThreeProvider.getSigner()会返回给我们他们的地址。

最后,返回一个带有新的ether . contract()的合约实例。

实例化我们的智能合约

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

BCapitalGroup已关闭其2.5亿美元早期基金,将关注Web3等新兴主题:金色财经报道,根据该公司的一份声明,总部位于新加坡和美国的风险投资公司B Capital Group已关闭其25亿美元的早期Ascent Fund II。Ascent Fund II是B Capital的第一只专注于早期阶段的基金,投资于全球A轮融资的前种子,重点关注美国和亚洲的初创企业。

根据向美国证券交易委员会(SEC)提交的文件,今年3月,据报道,B Capital从101名投资者那里为其第三只全球增长基金筹集了至少11亿美元。该基金的目标是20亿美元,B Capital管理着65亿美元的资产。近几个月来,该公司还任命了大量高层人员,以帮助管理其扩大的投资组合。仅在2月份,它就任命了三名合伙人,Matt Levinson负责金融科技、区块链和房地产投资、Karan Mohla在印度和东南亚的早期投注、Adam Seabrook对数字健康和相关领域的后期投资。[2022/7/20 2:24:28]

你是否注意到了,我们这里有一个错误,需要去做两件事情来解决问题:

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

标签:CHAmetamaskASKMETDogechainmetamask安卓app下载mask币圈子DOGEMETA币

以太坊最新价格热门资讯
金色观察 | 快速走出熊市 机构如何在危中找机会

金色财经 区块链6月25日讯  自比特币诞生以来,加密市场在短短十几年中经历过多次波折。当时间来到2022年,加密行业似乎又一次陷入了困境.

1900/1/1 0:00:00
Coinbase背后的大赢家:成功来自深刻的思考与自律

可行的见解: 如果你只有几分钟的时间,下面是投资者、经营者和创始人应该了解的Union Square Ventures(USV)的情况。一致性大师。USV可能是过去20年中最稳定的风险投资公司.

1900/1/1 0:00:00
熊市之中 加密市场接下来将会发生什么?

你已经意识到自己正处于熊市中。在过去的几周/几个月里,您可能损失的钱比很长一段时间以来的损失都要多。事实证明,损失数字不仅会上升,而且如果它听来像一个庞氏局,并且像一个傲慢的混蛋一样发推文,它可能真是一个庞氏局.

1900/1/1 0:00:00
UST 崩盘后 稳定币市场格局将迎来新机遇?

June 2022, SimonData Source: Footprint Analytics Stablecoins After the UST Event Dashboard曾经一度被看好的稳定币 UST 从 5 月 9 日开始.

1900/1/1 0:00:00
Linera:有Facebook背景的新公链

新公链的故事尚未结束,Solana、Avalanchr、Near 还没有让用户完全满意,新公链故事势必延续.

1900/1/1 0:00:00
新京报:数字藏品何以“守正创新”?

6月30日,新京报贝壳财经会客厅——建立数字藏品的正向发展标准和路径,数字藏品行业如何“守正·创新”规范发展研讨会在北京举行.

1900/1/1 0:00:00