Skip to content

Commit efeb5a2

Browse files
authored
update to RC.1 (#456)
Signed-off-by: Marin Veršić <[email protected]>
1 parent a3397a7 commit efeb5a2

File tree

669 files changed

+34454
-25544
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

669 files changed

+34454
-25544
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
build/
22
.idea/
3+
.kotlin/
34
.gradle/
45
*/*/out
56

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ subprojects {
5858

5959
java {
6060
toolchain {
61-
languageVersion = JavaLanguageVersion.of(8)
61+
languageVersion = JavaLanguageVersion.of(21)
6262
}
6363

6464
withJavadocJar()

docker-compose/docker-compose.yaml

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
services:
22
irohad0:
3-
image: hyperledger/iroha:2.0.0-pre-rc.22.2
3+
image: hyperledger/iroha:2.0.0-rc.1.0
44
platform: linux/amd64
55
environment:
66
CHAIN: 00000000-0000-0000-0000-000000000000
77
PUBLIC_KEY: ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D
88
PRIVATE_KEY: 802620A4DFC16789FBF9A588525E4AC7F791AC51B12AEE8919EACC03EB2FC31D32C692
9+
P2P_PUBLIC_ADDRESS: irohad0:1337
910
P2P_ADDRESS: 0.0.0.0:1337
1011
API_ADDRESS: 0.0.0.0:8080
11-
TRUSTED_PEERS: '[{"address":"irohad2:1339","public_key":"ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10"},{"address":"irohad1:1338","public_key":"ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D"},{"address":"irohad3:1340","public_key":"ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE"}]'
1212
GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4
13+
TRUSTED_PEERS: '["ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D@irohad1:1338","ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10@irohad2:1339","ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE@irohad3:1340"]'
1314
GENESIS_PRIVATE_KEY: 80262082B3BDE54AEBECA4146257DA0DE8D59D8E46D5FE34887DCD8072866792FCB3AD
1415
GENESIS: /tmp/genesis.signed.scale
15-
TOPOLOGY: '[{"address":"irohad2:1339","public_key":"ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10"},{"address":"irohad1:1338","public_key":"ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D"},{"address":"irohad0:1337","public_key":"ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D"},{"address":"irohad3:1340","public_key":"ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE"}]'
16+
TOPOLOGY: '["ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D","ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D","ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10","ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE"]'
1617
ports:
17-
- 1337:1337
18-
- 8080:8080
18+
- 1337:1337
19+
- 8080:8080
1920
volumes:
20-
- "../modules/test-tools/src/main/resources:/config"
21+
- "../modules/test-tools/src/main/resources:/config"
2122
init: true
2223
healthcheck:
2324
test: test $(curl -s http://127.0.0.1:8080/status/blocks) -gt 0
@@ -29,34 +30,38 @@ services:
2930
/bin/sh -c "
3031
EXECUTOR_RELATIVE_PATH=$(jq -r '.executor' /config/genesis.json) && \\
3132
EXECUTOR_ABSOLUTE_PATH=$(realpath \"/config/$$EXECUTOR_RELATIVE_PATH\") && \\
33+
WASM_DIR_RELATIVE_PATH=$(jq -r '.wasm_dir' /config/genesis.json) && \\
34+
WASM_DIR_ABSOLUTE_PATH=$(realpath \"/config/$$WASM_DIR_RELATIVE_PATH\") && \\
3235
jq \\
3336
--arg executor \"$$EXECUTOR_ABSOLUTE_PATH\" \\
37+
--arg wasm_dir \"$$WASM_DIR_ABSOLUTE_PATH\" \\
3438
--argjson topology \"$$TOPOLOGY\" \\
35-
'.executor = $$executor | .topology = $$topology' /config/genesis.json \\
39+
'.executor = $$executor | .wasm_dir = $$wasm_dir | .topology = $$topology' /config/genesis.json \\
3640
>/tmp/genesis.json && \\
3741
kagami genesis sign /tmp/genesis.json \\
3842
--public-key $$GENESIS_PUBLIC_KEY \\
3943
--private-key $$GENESIS_PRIVATE_KEY \\
4044
--out-file $$GENESIS \\
4145
&& \\
42-
irohad
46+
exec irohad
4347
"
4448
irohad1:
45-
image: hyperledger/iroha:2.0.0-pre-rc.22.2
49+
image: hyperledger/iroha:2.0.0-rc.1.0
4650
platform: linux/amd64
4751
environment:
4852
CHAIN: 00000000-0000-0000-0000-000000000000
4953
PUBLIC_KEY: ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D
5054
PRIVATE_KEY: 8026203ECA64ADC23DC106C9D703233375EA6AC345AD7299FF3AD45F355DE6CD1B5510
55+
P2P_PUBLIC_ADDRESS: irohad1:1338
5156
P2P_ADDRESS: 0.0.0.0:1338
5257
API_ADDRESS: 0.0.0.0:8081
5358
GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4
54-
TRUSTED_PEERS: '[{"address":"irohad2:1339","public_key":"ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10"},{"address":"irohad0:1337","public_key":"ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D"},{"address":"irohad3:1340","public_key":"ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE"}]'
59+
TRUSTED_PEERS: '["ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D@irohad0:1337","ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10@irohad2:1339","ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE@irohad3:1340"]'
5560
ports:
56-
- 1338:1338
57-
- 8081:8081
61+
- 1338:1338
62+
- 8081:8081
5863
volumes:
59-
- "../modules/test-tools/src/main/resources:/config"
64+
- "../modules/test-tools/src/main/resources:/config"
6065
init: true
6166
healthcheck:
6267
test: test $(curl -s http://127.0.0.1:8081/status/blocks) -gt 0
@@ -65,21 +70,22 @@ services:
6570
retries: 30
6671
start_period: 4s
6772
irohad2:
68-
image: hyperledger/iroha:2.0.0-pre-rc.22.2
73+
image: hyperledger/iroha:2.0.0-rc.1.0
6974
platform: linux/amd64
7075
environment:
7176
CHAIN: 00000000-0000-0000-0000-000000000000
7277
PUBLIC_KEY: ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10
7378
PRIVATE_KEY: 8026207B1C78F733EDAFD6AF9BAC3A0D6C5A494557DD031609A4FDD9796EEF471D928C
79+
P2P_PUBLIC_ADDRESS: irohad2:1339
7480
P2P_ADDRESS: 0.0.0.0:1339
7581
API_ADDRESS: 0.0.0.0:8082
7682
GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4
77-
TRUSTED_PEERS: '[{"address":"irohad1:1338","public_key":"ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D"},{"address":"irohad0:1337","public_key":"ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D"},{"address":"irohad3:1340","public_key":"ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE"}]'
83+
TRUSTED_PEERS: '["ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D@irohad0:1337","ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D@irohad1:1338","ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE@irohad3:1340"]'
7884
ports:
79-
- 1339:1339
80-
- 8082:8082
85+
- 1339:1339
86+
- 8082:8082
8187
volumes:
82-
- "../modules/test-tools/src/main/resources:/config"
88+
- "../modules/test-tools/src/main/resources:/config"
8389
init: true
8490
healthcheck:
8591
test: test $(curl -s http://127.0.0.1:8082/status/blocks) -gt 0
@@ -88,21 +94,22 @@ services:
8894
retries: 30
8995
start_period: 4s
9096
irohad3:
91-
image: hyperledger/iroha:2.0.0-pre-rc.22.2
97+
image: hyperledger/iroha:2.0.0-rc.1.0
9298
platform: linux/amd64
9399
environment:
94100
CHAIN: 00000000-0000-0000-0000-000000000000
95101
PUBLIC_KEY: ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE
96102
PRIVATE_KEY: 8026206C7FF4CA09D395C7B7332C654099406E929C6238942E3CE85155CC1A5E2CF519
103+
P2P_PUBLIC_ADDRESS: irohad3:1340
97104
P2P_ADDRESS: 0.0.0.0:1340
98105
API_ADDRESS: 0.0.0.0:8083
99106
GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4
100-
TRUSTED_PEERS: '[{"address":"irohad2:1339","public_key":"ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10"},{"address":"irohad1:1338","public_key":"ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D"},{"address":"irohad0:1337","public_key":"ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D"}]'
107+
TRUSTED_PEERS: '["ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D@irohad0:1337","ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D@irohad1:1338","ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10@irohad2:1339"]'
101108
ports:
102-
- 1340:1340
103-
- 8083:8083
109+
- 1340:1340
110+
- 8083:8083
104111
volumes:
105-
- "../modules/test-tools/src/main/resources:/config"
112+
- "../modules/test-tools/src/main/resources:/config"
106113
init: true
107114
healthcheck:
108115
test: test $(curl -s http://127.0.0.1:8083/status/blocks) -gt 0

examples/tutorial/build.gradle.kts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
1-
dependencies {
2-
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0")
3-
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.0")
1+
val ktorVer = project.properties["ktorVer"] as String
42

5-
implementation("net.i2p.crypto:eddsa:0.3.0")
6-
implementation("org.bouncycastle:bcprov-jdk15on:1.65")
7-
implementation("com.github.multiformats:java-multihash:1.3.0")
3+
dependencies {
4+
implementation(project(":admin-client"))
85

9-
implementation(project(":model"))
10-
implementation(project(":block"))
11-
api(project(":admin-client"))
6+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
7+
implementation("io.ktor:ktor-client-logging:$ktorVer")
128
}
139

1410
tasks.jacocoTestReport {

examples/tutorial/src/main/kotlin/jp/co/soramitsu/iroha2/Main.kt

Lines changed: 64 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -5,65 +5,79 @@ import jp.co.soramitsu.iroha2.generated.AssetId
55
import jp.co.soramitsu.iroha2.generated.AssetType
66
import jp.co.soramitsu.iroha2.generated.AssetValue
77
import kotlinx.coroutines.runBlocking
8-
import java.net.URL
8+
import java.math.BigDecimal
9+
import java.net.URI
910
import java.util.UUID
1011

11-
fun main(args: Array<String>): Unit = runBlocking {
12-
val chainId = UUID.fromString("00000000-0000-0000-0000-000000000000")
13-
val apiUrl = "http://127.0.0.1:8080"
14-
val peerUrl = "http://127.0.0.1:1337"
15-
val admin = AccountId(
16-
"wonderland".asDomainId(),
17-
publicKeyFromHex("CE7FA46C9DCE7EA4B125E2E36BDB63EA33073E7590AC92816AE1E861B7048B03").toIrohaPublicKey(),
18-
)
19-
val adminKeyPair = keyPairFromHex(
20-
"CE7FA46C9DCE7EA4B125E2E36BDB63EA33073E7590AC92816AE1E861B7048B03",
21-
"CCF31D85E3B32A4BEA59987CE0C78E3B8E2DB93881468AB2435FE45D5C9DCD53",
22-
)
23-
val client = AdminIroha2Client(URL(apiUrl), URL(peerUrl))
24-
val query = Query(client, admin, adminKeyPair)
25-
query.findAllDomains()
26-
.also { println("ALL DOMAINS: ${it.map { d -> d.id.asString() }}") }
27-
query.findAllAccounts()
28-
.also { println("ALL ACCOUNTS: ${it.map { d -> d.id.asString() }}") }
29-
query.findAllAssets()
30-
.also { println("ALL ASSETS: ${it.map { d -> d.id.asString() }}") }
12+
fun main(): Unit =
13+
runBlocking {
14+
val chainId = UUID.fromString("00000000-0000-0000-0000-000000000000")
15+
val apiUrl = "http://127.0.0.1:8080"
16+
val admin =
17+
AccountId(
18+
"wonderland".asDomainId(),
19+
publicKeyFromHex("CE7FA46C9DCE7EA4B125E2E36BDB63EA33073E7590AC92816AE1E861B7048B03").toIrohaPublicKey(),
20+
)
21+
val adminKeyPair =
22+
keyPairFromHex(
23+
"CE7FA46C9DCE7EA4B125E2E36BDB63EA33073E7590AC92816AE1E861B7048B03",
24+
"CCF31D85E3B32A4BEA59987CE0C78E3B8E2DB93881468AB2435FE45D5C9DCD53",
25+
)
26+
val client = AdminIroha2Client(listOf(URI(apiUrl).toURL()), chainId, admin, adminKeyPair)
27+
val query = Query(client, admin, adminKeyPair)
28+
query
29+
.findAllDomains()
30+
.also { println("ALL DOMAINS: ${it.map { d -> d.id.asString() }}") }
31+
query
32+
.findAllAccounts()
33+
.also { println("ALL ACCOUNTS: ${it.map { d -> d.id.asString() }}") }
34+
query
35+
.findAllAssets()
36+
.also { println("ALL ASSETS: ${it.map { d -> d.id.asString() }}") }
3137

32-
val sendTransaction = SendTransaction(client, admin, adminKeyPair, chainId)
38+
val sendTransaction = SendTransaction(client)
3339

34-
val domain = "looking_glass_${System.currentTimeMillis()}"
35-
sendTransaction.registerDomain(domain).also { println("DOMAIN $domain CREATED") }
40+
val domain = "looking_glass_${System.currentTimeMillis()}"
41+
sendTransaction.registerDomain(domain).also { println("DOMAIN $domain CREATED") }
3642

37-
val madHatterKeyPair = generateKeyPair()
38-
val madHatter = AccountId(domain.asDomainId(), madHatterKeyPair.public.toIrohaPublicKey())
39-
sendTransaction.registerAccount(madHatter.asString())
40-
.also { println("ACCOUNT $madHatter CREATED") }
43+
val madHatterKeyPair = generateKeyPair()
44+
val madHatter = AccountId(domain.asDomainId(), madHatterKeyPair.public.toIrohaPublicKey())
45+
sendTransaction
46+
.registerAccount(madHatter.asString())
47+
.also { println("ACCOUNT $madHatter CREATED") }
4148

42-
val assetDefinition = "asset_time_${System.currentTimeMillis()}$ASSET_ID_DELIMITER$domain"
43-
sendTransaction.registerAssetDefinition(assetDefinition, AssetType.numeric())
44-
.also { println("ASSET DEFINITION $assetDefinition CREATED") }
49+
val assetDefinition = "asset_time_${System.currentTimeMillis()}$ASSET_ID_DELIMITER$domain"
50+
sendTransaction
51+
.registerAssetDefinition(assetDefinition, AssetType.numeric())
52+
.also { println("ASSET DEFINITION $assetDefinition CREATED") }
4553

46-
val madHatterAsset = AssetId(madHatter, assetDefinition.asAssetDefinitionId())
47-
sendTransaction.registerAsset(madHatterAsset, AssetValue.Numeric(100.asNumeric()))
48-
.also { println("ASSET $madHatterAsset CREATED") }
54+
val madHatterAsset = AssetId(madHatter, assetDefinition.asAssetDefinitionId())
55+
sendTransaction
56+
.registerAsset(madHatterAsset, AssetValue.Numeric(100.asNumeric()))
57+
.also { println("ASSET $madHatterAsset CREATED") }
4958

50-
val whiteRabbitKeyPair = generateKeyPair()
51-
val whiteRabbit = AccountId(domain.asDomainId(), whiteRabbitKeyPair.public.toIrohaPublicKey())
52-
sendTransaction.registerAccount(whiteRabbit.asString())
53-
.also { println("ACCOUNT $whiteRabbit CREATED") }
59+
val whiteRabbitKeyPair = generateKeyPair()
60+
val whiteRabbit = AccountId(domain.asDomainId(), whiteRabbitKeyPair.public.toIrohaPublicKey())
61+
sendTransaction
62+
.registerAccount(whiteRabbit.asString())
63+
.also { println("ACCOUNT $whiteRabbit CREATED") }
5464

55-
val whiteRabbitAsset = AssetId(whiteRabbit, assetDefinition.asAssetDefinitionId())
56-
sendTransaction.registerAsset(whiteRabbitAsset, AssetValue.Numeric(0.asNumeric()))
57-
.also { println("ASSET $whiteRabbitAsset CREATED") }
65+
val whiteRabbitAsset = AssetId(whiteRabbit, assetDefinition.asAssetDefinitionId())
66+
sendTransaction
67+
.registerAsset(whiteRabbitAsset, AssetValue.Numeric(0.asNumeric()))
68+
.also { println("ASSET $whiteRabbitAsset CREATED") }
5869

59-
sendTransaction.transferAsset(madHatterAsset, 10, whiteRabbit.asString(), madHatter, madHatterKeyPair)
60-
.also { println("$madHatter TRANSFERRED FROM $madHatterAsset TO $whiteRabbitAsset: 10") }
61-
query.getAccountAmount(madHatter, madHatterAsset.definition).also { println("$madHatterAsset BALANCE: $it") }
62-
query.getAccountAmount(whiteRabbit, whiteRabbitAsset.definition).also { println("$whiteRabbitAsset BALANCE: $it") }
70+
sendTransaction
71+
.transferAsset(madHatterAsset, BigDecimal(10), whiteRabbit.asString())
72+
.also { println("$madHatter TRANSFERRED FROM $madHatterAsset TO $whiteRabbitAsset: 10") }
73+
query.getAccountAmount(madHatter, madHatterAsset.definition).also { println("$madHatterAsset BALANCE: $it") }
74+
query.getAccountAmount(whiteRabbit, whiteRabbitAsset.definition).also { println("$whiteRabbitAsset BALANCE: $it") }
6375

64-
sendTransaction.burnAssets(madHatterAsset, 10, madHatter, madHatterKeyPair)
65-
.also { println("$madHatterAsset WAS BURN") }
76+
sendTransaction
77+
.burnAssets(madHatterAsset, BigDecimal(10))
78+
.also { println("$madHatterAsset WAS BURN") }
6679

67-
query.getAccountAmount(madHatter, madHatterAsset.definition)
68-
.also { println("$madHatterAsset BALANCE: $it AFTER ASSETS BURNING") }
69-
}
80+
query
81+
.getAccountAmount(madHatter, madHatterAsset.definition)
82+
.also { println("$madHatterAsset BALANCE: $it AFTER ASSETS BURNING") }
83+
}
Lines changed: 43 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package jp.co.soramitsu.iroha2
22

33
import jp.co.soramitsu.iroha2.generated.AccountId
4+
import jp.co.soramitsu.iroha2.generated.AccountIdPredicateAtom
5+
import jp.co.soramitsu.iroha2.generated.AccountIdProjectionOfPredicateMarker
46
import jp.co.soramitsu.iroha2.generated.AssetDefinitionId
7+
import jp.co.soramitsu.iroha2.generated.AssetIdProjectionOfPredicateMarker
8+
import jp.co.soramitsu.iroha2.generated.AssetProjectionOfPredicateMarker
59
import jp.co.soramitsu.iroha2.generated.AssetValue
6-
import jp.co.soramitsu.iroha2.generated.GenericPredicateBox
7-
import jp.co.soramitsu.iroha2.generated.QueryOutputPredicate
10+
import jp.co.soramitsu.iroha2.generated.CompoundPredicateOfAccount
11+
import jp.co.soramitsu.iroha2.generated.CompoundPredicateOfAsset
12+
import jp.co.soramitsu.iroha2.generated.CompoundPredicateOfDomain
813
import jp.co.soramitsu.iroha2.query.QueryBuilder
914
import java.math.BigInteger
1015
import java.security.KeyPair
@@ -14,32 +19,47 @@ open class Query(
1419
private val admin: AccountId,
1520
private val keyPair: KeyPair,
1621
) {
22+
suspend fun findAllDomains(filter: CompoundPredicateOfDomain? = null) =
23+
client.submit(
24+
QueryBuilder
25+
.findDomains(filter)
26+
.signAs(admin, keyPair),
27+
)
1728

18-
suspend fun findAllDomains(queryFilter: GenericPredicateBox<QueryOutputPredicate>? = null) = QueryBuilder
19-
.findAllDomains(queryFilter)
20-
.account(admin)
21-
.buildSigned(keyPair)
22-
.let { client.sendQuery(it) }
29+
suspend fun findAllAccounts(filter: CompoundPredicateOfAccount? = null) =
30+
client.submit(
31+
QueryBuilder
32+
.findAccounts(filter)
33+
.signAs(admin, keyPair),
34+
)
2335

24-
suspend fun findAllAccounts(queryFilter: GenericPredicateBox<QueryOutputPredicate>? = null) = QueryBuilder
25-
.findAllAccounts(queryFilter)
26-
.account(admin)
27-
.buildSigned(keyPair)
28-
.let { client.sendQuery(it) }
36+
suspend fun findAllAssets(filter: CompoundPredicateOfAsset? = null) =
37+
client.submit(
38+
QueryBuilder
39+
.findAssets(filter)
40+
.signAs(admin, keyPair),
41+
)
2942

30-
suspend fun findAllAssets(queryFilter: GenericPredicateBox<QueryOutputPredicate>? = null) = QueryBuilder
31-
.findAllAssets(queryFilter)
32-
.account(admin)
33-
.buildSigned(keyPair)
34-
.let { client.sendQuery(it) }
35-
36-
suspend fun getAccountAmount(accountId: AccountId, assetDefinitionId: AssetDefinitionId): BigInteger =
37-
QueryBuilder.findAssetsByAccountId(accountId)
38-
.account(admin)
39-
.buildSigned(keyPair)
43+
suspend fun getAccountAmount(
44+
accountId: AccountId,
45+
assetDefinitionId: AssetDefinitionId,
46+
): BigInteger {
47+
val byAccountIdFilter =
48+
CompoundPredicateOfAsset.Atom(
49+
AssetProjectionOfPredicateMarker.Id(
50+
AssetIdProjectionOfPredicateMarker.Account(
51+
AccountIdProjectionOfPredicateMarker.Atom(
52+
AccountIdPredicateAtom.Equals(accountId),
53+
),
54+
),
55+
),
56+
)
57+
return client
58+
.submit(QueryBuilder.findAssets(byAccountIdFilter).signAs(admin, keyPair))
4059
.let { query ->
41-
client.sendQuery(query).find { it.id.definition == assetDefinitionId }?.value
60+
query.find { it.id.definition == assetDefinitionId }?.value
4261
}.let { value ->
4362
value?.cast<AssetValue.Numeric>()?.numeric?.mantissa
4463
} ?: throw RuntimeException("NOT FOUND")
64+
}
4565
}

0 commit comments

Comments
 (0)