从实战开始了解Web3(四)

379 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情

说在前面

从这篇文章开始,不出意外的话,开始讲一些对接时候的细节。

正文开始

授权

看到这个标题,我想应该有人会问了,前面不是讲过签名授权了吗。为什么还有授权,是不是在水,其实这篇文章讲的授权是将代币授权给合约,让合约可以直接在你账户里扣钱。对没错 免密支付!!

授权那分为两部分,一个是查询当前合约所授权的代币数量还有多少,一个是将代币授权给合约使用

 // contract:"代币合约",传参中合约地址并不是代币地址,而是需要使用代币的合约
 
 //allowance 为查询合约中授权代币数量
  contract.methods.allowance('钱包地址', "合约地址").call().then(res => {
              // res  返回的代币数量 同样 也是代币合约精度的数量
                if (res <= 1) {
                    console.warn("当前合约没有进行授权", res)
                    
                    //没有授权,去进行授权
                     // contract:"代币合约",   授权数量 需要转换精度 转换为代币所使用的精度
                     contract.methods.approve("合约地址", "授权数量").send(
                     {
                     gas: 600000, 
                     gaslimit: 10,
                     from: "用户链接钱包"},
                     (err, hash) => {
                       //err 报错 
                       // hash 交易hash 
                    })
                    
                } else {
                    console.log("已经授权过了,当前合约剩余可支配数:", res)
                }

            })


添加代币到钱包


 window.ethereum.request({
                method: 'wallet_watchAsset',
                params: {
                    type: 'ERC20',
                    options: {
                        address: '代币地址',
                        symbol: '代币名称',
                        decimals: '代币精度“,
                        image: ‘代币图标地址(网络地址)',
                    },
                },
            }).then((success) => {
                if (success) {
                  //添加成功
                } else {
                  //添加失败
                }
            })

下一期开始讲解一些真实DAPP开发中所需要注意的事项,另外要不要出Tron版本那

历史文章

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

# 从实战开始了解Web3(二)

# 从实战开始了解Web3(三)