从实战开始了解Web3(一)

这篇具有很好参考价值的文章主要介绍了从实战开始了解Web3(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为什么会有这篇文章

一年前从青岛离职回老家工作,来到这家公司的时候,这边的前端对于区块链基本说0了解,很多时候基本属于东拼西凑,来去获取账户,剩下的全靠后端,去中心化可以说完全没有接触过。

ps: 这篇文章并不会给你带来技能提升,只能说在未了解该类型项目时,让你以最快的速度能先项目实际开发中入手该类型项目

正文开始

  1. 首先准备基础环境 以谷歌浏览器 为例 我们需要下载一个扩展程序 meatMask 自己注册个钱包地址
  2. 项目中安装web3依赖 npm install web3

从现在开始正式开始与web3开始

检测环境

//检测当前浏览器是否以太坊兼容,并进行相应的处理

if (typeof window.ethereum === 'undefined') {
// 浏览器不存在以太坊兼容 看你怎么花式提示用户了
}else{
// 哎~ 检测到浏览器中 存在以太坊环境了  接下来就可以来去获取钱包地址了
}

获取账户

当我们检测到浏览器中存以太坊环境,那么我们就可以进行下一步,获取到用户的钱包账户了

window.ethereum.request({ method: 'eth_requestAccounts' })
          //如果用户拒绝了登录请求
          .catch(reason => {
            if (reason === 'User rejected provider access') {
              // 用户不想登录,你看该怎么办?
            } else {
              // 本不该执行到这里,但是真到这里了,说明发生了意外
            }
          })
          //如果用户同意了登录请求,你就可以拿到用户的账号
          .then(accounts => {
            //一旦获取了用户账号,你就可以签名交易
            // 这里获取到的accounts 是个数组 正常取0即可
          })

签名授权

这时候就有人会问了 为什么签名授权放在这里,或者说签名授权是啥?
这时候扯入一个知识点 叫做观察钱包,现在的钱包app 都支持观察钱包 观察钱包只需要钱包地址即可添加到钱包,这时候如果通过上方获取账户 同样可以正常获取到观察钱包账户,如果和合约交互那么可以不用考虑,如果你哪里钱包账户用作跟后端交互 那么这里就有必要开启签名授权,签名授权可以禁止观察钱包操作。具体样子可以自己写demo试一下,我懒得写

//签名授权的前提是 获取到用户账户
               let web3 = new Web3(window.ethereum);//创建web3
              web3.eth.personal.sign(web3.utils.fromUtf8('授权提示语'),'钱包账户', (err, res) =>{

               if (res != null && res !== undefined && res !== '') {
               //签名通过,做你自己的事 比如把钱包账户给跑出来
               } else {
               // 用户拒绝签名 ,提示该提示的
               }
             })
           }

到现在为止,你已经可以获取到用户的钱包账户了,可以开启下一步新的功能,整个web3实战的1/3基础你已经学会了哦~

监控链信息变更

哎 上文中不是说已经可以获取到钱包账户了么 ,那这个又是啥那?

先贴代码

// 帐户更改事件
//当你钱包账户切换的时候就会触发这个
    window.ethereum.on('accountsChanged', (accounts) => {
     // 如果返回数组中的第一个帐户不是您期望的帐户,您应该通知用户!将来,accounts 数组可能包含多个帐户。但是,数组中的第一个帐户将继续被视为用户的“选定”帐户。
      console.log(accounts)
   })

   // 链改变事件
   //当你链切换的时候就会触发这个
    window.ethereum.on('chainChanged', (chainId) => {
      console.log(chainId)
   })

我相信每个玩链的玩家,手里应该不止一个钱包账户,不止一个链有钱包账户,
那么如果他们在你的dapp中进行切换钱包或者切换链,那你是不是要做操作,哎! 这个监听就是为了做这个!!!文章来源地址https://www.toymoban.com/news/detail-455489.html

到了这里,关于从实战开始了解Web3(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从实战开始了解Web3(一)

    一年前从青岛离职回老家工作,来到这家公司的时候,这边的前端对于区块链基本说0了解,很多时候基本属于东拼西凑,来去获取账户,剩下的全靠后端,去中心化可以说完全没有接触过。 ps: 这篇文章并不会给你带来技能提升,只能说在未了解该类型项目时,让你以最快的

    2024年02月06日
    浏览(41)
  • Minima:为什么 Web3 需要完全去中心化

    我们邀请了来自Minima的Jonathan MacDonald关于 Web3 的话题来谈论 Web 3,他建议只有在 完全 去中心化的情况下才有可能,而加密世界还没有 – 还没有! 他在下面更详细地解释: 2021  Wired 对 Gavin Wood 的采访(他在 2014 年创造了“Web3”一词)明确区分了“Web 1.0”(包含开放、去中

    2024年01月21日
    浏览(55)
  • 为什么开发者关系对 Web3 的成功至关重要?

    之前,我们研究了早期初创公司如何建立开发者社区和跟踪产品与市场的契合度。如果没有有效的开发者关系团队,这些举措不太可能成功。 开发者关系专业人员通常作为信息枢纽,经常与产品、销售和营销等其他运营团队合作,并让每个人都了解情况。由于许多Web3初创公

    2023年04月08日
    浏览(53)
  • 为什么要打造AIGC元宇宙产业的 Web3 图像处理服务平台?

    Web3 的游戏规则是人人都有发币权,每个项目都可以发行代币,让用户一起参与建设,简 单一点说就是向用户集资,等项目发展起来了,大家可从币的增值上套现。另外,代币 token 也是用户参与治理的凭证,你有 token 就可以参与投票,决定项目的走向。 赛道之王 AIGC,打开

    2024年02月13日
    浏览(41)
  • 为什么axios会有params和data两个参数

    不知道大家有没有过这种感觉,突然一个问题百思不得其解,然后突然有一天就明白了。然后就感觉这个问题原来这么简单,本来想记录下来,但是又感觉这么简单的问题记录下来没啥意义。但是回过头来想一想,这个问题之前其实困扰了你很长时间。感觉还是记录一下比较

    2024年02月08日
    浏览(48)
  • NFT 为什么会有差异,探索底层的铸造协议

    NFT 的流行,让许多人都对它已经不怎么陌生了。但你真正了解过它么?从表面来看,每个 NFT 之间的性质、特点以及属性和功能等都没有多大的差别,当我们深入了解时才会发现,在不同应用领域的 NFT 之间,也有一些细微的不同。是什么导致了这些差异的存在呢?这个问题

    2024年02月15日
    浏览(42)
  • 为什么会有刷掉第一名、刷掉400+的院校?

    本期为大家整理热门院校-“南昌大学”的择校分析,这个择校分析专题会为大家结合:初试复试占比、复试录取规则(是否公平)、往年录取录取名单、招生人数、分数线、专业课难度等进行分析。希望能够帮到大家! –所有数据来源于研招网,如有错误,欢迎指正,谢谢!

    2024年02月08日
    浏览(57)
  • 【C++入门】你知道C++为什么会有内联函数吗?

    👦个人主页:@Weraphael ✍🏻作者简介:目前学习C++和算法 ✈️专栏:C++航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞👍🏻 收藏 📂 加关注✨ 本章是补充C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的。 我

    2024年02月03日
    浏览(72)
  • 为什么会有分布式锁?分布式锁实现方案

    分布式锁是控制分布式系统之间同步访问共享资源的一种方式。分布式环境下会出现资源竞争的地方都需要分布式锁的协调。 分布式锁的作用:在整个系统提供一个全局、唯一的锁,在分布式系统中每个系统在进行相关操作的时候需要获取到该锁,才能执行相应操作。 服务

    2024年02月08日
    浏览(46)
  • 为什么会有JMM?从0到1一次性说清楚

    JMM(Java Memory Model)是一种规范,定义了在多线程环境下Java程序中的内存访问行为。JMM保证了在多线程环境下程序的正确性,同时也允许编译器和处理器对指令进行优化,以提高程序的性能。 Java线程之间的通信由Java内存模型(简称JMM)控制,从抽象的⻆度来说,JMM定义了线

    2023年04月20日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包