Avatar
0
monkey Enlightened
monkey Enlightened
Dự án NFT đơn giản với Metamask và Web3: Lấy thông tin tài khoản
Dự án NFT đơn giản với Metamask và Web3: Lấy thông tin tài khoản
  • Answer
blockchain metamask
Remain: 5
1 Answer
Avatar
monkey Enlightened
monkey Enlightened
Để lấy được thông tin tài khoản chúng ta cần thực hiện các bước sau:
  1. <a href="https://stackask.com/question/du-an-nft-don-gian-voi-metamask-va-web3-khoi-tao-du-an/">Khởi tạo dự án</a>
  2. Trong HomeController tạo 1 hàm thế này:
    @DoGet("/account")
    public Redirect account() {
        return Redirect.to("/account.html");
    }
    
  1. Tạo file <code>account.html</code> trong thư mục <code>static</code>:
    <span>&lt;!DOCTYPE html&gt;</span>
    <span>&lt;<span>html</span> <span>lang</span>=<span>"en"</span>&gt;</span>
    <span>&lt;<span>head</span>&gt;</span>
      <span>&lt;<span>meta</span> <span>charset</span>=<span>"UTF-8"</span>&gt;</span>
      <span>&lt;<span>title</span>&gt;</span>NFT Game<span>&lt;/<span>title</span>&gt;</span>
      <span>&lt;<span>link</span> <span>rel</span>=<span>"stylesheet"</span> <span>href</span>=<span>"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"</span> <span>integrity</span>=<span>"sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"</span> <span>crossorigin</span>=<span>"anonymous"</span>&gt;</span>
      <span>&lt;<span>link</span> <span>rel</span>=<span>"stylesheet"</span> <span>href</span>=<span>"/css/style.css"</span>&gt;</span>
    <span>&lt;/<span>head</span>&gt;</span>
    <span>&lt;<span>body</span>&gt;</span>
    <span>&lt;<span>div</span> <span>class</span>=<span>"container"</span>&gt;</span>
      <span>&lt;<span>div</span> <span>class</span>=<span>"row"</span>&gt;</span>
        <span>&lt;<span>div</span> <span>class</span>=<span>"col-md-12 text-center"</span>&gt;</span>
          <span>&lt;<span>h3</span>&gt;</span>Welcome to NFT Game<span>&lt;/<span>h3</span>&gt;</span>
        <span>&lt;/<span>div</span>&gt;</span>
      <span>&lt;/<span>div</span>&gt;</span>
      <span>&lt;<span>div</span> <span>class</span>=<span>"row"</span>&gt;</span>
        <span>&lt;<span>div</span> <span>class</span>=<span>"col-md-12 text-center"</span>&gt;</span>
          <span>&lt;<span>button</span> <span>id</span>=<span>"enableEthereumButton"</span> <span>class</span>=<span>"btn btn-primary"</span>&gt;</span>Enable Ethereum<span>&lt;/<span>button</span>&gt;</span>
        <span>&lt;/<span>div</span>&gt;</span>
        <span>&lt;<span>div</span> <span>class</span>=<span>"col-md-12 text-center mt-2"</span>&gt;</span>
          <span>&lt;<span>h5</span>&gt;</span>Account: <span>&lt;<span>span</span> <span>id</span>=<span>"showAccount"</span> <span>class</span>=<span>"text-success"</span>&gt;</span><span>&lt;/<span>span</span>&gt;</span><span>&lt;/<span>h5</span>&gt;</span>
        <span>&lt;/<span>div</span>&gt;</span>
        <span>&lt;<span>div</span> <span>class</span>=<span>"col-md-12 text-center mt-2"</span>&gt;</span>
          <span>&lt;<span>h5</span>&gt;</span>Balance: <span>&lt;<span>span</span> <span>id</span>=<span>"showBalance"</span> <span>class</span>=<span>"text-danger"</span>&gt;</span><span>&lt;/<span>span</span>&gt;</span><span>&lt;/<span>h5</span>&gt;</span>
        <span>&lt;/<span>div</span>&gt;</span>
      <span>&lt;/<span>div</span>&gt;</span>
    <span>&lt;/<span>div</span>&gt;</span>
    <span>&lt;<span>script</span> <span>src</span>=<span>"https://code.jquery.com/jquery-3.6.0.js"</span> <span>integrity</span>=<span>"sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="</span> <span>crossorigin</span>=<span>"anonymous"</span>&gt;</span><span></span><span>&lt;/<span>script</span>&gt;</span>
    <span>&lt;<span>script</span> <span>src</span>=<span>"https://cdnjs.cloudflare.com/ajax/libs/web3/1.6.1/web3.min.js"</span> <span>integrity</span>=<span>"sha512-5erpERW8MxcHDF7Xea9eBQPiRtxbse70pFcaHJuOhdEBQeAxGQjUwgJbuBDWve+xP/u5IoJbKjyJk50qCnMD7A=="</span> <span>crossorigin</span>=<span>"anonymous"</span> <span>referrerpolicy</span>=<span>"no-referrer"</span>&gt;</span><span></span><span>&lt;/<span>script</span>&gt;</span>
    <span>&lt;<span>script</span> <span>src</span>=<span>"/js/main.js"</span>&gt;</span><span></span><span>&lt;/<span>script</span>&gt;</span>
    <span>&lt;<span>script</span>&gt;</span><span>
    <span>const</span> ethereumButton = $(<span>'#enableEthereumButton'</span>);
    <span>const</span> showAccount = $(<span>'#showAccount'</span>);
    <span>const</span> showBalance = $(<span>'#showBalance'</span>);
    
    <span>var</span> account = <span>''</span>;
    
    <span>async</span> <span><span>function</span> <span>getAccount</span>(<span></span>) </span>{
      <span>const</span> accounts = <span>await</span> ethereum.request({ <span>method</span>: <span>'eth_requestAccounts'</span> });
      account = accounts[<span>0</span>];
      showAccount.text(account);
      getBalance();
    }
    
    <span>async</span> <span><span>function</span> <span>getBalance</span>(<span></span>) </span>{
      <span>const</span> balance = <span>await</span> ethereum.request({
        <span>method</span>: <span>'eth_getBalance'</span>,
        <span>params</span>: [
          account,
              <span>"latest"</span>
        ]
      });
      showBalance.text(<span>parseInt</span>(balance, <span>16</span>));
    }
    
    (<span><span>function</span>(<span></span>) </span>{
    <span>if</span> (<span>typeof</span> <span>window</span>.ethereum === <span>'undefined'</span>) {
      <span>return</span>;
    }
    <span>console</span>.log(<span>'MetaMask is installed!'</span>);
    
    ethereumButton.on(<span>'click'</span>, () =&gt; {
      getAccount();
    });
    })();
    </span><span>&lt;/<span>script</span>&gt;</span>
    <span>&lt;/<span>body</span>&gt;</span>
    <span>&lt;/<span>html</span>&gt;</span>
    
  1. Truy cập vào đường link: <a href="http://localhost:8080/account" target="_blank" rel="noopener nofollow ugc">http://localhost:8080/account</a>
  2. Xong
  • 0
  • Reply