内容简介:2018年11月2日,MetaMask和其他dapp浏览器默认停止公开用户帐户。这将使本文的一些代码破裂。我将使用web3 1.0和新的MetaMask界面发布更新版本。Metamask是网络上dApps的事实标准。它将Web3实例注入窗口对象,使其可用于JavaScript代码。我们将使用Web3 0.20版本,而不是Web3 1.0。Web3 1.0的代码会有所不同。每个dApp都有它的使命,但它们与Metamask的交互方式是相似的。在本文中,我们将介绍处理Web3/Metamask交互的十种最常见的
2018年11月2日,MetaMask和其他dapp浏览器默认停止公开用户帐户。这将使本文的一些代码破裂。我将使用web3 1.0和新的MetaMask界面发布更新版本。Metamask是网络上dApps的事实标准。它将Web3实例注入窗口对象,使其可用于JavaScript代码。
我们将使用Web3 0.20版本,而不是Web3 1.0。Web3 1.0的代码会有所不同。
每个dApp都有它的使命,但它们与Metamask的交互方式是相似的。在本文中,我们将介绍处理Web3/Metamask交互的十种最常见的实践。
1.检测Metamask并实例化Web3
根据官方文档,这是最好的方法。
这里发生了什么?首先,我们检查是否注入了Web3.如果它被注入,我们使用注入的提供者创建一个新实例。这是为什么?因为我们想要使用我们的库版本,而不是Metamask注入的版本。
如果Web3不存在,我们尝试连接到本地主机提供程序,如ganache。
2.检查Metamask是否已锁定
Metamask可以安装但锁定。为了与用户帐户交互并发送交易,用户必须解锁Metamask。
3.检查当前网络
主网络之外有许多测试网络。通常,你的合约将部署到特定网络。你希望确保用户在同一网络上运行Metamask。
4.获取当前帐户
用户可能在Metamask上有多个帐户,但他们希望dApp与当前帐户进行交互。
你应该始终从Web3实例中获取帐户。不要保留和重复使用它,因为用户可以随时更改其帐户。
5.获取当前帐户的余额
这里我们使用函数 getAccount
并调用 getBalance
。简单。
6.检测当前帐户是否已更改
用户可以随时更改其帐户。你应该为此做好准备并做出正确的反应。
7.检测Metamask是否已锁定/解锁
用户可以随时锁定/解锁。你的dApp应该正确处理它。
8.处理取消/确认
用户与dApp交互后,你必须使用Web3 API发送事务。用户可以按Metamask弹出窗口上的取消或确认按钮.如果处理不当,这可能会导致UI不一致。
要使用交易哈希立即返回,请调用 contract.methodName.sendTransaction
。
9.获取交易收据
一旦你的dApp交易被挖掘,交易收据就变得可用。但是没有事件/通知,所以我们必须实施一个民意调查机制。
10.监听Web3事件
Solidity事件处理很棒。假设你的合约实现了所有必要的事件,它们允许从丑陋的轮询切换到推送机制.你可以完全避免轮询并对事件做出反应。事件回调返回了大量数据,但我们最感兴趣的是 args
。
总结
无论你的dApp是什么,它仍然必须执行常见任务,例如检测Web3,获取帐户状态和平衡,识别当前网络以及处理交易和事件。我们已经讨论了如何使用十个代码片段来完成它。
PS
这里的很多示例使用的方法可能会因为Metamask的状态或某些变量在调用时未定义而引发错误.你应该将它们包装在生产环境中的try/catch中。为简单起见,此处使用了异步/等待。它可以用Promise then/catch代替。
======================================================================
如果你想学习区块链并在Blockchain Technologies建立职业生涯,那么请查看我们分享的一些以太坊、比特币、EOS、Fabric等区块链相关的交互式在线编程实战教程:
- java以太坊开发教程,主要是针对 java 和android程序员进行区块链以太坊开发的web3j详解。
- python以太坊,主要是针对 python 工程师使用web3.py进行区块链以太坊开发的详解。
- php以太坊,主要是介绍使用 php 进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
- 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
- 以太坊开发进阶教程,主要是介绍使用node.js、 mongodb 、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
- ERC721以太坊通证实战,课程以一个数字艺术品创作与分享DApp的实战开发为主线,深入讲解以太坊非同质化通证的概念、标准与开发方案。内容包含ERC-721标准的自主实现,讲解OpenZeppelin合约代码库二次开发,实战项目采用Truffle,IPFS,实现了通证以及去中心化的通证交易所。
- C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
- java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
- php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
- c#比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在C#代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是C#工程师不可多得的比特币开发学习课程。
- EOS入门教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
- 深入浅出玩转EOS钱包开发 ,本课程以手机EOS钱包的完整开发过程为主线,深入学习EOS区块链应用开发,课程内容即涵盖账户、计算资源、智能合约、动作与交易等EOS区块链的核心概念,同时也讲解如何使用eosjs和eosjs-ecc开发包访问EOS区块链,以及如何在React前端应用中集成对EOS区块链的支持。课程内容深入浅出,非常适合前端工程师深入学习EOS区块链应用开发。
- Hyperledger Fabric 区块链开发详解 ,本课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、信道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、nodejs链码与应用开发的操作实践,是Nodejs工程师学习Fabric区块链开发的最佳选择。
- Hyperledger Fabric java 区块链开发详解 ,课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、信道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、java链码与应用开发的操作实践,是java工程师学习Fabric区块链开发的最佳选择。
- tendermint区块链开发详解 ,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是 go 语言工程师快速入门区块链开发的最佳选择。
汇智网原创翻译,转载请标明出处。这里是 每个区块链开发人员都应该知道这些Web3和Metamask用例
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 关于区块链,你应该了解这七大职业
- 2020年,每位区块链从业者应该知道的10件事
- 互联网已经干得很好的事情,不应该是区块链干的
- 顶会论文应不应该提交代码?应该,但不能强制
- 单元测试 – 我应该对不应该在函数中传递的数据(无效输入)进行单元测试吗?
- 智能合约事件应该这么用
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Android群英传
徐宜生 / 电子工业出版社 / 2015-9 / 69.00元
《Android群英传》对具有一定Android开发基础的读者,以通俗易懂的语言介绍了Android开发的进阶技巧。《Android群英传》共分为13章,讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用技巧、Activi......一起来看看 《Android群英传》 这本书的介绍吧!
JS 压缩/解压工具
在线压缩/解压 JS 代码
SHA 加密
SHA 加密工具