StackAsk is a community where developers ask questions, share answers and learn from each others real-world experience, so every solved problem helps the next person who runs into it.
<span><span><span><?</span>xml version=<span>"1.0"</span> encoding=<span>"UTF-8"</span><span>?></span></span> <span><<span>project</span> <span>xmlns</span>=<span>"http://maven.apache.org/POM/4.0.0"</span> <span>xmlns:xsi</span>=<span>"http://www.w3.org/2001/XMLSchema-instance"</span> <span>xsi:schemaLocation</span>=<span>"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"</span>></span> <span><<span>modelVersion</span>></span>4.0.0<span></<span>modelVersion</span>></span> <span><<span>parent</span>></span> <span><<span>groupId</span>></span>com.tvd12<span></<span>groupId</span>></span> <span><<span>artifactId</span>></span>ezyfox<span></<span>artifactId</span>></span> <span><<span>version</span>></span>1.0.2<span></<span>version</span>></span> <span></<span>parent</span>></span> <span><<span>groupId</span>></span>org.example<span></<span>groupId</span>></span> <span><<span>artifactId</span>></span>nft-game-web<span></<span>artifactId</span>></span> <span><<span>version</span>></span>1.0.0<span></<span>version</span>></span> <span><<span>properties</span>></span> <span><<span>ezy.http.version</span>></span>0.2.0<span></<span>ezy.http.version</span>></span> <span><<span>ezy.platform.version</span>></span>0.0.1a<span></<span>ezy.platform.version</span>></span> <span></<span>properties</span>></span> <span><<span>dependencies</span>></span> <span><<span>dependency</span>></span> <span><<span>groupId</span>></span>com.tvd12<span></<span>groupId</span>></span> <span><<span>artifactId</span>></span>ezyhttp-server-boot<span></<span>artifactId</span>></span> <span><<span>version</span>></span>$</span><span>{ezy.http.version}</span><span><span></<span>version</span>></span> <span></<span>dependency</span>></span> <span><<span>dependency</span>></span> <span><<span>groupId</span>></span>org.youngmonkeys<span></<span>groupId</span>></span> <span><<span>artifactId</span>></span>ezyplatform-devtools<span></<span>artifactId</span>></span> <span><<span>version</span>></span>$</span><span>{ezy.platform.version}</span><span><span></<span>version</span>></span> <span></<span>dependency</span>></span> <span></<span>dependencies</span>></span> <span></<span>project</span>></span></span>
package org.example.nft_game; import com.tvd12.ezyhttp.core.boot.EzyHttpApplicationBootstrap; public class NftGameStartup { public static void main(String[] args) throws Exception { EzyHttpApplicationBootstrap.start(NftGameStartup.class); } }
package org.example.nft_game.controller; import java.io.IOException; import java.io.InputStream; import java.util.Map; import com.fasterxml.jackson.databind.ObjectMapper; import com.tvd12.ezyfox.stream.EzyAnywayInputStreamLoader; import com.tvd12.ezyfox.stream.EzyInputStreamLoader; import com.tvd12.ezyfox.stream.EzyInputStreams; import com.tvd12.ezyfox.util.EzyMapBuilder; import com.tvd12.ezyhttp.server.core.annotation.Controller; import com.tvd12.ezyhttp.server.core.annotation.DoGet; import com.tvd12.ezyhttp.server.core.view.Redirect; @Controller public class HomeController { private final ObjectMapper objectMapper; private final EzyInputStreamLoader inputStreamLoader; private static final String CONTRACT_ADDRESS = "0xA9F6009507ef930C67B98F7A12CB0CA4321aAaDB"; public HomeController(ObjectMapper objectMapper) { this.objectMapper = objectMapper; this.inputStreamLoader = new EzyAnywayInputStreamLoader(); } @DoGet("/") public Redirect home() { return Redirect.to("/index.html"); } @SuppressWarnings("unchecked") @DoGet("/contract") public Map contractGet() throws IOException { try (InputStream inputStream = inputStreamLoader.load("abi.json")) { String api = EzyInputStreams.toStringUtf8(inputStream); return EzyMapBuilder .mapBuilder() .put("address", CONTRACT_ADDRESS) .put("abi", objectMapper.readValue(api, Map[].class)) .build(); } } }
body { background-color: #fff; }
var stringToHex = function(str) { var hex, i; var result = "0x"; for (i = 0; i < str.length; i++) { hex = str.charCodeAt(i).toString(16); result += hex; } return result } var hexToString = function(hex) { var i; var hexes = hex.match(/.{1,2}/g) || []; var result = ""; for(i = 0; i < hexes.length; i++) { result += String.fromCharCode(parseInt(hexes[i], 16)); } return result; }
resources: enable: true
log4j.properties # Root logger option log4j.rootLogger=INFO, stdout # Redirect log messages to console log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
@SuppressWarnings("unchecked") @DoGet("/contract") public Map contractGet() throws IOException { try (InputStream inputStream = inputStreamLoader.load("abi.json")) { String api = EzyInputStreams.toStringUtf8(inputStream); return EzyMapBuilder.mapBuilder() .put("address", CONTRACT_ADDRESS) .put("abi", objectMapper.readValue(api, Map[].class)) .build(); } }
EzyMapBuilder
Map
@SuppressWarnings("unchecked")
index.html
<span><!DOCTYPE html></span> <span><<span>html</span> <span>lang</span>=<span>"en"</span>></span> <span><<span>head</span>></span> <span><<span>meta</span> <span>charset</span>=<span>"UTF-8"</span>></span> <span><<span>title</span>></span>NFT Game<span></<span>title</span>></span> <span><<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>></span> <span><<span>link</span> <span>rel</span>=<span>"stylesheet"</span> <span>href</span>=<span>"/css/style.css"</span>></span> <span></<span>head</span>></span> <span><<span>body</span>></span> <span><<span>div</span> <span>class</span>=<span>"container"</span>></span> <span><<span>div</span> <span>class</span>=<span>"row"</span>></span> <span><<span>div</span> <span>class</span>=<span>"col-md-12 text-center"</span>></span> <span><<span>h3</span>></span>Welcome to NFT Game<span></<span>h3</span>></span> <span></<span>div</span>></span> <span></<span>div</span>></span> <span><<span>div</span> <span>class</span>=<span>"row"</span>></span> <span><<span>div</span> <span>class</span>=<span>"col-md-12 text-center"</span>></span> <span><<span>button</span> <span>id</span>=<span>"enableEthereumButton"</span> <span>class</span>=<span>"btn btn-primary"</span>></span>Enable Ethereum<span></<span>button</span>></span> <span></<span>div</span>></span> <span></<span>div</span>></span> <span></<span>div</span>></span> <span><<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>></span><span></span><span></<span>script</span>></span> <span><<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>></span><span></span><span></<span>script</span>></span> <span><<span>script</span> <span>src</span>=<span>"/js/main.js"</span>></span><span></span><span></<span>script</span>></span> <span><<span>script</span>></span><span> <span>const</span> ethereumButton = $(<span>'#enableEthereumButton'</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> }); <span>console</span>.log(<span>JSON</span>.stringify(accounts)); } (<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>, () => { getAccount(); }); })(); </span><span></<span>script</span>></span> <span></<span>body</span>></span> <span></<span>html</span>></span>
2.2K Point(s)
1.2K Point(s)
313 Point(s)
178 Point(s)
138 Point(s)
Your account is signed in on the device(s) below. Sign out of at least one of them to continue signing in on this device.
Your account is signed in on the device(s) below. Sign out directly on one of those devices, or wait until the sign-in again time shown below.
If you cant access those devices, please contact the administrator to sign them out for you.
Input your email to receive reset password link, or if you remember your password, you can click