dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口

  • A+
所属分类:币安BSC

chatGPT账号
dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口
一、说明
签名验签业务逻辑环节在solidity合约中实现,dapp前端业务服务用户数据的输入,签名及验签结果的展示,提币接口操作的提币请求发起等。该dapp主要实现如下功能:
1、链接钱包,点击链接钱包按钮发起连接请求,展示当前连接钱包的属性信息:钱包地址、钱包余额、当前链id,链名称
2、对消息进行签名,针对用户前端页面输入的参数字段自动hash后,通过metamask钱包产生签名消息
3、对签名消息进行提前验签操作,确保签名的地址为dapp中程序指定的签名钱包,非dapp程序发起的提币请求一律拒绝
4、执行提币接口的提币操作,完成代币从总账地址提币到用户请求提币地址
注:
a. 链接钱包的操作在ether.js中完成,包括当前连接钱包的属性信息
b. 签名过程需要在dapp中完成,根据用户数据的参数字段产生原始hash,经过metamask签名后产生签名消息
c. 验证签名的过程是在solidity合约中实现的,通过recover签名消息验证签名地址
d. 执行代币提币的前提是要求签名验签成功,否则拒绝提币请求。
二、dapp及solidity合约完整版代码实现
1、dapp完整版代码signAndVerify.html文件如下:
<form>
          <label for="address-input">提币地址:</label>
          <input type="text" id="address-input">
          <label for="amount-input">提币数量:</label>
          <input type="number" id="amount-input">
          <label for="nonce-input">提币nonce:</label>
          <input type="number" id="nonce-input">
          <p class="form-note">提币数量需要包含精度,提币nonce值需要唯一,nonce步长值为2</p>
        </form>
        <div class="button-group">
          <button class="connect-wallet-btn" onclick="connWallet()">连接钱包</button>
          <button class="signmgs-btn" onclick="signMessage()">签名消息</button>
          <button class="verifysig-btn" onclick="verifyMessage()">验证签名</button>
          <button class="execute-contract-btn" onclick="withdraw()">执行提币</button>
        </div>

2、css样式布局文件singVerifyStyle.css完整代码如下:

/*输入参数区域样式*/
.input-params {
    width: 55%;
    height: 50vh;
    border: 1px dashed black;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
  }
  .input-params h3 {
    text-align: center;
    margin-top: 5px;
  }
  .input-params form label {
    display: inline-block;
    width: 100px;
    text-align: right;
  }

3、solidity合约文件Vault_withdraw.sol代码如下:

function withdraw(
        uint256 amount,
        address to,
        uint256 nonce,
        bytes memory signature
    ) external {
        require(nonce > userNonce[to], "nonce");
        require(
            verify(signer, amount, to, nonce, signature),
            "signature not match"
        );

        record[to] = UserWithdraw({
            amount: amount + record[to].amount,
            lastRewardTime: block.timestamp
        });
        userNonce[to] = nonce + 1;
        DWT.transfer(to, amount);
        
    }

至此,完成dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口所有操作流程。

pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:

币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:

dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口

多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:

dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口

pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:

此处为隐藏的内容!
登录后才能查看!

添加VX或者telegram获取全程线上免费指导

dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口

免责声明

发文时比特币价格:$24249

当前比特币价格:[crypto coins=”BTC” type=”text” show=”price”]

当前比特币涨幅:[crypto coins=”BTC” type=”text” show=”percent”]

免责声明:

本文不代表路远网立场,且不构成投资建议,请谨慎对待。用户由此造成的损失由用户自行承担,与路远网没有任何关系;

路远网不对网站所发布内容的准确性,真实性等任何方面做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,路远网对项目的真实性,准确性等任何方面均不做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,路远网不对其构成任何投资建议,用户由此造成的损失由用户自行承担,与路远网没有任何关系;

路远区块链研究院声明:路远区块链研究院内容由路远网发布,部分来源于互联网和行业分析师投稿收录,内容为路远区块链研究院加盟专职分析师独立观点,不代表路远网立场。

本文是全系列中第227 / 230篇:行业技术

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号
路远

发表评论

您必须登录才能发表评论!