前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >第142期:一次写区块链前端项目的体验

第142期:一次写区块链前端项目的体验

作者头像
terrence386
发布于 2023-02-25 09:18:58
发布于 2023-02-25 09:18:58
44000
代码可运行
举报
运行总次数:0
代码可运行

最近闲着没事儿,一直在帮朋友写一个关于区块链的项目,当然,我主要负责前端界面的搭建以及和合约的交互。

界面的部分很简单,采用vue3+ts以及antv封装一些常用的组件即可,而合约交互的部分,因为原先没有接触过,所以花了点时间去适应,总的来说写这个项目还是比较顺畅的。

区块链和前端相关的技术大体上有这么三个东西:

  • MetaMask,俗称小狐狸。主要用来做账号的管理等工作。
  • web3.js 。主要用来对合约进行实例化,发起转账、查询、格式化等跟合约交互的动作。
  • solidity.js 。主要用来写合约,写好后可以进行编辑并发布,详情可以查看其网站网站地址。

MetaMask使用起来很简单,我们只需要安装一个插件即可,然后按照文档上的教程就可以进行获取账号、切换账号等操作。

比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ethereum.on('accountsChanged', function (accounts) {
  // Time to reload your interface with accounts[0]!
});

web3.js使用起来也很简洁,我们只需要安装最新的版本,就可以使用它的各种API了。

安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install web3

然后做一个初始化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (typeof web3 !== 'undefined') {
  web3 = new Web3(web3.currentProvider);
} else {
  // set the provider you want from Web3.providers
  web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}

接下来我们就可以无忧无虑的使用它的各种API。

遇到的问题

问题大都是和合约交互时产生的,前端调试起来很不方便,所以为了调试我们开了一个合约的浏览器,这样在出现问题时,可以根据transactionHash找到对应的操作,看到对应的报错。

另外一个值得注意的问题是合约的精度问题,有的精度是18位小数,有的是6位小数,所以单位不统一,后面的各种计算都是错误的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//**

erc20 token的数量需要先弄明白了,
比如你这个usdc的decimal是18,
那么1个usdc对应的数值就是1后面跟180,
即1000000000000000000表示1个usdc
*//

最重要的一点:1 token = 1 x 1e[decimals] 记住这个就可以了。

其他要注意的事情

关于这个项目,其实大家都是用空闲的时间来写的,那么管理就成了一件非常困难的事情,因为大家的空闲的时间不一样,有的白天有时间,有的晚上才有时间,沟通就成了一件成本非常高的事情。

所以在沟通的时候我尽量选择电话或者会议进行沟通,相比于打字,这种效率要高很多。

其次,在沟通的时候一定不要用命令的语气,因为大家都是一样的,发现问题以后,在时间方便的情况下及时做出修改即可。

最后

随着时间的推移,我越来越发现其实项目能否做成功,关键点不在于用的什么先进的技术,而在于项目开发过程中的沟通是否有效。

什么是有效的沟通?过程顺畅,参与的人员没有发生矛盾,即便有矛盾,后面也可以将矛盾化解,使问题得以解决。

这才是有效的沟通。

如果沟通及时、有效,问题能够及时解决,项目自然而然的就可以做成。

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

本文分享自 JavaScript高级程序设计 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
第二十八课 区块链应用DAPP如何探测MetaMask的账号和登录状态?
目前PC版区块链DAPP应用中,大部分程序都是使用MetaMask作为去中心话钱包进行交易操作。 那么,作为程序员,如何实现类似的功能呢?通过本文学习,你可以了解: 1)加密猫的账户检测流程 2) 检测MetaMask是否已安装 3)检测MetaMask账号已锁定 4)探测MetaMask是否处于主网 5)探测监听账号有变化
辉哥
2018/11/26
2.7K0
第二十八课 区块链应用DAPP如何探测MetaMask的账号和登录状态?
前端通过web3调用智能合约进行逻辑交互
本例子通过crytozombie的例子,讲解前端界面与智能合约交互的逻辑。界面一般 用HTML, JavaScript(包括 ES6 promises),以及 JQuery 写网站了,JavaScript 来写,并不是 Solidity并不能直接与前端界面进行数据交互。
rectinajh
2021/11/24
6.2K0
Web3与智能合约交互实战
在最初学习以太坊的时候,很多人都是自己创建以太坊节点后,使用geth与之交互。这种使用命令行交互的方法虽然让很多程序员感到兴奋(黑客帝国的既视感),但不可能指望普通用户通过命令行使用Dapp。因此,我们需要一种友好的方式(比如一个web页面)来与智能合约交互,于是问题的答案就是web3.js。
Tiny熊
2019/08/01
2.5K0
Web3与智能合约交互实战
【总结】1577- Web3.0前端工程师需要具备哪些技术?
英文 | https://levelup.gitconnected.com/what-technologies-do-web3-0-front-end-engineers-need-to-have-25748238a75f
pingan8787
2023/02/13
8920
React Native也能玩区块链了
区块链天生具有的不可更改性和去中心化特性,使得开发许多令人惊叹的使用案例成为可能,例如自治组织、销售、社交网络、保险公司以及成百上千人之间的游戏。
xiangzhihong
2022/11/30
1.4K0
开发基于以太坊智能合约的DApp
最近要找个H5的前端写个简单的DApp,聊过几个H5的工程师,都被跟以太坊交互的部分吓住了。虽然网上有N多的教程,但是对于H5工程师来说,还是有些困难。分析其原因,在于不了解ganache-cli(原来叫testrpc)/web3/以太坊节点/metamask之间的架构关系。
笔阁
2018/09/04
1.3K0
通过web3.js与以太坊客户端进行交互
web3.js是一个js API库。要使DApp在以太坊上运行,可用web3.js库提供的web3对象。
JavaEdge
2024/07/27
2240
Web3.0对前端很友好?
最近 web3.0 的呼声真的是越来越高,也越来越疯狂。对于我们前端来说,我们需要具备什么技术呢?
程序猿川子
2022/12/13
1.2K0
Web3.0对前端很友好?
web3js 实战基本操作
这个篇文章的总结是在学习 b站web3.js的一个基础教程课 的课程总结,方便后续在文章中查找API。
六个周
2023/02/16
1.8K0
一个真实区块链项目的演练:以太坊Voting Dapp
投票作为一个区块链应用,是因为集体决策,尤其是投票机制, 是以太坊的 一个核心的价值主张。另一个原因在于,投票是很多复杂的去中心化应用的基础构件,所以我们选择了投票应用作为学习区块链应用开发的第一个项
rectinajh
2018/05/17
1.5K0
【一步步一起学DApp开发】(四)web3.js 基本使用 | 连接geth | 创建web客户端
web3.js内部使用JSONRPC与geth通信。它把所有JSON-RPC API当作JavaScript API,也就是说,它不仅支持所有与以太坊相关的API,还支持与Whisper和Swarm相关的API。
前端修罗场
2023/10/07
1.1K0
快速学习-web3.js简介与入门
为了帮助 web3 集成到不同标准的所有类型项目中,1.0.0 版本提供了多种方式来处理异步函数。大多数的 web3 对象允许将一个回调函数作为最后一个函数参数传入,同时会返回一个promise 用于链式函数调用。
cwl_java
2020/04/17
7K0
区块链与以太坊实战(5):访问以太坊节点的N中方式
本文主要介绍用web3.js访问以太坊节点的几种方式,主要包括HTTP和Web两种访问方式。
蒙娜丽宁
2020/07/15
2.5K0
第十一课 从宠物商店案例看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交互接口
以太坊预言机与智能合约开发
什么是以太坊预言机?智能合约就其性质而言,能够运行各种算法并可以存储和查询数据。预言机可以监控区块链事件并能将监控结果发回智能合约。因为每个节点每次都需要大量计算,所以从Ethereum智能合约开发中进行频繁的网络请求是切不实际的。这样,智能合约就可以与链外的世界进行互动了。
笔阁
2018/09/04
1.2K0
区块链 Web3 项目的技术架构
一个典型的区块链 Web3 项目的技术架构是一个多层次的分布式系统,旨在利用区块链的去中心化、透明和不可篡改特性,同时结合传统的技术栈来构建功能完善的应用。其技术架构通常可以划分为以下几个主要层次。
数字孪生开发者
2025/05/19
1320
区块链 Web3 项目的技术架构
第六课 技术小白如何开发一个DAPP区块链应用(以宠物商店为例)
通过逐步的指导和截图举证,一步步带领一个技术小白完成一个宠物商店DAPP应用的开发和部署。
辉哥
2018/08/10
2K0
第六课 技术小白如何开发一个DAPP区块链应用(以宠物商店为例)
一步步教你开发、部署第一个Dapp应用 - 宠物商店
今天我们来编写一个完整的去中心化应用(Dapps), 本文可以和编写智能合约结合起来看。
Tiny熊
2018/07/23
3.1K1
一步步教你开发、部署第一个Dapp应用 - 宠物商店
详解 Solidity 事件Event - 完全搞懂事件的使用
很多同学对Solidity 中的Event有疑问,这篇文章就来详细的看看Solidity 中Event到底有什么用?
Tiny熊
2018/07/23
2.1K0
10分钟,前端工程师也能玩转区块链Web3.js开发
一个不想写后台的前端不是一个好全栈,前端也可以玩转区块链Web3.js开发。 老吴(北京志顶科技有限公司技术总监、区块链专家)针对前端工程师如何玩转Web3.js开发后端钱包这一主题,分享了自己开
区块链大本营
2018/06/19
3.7K0
推荐阅读
相关推荐
第二十八课 区块链应用DAPP如何探测MetaMask的账号和登录状态?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验