Skip to content

Commit fd6d26b

Browse files
committed
feat add support to iota evm testnet
1 parent 9a1f788 commit fd6d26b

File tree

10 files changed

+28
-19
lines changed

10 files changed

+28
-19
lines changed

src/main/kotlin/id/walt/nftkit/Values.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ object Values {
1212
const val MOONBEAM_MAINNET_CHAIN_ID: Long = 1284
1313
const val ASTAR_MAINNET_CHAIN_ID: Long = 592
1414
const val SHIMMEREVM_TESTNET_CHAIN_ID: Long = 1073
15-
const val SHIMMEREVM_APPCHAIN_CHAIN_ID: Long = 1074
15+
const val IOTA_TESTNET_CHAIN_ID: Long = 1075
1616

1717
const val ETHEREUM_MAINNET_SCAN_API_URL= "api.etherscan.io"
1818
const val ETHEREUM_TESTNET_GOERLI_SCAN_API_URL = "api-goerli.etherscan.io"
1919
const val ETHEREUM_TESTNET_SEPOLIA_SCAN_API_URL = "api-sepolia.etherscan.io"
2020
const val POLYGON_MAINNET_SCAN_API_URL = "api.polygonscan.com"
2121
const val POLYGON_TESTNET_AMOY_SCAN_API_URL = "api-testnet.polygonscan.com"
22-
const val SHIMMEREVM_APPCHAIN_BLOCK_EXPLORER_URL = ""
22+
const val IOTA_TESTNET_BLOCK_EXPLORER_URL = "https://explorer.evm.testnet.iotaledger.net"
2323

2424
const val ETHEREUM_MAINNET_BLOCK_EXPLORER_URL = "https://etherscan.io"
2525
const val ETHEREUM_TESTNET_GOERLI_BLOCK_EXPLORER_URL = "https://goerli.etherscan.io/"

src/main/kotlin/id/walt/nftkit/chains/evm/erc721/Erc721TokenStandard.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ object Erc721TokenStandard : IErc721TokenStandard {
294294
EVMChain.ASTAR -> Values.ASTAR_MAINNET_CHAIN_ID
295295
EVMChain.MOONBEAM -> Values.MOONBEAM_MAINNET_CHAIN_ID
296296
EVMChain.SHIMMEREVM -> Values.SHIMMEREVM_TESTNET_CHAIN_ID
297-
EVMChain.SHIMMEREVM_APPCHAIN -> Values.SHIMMEREVM_APPCHAIN_CHAIN_ID
297+
EVMChain.IOTA_TESTNET -> Values.IOTA_TESTNET_CHAIN_ID
298298
}
299299
val transactionManager: TransactionManager = RawTransactionManager(
300300
web3j, credentials, chainId

src/main/kotlin/id/walt/nftkit/chains/evm/erc721/SoulBoundTokenStandard.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ object SoulBoundTokenStandard : ISoulBoundTokenStandard {
2727
private fun loadContract(chain: EVMChain, address: String, signedAccount: String? ="") : WaltidSoulBound {
2828
val web3j = ProviderFactory.getProvider(chain)?.getWeb3j()
2929

30-
val privateKey: String = if((signedAccount == null || "" == (signedAccount)) && chain == EVMChain.SHIMMEREVM_APPCHAIN){
31-
WaltIdServices.loadChainConfig().privateKeyAppchain
30+
val privateKey: String = if((signedAccount == null || "" == (signedAccount)) && chain == EVMChain.IOTA_TESTNET){
31+
WaltIdServices.loadChainConfig().privateKeyIotaTestnet
3232
}else if(signedAccount == null || "" == (signedAccount) ) {
3333
WaltIdServices.loadChainConfig().privateKey
3434
}
@@ -49,7 +49,7 @@ object SoulBoundTokenStandard : ISoulBoundTokenStandard {
4949
EVMChain.ASTAR -> Values.ASTAR_MAINNET_CHAIN_ID
5050
EVMChain.MOONBEAM -> Values.MOONBEAM_MAINNET_CHAIN_ID
5151
EVMChain.SHIMMEREVM -> Values.SHIMMEREVM_TESTNET_CHAIN_ID
52-
EVMChain.SHIMMEREVM_APPCHAIN -> Values.SHIMMEREVM_APPCHAIN_CHAIN_ID
52+
EVMChain.IOTA_TESTNET -> Values.IOTA_TESTNET_CHAIN_ID
5353
}
5454
val transactionManager: TransactionManager = RawTransactionManager(
5555
web3j, credentials, chainId
@@ -106,7 +106,7 @@ object SoulBoundTokenStandard : ISoulBoundTokenStandard {
106106
EVMChain.ASTAR -> Values.ASTAR_MAINNET_CHAIN_ID
107107
EVMChain.MOONBEAM -> Values.MOONBEAM_MAINNET_CHAIN_ID
108108
EVMChain.SHIMMEREVM -> Values.SHIMMEREVM_TESTNET_CHAIN_ID
109-
EVMChain.SHIMMEREVM_APPCHAIN -> Values.SHIMMEREVM_APPCHAIN_CHAIN_ID
109+
EVMChain.IOTA_TESTNET -> Values.IOTA_TESTNET_CHAIN_ID
110110
}
111111

112112
val web3j = ProviderFactory.getProvider(chain)?.getWeb3j()

src/main/kotlin/id/walt/nftkit/rest/NftKitApi.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,12 @@ object NftKitApi {
210210
"chain/{chain}/contract/{contractAddress}/token/{tokenId}/getapproved",
211211
documented(NftController.getApprovedDocs(), NftController::getApproved)
212212
)
213+
path("IOTA_TESTNET"){
214+
post(
215+
"contract/{contractAddress}/token/instances",
216+
documented(NftController.getShimmerNFTinstancesDocs(), NftController::getShimmerNFTinstances)
217+
)
218+
}
213219
path("ShimmerEVM"){
214220
post(
215221
"contract/{contractAddress}/token/instances",

src/main/kotlin/id/walt/nftkit/services/NftService.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ enum class Chain {
9595
ALGORAND_TESTNET,
9696
ALGORAND_BETANET,
9797
SHIMMEREVM,
98-
SHIMMEREVM_APPCHAIN
98+
IOTA_TESTNET
9999
}
100100

101101
enum class EVMChain {
@@ -107,7 +107,8 @@ enum class EVMChain {
107107
ASTAR,
108108
MOONBEAM,
109109
SHIMMEREVM,
110-
SHIMMEREVM_APPCHAIN
110+
// SHIMMEREVM_APPCHAIN,
111+
IOTA_TESTNET
111112
}
112113

113114
enum class TokenStandard {
@@ -517,7 +518,7 @@ object NftService {
517518
fun getShimmerNFTinstances(smartContractAddress: String) : shimmerNFT {
518519

519520
return runBlocking {
520-
val url = "https://explorer.evm.testnet.shimmer.network/api/v2/tokens/${smartContractAddress}/instances"
521+
val url = "https://explorer.evm.testnet.iotaledger.net/api/v2/tokens/${smartContractAddress}/instances"
521522
val nfts = client.get(url)
522523
{
523524
contentType(ContentType.Application.Json)

src/main/kotlin/id/walt/nftkit/services/WaltIdServices.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ data class Providers(
1919
val opal: String,
2020
val unique: String,
2121
val shimmerevm: String,
22-
val shimmerevmAppChain : String
22+
val iotatestnet : String
2323
)
2424

25-
data class ChainConfig(val providers: Providers, val privateKey: String , val privateKeyAppchain: String)
25+
data class ChainConfig(val providers: Providers, val privateKey: String , val privateKeyIotaTestnet: String)
2626

2727
data class KeysConfig(val keys: Map<String, String>)
2828

@@ -147,7 +147,7 @@ object WaltIdServices {
147147
EVMChain.POLYGON -> Values.POLYGON_MAINNET_BLOCK_EXPLORER_URL
148148
EVMChain.AMOY -> Values.POLYGON_TESTNET_AMOY_BLOCK_EXPLORER_URL
149149
EVMChain.SHIMMEREVM -> Values.SHIMMEREVM_TESTNET_BLOCK_EXPLORER_URL
150-
EVMChain.SHIMMEREVM_APPCHAIN -> Values.SHIMMEREVM_APPCHAIN_BLOCK_EXPLORER_URL
150+
EVMChain.IOTA_TESTNET -> Values.IOTA_TESTNET_BLOCK_EXPLORER_URL
151151
else -> {
152152
throw Exception("${chain.toString()} is not supported")
153153
}

src/main/kotlin/id/walt/nftkit/utilis/Common.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ object Common {
114114
}
115115

116116
fun isEVMChain(chain: Chain): Boolean{
117-
val EVMChains= listOf(Chain.ETHEREUM, Chain.POLYGON, Chain.GOERLI, Chain.SEPOLIA, Chain.AMOY, Chain.SHIMMEREVM , Chain.SHIMMEREVM_APPCHAIN)
117+
val EVMChains= listOf(Chain.ETHEREUM, Chain.POLYGON, Chain.GOERLI, Chain.SEPOLIA, Chain.AMOY, Chain.SHIMMEREVM , Chain.IOTA_TESTNET)
118118
return chain in EVMChains
119119
}
120120

src/main/kotlin/id/walt/nftkit/utilis/providers/ShimmerAppChain.kt renamed to src/main/kotlin/id/walt/nftkit/utilis/providers/IotaTestnet.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import id.walt.nftkit.services.WaltIdServices
44
import org.web3j.protocol.Web3j
55
import org.web3j.protocol.http.HttpService
66

7-
class ShimmerAppChain : Web3jInstance {
7+
class IotaTestnet : Web3jInstance {
88
override fun getWeb3j(): Web3j {
9-
return Web3j.build(HttpService(WaltIdServices.loadChainConfig().providers.shimmerevmAppChain))
9+
return Web3j.build(HttpService(WaltIdServices.loadChainConfig().providers.iotatestnet))
1010
}
1111
}

src/main/kotlin/id/walt/nftkit/utilis/providers/ProviderFactory.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ object ProviderFactory {
1313
EVMChain.ASTAR -> AstarWeb3()
1414
EVMChain.MOONBEAM -> MoonbeamWeb3()
1515
EVMChain.SHIMMEREVM -> IotaWeb3()
16-
EVMChain.SHIMMEREVM_APPCHAIN -> ShimmerAppChain()
16+
EVMChain.IOTA_TESTNET -> IotaTestnet()
1717
}
1818
}
1919

src/main/resources/walt-default.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@ providers:
2121
moonbeam: "https://rpc.api.moonbeam.network"
2222
unique: "https://rpc.unique.network"
2323
opal: "https://rpc-opal.unique.network"
24-
shimmerevmAppChain: "https://fpgaonkrwz.dune.spyce5.com/wasp/api/v1/chains/rms1pzhlaz2aalpsktkqacayyl2xr6s3rsa5h69lmc7mleq4wnaryejkgnprd6k/evm"
24+
iotatestnet: "https://json-rpc.evm.testnet.iotaledger.net"
2525
shimmerevm : "https://json-rpc.evm.testnet.shimmer.network"
2626

2727
#privateKey: "bd4cb3e507f342ee3a710370cef39dda48f17b0a158b0b8dd3f000fbd5b2c2d9"
28-
privateKeyAppchain: "57901fd46ccf70f3f21e3f16815c9b18add89e0d7f2fcb3c847882ad8126408d"
28+
privateKeyIotaTestnet: "3166cf13febd8b817cdd2a88dac1e76ddd3fc413f16c1c3dcb7b2c2eb0cd3b63"
29+
#"57901fd46ccf70f3f21e3f16815c9b18add89e0d7f2fcb3c847882ad8126408d"
2930
#privateKey: "a1fcab9b58015f452c9a89d4cde4807a80111ab27142730bfb96be936e576be1"
3031
#privateKey: "bd4cb3e507f342ee3a710370cef39dda48f17b0a158b0b8dd3f000fbd5b2c2d9"
3132
privateKey: "9224cd6478dc789815e4baaf3771709c69e55432ac8eb38dec4826a48840ddca"
@@ -66,6 +67,7 @@ apiKeys:
6667

6768

6869

70+
6971
algorandConfig:
7072
algorand_seed_Mnemonic: "famous hood lend donate orange globe spatial stamp opinion universe found gown river identify negative climb defy galaxy turkey height duty doctor hazard ability athlete"
7173

0 commit comments

Comments
 (0)