系统功能:
该dapp主要实现钱包的链接,消息签名,验证签名,代币提币接口。通过该dapp可以实现用户直接在前端页面输入提供数量,提币地址,提供nonce临时唯一变量。链接metamask钱包后对提供参数做hash,通过签名功能完成对原始hash的签名生成签名消息,然后执行预验签功能,验证签名地址与系统指定地址匹配后,执行代币的提币操作,发起提币业务。等待链上提币业务完成后,返回提币的详细信息,包括:实际提币地址,实际提供数量,提币完成时间。接收solidity返回的多个值组成的元组对象,析构后在前端页面展示提供信息。
dapp功能界面:
核心功能代码片段:
1、solidity提币功能接口
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); }
<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>
3、dapp样式布局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; }
至此,完成dapp中实现代币充提接口,提币环节需要签名验签的系统实现所有操作流程。
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:
币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册