Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何用Web3.jsAPI在页面中进行转账

如何用Web3.jsAPI在页面中进行转账

作者头像
Tiny熊
发布于 2018-10-18 07:34:53
发布于 2018-10-18 07:34:53
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

本文介绍如何使用Web3.js API 在页面中进行转账,是我翻译的文档Web3.js 0.2x 中文版 及 区块链全栈-以太坊DAPP开发实战 中Demo的文章说明。

写在前面

阅读本文前,你应该对以太坊、智能合约、钱包的概念有所了解,如果你还不了解,建议你先看以太坊是什么 除此之外,你最好还了解一些HTML及JavaScript知识。

转账UI 页面的编写

转账UI主体的界面如图:

实现这个界面很简单,这里就不代码了。大家可以打开Demo,右击查看页面源码。

用户环境检查

既然需要使用Web3.js API 在页面中进行转账, 首先应该检查在浏览器环境有没有安装好钱包,并且钱包应该是解锁状态。

  1. 先检查是否安装了MetaMask钱包:
代码语言:javascript
代码运行次数:0
运行
复制

MetaMask推荐在window加载时,进行MetaMask的检查,当然在没有安装MetaMask时,也可以指定一个节点Provider来创建web3,可以参考Web3.js 文档引入web3

  1. 检查是否钱包已经解锁:

我们在发送交易之前应该先首先检查一下当前钱包的一个状态,检查钱包是否解锁(是否输入了密码进入了MetaMask),通常使用eth下面的getAccounts来进行检查,getAccounts是会返回账号的一个列表,如果当前账号列表里面有数据的话,说明钱包已经解锁可以获得到账号,如果账号拿到的列表是空的话,那么说明钱包没有解锁。

可以把下面的代码加到上面的监听函数中:

代码语言:javascript
代码运行次数:0
运行
复制

发送交易

如果MetaMask钱包是解锁的,我们就可以来发送交易,发送交易使用sendtransaction这个方法。

代码语言:javascript
代码运行次数:0
运行
复制

第二个参数是回调函数用来获得发送交易的Hash值。

第一个参数是一个交易对象,交易对象里面有几个字段:

  • from : 就是从哪个账号发送金额
  • to : 发动到到哪个账号
  • value 是发送的金额
  • gas: 设置gas limit
  • gasPrice: 设置gas 价格

如果from没有的话,他就会用当前的默认账号, 如果是转账to和value是必选的两个字段。 在发送交易的时候弹出来MetaMask的一个授权的窗口,如果我们gas和gasPrice没有设置的话,就可以在MetaMask里面去设置。如果这两个gas和gas Price设置了的话,MetaMask就会使用我们设置的gas。

因此在发送交易的时候,关键是构造这样一个交易对象,JavaScrpt代码如下:

代码语言:javascript
代码运行次数:0
运行
复制

补充说明:$('#fromAccount').val()是使用JQuery用来获取用户输入内容,其次应该在实际构造发送交易之前对输入的参数做一个判断,web3.isAddress用来检查字符串是不是地址。另外对于一个向普通外部地址账号的转账,消耗的gas 是固定的21000。

运行测试

需要注意一点的是,由于安全原因,MetaMask只支持站点方式访问的页面,即通过http:// 来访问页面,在浏览器中通过file:// + 文件地址的方式是不行的。 因此需要把编写的代码放置到web服务器的目录下,自己试验下。

线上的Demo地址为:https://web3.learnblockchain.cn/transDemo.html

想好好系统学习以太坊DApp开发,这门视频课程以太坊DAPP开发实战不容错过。

深入浅出区块链 - 系统学习区块链,打造最好的区块链技术博客。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深入浅出区块链技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Web3项目开发框架及性能
Web3 的“框架”通常更像是一个工具集 (Toolchain) 或开发环境 (Development Environment),旨在简化智能合约的开发、测试、部署,以及去中心化应用 (DApp) 与区块链的交互。
数字孪生开发者
2025/04/28
370
Web3项目开发框架及性能
web3js 实战基本操作
这个篇文章的总结是在学习 b站web3.js的一个基础教程课 的课程总结,方便后续在文章中查找API。
六个周
2023/02/16
1.8K0
web3项目外包开发
Web3 项目的开发框架旨在简化去中心化应用程序 (dApp) 的构建过程。它们提供了一系列工具、库和组件,涵盖了智能合约开发、前端交互、区块链网络交互等方面,让开发者能够更高效地构建安全、可扩展的 Web3 应用。
数字孪生开发
2024/12/25
1190
10分钟,前端工程师也能玩转区块链Web3.js开发
一个不想写后台的前端不是一个好全栈,前端也可以玩转区块链Web3.js开发。 老吴(北京志顶科技有限公司技术总监、区块链专家)针对前端工程师如何玩转Web3.js开发后端钱包这一主题,分享了自己开
区块链大本营
2018/06/19
3.7K0
java工程师用spring boot和web3j构建以太坊区块链应用
区块链最近IT世界的流行语之一。这项有关数字加密货币的技术,并与比特币一起构成了这个热门的流行趋势。它是去中心化的,不可变的分块数据结构,这是可以安全连接和使用的密码算法。在这种结构中的每一区块通常包含前一个区块的加密哈希,一个时间戳,和交易数据。区块链是点对点管理网络的,并在加入每一个新的块之前进行节点间通信的验证。这是关于区块链的部分理论。简而言之,这是一种技术,它允许我们使用一个去中心化的方式管理双方的交易。现在,问题是我们如何在我们的系统中实现它。
笔阁
2018/09/04
1.8K0
java工程师用spring boot和web3j构建以太坊区块链应用
手把手实践一个DAPP,通往Web3.0之路!
导语 | 目前Web3.0的发展正在越来越火热,关于Web3.0的文章也层出不穷。本人在调研的时候阅读了很多文章,但很多概念还是有点模糊,因此自己实践并总结了一番,才有了比较深的理解。文章主要对web3.0进行一个整体的介绍,包括Web3.0相关基础概念以及动手实践了一个DAPP,实践出真理,鼓励大家都可以尝试一番~ 一、简介 (一)web的发展史 Web 1.0静态时代:网站只是带有文本和图像的静态页面,只能阅读文本,其他的事情都不能做。 Web 2.0大数据时代:用户可以和网络进行交互,包括发帖子、留言
腾讯云开发者
2022/07/19
1.1K0
手把手实践一个DAPP,通往Web3.0之路!
以太坊DApp系列(二)---从入门到出家
以太坊自2013年V神提出后,被无数人赋予美好的愿景,甚至被称为区块链2.0,其代币发行量更是达到了全球第二,仅次于比特币,而其带来的智能合约概念颠覆了人们对区块链的理解,让区块链不仅仅是个账本,更像一个操作系统,赋予了每个节点“智能”。经过差不多半年来断断续续的学习、理解和沉淀,笔者今天想揭开以太坊DApp神秘的面纱,看看以太坊是猴还是猿。
forrestlin
2018/07/17
3.6K0
以太坊DApp系列(二)---从入门到出家
快速学习-web3.js简介与入门
为了帮助 web3 集成到不同标准的所有类型项目中,1.0.0 版本提供了多种方式来处理异步函数。大多数的 web3 对象允许将一个回调函数作为最后一个函数参数传入,同时会返回一个promise 用于链式函数调用。
cwl_java
2020/04/17
7K0
程序员如何切入区块链去中心化应用开发
前段时间一个以太坊游戏应用:Fomo3D异常火爆,在短短的几天内就吸引了几万的以太币投入游戏,第一轮游戏一个“黑客”用了一个非常巧妙的利用以太坊规则成为了最终赢家,拿走了1万多以太币奖金。
Tiny熊
2018/10/18
1.1K0
程序员如何切入区块链去中心化应用开发
web3.js之以太坊交互
web3.js是一个与以太坊交互的重要库,在上一篇介绍的文章中viem也是与以太坊交互的一个库,从功能上讲各有千秋,比起viem,总体包体积web3.js更大,性能也没有viem更好,但很多dapp都是直接使用web3.js,所有这些并不影响众多dapp使用它与以太坊生态的交互
Maic
2025/02/12
1420
web3.js之以太坊交互
以太坊开发者指南 #2
在指南的第一部分[4]中,我们在与模拟的以太坊网络进行交互时,涵盖了很多内容。此时,你至少应该对如何回答这些问题有一个模糊的概念:
Tiny熊
2021/02/25
8030
第十三课 如何在DAPP应用实现自带钱包转账功能?
区块链是一个伟大的发明,它改变了生产关系。很多生态,有了区块链技术,可以由全公司员工的"全员合伙人"变成了全平台的”全体合伙人”了,是真正的共享经济模式。
辉哥
2018/08/10
1.8K0
第十三课 如何在DAPP应用实现自带钱包转账功能?
Microsoft Azure 以太坊节点自动化部署方案漏洞分析
为了迎合以太坊区块链1发展需求,Microsoft Azure2早在2016年9月九推出了以太坊节点走自动部署的模块。部署情况如下:
Seebug漏洞平台
2018/07/12
1.1K0
第十一课 从宠物商店案例看DAPP架构和WEB3.JS交互接口
【本文目标】 了解ETH生态下DAPP去中心化应用程序的框架和交互流程,了解WEB3.JS的作用和接口函数。 【前置条件】 完成了《第六课 技术小白如何开发一个DAPP区块链应用(以宠物商店为例)》的学习实践,对智能合约了解。 【技术收获】 1). DAPP架构 2). ETH节点框架 3).宠物商店的APP.js文件的业务处理流程图和函数介绍 4).web3.js接口
辉哥
2018/08/10
2.7K0
第十一课 从宠物商店案例看DAPP架构和WEB3.JS交互接口
第三课 以太坊术语说明及开发者资源列表
也称钱包,提供账户管理、挖矿、转账、智能合约的部署和执行等等功能,以太坊节点利用以太坊客户端接入到以太坊网络。 现在以太坊客户端主要有:Wallent/ist , Geth, Parity, Harmony,
辉哥
2018/08/10
7580
第三课 以太坊术语说明及开发者资源列表
解决Not possible to connect to the Web3 provider. Make sure the provider is runnin
当开发基于以太坊的去中心化应用(DApp)时,我们经常会遇到与Web3提供程序建立连接的问题。其中一个常见的错误是"Not possible to connect to the Web3 provider. Make sure the provider is running and a connection"。这个错误通常表示你的应用无法连接到Web3提供程序。 这篇博客文章将介绍如何解决这个问题,并提供一些可能的解决方案。
大盘鸡拌面
2023/10/26
4010
使用Remix编译和部署以太坊智能合约
Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的编译、部署至本地或测试网络、执行合约等功能。Solidity 是 以太坊Ethereum 官方设计和支持的开发语言,专门用于编写智能合约。
笔阁
2018/09/04
1.6K0
使用Remix编译和部署以太坊智能合约
前端通过web3调用智能合约进行逻辑交互
本例子通过crytozombie的例子,讲解前端界面与智能合约交互的逻辑。界面一般 用HTML, JavaScript(包括 ES6 promises),以及 JQuery 写网站了,JavaScript 来写,并不是 Solidity并不能直接与前端界面进行数据交互。
rectinajh
2021/11/24
6.1K0
一文读懂 Web 3.0 应用架构
以一个简单的博客网站Medium为例,用户可以在这里发布他们自己的内容并与其他用户的内容互动。
梦飞
2022/08/02
2.3K3
一文读懂 Web 3.0 应用架构
NFT链游系统开发Dapp部署技术
以太坊私链,也就是搭建属于自己的区块链,最常见的方式就是通过Geth(Go-Ethereum)搭建了,他可以算是比较真实的区块链平台了,唯一区别就是不需要挖矿,也就是不需要共识,Geth搭建私链时,我们需要配置创世块、bootnode、启动节点、挖矿等操作,搭建私链教程可点击此处。
T13Z4z77z558
2022/08/26
6350
NFT链游系统开发Dapp部署技术
相关推荐
Web3项目开发框架及性能
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验