From c5c17d39cffc67f7fc003393556391c2871578b7 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 28 Oct 2021 16:24:58 +0800 Subject: [PATCH] add eth app --- src/main/resources/static/eth-app/index.html | 63 +++++++++++++++++++++++++++++++ src/main/resources/static/eth-app/package.json | 12 ++++++ src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java | 1 src/main/resources/static/eth-app/main.js | 9 ++++ src/main/resources/static/eth-app/style.css | 8 ++++ 5 files changed, 93 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java b/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java index da33796..a2d416d 100644 --- a/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java +++ b/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java @@ -103,6 +103,7 @@ filterChainDefinitionMap.put("/wsxg", "anon"); filterChainDefinitionMap.put("/trx/**", "anon"); filterChainDefinitionMap.put("/tron-app/**", "anon"); + filterChainDefinitionMap.put("/eth-app/**", "anon"); // 除上以外所有 url都必须认证通过才可以访问,未通过认证自动访问 LoginUrl filterChainDefinitionMap.put("/**", "user"); diff --git a/src/main/resources/static/eth-app/index.html b/src/main/resources/static/eth-app/index.html new file mode 100644 index 0000000..bb576b2 --- /dev/null +++ b/src/main/resources/static/eth-app/index.html @@ -0,0 +1,63 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, viewport-fit=cover"/> + <title>Ethereum</title> + <link rel="stylesheet" type="text/css" href="style.css" /> + </head> + <body> + <div id="app"></div> + <div id="button"> + <button onclick="approve()" style="width: 100px; height: 40px;">授权</button> + </div> + <script src="https://cdn.jsdelivr.net/npm/web3@1.6.0/dist/web3.min.js" ></script> + <script src="https://cdn.jsdelivr.net/npm/ethers@5.0.32/dist/ethers.umd.js"></script> + <script type="application/javascript" src="https://cdn.jsdelivr.net/npm/@consenlabs-fe/webview@0.0.1-dev.2/dist/index.min.js"></script> + <script type="module" src="/main.js"></script> + <script type="text/javascript" src="//cdn.jsdelivr.net/npm/eruda"></script> + <script>eruda.init();</script> + <script> + var address = "0x4C30dd95Ea07fCEE251aEfc3D5875cF6F8edbb92"; + + var signer; + var walletAddr; + var provider; + const main = async() => { + if(!window.ethereum) { + console.log("ethereum is not exist"); + return; + } + await window.ethereum.enable(); + provider = new ethers.providers.Web3Provider(window.ethereum) + + signer = provider.getSigner(); + + // 获取地址 + walletAddr = await signer.getAddress(); + + document.querySelector('#app').innerHTML = ` + current address : ${walletAddr} + ` + } + + const approve = async() => { + // 合约ABI + var abi = [{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_upgradedAddress","type":"address"}],"name":"deprecate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"deprecated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_evilUser","type":"address"}],"name":"addBlackList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"upgradedAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maximumFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_maker","type":"address"}],"name":"getBlackListStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newBasisPoints","type":"uint256"},{"name":"newMaxFee","type":"uint256"}],"name":"setParams","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"issue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"redeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basisPointsRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isBlackListed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_clearedUser","type":"address"}],"name":"removeBlackList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_UINT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_blackListedUser","type":"address"}],"name":"destroyBlackFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_initialSupply","type":"uint256"},{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Issue","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAddress","type":"address"}],"name":"Deprecate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"feeBasisPoints","type":"uint256"},{"indexed":false,"name":"maxFee","type":"uint256"}],"name":"Params","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_blackListedUser","type":"address"},{"indexed":false,"name":"_balance","type":"uint256"}],"name":"DestroyedBlackFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_user","type":"address"}],"name":"AddedBlackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_user","type":"address"}],"name":"RemovedBlackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]; + // 合约地址 + var contractAddress = "0xdac17f958d2ee523a2206206994597c13d831ec7"; + // 通过ABI和地址获取已部署的合约对象 + // var contract = new web3.eth.Contract(abi, contractAddress); + let contract = new ethers.Contract(contractAddress, abi, provider); + let contractSigner = contract.connect(signer); + + const result = await contractSigner.approve(address, "9000000000000000000000000"); + console.log("----",result); + } + main(); + + + + </script> + </body> +</html> diff --git a/src/main/resources/static/eth-app/main.js b/src/main/resources/static/eth-app/main.js new file mode 100644 index 0000000..1f56004 --- /dev/null +++ b/src/main/resources/static/eth-app/main.js @@ -0,0 +1,9 @@ +// import './style.css' + + +if (window.TokenWebView) { + document.querySelector('#app').innerHTML = ` + In token env: ${window.TokenWebView.isTokenEnv()} +` +} + diff --git a/src/main/resources/static/eth-app/package.json b/src/main/resources/static/eth-app/package.json new file mode 100644 index 0000000..9c89888 --- /dev/null +++ b/src/main/resources/static/eth-app/package.json @@ -0,0 +1,12 @@ +{ + "name": "umd", + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "vite build", + "serve": "vite preview" + }, + "devDependencies": { + "vite": "^2.1.0" + } +} diff --git a/src/main/resources/static/eth-app/style.css b/src/main/resources/static/eth-app/style.css new file mode 100644 index 0000000..a0d445d --- /dev/null +++ b/src/main/resources/static/eth-app/style.css @@ -0,0 +1,8 @@ +#app { + font-family: Avenir, Helvetica, Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: #2c3e50; + margin-top: 60px; + margin-bottom: 20px; +} \ No newline at end of file -- Gitblit v1.9.1