一、说明
后端采用express模块组件处理前端html页面传递过来的ajax请求。从数据库中查询私钥,对请求中的参数进行hash处理,然后使用私钥签名产生签名消息,设置到response对象,返回前端处理结果。
注意事项如下:
- 静态资源包含html,css,img,js等需要放到public目录下,无须通过路由请求访问资源。public默认路径配置到express组件,通过如下代码:app.use(express.static(‘public’))
- 针对每个合约设置单独的合约js文件,需要放置到public目录下,直接在node.js中引用合约js文件中的变量,比如contractAddress、contractAbi
- 合约js文件要增加 module.exports设置,才能在node.js中引用
- 采用非数据源管理的数据库链接方式,链接使用完成后要及时的释放链接,避免造成链接资源浪费。
二、私钥签名功能代码实现
1、前端私钥进行签名的ajax请求代码实现
signPriKeyButton.addEventListener('click', () => { const wdaddress = document.querySelector('#wdaddress').value; const wdamount = document.querySelector('#wdamount').value; const wdnonce = document.querySelector('#wdnonce').value; axios.post('/signMessage', { wdaddress, wdamount, wdnonce }) .then((res) => { const signature = res.data.signature; const messageHash = res.data.messageHash; contractAddressElement.innerText = contractAddress; contractAddressElement.style.textAlign = 'left'; // 添加左对齐样式 contractNameElement.innerText = "Vault"; contractNameElement.style.textAlign = 'left'; // 添加左对齐样式 interfaceNameElement.innerText = "queryMessageHash(uint256, address, uint256)"; interfaceNameElement.style.textAlign = 'left'; // 添加左对齐样式 signatureElement.value = `${signature}`; hashedmgsElement.value = `${messageHash}`; signaturerElement.value = `${r}`; signaturesElement.value = `${s}`; signaturevElement.value = `${v}`; }) .catch((err) => { console.error(err); }); });
2、后端node.js处理前端ajax请求的代码实现:
app.post('/signMessage', (req, res) => { const address = req.body.wdaddress; const amount = req.body.wdamount; const nonce = req.body.wdnonce; try { //产生签名消息逻辑代码实现 console.log(signature); // 将签名结果发送回客户端 res.json(); } catch (error) { console.error(error); res.status(500).send('Internal Server Error:signMessage failure'); } });
至此,完成node.js后端使用私钥进行签名的代码实现所有操作流程。
BSC链签名验签充提币接口教程及node.js后端+solidity链端合约源代码下载:
BSC链签名验签充提币接口教程及node.js后端+solidity链端合约源代码下载地址:
此内容仅供注册用户可见,请登录!
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册