Hi, I have been trying to run the demo, with the IDP kit docker version, and haven't been able to successfully do so. I have encountered two errors, one of which I was able to solve.
The first problem I had was when running the nextjs client, when I clicked at "Sign in with NFT" button, it redirected me to localhost:6000, and the identity provider is configured to run at localhost:8080 in the tutorials, so I got a can't be reached error. The only thing I had to do to solve this was changing the externalUrl variable in /src/main/kotlin/.../config/IDPConfig.kt .
Having changed that, I am able to get to the "Connect wallet" page, select Metamask, and sign the message. Unfortunately, after that I get a blank page with the text "Internal server error", and the following error message in the identity provider's terminal:
[JettyServerThreadPool-41] WARN io.javalin.Javalin - Uncaught exception
com.sksamuel.hoplite.ConfigException: Error loading config because:
- Could not instantiate 'id.walt.nftkit.services.ChainConfig' because:
- 'providers': Missing from config
- 'privateKey': Missing from config
at com.sksamuel.hoplite.ConfigLoader$returnOrThrow$1.invoke(ConfigLoader.kt:215)
at com.sksamuel.hoplite.ConfigLoader$returnOrThrow$1.invoke(ConfigLoader.kt:212)
at com.sksamuel.hoplite.fp.ValidatedKt.getOrElse(Validated.kt:115)
at com.sksamuel.hoplite.ConfigLoader.returnOrThrow(ConfigLoader.kt:212)
at id.walt.nftkit.services.WaltIdServices.loadChainConfig(WaltIdServices.kt:81)
at id.walt.nftkit.utilis.providers.GoerliWeb3.getWeb3j(GoerliWeb3.kt:9)
at id.walt.nftkit.chains.evm.erc721.Erc721TokenStandard.loadContract(Erc721TokenStandard.kt:272)
at id.walt.nftkit.chains.evm.erc721.Erc721TokenStandard.loadContract$default(Erc721TokenStandard.kt:271)
at id.walt.nftkit.chains.evm.erc721.Erc721TokenStandard.supportsInterface(Erc721TokenStandard.kt:174)
at id.walt.nftkit.services.NftService.isErc721Standard(NftService.kt:520)
at id.walt.nftkit.services.NftService.balanceOf(NftService.kt:293)
at id.walt.idp.nfts.NFTManager.nftCollectionOwnershipVerification(NFTManager.kt:70)
at id.walt.idp.nfts.NFTManager.verifyNftOwnershipResponse(NFTManager.kt:22)
at id.walt.idp.nfts.NFTController.nftVerification(NFTController.kt:62)
at id.walt.idp.nfts.NFTController$routes$1$2.invoke(NFTController.kt:34)
at id.walt.idp.nfts.NFTController$routes$1$2.invoke(NFTController.kt:34)
at io.javalin.plugin.openapi.dsl.OpenApiBuilder.documented$lambda-0(OpenApiBuilder.kt:23)
at io.javalin.plugin.openapi.dsl.DocumentedHandler.handle(DocumentedHandler.kt:10)
at id.walt.idp.rest.IDPAccessManager.manage(IDPAccessManager.kt:22)
at io.javalin.http.JavalinServlet.addHandler$lambda-0(JavalinServlet.kt:96)
at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43)
at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43)
at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:99)
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2341)
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85)
at io.javalin.http.JavalinServletHandler.executeNextTask$lambda-11$lambda-10(JavalinServletHandler.kt:119)
at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:684)
at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662)
at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2200)
at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:119)
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2341)
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85)
at io.javalin.http.JavalinServletHandler.executeNextTask$lambda-11$lambda-10(JavalinServletHandler.kt:119)
at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:684)
at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662)
at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2200)
at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:119)
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2341)
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85)
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:89)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.javalin.jetty.JavalinJettyServlet.service(JavalinJettyServlet.kt:58)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:554)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at io.javalin.jetty.JettyServer$start$wsAndHttpHandler$1.doHandle(JettyServer.kt:52)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:181)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:516)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
at java.base/java.lang.Thread.run(Thread.java:1589)
The URL where I get the message: http://localhost:8080/api/nft/callback?session=1558f76f-342f-4f0f-8601-2bf271b9de41&message=localhost%3A8080%20wants%20you%20to%20sign%20in%20with%20your%20Ethereum%20account%3A%0A0x7c55a0a214f49adBf56975b3942bA173372e035F%0ASign%20in%20with%20Ethereum%20to%20the%20app.%0AURI%3A%20http%3A%2F%2Flocalhost%3A8080%0AVersion%3A%201%0AChain%20ID%3A%201%0ANonce%3A%20bd4a5a0f-b7d7-4afb-8f1e-f55b62753d2d&signature=0xad14c17e51982b9a47cbf99d88b981a5ef331858485f91e7993768f767c8b1aa358701bdba7b1ee61c40f57646d06093a81d055542d72afa9731cc416de89ddd1b
And my walt.yaml configuration file:
hikariDataSource:
jdbcUrl: jdbc:sqlite:data/walt.db
maximumPoolSize: 5
autoCommit: false
dataSource:
journalMode: WAL
fullColumnNames: false
azureKeyVaultConfig:
baseURL:
id:
secret:
providers:
goerli: "myAlchemyGoerliEndpoint
privateKey: "bd4cb3e507f342ee3a710370cef39dda48f17b0a158b0b8dddf000fbd5b2c2d9"
apiKeys:
ethereumBlockExplorer: ""
polygonBlockExplorer: ""
alchemy: "myAlchemyApiKey"
nftstorage: ""
Hi, I have been trying to run the demo, with the IDP kit docker version, and haven't been able to successfully do so. I have encountered two errors, one of which I was able to solve.
The first problem I had was when running the nextjs client, when I clicked at "Sign in with NFT" button, it redirected me to localhost:6000, and the identity provider is configured to run at localhost:8080 in the tutorials, so I got a can't be reached error. The only thing I had to do to solve this was changing the externalUrl variable in /src/main/kotlin/.../config/IDPConfig.kt .
Having changed that, I am able to get to the "Connect wallet" page, select Metamask, and sign the message. Unfortunately, after that I get a blank page with the text "Internal server error", and the following error message in the identity provider's terminal:
The URL where I get the message: http://localhost:8080/api/nft/callback?session=1558f76f-342f-4f0f-8601-2bf271b9de41&message=localhost%3A8080%20wants%20you%20to%20sign%20in%20with%20your%20Ethereum%20account%3A%0A0x7c55a0a214f49adBf56975b3942bA173372e035F%0ASign%20in%20with%20Ethereum%20to%20the%20app.%0AURI%3A%20http%3A%2F%2Flocalhost%3A8080%0AVersion%3A%201%0AChain%20ID%3A%201%0ANonce%3A%20bd4a5a0f-b7d7-4afb-8f1e-f55b62753d2d&signature=0xad14c17e51982b9a47cbf99d88b981a5ef331858485f91e7993768f767c8b1aa358701bdba7b1ee61c40f57646d06093a81d055542d72afa9731cc416de89ddd1b
And my walt.yaml configuration file: