月亮链 月亮链
Ctrl+D收藏月亮链
首页 > Polygon > 正文

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

作者:

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

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

要在浏览器中安装MetaMask扩展

一个代码编辑器

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

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

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

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

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

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

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

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

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

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

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

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

美联储前主席伯南克:7月加息可能是最后一次:金色财经报道, 美联储前主席伯南克周四说:”普遍预期中的美联储下周加息,可能是本轮紧缩行动中的最后一次。伯南克表示,随着租金上涨消退和汽车价格下跌,他预计未来六个月通胀“更持久”地下降至3%至3.5%的区间。到明年初,通胀率将降到接近或略高于3%的水平,谈到就业市场时,伯南克表示,虽然职位空缺数量有所下降,但相对于每个被算作失业的人员,仍有大约1.6个空缺职位。这位前美联储主席表示,作为抗击通胀的代价,美国可能会遭遇经济放缓,但他强调任何衰退都可能是温和的,大家会看到的是失业率非常温和的上升和经济略微放缓。[2023/7/21 11:08:17]

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

以下是启动项目的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扩展安装在了浏览器上。

加密货币交易所LCX宣布上线XRP:金色财经报道,加密货币交易所LCX宣布上线XRP。[2023/7/20 11:05:44]

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

解释:

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

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

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

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

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

Lido业务发展主管:质押监管政策影响尚未确定,个人作为美国人或面临无法为Lido工作的风险:2月13日消息,据彭博社报道,对于美国证券交易委员会(SEC)最近对加密质押行业的监管行动影响,流动性质押协议Lido的业务发展主管Jacob Blish表示:“我个人认为,这(美国SEC监管)对链上无许可的流动性质押或质押提供商来说是一个净收益,但这真的取决于最终的解决方案是什么。”不过如果美国监管机构最终得出结论,没有任何美国人可以与任何质押服务进行互动,那么可能会有不同的问题,他个人面临的风险是,其作为美国人可能也无法为Lido工作。Blish表示:“最令人失望的是,作为一个行业,我们一直被要求提高透明度,但作为美国公民,我却得不到透明度以及监管机构的决策过程如何进行。”

Nansen数据显示,Lido Finance在该平台上质押了超过480万枚ETH,价值约72亿美元。

此前金色财经报道,对于与Kraken的和解协议,美SEC主席表示,质押即服务提供商必须注册,并提供信息披露和投资者保护。[2023/2/13 12:03:32]

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

现在已连接!

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

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

我们要使用ethers库。

蔚来创始人:我是反对比特币的,哪怕公司赔破产了也不会妥协:金色财经报道,在今日的蔚来NIODAY2022媒体面对面上,蔚来创始人、董事长、CEO李斌,蔚来联合创始人、总裁秦力洪接受媒体采访。对于数据泄露事件,李斌表示,蔚来确实可以做得更好,这是去年8月以前的数据,并不是近期黑客的攻击,已经报案了,跟监管机构第一时间进行了交流,非常愤慨有这样的事。他说,我是反对比特币的,让这样的勒索事件非常容易,妥协会开非常不好的先河。用户的损失会承担责任,哪怕公司赔破产了,也不会妥协。

此前消息,2022年12月11日,蔚来公司收到外部邮件,声称拥有蔚来内部数据,并以泄露数据勒索225万美元(当前约1570.5万元人民币)等额比特币。[2022/12/25 22:06:49]

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

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

让我们来分解一下:

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

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

V神向狗狗币基金会捐赠2000万枚DOGE:11月14日消息,据链上数据显示,以太坊联合创始人Vitalik Buterin再次向狗狗币基金会提供捐赠,本次捐赠规模为2000万枚DOGE,按照0.085美元价格计算约合170万美元,此前Vitalik Buterin曾在五月份向狗狗币基金会捐赠了500枚ETH。2021年8月,Vitalik Buterin和Neuralink首席执行官Jared Birchall一起加入了该基金会的顾问委员会,截至目前狗狗币基金会尚未公布将如何使用这笔捐赠。[2022/11/14 13:01:21]

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

实例化我们的智能合约

前往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

标签:CHATAMAASKAMAVikingsChainmetamask.ioapp官网下载maskdoge币最新消息metamask钱包app下载官方

Polygon热门资讯
UNI:金色数藏 | 《嘻哈一夏》优先购、免费空投今日截止_数字艺术

金色数藏联合元気星空,携手知名星座娱乐头部IP同道大叔,推出同道大叔十二星座夏日限定《嘻哈一夏》数字藏品,7月8日将正式上线【金色数藏】平台进行公开发售.

1900/1/1 0:00:00
WEB:去中心化社交图谱和创造者经济现状_WEB3

原文作者: ? Sneha Prajapati资本主义世界的运行原则是获取更多的资源,这其中包括从他人身上获取财富.

1900/1/1 0:00:00
数字人:数字人民币智慧学生证:对于特定群体硬钱包_币智慧app下载

据移动支付网了解,该产品内置NFC模块,集数字人民币硬钱包、GPS定位、亲情通话、紧急求助、电子围栏等功能于一身,可为校方、家长和学生提供更加便捷、安全的支付和使用体验.

1900/1/1 0:00:00
BTC:金色早报 | V神抨击比特币开发者攻击PoS共识机制_区块链技术通俗讲解小区

头条▌V神抨击比特币开发者攻击PoS共识机制7月4日消息,以太坊创始 Vitalik Buterin站出来为权益证明(PoS) 机制辩护,因别人指控该协议没有提供去中心化共识.

1900/1/1 0:00:00
元宇宙:中国电子报:元宇宙的傲慢与偏见_区块链的未来发展前景ppt

美国著名科幻大师尼尔·斯蒂芬森在其小说《雪崩》中写道:“戴上耳机和目镜,找到连接终端,就能够以虚拟分身的方式进入由计算机模拟、与真实世界平行的虚拟空间。”这是人们第一次听到关于元宇宙的概念.

1900/1/1 0:00:00
区块链:详解功能代币的价值来源及设计方法_LABS

X to earn的一个潮流逐渐受到大家追捧,可惜的是很多系统的代币设计都不是很成功。其中的原因有很多,但是一个最重要的原因是无脑撒币:即简单的因为用户使用了平台就给予用户代币.

1900/1/1 0:00:00