From 5d514d9c6e8f95d2ad5b77bf5f8ae46850573321 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 27 Jan 2025 09:03:12 -0800 Subject: [PATCH 01/36] chore: set v1.7.2-SNAPSHOT --- README.md | 2 +- build.gradle | 2 +- platform-mobile/Cargo.lock | 2 +- platform-mobile/Cargo.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8806e81..9c42b1f 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Build the android libraries to publish to Maven Central ### Use in other projects ```groovy -dppVersion = "1.7.1" +dppVersion = "1.7.2-SNAPSHOT" dependencies { implementation "org.dashj.platform:dash-sdk-java:$dppVersion" implementation "org.dashj.platform:dash-sdk-kotlin:$dppVersion" // dpp diff --git a/build.gradle b/build.gradle index 0b80fae..1aa5d60 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.version = '1.7.1' + ext.version = '1.7.2-SNAPSHOT' ext.kotlin_version = '1.8.22' ext.dashj_version = '21.1.0' repositories { diff --git a/platform-mobile/Cargo.lock b/platform-mobile/Cargo.lock index b04bc19..83d963b 100644 --- a/platform-mobile/Cargo.lock +++ b/platform-mobile/Cargo.lock @@ -3083,7 +3083,7 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "platform-mobile" -version = "1.7.1" +version = "1.7.2" dependencies = [ "async-trait", "base64 0.13.1", diff --git a/platform-mobile/Cargo.toml b/platform-mobile/Cargo.toml index 3875c43..a4ebe56 100644 --- a/platform-mobile/Cargo.toml +++ b/platform-mobile/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "platform-mobile" -version = "1.7.1" +version = "1.7.2" edition = "2021" [dependencies] From 69a2bd300d94595cb1cc79644be21b518a7de482 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 27 Jan 2025 09:04:34 -0800 Subject: [PATCH 02/36] feat: add TxMetadata protobuf as new data format --- .../platform/dashpay/BlockchainIdentity.kt | 42 ++++-- .../org/dashj/platform/wallet/TxMetadata.kt | 19 ++- .../platform/wallet/TxMetadataDocument.kt | 27 +++- .../dashj/platform/wallet/TxMetadataItem.kt | 135 +++++++++++++++--- dpp/src/main/proto/wallet-utils.proto | 26 ++++ .../dashj/org/platform/CreateTxMetadata.kt | 4 +- 6 files changed, 214 insertions(+), 39 deletions(-) create mode 100644 dpp/src/main/proto/wallet-utils.proto diff --git a/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt b/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt index dc509a2..d9a3d05 100644 --- a/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt +++ b/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt @@ -48,7 +48,7 @@ import org.bitcoinj.wallet.authentication.AuthenticationGroupExtension import org.bouncycastle.crypto.params.KeyParameter import org.dashj.platform.wallet.TxMetadata import org.dashj.platform.contracts.wallet.TxMetadataDocument -import org.dashj.platform.contracts.wallet.TxMetadataItem +import org.dashj.platform.wallet.TxMetadataItem import org.dashj.platform.dapiclient.MaxRetriesReachedException import org.dashj.platform.dapiclient.model.DocumentQuery import org.dashj.platform.dashpay.callback.* @@ -66,6 +66,7 @@ import org.dashj.platform.dpp.util.Converters import org.dashj.platform.sdk.* import org.dashj.platform.sdk.platform.Names import org.dashj.platform.sdk.platform.Platform +import org.dashj.platform.wallet.WalletUtils.TxMetadataBatch import org.slf4j.LoggerFactory import java.math.BigInteger import java.util.concurrent.ExecutionException @@ -2250,11 +2251,10 @@ class BlockchainIdentity { // Transaction Metadata Methods @Throws(KeyCrypterException::class) - fun publishTxMetaData(txMetadataItems: List, keyParameter: KeyParameter?) { - if (!platform.hasApp("dashwallet")) { + fun publishTxMetaData(txMetadataItems: List, keyParameter: KeyParameter?, keyIndex: Int, version: Int) { + if (!platform.hasApp("wallet-utils")) { return } - val keyIndex = 1 val encryptionKeyIndex = 0 val encryptionKey = privateKeyAtPath(keyIndex, TxMetadataDocument.childNumber, encryptionKeyIndex, KeyType.ECDSA_SECP256K1, keyParameter) @@ -2280,17 +2280,21 @@ class BlockchainIdentity { } log.info("publishing ${currentMetadataItems.size} items of ${txMetadataItems.size}") - val metadataBytes = Cbor.encode(currentMetadataItems.map { it.toObject() }) + val txMetadata = TxMetadata(platform) + val metadataBytes = txMetadata.getBuffer(TxMetadataDocument.VERSION_PROTOBUF, currentMetadataItems)//Cbor.encode(currentMetadataItems.map { it.toObject() }) // encrypt data val cipher = KeyCrypterAESCBC() val aesKey = cipher.deriveKey(encryptionKey) val encryptedData = cipher.encrypt(metadataBytes, aesKey) - - TxMetadata(platform).create( + val allEncryptedData = ByteArray(1 + encryptedData.initialisationVector.size + encryptedData.encryptedBytes.size) + allEncryptedData[0] = version.toByte() + encryptedData.initialisationVector.copyInto(allEncryptedData, 1) + encryptedData.encryptedBytes.copyInto(allEncryptedData, encryptedData.initialisationVector.size + 1) + txMetadata.create( keyIndex, encryptionKeyIndex, - encryptedData.initialisationVector.plus(encryptedData.encryptedBytes), + allEncryptedData, identity!!, KeyIndexPurpose.AUTHENTICATION.ordinal, WalletSignerCallback(wallet!!, keyParameter) @@ -2300,7 +2304,7 @@ class BlockchainIdentity { } fun getTxMetaData(createdAfter: Long = -1, keyParameter: KeyParameter?): Map> { - if (!platform.hasApp("dashwallet")) { + if (!platform.hasApp("wallet-utils")) { return hashMapOf() } val documents = TxMetadata(platform).get(uniqueIdentifier, createdAfter) @@ -2324,17 +2328,27 @@ class BlockchainIdentity { keyParameter ) val aesKeyParameter = cipher.deriveKey(encryptionKey) - + val version = txMetadataDocument.encryptedMetadata[0].toInt() // now decrypt val encryptedData = EncryptedData( - txMetadataDocument.encryptedMetadata.copyOfRange(0, 16), - txMetadataDocument.encryptedMetadata.copyOfRange(16, txMetadataDocument.encryptedMetadata.size) + txMetadataDocument.encryptedMetadata.copyOfRange(1, 17), + txMetadataDocument.encryptedMetadata.copyOfRange(17, txMetadataDocument.encryptedMetadata.size) ) val decryptedData = cipher.decrypt(encryptedData, aesKeyParameter) - val decryptedList = Cbor.decodeList(decryptedData) - return decryptedList.map { TxMetadataItem(it as Map) } + + return when (version) { + TxMetadataDocument.VERSION_CBOR -> { + val decryptedList = Cbor.decodeList(decryptedData) + decryptedList.map { TxMetadataItem(it as Map) } + } + TxMetadataDocument.VERSION_PROTOBUF -> { + val decryptedList = TxMetadataBatch.parser().parseFrom(decryptedData) + decryptedList.itemsList.map { TxMetadataItem(it) } + } + else -> error ("invalid tx metadata version $version") + } } fun deleteDocument(typeLocator: String, documentId: Identifier, keyParameter: KeyParameter?): Boolean { diff --git a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadata.kt b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadata.kt index f557421..9f30d6b 100644 --- a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadata.kt +++ b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadata.kt @@ -10,6 +10,7 @@ package org.dashj.platform.wallet import java.util.Date import kotlin.collections.HashMap import org.bitcoinj.core.ECKey +import org.dashj.platform.contracts.wallet.TxMetadataDocument import org.dashj.platform.dapiclient.model.DocumentQuery import org.dashj.platform.dashpay.callback.SingleKeySignerCallback import org.dashj.platform.dpp.document.Document @@ -17,6 +18,7 @@ import org.dashj.platform.dpp.document.DocumentCreateTransition import org.dashj.platform.dpp.document.DocumentsBatchTransition import org.dashj.platform.dpp.identifier.Identifier import org.dashj.platform.dpp.identity.Identity +import org.dashj.platform.dpp.util.Cbor import org.dashj.platform.sdk.BlockHeight import org.dashj.platform.sdk.CoreBlockHeight import org.dashj.platform.sdk.Purpose @@ -24,6 +26,7 @@ import org.dashj.platform.sdk.SecurityLevel import org.dashj.platform.sdk.callbacks.Signer import org.dashj.platform.sdk.dashsdk import org.dashj.platform.sdk.platform.Platform +import org.dashj.platform.wallet.WalletUtils.TxMetadataBatch import java.math.BigInteger class TxMetadata( @@ -31,7 +34,7 @@ class TxMetadata( ) { companion object { - const val DOCUMENT: String = "dashwallet.tx_metadata" + const val DOCUMENT: String = "wallet-utils.txMetadata" } fun create( @@ -83,6 +86,16 @@ class TxMetadata( return document } + fun getBuffer(version: Int, metadataItems: List): ByteArray { + return when (version) { + TxMetadataDocument.VERSION_CBOR -> Cbor.encode(metadataItems.map { it.toObject() }) + TxMetadataDocument.VERSION_PROTOBUF -> { + TxMetadataBatch.newBuilder().addAllItems(metadataItems.map { it.toProtobuf() }).build().toByteArray() + } + else -> error("Invalid version txmetadata $version") + } + } + fun get(userId: String): List { return get(Identifier.from(userId)) } @@ -90,10 +103,10 @@ class TxMetadata( fun get(userId: Identifier, createdAfter: Long = -1): List { val queryBuilder = DocumentQuery.Builder() .where("\$ownerId", "==", userId) - .orderBy("\$createdAt") + .orderBy("\$updatedAt") if (createdAfter != -1L) { - queryBuilder.where(listOf("\$createdAt", ">=", createdAfter)) + queryBuilder.where(listOf("\$updatedAt", ">=", createdAfter)) } val query = queryBuilder.build() diff --git a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt index 8f077fa..48e0c93 100644 --- a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt +++ b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt @@ -14,6 +14,8 @@ import org.bouncycastle.crypto.params.KeyParameter import org.dashj.platform.dpp.document.Document import org.dashj.platform.dpp.util.Cbor import org.dashj.platform.sdk.platform.AbstractDocument +import org.dashj.platform.wallet.TxMetadataItem +import org.dashj.platform.wallet.WalletUtils.TxMetadataBatch class TxMetadataDocument(document: Document) : AbstractDocument(document) { @@ -21,6 +23,10 @@ class TxMetadataDocument(document: Document) : AbstractDocument(document) { // 2^16 + 2 val childNumber = ChildNumber(2 shl 15 + 1, true) const val MAX_ENCRYPTED_SIZE = 4096 - 32 // leave room for a partially filled block and the IV + + const val VERSION_UNKNOWN = -1 + const val VERSION_CBOR = 0 + const val VERSION_PROTOBUF = 1 } val keyIndex: Int @@ -29,6 +35,8 @@ class TxMetadataDocument(document: Document) : AbstractDocument(document) { get() = (document.data["encryptionKeyIndex"] as Long).toInt() val encryptedMetadata: ByteArray get() = getFieldByteArray("encryptedMetadata")!! + var txMetadataVersion = VERSION_UNKNOWN + private set override fun equals(other: Any?): Boolean { if (this === other) return true @@ -53,9 +61,20 @@ class TxMetadataDocument(document: Document) : AbstractDocument(document) { val iv = encryptedMetadata.copyOfRange(0, 16) val encryptedData = encryptedMetadata.copyOfRange(16, encryptedMetadata.size) val decryptedData = cipher.decrypt(EncryptedData(iv, encryptedData), keyParameter) - // use Cbor.decodeList - val list = Cbor.decodeList(decryptedData) - // use .map to convert to List - return list.map { TxMetadataItem(it as Map) } + val version = decryptedData.copyOfRange(0, 1)[0].toInt() and 0xFF + return when (version) { + VERSION_CBOR -> { + val list = Cbor.decodeList(decryptedData) + this.txMetadataVersion = VERSION_CBOR + // use .map to convert to List + list.map { TxMetadataItem(it as Map) } + } + VERSION_PROTOBUF -> { + val batch = TxMetadataBatch.parser().parseFrom(decryptedData, 1, decryptedData.size - 1) + txMetadataVersion = VERSION_PROTOBUF + batch.itemsList.map { TxMetadataItem(it) } + } + else -> error("") + } } } diff --git a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt index a469068..7ec2739 100644 --- a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt +++ b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt @@ -5,11 +5,15 @@ * LICENSE file in the root directory of this source tree. */ -package org.dashj.platform.contracts.wallet +package org.dashj.platform.wallet import com.google.common.primitives.Ints +import com.google.protobuf.ByteString +import org.bitcoinj.core.Sha256Hash import org.dashj.platform.dpp.toHex import org.dashj.platform.dpp.util.Cbor +import java.text.DecimalFormat + /** * Transaction metadata item * @@ -46,7 +50,6 @@ class TxMetadataItem( val barcodeValue: String? = null, val barcodeFormat: String? = null, val merchantUrl: String? = null, - val version: Int = 0 ) { val data = hashMapOf() @@ -67,19 +70,36 @@ class TxMetadataItem( rawObject["originalPrice"] as? Double, rawObject["barcodeValue"] as? String, rawObject["barcodeFormat"] as? String, - rawObject["merchantUrl"] as? String, - - rawObject["version"] as Int + rawObject["merchantUrl"] as? String ) { data.putAll(rawObject) } + constructor(protoTxMetadata: WalletUtils.TxMetadataItem) : this( + protoTxMetadata.txId.toByteArray(), + if (protoTxMetadata.timestamp != 0L) protoTxMetadata.timestamp else null, + if (protoTxMetadata.memo != "") protoTxMetadata.memo else null, + if (protoTxMetadata.exchangeRate != 0.0) protoTxMetadata.exchangeRate else null, + if (protoTxMetadata.currencyCode != "") protoTxMetadata.currencyCode else null, + if (protoTxMetadata.taxCategory != "") protoTxMetadata.taxCategory else null, + if (protoTxMetadata.service != "") protoTxMetadata.service else null, + if (protoTxMetadata.customIconUrl != "") protoTxMetadata.customIconUrl else null, + if (protoTxMetadata.giftCardNumber != "") protoTxMetadata.giftCardNumber else null, + if (protoTxMetadata.giftCardPin != "") protoTxMetadata.giftCardPin else null, + if (protoTxMetadata.merchantName != "") protoTxMetadata.merchantName else null, + if (protoTxMetadata.originalPrice != 0.00) protoTxMetadata.originalPrice else null, + if (protoTxMetadata.barcodeValue != "") protoTxMetadata.barcodeValue else null, + if (protoTxMetadata.barcodeFormat != "") protoTxMetadata.barcodeFormat else null, + if (protoTxMetadata.merchantUrl != "") protoTxMetadata.merchantUrl else null + ) + fun toObject(): Map { val map = hashMapOf( "txId" to txId, - "timestamp" to timestamp, - "version" to version ) + timestamp?.let { + map["timestamp"] to it + } memo?.let { map["memo"] = it @@ -135,6 +155,72 @@ class TxMetadataItem( return map } + + fun toJson(): Map { + val map = hashMapOf( + "txId" to Sha256Hash.wrap(txId).toString() + ) + timestamp?.let { + map["timestamp"] to it + } + + memo?.let { + map["memo"] = it + } + + exchangeRate?.let { + val format = DecimalFormat.getCurrencyInstance() + map["exchangeRate"] = format.format(it) + } + + currencyCode?.let { + map["currencyCode"] = it + } + + taxCategory?.let { + map["taxCategory"] = it + } + + service?.let { + map["service"] = it + } + + customIconUrl?.let { + map["customIconUrl"] = it + } + + giftCardNumber?.let { + map["giftCardNumber"] = it + } + + giftCardPin?.let { + map["giftCardPin"] = it + } + + merchantName?.let { + map["merchantName"] = it + } + + originalPrice?.let { + val format = DecimalFormat.getCurrencyInstance() + map["originalPrice"] = format.format(it) + } + + barcodeValue?.let { + map["barcodeValue"] = it + } + + barcodeFormat?.let { + map["barcodeFormat"] = it + } + + merchantUrl?.let { + map["merchantUrl"] = it + } + + return map + } + fun getSize(): Int { return Cbor.encode(toObject()).size } @@ -144,7 +230,6 @@ class TxMetadataItem( return true } else if (other is TxMetadataItem) { return txId.contentEquals(other.txId) && - version == other.version && memo == other.memo && exchangeRate == other.exchangeRate && currencyCode == other.currencyCode && @@ -164,18 +249,36 @@ class TxMetadataItem( override fun hashCode(): Int { return Ints.fromBytes( - txId.get(3), - txId.get(2), - txId.get(1), - txId.get(0) + txId[3], + txId[2], + txId[1], + txId[0] ) } + fun toProtobuf(): WalletUtils.TxMetadataItem { + val builder = WalletUtils.TxMetadataItem.newBuilder().apply { + setTxId(ByteString.copyFrom(this@TxMetadataItem.txId)) + } + timestamp?.let { builder.timestamp = it } + memo?.let { builder.memo = it } + exchangeRate?.let { builder.exchangeRate = it } + currencyCode?.let { builder.currencyCode = it } + taxCategory?.let { builder.taxCategory = it } + service?.let { builder.service = it } + customIconUrl?.let { builder.currencyCode = it } + giftCardNumber?.let { builder.giftCardNumber = it } + giftCardPin?.let { builder.giftCardPin = it } + merchantName?.let { builder.merchantName = it } + originalPrice?.let { builder.originalPrice = it } + barcodeValue?.let { builder.barcodeValue = it } + barcodeFormat?.let { builder.barcodeFormat = it } + merchantUrl?.let { builder.merchantUrl = it } + return builder.build() + } + override fun toString(): String { - return "TxMetadataItem(ver=$version, ${txId.toHex()}, memo=$memo, rate=$exchangeRate, " + - "code=$currencyCode, taxCategory=$taxCategory, service=$service, customIconUrl=$customIconUrl, " + - "giftCardNumber=$giftCardNumber, giftCardPin=$giftCardPin, merchantName=$merchantName, " + - "originalPrice=$originalPrice, barcodeValue=$barcodeValue, barcodeFormat=$barcodeFormat, merchantUrl=$merchantUrl)" + return "TxMetadataItem${toJson()}" } fun isNotEmpty(): Boolean { diff --git a/dpp/src/main/proto/wallet-utils.proto b/dpp/src/main/proto/wallet-utils.proto new file mode 100644 index 0000000..f6ae449 --- /dev/null +++ b/dpp/src/main/proto/wallet-utils.proto @@ -0,0 +1,26 @@ +syntax = "proto3"; + +package org.dashj.platform.wallet; + +message TxMetadataItem { + bytes txId = 1; + optional uint64 timestamp = 2; + optional string memo = 3; + optional double exchangeRate = 4; + optional string currencyCode = 5; + optional string taxCategory = 6; + optional string service = 7; + optional string customIconUrl = 8; + optional string giftCardNumber = 9; + optional string giftCardPin = 10; + optional string merchantName = 11; + optional double originalPrice = 12; + optional string barcodeValue = 13; + optional string barcodeFormat = 14; + optional string merchantUrl = 15; + map otherData = 20; +} + +message TxMetadataBatch { + repeated TxMetadataItem items = 1; +} \ No newline at end of file diff --git a/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadata.kt b/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadata.kt index dca24a2..026b1c8 100644 --- a/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadata.kt +++ b/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadata.kt @@ -7,7 +7,7 @@ package dashj.org.platform import org.dashj.platform.contracts.wallet.TxMetadataDocument -import org.dashj.platform.contracts.wallet.TxMetadataItem +import org.dashj.platform.wallet.TxMetadataItem import org.dashj.platform.dashpay.BlockchainIdentity import org.dashj.platform.dpp.util.Entropy import org.dashj.platform.sdk.Client @@ -44,7 +44,7 @@ class CreateTxMetadata { TxMetadataItem(Entropy.generateRandomBytes(32), 2, memo = "Book Store") ) - blockchainIdentity.publishTxMetaData(txMetadataItems, null) + blockchainIdentity.publishTxMetaData(txMetadataItems, null, 1, TxMetadataDocument.VERSION_PROTOBUF) } val documents = txMetadata.get(identity.id) From 3c5810f0d799549776d771a20d584b6b12b705b4 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 27 Jan 2025 09:04:57 -0800 Subject: [PATCH 03/36] feat: add wallet-utils data contract --- .../main/java/org/dashj/platform/dapiclient/SystemIds.kt | 7 +++++-- .../main/java/org/dashj/platform/sdk/platform/Platform.kt | 7 ++++--- .../main/java/org/dashj/platform/wallet/IdentityVerify.kt | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/dpp/src/main/java/org/dashj/platform/dapiclient/SystemIds.kt b/dpp/src/main/java/org/dashj/platform/dapiclient/SystemIds.kt index 54fd283..9d8c49d 100644 --- a/dpp/src/main/java/org/dashj/platform/dapiclient/SystemIds.kt +++ b/dpp/src/main/java/org/dashj/platform/dapiclient/SystemIds.kt @@ -7,11 +7,14 @@ package org.dashj.platform.dapiclient +import org.bitcoinj.core.Sha256Hash import org.dashj.platform.dpp.identifier.Identifier object SystemIds { - val dpnsOwnerId = Identifier.from("4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF") + val dpnsOwnerId = Identifier.from(Sha256Hash.ZERO_HASH) val dpnsDataContractId = Identifier.from("GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec") - val dashpayOwnerId = Identifier.from("5PhRFRrWZc5Mj8NqtpHNXCmmEQkcZE8akyDkKhsUVD4k") + val dashpayOwnerId = Identifier.from(Sha256Hash.ZERO_HASH) val dashpayDataContractId = Identifier.from("Bwr4WHCPz5rFVAD87RqTs3izo4zpzwsEdKPWUT1NS1C7") + val walletUtilsOwnerId = Identifier.from(Sha256Hash.ZERO_HASH) + val walletUtilsDataContractId = Identifier.from("7CSFGeF4WNzgDmx94zwvHkYaG3Dx4XEe5LFsFgJswLbm") } diff --git a/dpp/src/main/java/org/dashj/platform/sdk/platform/Platform.kt b/dpp/src/main/java/org/dashj/platform/sdk/platform/Platform.kt index fdaa8aa..619e14b 100644 --- a/dpp/src/main/java/org/dashj/platform/sdk/platform/Platform.kt +++ b/dpp/src/main/java/org/dashj/platform/sdk/platform/Platform.kt @@ -77,16 +77,17 @@ class Platform(val params: NetworkParameters) { init { apps["dpns"] = ClientAppDefinition(SystemIds.dpnsDataContractId) apps["dashpay"] = ClientAppDefinition(SystemIds.dashpayDataContractId) + apps["wallet-utils"] = ClientAppDefinition(SystemIds.walletUtilsDataContractId) when { params.id.contains("test") -> { useWhiteList = true - apps["dashwallet"] = ClientAppDefinition("Bhptm3yBDhLkRNt7ofjpwaBHhMUKjDrQoPufKzQaxmpK") + apps["identity-verify"] = ClientAppDefinition("Bhptm3yBDhLkRNt7ofjpwaBHhMUKjDrQoPufKzQaxmpK") } params.id.contains("bintang") -> { - apps["dashwallet"] = ClientAppDefinition("Fds5DDfXoLwpUZ71AAVYZP1uod8S7Ze2bR28JExBvZKR") + apps["identity-verify"] = ClientAppDefinition("Fds5DDfXoLwpUZ71AAVYZP1uod8S7Ze2bR28JExBvZKR") } params.id.contains("production") -> { - apps["dashwallet"] = ClientAppDefinition("EVKMFboB3QBUa9Jo7PP5bsLyohzUz8zvw5c2gJs1SfcX") + apps["identity-verify"] = ClientAppDefinition("EVKMFboB3QBUa9Jo7PP5bsLyohzUz8zvw5c2gJs1SfcX") } } System.loadLibrary("sdklib") diff --git a/dpp/src/main/java/org/dashj/platform/wallet/IdentityVerify.kt b/dpp/src/main/java/org/dashj/platform/wallet/IdentityVerify.kt index f1a4d0b..b6df0a1 100644 --- a/dpp/src/main/java/org/dashj/platform/wallet/IdentityVerify.kt +++ b/dpp/src/main/java/org/dashj/platform/wallet/IdentityVerify.kt @@ -27,7 +27,7 @@ class IdentityVerify( ) { companion object { - const val DOCUMENT: String = "dashwallet.identityVerify" + const val DOCUMENT: String = "identity-verify.identityVerify" private val log = LoggerFactory.getLogger(IdentityVerify::class.java) } From 7362d3d9bac191de4d20295dd56235440db60502 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 27 Jan 2025 09:05:14 -0800 Subject: [PATCH 04/36] fix: improve error handling in fetch documents --- platform-mobile/src/fetch_document.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/platform-mobile/src/fetch_document.rs b/platform-mobile/src/fetch_document.rs index 81add68..846ec39 100644 --- a/platform-mobile/src/fetch_document.rs +++ b/platform-mobile/src/fetch_document.rs @@ -103,9 +103,10 @@ pub fn fetch_documents_with_query_and_sdk( tracing::warn!("contract_fetch_result: {:?}", contract); // Fetch multiple documents so that we get document ID - let mut all_docs_query = - DocumentQuery::new(Arc::clone(&contract), &document_type) - .expect("create SdkDocumentQuery"); + let mut all_docs_query = match DocumentQuery::new(Arc::clone(&contract), &document_type) { + Ok(result) => result, + Err(e) => return Err(e.to_string()) + }; for wc in where_clauses { all_docs_query = all_docs_query.with_where(wc); } From b59075300aa8b6467676a0add21c287f943c35f3 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 4 Feb 2025 08:39:08 -0800 Subject: [PATCH 05/36] feat: update TxMetadata to use protobuf storage --- .../platform/dashpay/BlockchainIdentity.kt | 43 +++++++++++++++---- .../org/dashj/platform/wallet/TxMetadata.kt | 24 +++++++++++ dpp/src/main/proto/wallet-utils.proto | 2 +- 3 files changed, 60 insertions(+), 9 deletions(-) diff --git a/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt b/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt index d9a3d05..8c89618 100644 --- a/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt +++ b/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt @@ -2249,17 +2249,26 @@ class BlockchainIdentity { return "assetlocktx=$txid&pk=$wif&du=${currentUsername!!}&islock=${cftx.confidence.instantSendlock.toStringHex()}" } - // Transaction Metadata Methods @Throws(KeyCrypterException::class) - fun publishTxMetaData(txMetadataItems: List, keyParameter: KeyParameter?, keyIndex: Int, version: Int) { + fun createTxMetadata(txMetadataItems: List, keyParameter: KeyParameter?, encryptionKeyIndex: Int, version: Int): List { if (!platform.hasApp("wallet-utils")) { - return + return arrayListOf() } - val encryptionKeyIndex = 0 - val encryptionKey = privateKeyAtPath(keyIndex, TxMetadataDocument.childNumber, encryptionKeyIndex, KeyType.ECDSA_SECP256K1, keyParameter) + val encryptionIdentityPublicKey = identity!!.getFirstPublicKey(Purpose.ENCRYPTION, SecurityLevel.MEDIUM) + ?: identity!!.getFirstPublicKey(Purpose.AUTHENTICATION, SecurityLevel.HIGH) + ?: error("can't find a authentication public key with HIGH security level or encryption key") + val keyIndex = encryptionIdentityPublicKey.id + val encryptionKey = privateKeyAtPath( + keyIndex, + TxMetadataDocument.childNumber, + encryptionKeyIndex, + KeyType.ECDSA_SECP256K1, + keyParameter + ) var lastItem: TxMetadataItem? = null var currentIndex = 0 + val result = arrayListOf() log.info("publish ${txMetadataItems.size} by breaking it up into pieces") while (currentIndex < txMetadataItems.size) { var estimatedDocSize = 0 @@ -2291,16 +2300,33 @@ class BlockchainIdentity { allEncryptedData[0] = version.toByte() encryptedData.initialisationVector.copyInto(allEncryptedData, 1) encryptedData.encryptedBytes.copyInto(allEncryptedData, encryptedData.initialisationVector.size + 1) - txMetadata.create( + val txMetadataDocument = txMetadata.createDocument( keyIndex, encryptionKeyIndex, allEncryptedData, identity!!, - KeyIndexPurpose.AUTHENTICATION.ordinal, - WalletSignerCallback(wallet!!, keyParameter) ) + result.add(txMetadataDocument) currentMetadataItems.clear() } + return result + } + + // Transaction Metadata Methods + @Throws(KeyCrypterException::class) + fun publishTxMetaData(txMetadataItems: List, keyParameter: KeyParameter?, encryptionKeyIndex: Int, version: Int) { + if (!platform.hasApp("wallet-utils")) { + return + } + val documentsToPublish = createTxMetadata(txMetadataItems, keyParameter, encryptionKeyIndex, version) + val txMetadata = TxMetadata(platform) + documentsToPublish.forEach { txMetadataDocument -> + txMetadata.publish( + txMetadataDocument, + identity!!, + WalletSignerCallback(wallet!!, keyParameter) + ) + } } fun getTxMetaData(createdAfter: Long = -1, keyParameter: KeyParameter?): Map> { @@ -2319,6 +2345,7 @@ class BlockchainIdentity { @Throws(KeyCrypterException::class) fun decryptTxMetadata(txMetadataDocument: TxMetadataDocument, keyParameter: KeyParameter?): List { + checkArgument(wallet!!.isEncrypted == (keyParameter != null), "isEncrypted must match keyParameter") val cipher = KeyCrypterAESCBC() val encryptionKey = privateKeyAtPath( txMetadataDocument.keyIndex, diff --git a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadata.kt b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadata.kt index 9f30d6b..02a14e4 100644 --- a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadata.kt +++ b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadata.kt @@ -66,6 +66,30 @@ class TxMetadata( return Document(domain, profileDocument.dataContractId!!) } + fun publish( + txMetadataDocument: Document, + identity: Identity, + signer: Signer + ): Document { + val highIdentityPublicKey = identity.getFirstPublicKey(Purpose.AUTHENTICATION, SecurityLevel.HIGH) + ?: error("can't find a public key with HIGH security level") + + val documentResult = dashsdk.platformMobilePutPutDocumentSdk( + platform.rustSdk, + txMetadataDocument.toNative(), + txMetadataDocument.dataContractId!!.toNative(), + txMetadataDocument.type, + highIdentityPublicKey.toNative(), + BlockHeight(10000), + CoreBlockHeight(platform.coreBlockHeight), + signer.nativeContext, + BigInteger.valueOf(signer.signerCallback), + ) + val domain = documentResult.unwrap() + + return Document(domain, txMetadataDocument.dataContractId!!) + } + fun createDocument( keyIndex: Int, encryptionKeyIndex: Int, diff --git a/dpp/src/main/proto/wallet-utils.proto b/dpp/src/main/proto/wallet-utils.proto index f6ae449..b0fe6f5 100644 --- a/dpp/src/main/proto/wallet-utils.proto +++ b/dpp/src/main/proto/wallet-utils.proto @@ -18,7 +18,7 @@ message TxMetadataItem { optional string barcodeValue = 13; optional string barcodeFormat = 14; optional string merchantUrl = 15; - map otherData = 20; + map otherData = 16; } message TxMetadataBatch { From 417662461004737bf8e65e882088c1f82bc5daa2 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 4 Feb 2025 08:39:33 -0800 Subject: [PATCH 06/36] tests: Add and modify TxMetadata tests --- .../contracts/wallet/TxMetaDataTests.kt | 107 ++++++- .../contracts/wallet/TxMetadataWalletTest.kt | 261 ++++++++++++++++++ 2 files changed, 362 insertions(+), 6 deletions(-) create mode 100644 dpp/src/test/kotlin/org/dashj/platform/contracts/wallet/TxMetadataWalletTest.kt diff --git a/dpp/src/test/kotlin/org/dashj/platform/contracts/wallet/TxMetaDataTests.kt b/dpp/src/test/kotlin/org/dashj/platform/contracts/wallet/TxMetaDataTests.kt index a472bc4..2b6a4fc 100644 --- a/dpp/src/test/kotlin/org/dashj/platform/contracts/wallet/TxMetaDataTests.kt +++ b/dpp/src/test/kotlin/org/dashj/platform/contracts/wallet/TxMetaDataTests.kt @@ -7,6 +7,7 @@ package org.dashj.platform.contracts.wallet +import org.bitcoinj.core.Sha256Hash import org.bitcoinj.crypto.ChildNumber import org.bitcoinj.crypto.KeyCrypterAESCBC import org.bitcoinj.crypto.KeyCrypterException @@ -14,13 +15,17 @@ import org.dashj.platform.assertListEquals import org.dashj.platform.assertMapEquals import org.dashj.platform.dashpay.BlockchainIdentity import org.dashj.platform.dashpay.PlatformNetwork -import org.dashj.platform.dpp.identity.IdentityPublicKey +import org.dashj.platform.dpp.toHex import org.dashj.platform.dpp.util.Cbor import org.dashj.platform.dpp.util.Converters import org.dashj.platform.dpp.util.Entropy import org.dashj.platform.sdk.KeyType +import org.dashj.platform.wallet.TxMetadataItem +import org.dashj.platform.wallet.WalletUtils +import org.dashj.platform.wallet.WalletUtils.TxMetadataBatch import org.junit.jupiter.api.Assertions.assertArrayEquals import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows @@ -29,11 +34,16 @@ class TxMetaDataTests : PlatformNetwork() { lateinit var txId: ByteArray lateinit var txMetadataItem: TxMetadataItem lateinit var txMetadataItemTwo: TxMetadataItem + lateinit var txMetadataItemThree: TxMetadataItem + lateinit var txMetadataItemFour: TxMetadataItem lateinit var txMetadataItems: List @BeforeEach fun beforeEach() { txId = Entropy.generateRandomBytes(32) + + // protobuf bytes + // 0a2028f18c0366f4b3cbf5aca02653d038764b786b5ec1eddc601e82179464f3173f109df3e9bc061a13416c69636527732050697a7a612050617274792100000000008049402a035553443207657870656e7365 txMetadataItem = TxMetadataItem( txId, System.currentTimeMillis() / 1000, @@ -41,8 +51,7 @@ class TxMetaDataTests : PlatformNetwork() { 51.00, "USD", "expense", - null, - version = 0 + null ) txMetadataItemTwo = TxMetadataItem( @@ -55,7 +64,34 @@ class TxMetaDataTests : PlatformNetwork() { "DashDirect" ) - txMetadataItems = listOf(txMetadataItem, txMetadataItemTwo) + txMetadataItemThree = TxMetadataItem( + Entropy.generateRandomBytes(32), + System.currentTimeMillis() / 1000, + null, + 52.23, + "USD", + "expense" + ) + + txMetadataItemFour = TxMetadataItem( + Converters.fromHex("c44d1077cd4628d0ac06e22032a4e8458f9d01be6342453de3eef88657b193ce"), + System.currentTimeMillis() / 1000, + "Bob's Burger Joint", + 52.23, + "USD", + "expense", + "DashDirect", + customIconUrl = "https://storage.googleapis.com/mash-potato-fireplace.appspot.com/alhi323/alhi/alhirafiyun.png", + giftCardNumber = "123456-7899-abcdef", + giftCardPin = "1234", + merchantName = "1-800-HotSoup", + originalPrice = 54.99, + barcodeValue = "3249u3ou234238403820820840238082304823047234098234023802384", + barcodeFormat = "EAN_8", + merchantUrl = "https://1-800-hotsoup.com" + ) + + txMetadataItems = listOf(txMetadataItem, txMetadataItemTwo, txMetadataItemThree, txMetadataItemFour) } @Test @@ -67,26 +103,80 @@ class TxMetaDataTests : PlatformNetwork() { "exchangeRate" to 51.00, "currencyCode" to "USD", "taxCategory" to "expense", - "version" to 0 ), txMetadataItem.toObject() ) } + @Test + fun toProtobufTest() { + txMetadataItem.toProtobuf().toByteArray() + } + @Test fun toCborTestForOneItemTest() { assertArrayEquals( - Converters.fromHex("a7646d656d6f72426f62277320427572676572204a6f696e7464747849645820c44d1077cd4628d0ac06e22032a4e8458f9d01be6342453de3eef88657b193ce67736572766963656a446173684469726563746776657273696f6e006b74617843617465676f727967657870656e73656c63757272656e6379436f6465635553446c65786368616e676552617465fb404a1d70a3d70a3d"), + Converters.fromHex("A6646D656D6F72426F62277320427572676572204A6F696E7464747849645820C44D1077CD4628D0AC06E22032A4E8458F9D01BE6342453DE3EEF88657B193CE67736572766963656A446173684469726563746B74617843617465676F727967657870656E73656C63757272656E6379436F6465635553446C65786368616E676552617465FB404A1D70A3D70A3D".lowercase()), Cbor.encode(txMetadataItemTwo.toObject()) ) } + // + // 0a + // 20 - 32 bytes + // 28f18c0366f4b3cbf5aca02653d038764b786b5ec1eddc601e82179464f3173f - txId + // 10 + // b7f9e9bc061a13416c69636527732050697a7a612050617274792100000000008049402a035553443207657870656e7365 + + @Test + fun toProtobufForOneItemtest() { + txMetadataItem = TxMetadataItem( + Sha256Hash.wrap("28f18c0366f4b3cbf5aca02653d038764b786b5ec1eddc601e82179464f3173f").bytes, + 1738177719933 / 1000, + "Alice's Pizza Party", + 51.00, + "USD", + "expense", + null + ) + println(System.currentTimeMillis()) + println(txMetadataItem.toProtobuf().toByteArray().toHex()) + assertArrayEquals( + Converters.fromHex("0a2028f18c0366f4b3cbf5aca02653d038764b786b5ec1eddc601e82179464f3173f10b7f9e9bc061a13416c69636527732050697a7a612050617274792100000000008049402a035553443207657870656e7365"), + txMetadataItem.toProtobuf().toByteArray() + ) + } + @Test fun toCborTestForAllItemsTest() { val cborData = Cbor.encode(txMetadataItems.map { it.toObject() }) val map = Cbor.decodeList(cborData) } + @Test + fun serializedSizeTest() { + txMetadataItems.forEachIndexed { i, item -> + val cborData = Cbor.encode(item.toObject()) + val protobufData = item.toProtobuf().toByteArray() + assertTrue(cborData.size > protobufData.size) + println("$i: cbor = ${cborData.size} bytes; protobuf = ${protobufData.size}; %less = ${(cborData.size-protobufData.size).toDouble()/cborData.size}") + } + val cborData = Cbor.encode(txMetadataItems.map { it.toObject() }) + val protobufData = TxMetadataBatch.newBuilder() + .addAllItems(txMetadataItems.map { it.toProtobuf() }) + .build().toByteArray() + assertTrue(cborData.size > protobufData.size) + println("all: cbor = ${cborData.size} bytes; protobuf = ${protobufData.size}; %less = ${(cborData.size-protobufData.size).toDouble()/cborData.size}") + } + + @Test + fun deserializedTest() { + val serializedBytes = txMetadataItem.toProtobuf().toByteArray() + assertEquals(84, serializedBytes.size) + val deserializedTxMetadata = TxMetadataItem(WalletUtils.TxMetadataItem.parseFrom(serializedBytes)) + assertEquals(txMetadataItem, deserializedTxMetadata) + } + @Test fun roundTripTest() { val blockchainIdentity = BlockchainIdentity(platform, 0, wallet, authenticationGroupExtension) @@ -132,4 +222,9 @@ class TxMetaDataTests : PlatformNetwork() { // 32 bytes = IV (16 bytes) + 1 block (16 bytes) assertEquals(32, encryptedData.initialisationVector.size + encryptedData.encryptedBytes.size) } + + @Test + fun publishToPlatform() { + + } } diff --git a/dpp/src/test/kotlin/org/dashj/platform/contracts/wallet/TxMetadataWalletTest.kt b/dpp/src/test/kotlin/org/dashj/platform/contracts/wallet/TxMetadataWalletTest.kt new file mode 100644 index 0000000..9ee91c6 --- /dev/null +++ b/dpp/src/test/kotlin/org/dashj/platform/contracts/wallet/TxMetadataWalletTest.kt @@ -0,0 +1,261 @@ +package org.dashj.platform.contracts.wallet + +import com.google.common.collect.ImmutableList +import com.google.protobuf.InvalidProtocolBufferException +import org.bitcoinj.core.Sha256Hash +import org.bitcoinj.crypto.ChildNumber +import org.bitcoinj.crypto.DeterministicKey +import org.bitcoinj.crypto.KeyCrypterException +import org.bitcoinj.params.TestNet3Params +import org.bitcoinj.wallet.AuthenticationKeyChain +import org.bitcoinj.wallet.DerivationPathFactory +import org.bitcoinj.wallet.DeterministicKeyChain +import org.bitcoinj.wallet.DeterministicSeed +import org.bitcoinj.wallet.KeyChainGroup +import org.bitcoinj.wallet.Wallet +import org.bitcoinj.wallet.authentication.AuthenticationGroupExtension +import org.bouncycastle.crypto.params.KeyParameter +import org.dashj.platform.dashpay.BlockchainIdentity +import org.dashj.platform.dpp.document.Document +import org.dashj.platform.dpp.util.Converters +import org.dashj.platform.dpp.util.Entropy +import org.dashj.platform.sdk.KeyType +import org.dashj.platform.sdk.platform.Platform +import org.dashj.platform.wallet.TxMetadata +import org.dashj.platform.wallet.TxMetadataItem +import org.junit.jupiter.api.AfterEach +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNotNull +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.assertThrows +import java.util.* + +class TxMetadataWalletTest { + val platform = Platform(TestNet3Params.get()) + //val platform = Platform(MainNetParams.get()) + val txMetadata = TxMetadata(platform) + val seed = "caution kitchen month seven humble olympic author session dutch direct decrease moment" + // val seed = "half sample spirit edit dawn humor eight refuse hundred suit critic print" + val wallet: Wallet = Wallet( + platform.params, + KeyChainGroup.builder(platform.params) + .addChain( + DeterministicKeyChain.builder() + .accountPath(DerivationPathFactory.get(platform.params).bip44DerivationPath(0)) + .seed(DeterministicSeed(seed, null, "", Date().time)) + .build() + ) + .build() + ) + val authenticationGroupExtension = AuthenticationGroupExtension(platform.params) + val blockchainIdentity = BlockchainIdentity(platform, 0, wallet, authenticationGroupExtension) + + private val txMetadataItem = TxMetadataItem( + Entropy.generateRandomBytes(32), + System.currentTimeMillis() / 1000, + "Alice's Pizza Party", + 51.00, + "USD", + "expense", + null + ) + + private val txMetadataItemTwo = TxMetadataItem( + Converters.fromHex("c44d1077cd4628d0ac06e22032a4e8458f9d01be6342453de3eef88657b193ce"), + System.currentTimeMillis() / 1000, + "Bob's Burger Joint", + 52.23, + "USD", + "expense", + "DashDirect" + ) + + private val txMetadataItemThree = TxMetadataItem( + Entropy.generateRandomBytes(32), + System.currentTimeMillis() / 1000, + null, + 52.23, + "USD", + "expense" + ) + + private val txMetadataItemFour = TxMetadataItem( + Entropy.generateRandomBytes(32), + System.currentTimeMillis() / 1000, + "Bob's Burger Joint", + 52.23, + "USD", + "expense", + "DashDirect", + customIconUrl = "https://storage.googleapis.com/mash-potato-fireplace.appspot.com/alhi323/alhi/alhirafiyun.png", + giftCardNumber = "123456-7899-abcdef", + giftCardPin = "1234", + merchantName = "1-800-HotSoup", + originalPrice = 54.99, + barcodeValue = "3249u3ou234238403820820840238082304823047234098234023802384", + barcodeFormat = "EAN_8", + merchantUrl = "https://1-800-hotsoup.com" + ) + + private val txMetadataItems = listOf(txMetadataItem, txMetadataItemTwo, txMetadataItemThree, txMetadataItemFour) + init { + authenticationGroupExtension.addKeyChains( + platform.params, wallet.keyChainSeed, + EnumSet.of( + AuthenticationKeyChain.KeyChainType.BLOCKCHAIN_IDENTITY, + AuthenticationKeyChain.KeyChainType.BLOCKCHAIN_IDENTITY_FUNDING, + AuthenticationKeyChain.KeyChainType.BLOCKCHAIN_IDENTITY_TOPUP, + AuthenticationKeyChain.KeyChainType.INVITATION_FUNDING + ) + ) + wallet.addExtension(authenticationGroupExtension) + + println("initializing platform") + platform.useValidNodes() + if (blockchainIdentity.recoverIdentity(authenticationGroupExtension.identityKeyChain.getKey(0).pubKeyHash)) { + println("recovered blockchain identity: ${blockchainIdentity.uniqueIdString}") + } else { + error("recovery failed to find identity") + } + } + + @AfterEach + fun afterEachTest() { + println(platform.client.reportNetworkStatus()) + } + + @Test + fun queryTest() { + val documents = txMetadata.get(blockchainIdentity.uniqueIdString) + documents.forEach { + val txMetadataDocument = TxMetadataDocument(it) + println(txMetadataDocument) + println(blockchainIdentity.decryptTxMetadata(txMetadataDocument, null)) + } + } + +// @Test +// fun publishTest() { +// val balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +// blockchainIdentity.publishTxMetaData(txMetadataItems, null, 1, TxMetadataDocument.VERSION_PROTOBUF) +// val balanceAfter = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +// println("before: $balanceBefore") +// println("after: $balanceAfter") +// } + + @Test + fun roundTripTest() { + val documents = blockchainIdentity.createTxMetadata(txMetadataItems, null, 100, TxMetadataDocument.VERSION_PROTOBUF) + assertEquals(1, documents.size) + val firstDocument = documents.first() + assertEquals("txMetadata", firstDocument.type) + assertEquals("6xEV5s8FiJUReCuEBCdF3TfMwKggbCNb9RbuxGMEykY8", firstDocument.ownerId.toString()) + assertEquals("7CSFGeF4WNzgDmx94zwvHkYaG3Dx4XEe5LFsFgJswLbm", firstDocument.dataContractId.toString()) + assertEquals(3, firstDocument.data.size) + val txMetadataDocument = TxMetadataDocument(firstDocument) + assertEquals(2, txMetadataDocument.keyIndex) + val ipk = blockchainIdentity.identity!!.getPublicKeyById(txMetadataDocument.keyIndex)!! + assertEquals(KeyType.ECDSA_SECP256K1, ipk.type) + assertEquals(100, txMetadataDocument.encryptionKeyIndex) + assertEquals(609, txMetadataDocument.encryptedMetadata.size) + val decryptedItems = blockchainIdentity.decryptTxMetadata(txMetadataDocument, null) + assertEquals(4, decryptedItems.size) + assertEquals(txMetadataItemTwo, decryptedItems[1]) + } + + @Test + fun errorTest() { + val documents = + blockchainIdentity.createTxMetadata(txMetadataItems, null, 100, TxMetadataDocument.VERSION_PROTOBUF) + val firstDocument = documents.first() + val modifiedData = firstDocument.toObject().toMutableMap() + modifiedData["keyIndex"] = 1L + val modifiedDocument = Document(modifiedData, firstDocument.dataContract!!) + val modifiedMetadataDocument = TxMetadataDocument(modifiedDocument) + assertThrows { + blockchainIdentity.decryptTxMetadata(modifiedMetadataDocument, null) + } + val modifiedData2 = firstDocument.toObject().toMutableMap() + modifiedData2["encryptionKeyIndex"] = 1L + val modifiedDocument2 = Document(modifiedData2, firstDocument.dataContract!!) + val modifiedMetadataDocument2 = TxMetadataDocument(modifiedDocument2) + assertThrows { + blockchainIdentity.decryptTxMetadata(modifiedMetadataDocument2, null) + } + } + + @Test + fun invalidKeyParameterTest() { + val documents = blockchainIdentity.createTxMetadata(txMetadataItems, null, 100, TxMetadataDocument.VERSION_PROTOBUF) + val firstDocument = documents.first() + val txMetadataDocument = TxMetadataDocument(firstDocument) + val keyParameter = KeyParameter(Sha256Hash.hash(ByteArray(32))) + assertThrows { + blockchainIdentity.decryptTxMetadata(txMetadataDocument, keyParameter) + } + } + + @Test + fun derivationPathTest() { + val documents = blockchainIdentity.createTxMetadata(txMetadataItems, null, 100, TxMetadataDocument.VERSION_PROTOBUF) + val firstDocument = documents.first() + val txMetadataDocument = TxMetadataDocument(firstDocument) + val actualEncryptionKey = blockchainIdentity.privateKeyAtPath( + txMetadataDocument.keyIndex, + TxMetadataDocument.childNumber, + txMetadataDocument.encryptionKeyIndex, + KeyType.ECDSA_SECP256K1, + null + ) + + val parentEncryptionKeyPath = DerivationPathFactory.get(blockchainIdentity.params).blockchainIdentityECDSADerivationPath() + val parentEncryptionKey = authenticationGroupExtension.identityKeyChain.getKeyByPath(parentEncryptionKeyPath) + .deriveChildKey(ChildNumber(2, true)) + assertNotNull(parentEncryptionKey) + val expectedEncryptionKey = parentEncryptionKey + .deriveChildKey(TxMetadataDocument.childNumber) + .derive(100) + assertEquals(expectedEncryptionKey, actualEncryptionKey) + println(expectedEncryptionKey) + } + +// private fun publishTransactions(txMetadata: TxMetadataItem, count: Int) { +// val txMetadataList = arrayListOf() +// for (i in IntRange(0, count)) { +// txMetadataList.add(txMetadata) +// } +// val balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +// blockchainIdentity.publishTxMetaData(txMetadataList, null, 1, TxMetadataDocument.VERSION_PROTOBUF) +// val balanceAfter = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +// println("$count tx before: $balanceBefore") +// println("$count tx after: $balanceAfter") +// } +// @Test +// fun publishTxsTest() { +// +// var balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +// blockchainIdentity.publishTxMetaData(listOf(txMetadataItemThree), null, 1, TxMetadataDocument.VERSION_PROTOBUF) +// var balanceAfter = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +// println("1 tx before: $balanceBefore") +// println("1 tx after: $balanceAfter") +// balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +// blockchainIdentity.publishTxMetaData(listOf(txMetadataItemThree, txMetadataItemThree), null, 1, TxMetadataDocument.VERSION_PROTOBUF) +// balanceAfter = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +// println("2 tx before: $balanceBefore") +// println("2 tx after: $balanceAfter") +// balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +// blockchainIdentity.publishTxMetaData(listOf(txMetadataItemThree, txMetadataItemThree, txMetadataItemThree), null, 1, TxMetadataDocument.VERSION_PROTOBUF) +// balanceAfter = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +// println("3 tx before: $balanceBefore") +// println("3 tx after: $balanceAfter") +//// balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +//// blockchainIdentity.publishTxMetaData(listOf(txMetadataItemFour), null, 1, TxMetadataDocument.VERSION_PROTOBUF) +//// balanceAfter = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +//// println("1 big tx before: $balanceBefore") +//// println("1 big tx after: $balanceAfter") +// +// publishTransactions(txMetadataItemThree, 10) +// publishTransactions(txMetadataItemThree, 20) +// publishTransactions(txMetadataItemThree, 39) +// } +} \ No newline at end of file From b2f5a97588865178d3eae155cb69116151611a40 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 4 Feb 2025 08:40:02 -0800 Subject: [PATCH 07/36] feat: add and update TxMetadata examples --- .../org/platform/CreateTxMetadataTest.kt | 200 ++++++++++++++++++ .../dashj/org/platform/DisplayTxMetadata.kt | 18 +- 2 files changed, 211 insertions(+), 7 deletions(-) create mode 100644 examples/src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt diff --git a/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt b/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt new file mode 100644 index 0000000..4063c26 --- /dev/null +++ b/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt @@ -0,0 +1,200 @@ +/** + * Copyright (c) 2022-present, Dash Core Group + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +package dashj.org.platform + +import org.bitcoinj.params.TestNet3Params +import org.bitcoinj.wallet.AuthenticationKeyChain +import org.bitcoinj.wallet.DerivationPathFactory +import org.bitcoinj.wallet.DeterministicKeyChain +import org.bitcoinj.wallet.DeterministicSeed +import org.bitcoinj.wallet.KeyChainGroup +import org.bitcoinj.wallet.Wallet +import org.bitcoinj.wallet.authentication.AuthenticationGroupExtension +import org.dashj.platform.contracts.wallet.TxMetadataDocument +import org.dashj.platform.wallet.TxMetadataItem +import org.dashj.platform.dashpay.BlockchainIdentity +import org.dashj.platform.dpp.util.Converters +import org.dashj.platform.dpp.util.Entropy +import org.dashj.platform.sdk.Client +import org.dashj.platform.sdk.client.ClientOptions +import org.dashj.platform.sdk.client.WalletOptions +import org.dashj.platform.sdk.dashsdk +import org.dashj.platform.sdk.platform.Platform +import org.dashj.platform.wallet.TxMetadata +import org.json.JSONObject +import java.util.* + +object CreateTxMetadataTest { + + val platform = Platform(TestNet3Params.get()) + //val platform = Platform(MainNetParams.get()) + val txMetadata = TxMetadata(platform) + val seed = "caution kitchen month seven humble olympic author session dutch direct decrease moment" + // val seed = "half sample spirit edit dawn humor eight refuse hundred suit critic print" + val wallet: Wallet = Wallet( + platform.params, + KeyChainGroup.builder(platform.params) + .addChain( + DeterministicKeyChain.builder() + .accountPath(DerivationPathFactory.get(platform.params).bip44DerivationPath(0)) + .seed(DeterministicSeed(seed, null, "", Date().time)) + .build() + ) + .build() + ) + val authenticationGroupExtension = AuthenticationGroupExtension(platform.params) + val blockchainIdentity = BlockchainIdentity(platform, 0, wallet, authenticationGroupExtension) + + val txMetadataItem = TxMetadataItem( + Entropy.generateRandomBytes(32), + System.currentTimeMillis() / 1000, + "Alice's Pizza Party", + 51.00, + "USD", + "expense", + null + ) + + val txMetadataItemTwo = TxMetadataItem( + Converters.fromHex("c44d1077cd4628d0ac06e22032a4e8458f9d01be6342453de3eef88657b193ce"), + System.currentTimeMillis() / 1000, + "Bob's Burger Joint", + 52.23, + "USD", + "expense", + "DashDirect" + ) + + val txMetadataItemThree = TxMetadataItem( + Entropy.generateRandomBytes(32), + System.currentTimeMillis() / 1000, + null, + 52.23, + "USD", + "expense" + ) + + val txMetadataItemFour = TxMetadataItem( + Entropy.generateRandomBytes(32), + System.currentTimeMillis() / 1000, + "Bob's Burger Joint", + 52.23, + "USD", + "expense", + "DashDirect", + customIconUrl = "https://storage.googleapis.com/mash-potato-fireplace.appspot.com/alhi323/alhi/alhirafiyun.png", + giftCardNumber = "123456-7899-abcdef", + giftCardPin = "1234", + merchantName = "1-800-HotSoup", + originalPrice = 54.99, + barcodeValue = "3249u3ou234238403820820840238082304823047234098234023802384", + barcodeFormat = "EAN_8", + merchantUrl = "https://1-800-hotsoup.com" + ) + val txMetadataItems = listOf(txMetadataItem, txMetadataItemTwo, txMetadataItemThree, txMetadataItemFour) + init { + authenticationGroupExtension.addKeyChains( + platform.params, wallet.keyChainSeed, + EnumSet.of( + AuthenticationKeyChain.KeyChainType.BLOCKCHAIN_IDENTITY, + AuthenticationKeyChain.KeyChainType.BLOCKCHAIN_IDENTITY_FUNDING, + AuthenticationKeyChain.KeyChainType.BLOCKCHAIN_IDENTITY_TOPUP, + AuthenticationKeyChain.KeyChainType.INVITATION_FUNDING + ) + ) + wallet.addExtension(authenticationGroupExtension) + + println("initializing platform") + platform.useValidNodes() + if (blockchainIdentity.recoverIdentity(authenticationGroupExtension.identityKeyChain.getKey(0).pubKeyHash)) { + println("recovered blockchain identity: ${blockchainIdentity.uniqueIdString}") + } else { + error("recovery failed to find identity") + } + } + + + + lateinit var client: Client + + @JvmStatic + fun main(args: Array) { + println("CreateTxMetadataTest") + client = Client(ClientOptions(network = "testnet")) + client.platform.useValidNodes() + runTests(args.size >= 2 && args[1] == "true") + } + + fun publishTest() { + val balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) + blockchainIdentity.publishTxMetaData(txMetadataItems, null, 1, TxMetadataDocument.VERSION_PROTOBUF) + val balanceAfter = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) + println("before: $balanceBefore") + println("after: $balanceAfter") + } + + private fun publishTransactions(txMetadata: TxMetadataItem, count: Int) { + val txMetadataList = arrayListOf() + for (i in IntRange(0, count)) { + txMetadataList.add(txMetadata) + } + val balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) + blockchainIdentity.publishTxMetaData(txMetadataList, null, 1, TxMetadataDocument.VERSION_PROTOBUF) + val balanceAfter = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) + println("$count tx before: $balanceBefore") + println("$count tx after: $balanceAfter") + } + + fun publishTxsTest() { + + var balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) + blockchainIdentity.publishTxMetaData(listOf(txMetadataItemThree), null, 1, TxMetadataDocument.VERSION_PROTOBUF) + var balanceAfter = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) + println("1 tx before: $balanceBefore") + println("1 tx after: $balanceAfter") + balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) + blockchainIdentity.publishTxMetaData(listOf(txMetadataItemThree, txMetadataItemThree), null, 1, TxMetadataDocument.VERSION_PROTOBUF) + balanceAfter = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) + println("2 tx before: $balanceBefore") + println("2 tx after: $balanceAfter") + balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) + blockchainIdentity.publishTxMetaData(listOf(txMetadataItemThree, txMetadataItemThree, txMetadataItemThree), null, 1, TxMetadataDocument.VERSION_PROTOBUF) + balanceAfter = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) + println("3 tx before: $balanceBefore") + println("3 tx after: $balanceAfter") +// balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +// blockchainIdentity.publishTxMetaData(listOf(txMetadataItemFour), null, 1, TxMetadataDocument.VERSION_PROTOBUF) +// balanceAfter = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) +// println("1 big tx before: $balanceBefore") +// println("1 big tx after: $balanceAfter") + + publishTransactions(txMetadataItemThree, 10) + publishTransactions(txMetadataItemThree, 20) + publishTransactions(txMetadataItemThree, 39) + } + + private fun runTests(showOnly: Boolean) { + //val blockchainIdentity = BlockchainIdentity(client.platform, 0, client.wallet!!, client.authenticationExtension) + //blockchainIdentity.recoverIdentity() + val identity = blockchainIdentity.identity!! + + publishTest() + publishTxsTest() + + val documents = txMetadata.get(identity.id) + + println("Tx Metadata: -----------------------------------") + for (doc in documents) { + val txDoc = TxMetadataDocument(doc) + if (txDoc.encryptedMetadata[0] != 0.toByte()) { + println(JSONObject(doc.toJSON()).toString(2)) + val txList = blockchainIdentity.decryptTxMetadata(txDoc, null) + println(" $txList") + } + } + } +} diff --git a/examples/src/main/kotlin/dashj/org/platform/DisplayTxMetadata.kt b/examples/src/main/kotlin/dashj/org/platform/DisplayTxMetadata.kt index ce1707c..3ca99c8 100644 --- a/examples/src/main/kotlin/dashj/org/platform/DisplayTxMetadata.kt +++ b/examples/src/main/kotlin/dashj/org/platform/DisplayTxMetadata.kt @@ -26,11 +26,16 @@ class DisplayTxMetadata { println("Usage: DisplayTxMetadata network") return } - println("Enter a recovery phrase: ") - val scanner = Scanner(System.`in`) - val phrase = scanner.nextLine() - - val recoveryPhrase = if (phrase == "default") { DefaultIdentity(args[0]).seed } else phrase + val phrase = if (args.size == 1) { + println("Enter a recovery phrase: ") + val scanner = Scanner(System.`in`) + scanner.nextLine() + } else { + args[1] + } + val recoveryPhrase = if (phrase == "default") { + DefaultIdentity(args[0]).seed + } else phrase client = Client(ClientOptions(network = args[0], walletOptions = WalletOptions(recoveryPhrase))) client.platform.useValidNodes() displayDocuments() @@ -47,12 +52,11 @@ class DisplayTxMetadata { println("Tx Metadata for ${identity.id}: -----------------------------------") for (doc in documents) { - println("new document: ${doc.id}; createdAt ${Date(doc.createdAt!!)}") + println("new document: ${doc.id}; updatedAt ${Date(doc.updatedAt!!)}") val txDoc = TxMetadataDocument(doc) try { println("txDoc ${txDoc.encryptedMetadata.toBase64()}") val txList = blockchainIdentity.decryptTxMetadata(txDoc, null) - // println(" $txList") for (txmd in txList) { println("* $txmd") } From b922d77937607daaa098b03c3a5f93816ceb374d Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 4 Feb 2025 08:40:23 -0800 Subject: [PATCH 08/36] feat: add RegisteredNamesWithBalance example --- .../platform/RegisteredNamesWithBalance.kt | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 examples/src/main/kotlin/dashj/org/platform/RegisteredNamesWithBalance.kt diff --git a/examples/src/main/kotlin/dashj/org/platform/RegisteredNamesWithBalance.kt b/examples/src/main/kotlin/dashj/org/platform/RegisteredNamesWithBalance.kt new file mode 100644 index 0000000..0a92836 --- /dev/null +++ b/examples/src/main/kotlin/dashj/org/platform/RegisteredNamesWithBalance.kt @@ -0,0 +1,85 @@ +/** + * Copyright (c) 2025-present, Dash Core Group + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +package dashj.org.platform + +import org.bitcoinj.core.Coin +import org.bitcoinj.core.Sha256Hash +import org.dashj.platform.dapiclient.model.DocumentQuery +import org.dashj.platform.dpp.document.Document +import org.dashj.platform.dpp.identifier.Identifier +import org.dashj.platform.sdk.Client +import org.dashj.platform.sdk.client.ClientOptions +import org.dashj.platform.sdk.platform.Documents +import org.dashj.platform.sdk.platform.DomainDocument + +class RegisteredNamesWithBalance { + companion object { + lateinit var sdk: Client + + @JvmStatic + fun main(args: Array) { + sdk = Client(ClientOptions(network = args[0])) + sdk.platform.useValidNodes() + getDocumentsWithIdentityBalance() + } + + private fun getDocumentsWithIdentityBalance() { + val platform = sdk.platform + + var lastItem = Identifier.from(Sha256Hash.ZERO_HASH) + var documents: List? = null + val allDocuments = arrayListOf() + var requests = 0 + val limit = Documents.DOCUMENT_LIMIT + var queryOpts = DocumentQuery.Builder().limit(limit).orderBy("normalizedLabel").build() + + do { + println(queryOpts.toJSON()) + + try { + documents = platform.documents.get("dpns.domain", queryOpts) + allDocuments.addAll(documents) + requests += 1 + +// for (doc in documents) { +// println( +// "Name: %-20s".format(doc.data["label"]) + +// " (domain: " + doc.data["normalizedParentDomainName"] + +// ") Identity: " + doc.ownerId +// ) +// } + + lastItem = documents.last().id + if (documents.size == 100) { + queryOpts = DocumentQuery.Builder() + .startAt(lastItem) + .orderBy("normalizedLabel") + .limit(100) + .build() + } + } catch (e: Exception) { + println("\nError retrieving results (startAt = $lastItem)") + println(e.message) + return + } + } while (requests >= 0 && documents!!.size == limit) + + val nameBalanceMap = hashMapOf() + allDocuments.forEachIndexed { i, document -> + val nameDocument = DomainDocument(document) + val balance = try { platform.client.getIdentityBalance(nameDocument.dashUniqueIdentityId!!) } catch (e: Exception) { - 2 } + nameBalanceMap[nameDocument.normalizedLabel] = balance + } + println("username count: ${allDocuments.size}") + allDocuments.forEachIndexed { i, document -> + val nameDocument = DomainDocument(document) + val balance = nameBalanceMap[nameDocument.normalizedLabel] + println("$i. ${nameDocument.label}: ${Coin.valueOf((balance ?: -1) / 1000).toFriendlyString()}") + } + } + } +} From 29d761872ed6869d245f21c0327eb2128039789d Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 4 Feb 2025 08:40:44 -0800 Subject: [PATCH 09/36] chore: remove commented code from result.i --- dash-sdk-java/src/main/swig/generics/result.i | 7 ------- 1 file changed, 7 deletions(-) diff --git a/dash-sdk-java/src/main/swig/generics/result.i b/dash-sdk-java/src/main/swig/generics/result.i index 0f2dce4..db07382 100644 --- a/dash-sdk-java/src/main/swig/generics/result.i +++ b/dash-sdk-java/src/main/swig/generics/result.i @@ -233,25 +233,18 @@ if ($1->ok != NULL) { jobject elementObj = nullptr; if (strcmp(#RETURN_TYPE, "String") == 0) { - // printf("string item\n"); - // printf("string item: %s\n", $1->ok); elementObj = jenv->NewStringUTF((const char *)$1->ok); } else if (strcmp(#RETURN_TYPE, "Integer") == 0) { - //printf("int item\n"); - //printf("int item: %d\n", *$1->ok); jclass integerClass = (jenv)->FindClass("java/lang/Integer"); jmethodID constructor = (jenv)->GetMethodID(integerClass, "", "(I)V"); elementObj = (jenv)->NewObject(integerClass, constructor, (int)(long)*$1->ok); // ok is a pointer, but acts as a value } else if (strcmp(#RETURN_TYPE, "Long") == 0) { - //printf("long item\n"); - //printf("long item: %lld\n", $1->ok); jclass integerClass = (jenv)->FindClass("java/lang/Long"); jmethodID constructor = (jenv)->GetMethodID(integerClass, "", "(J)V"); elementObj = (jenv)->NewObject(integerClass, constructor, (long)*$1->ok); // ok is a pointer, but acts as a value } else { printf("invalid? item\n"); } - printf("ok value is assigned, now create result\n"); jmethodID midSuccess = jenv->GetStaticMethodID(resultClass, "Ok", "(Ljava/lang/Object;)Lorg/dashj/platform/sdk/base/Result;"); $result = jenv->CallStaticObjectMethod(resultClass, midSuccess, elementObj); } else { From c2a6020df3f612ae1086a04b79cd5afdd53cca24 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Wed, 19 Mar 2025 08:39:16 -0700 Subject: [PATCH 10/36] chore: update Cargo.lock --- dash-sdk-bindings/Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dash-sdk-bindings/Cargo.lock b/dash-sdk-bindings/Cargo.lock index d6a47f0..b22ef17 100644 --- a/dash-sdk-bindings/Cargo.lock +++ b/dash-sdk-bindings/Cargo.lock @@ -3081,7 +3081,7 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "platform-mobile" -version = "1.7.1" +version = "1.7.2" dependencies = [ "async-trait", "base64 0.13.1", From 5325fcb240e58560c8c98f7e22446b4c4e2c2ed2 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 19 Jun 2025 20:11:27 -0700 Subject: [PATCH 11/36] fix: build.gradle swig command line fix --- dash-sdk-java/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dash-sdk-java/build.gradle b/dash-sdk-java/build.gradle index 8878859..85ec279 100644 --- a/dash-sdk-java/build.gradle +++ b/dash-sdk-java/build.gradle @@ -47,7 +47,7 @@ task generateSWIG(type: Exec) { '-outdir', javaOutputDir, '-package', 'org.dashj.platform.sdk', '-o', "${cppOutputDir}/sdk.cpp", - '-I${swigInputDir}', // Include directory for SWIG interfaces + "-I${swigInputDir}", // Include directory for SWIG interfaces "${swigInputDir}/root.i" // SWIG interface file From bc2010c41901abff6a49184692a946e20675d1b6 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 3 Jul 2025 17:11:38 -0700 Subject: [PATCH 12/36] fix: sdk version related fixes --- platform-mobile/src/config.rs | 4 +++- platform-mobile/src/sdk.rs | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/platform-mobile/src/config.rs b/platform-mobile/src/config.rs index 0b2bebc..4fc1825 100644 --- a/platform-mobile/src/config.rs +++ b/platform-mobile/src/config.rs @@ -284,7 +284,9 @@ impl Config { &self.core_password, ); - builder.build().expect("cannot initialize api") + builder + .with_version(version) + .build().expect("cannot initialize api") }; sdk.into() diff --git a/platform-mobile/src/sdk.rs b/platform-mobile/src/sdk.rs index 31a022c..9923600 100644 --- a/platform-mobile/src/sdk.rs +++ b/platform-mobile/src/sdk.rs @@ -59,7 +59,7 @@ impl EntryPoint for DashSdk { } } -#[ferment_macro::export] +// #[ferment_macro::export] pub fn update_sdk_with_address_list( rust_sdk: * mut DashSdk, quorum_public_key_callback: u64, @@ -222,6 +222,7 @@ pub fn create_dash_sdk_using_single_evonode( // use Dash Core for quorum public keys cfg.setup_api_list(vec![evonode], version).await }; + tracing::info!("Sdk version {:?}", sdk.version()); DashSdk { config: Arc::new(cfg), runtime: rt.clone(), From 149c339b5d997d3b9ea8d448315df572c682ff07 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 3 Jul 2025 17:12:14 -0700 Subject: [PATCH 13/36] chore: update version to 2.0.0-TX-SNAPSHOT --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 0b64b2c..550b772 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.version = '2.0.0-SNAPSHOT' + ext.version = '2.0.0-TX-SNAPSHOT' ext.kotlin_version = '1.8.22' ext.dashj_version = '21.1.9' repositories { From b5e505e7d195926e1e9aa402ffc9f721c3787240 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 3 Jul 2025 17:12:40 -0700 Subject: [PATCH 14/36] fix: add progress tracking to publishTxMetaData --- .../dashj/platform/dashpay/BlockchainIdentity.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt b/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt index 3870346..20a83ac 100644 --- a/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt +++ b/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt @@ -2340,19 +2340,29 @@ class BlockchainIdentity { // Transaction Metadata Methods @Throws(KeyCrypterException::class) - fun publishTxMetaData(txMetadataItems: List, keyParameter: KeyParameter?, encryptionKeyIndex: Int, version: Int) { + fun publishTxMetaData( + txMetadataItems: List, + keyParameter: KeyParameter?, + encryptionKeyIndex: Int, + version: Int, + progressListener: ((Int) -> Unit)? = null + ) { if (!platform.hasApp("wallet-utils")) { return } + progressListener?.invoke(0) val documentsToPublish = createTxMetadata(txMetadataItems, keyParameter, encryptionKeyIndex, version) + progressListener?.invoke(10) val txMetadata = TxMetadata(platform) - documentsToPublish.forEach { txMetadataDocument -> + documentsToPublish.forEachIndexed { i, txMetadataDocument -> txMetadata.publish( txMetadataDocument, identity!!, WalletSignerCallback(wallet!!, keyParameter) ) + progressListener?.invoke(10 + i * 100 / documentsToPublish.size ) } + progressListener?.invoke(100) } fun getTxMetaData(createdAfter: Long = -1, keyParameter: KeyParameter?): Map> { From 68bf8701b941f074cc2a06d98380925acbd53871 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 3 Jul 2025 17:13:10 -0700 Subject: [PATCH 15/36] tests: add more tests for DataContractTest --- .../java/org/dashj/platform/sdk/DataContractTest.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/dash-sdk-java/src/test/java/org/dashj/platform/sdk/DataContractTest.java b/dash-sdk-java/src/test/java/org/dashj/platform/sdk/DataContractTest.java index 94ed6dc..887c4d6 100644 --- a/dash-sdk-java/src/test/java/org/dashj/platform/sdk/DataContractTest.java +++ b/dash-sdk-java/src/test/java/org/dashj/platform/sdk/DataContractTest.java @@ -7,6 +7,7 @@ import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class DataContractTest extends SdkBaseTest { @@ -16,7 +17,9 @@ public void fetchDataContractTest() throws Exception { Result, String> result = dashsdk.platformMobileDataContractsFetchDataContract( sdk, contractId); - DataContract dataContract = result.unwrap().get(); + Optional dataContractResult = result.unwrap(); + assertTrue(dataContractResult.isPresent()); + DataContract dataContract = dataContractResult.get(); assertArrayEquals(dpnsContractId, dataContract.getId().get_0().get_0()); assertEquals(2, dataContract.getDoc_types().size()); dataContract.getDoc_types().forEach(System.out::println); @@ -28,10 +31,12 @@ public void fetchWalletUtilsDataContractTest() throws Exception { Result, String> result = dashsdk.platformMobileDataContractsFetchDataContract( sdk, contractId); - DataContract dataContract = result.unwrap().get(); + Optional dataContractResult = result.unwrap(); + assertTrue(dataContractResult.isPresent()); + DataContract dataContract = dataContractResult.get(); assertArrayEquals(walletUtilsContracId, dataContract.getId().get_0().get_0()); assertEquals(3, dataContract.getDoc_types().size()); - dataContract.getDoc_types().forEach(System.out::println); + assertTrue("didn't find txMetadata", dataContract.getDoc_types().stream().allMatch(type -> type.equals("txMetadata"))); } @Test From 6c3d28c0cc2b53ede3fd87a8aed0c76f3f1eaa61 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 3 Jul 2025 18:14:14 -0700 Subject: [PATCH 16/36] chore: update clone.h and ignore.i --- dash-sdk-java/src/main/cpp/clone.h | 160 ++++++------- dash-sdk-java/src/main/swig/ignore.i | 343 ++++++++++++++------------- 2 files changed, 252 insertions(+), 251 deletions(-) diff --git a/dash-sdk-java/src/main/cpp/clone.h b/dash-sdk-java/src/main/cpp/clone.h index a224a11..d3a12ef 100644 --- a/dash-sdk-java/src/main/cpp/clone.h +++ b/dash-sdk-java/src/main/cpp/clone.h @@ -1,116 +1,116 @@ -inline platform_value_Hash256 * clone(platform_value_Hash256 * object) { - return (object != nullptr) ? platform_mobile_clone_Hash256_clone(object) : nullptr; -} -inline dpp_prelude_Revision * clone(dpp_prelude_Revision * object) { - return (object != nullptr) ? platform_mobile_clone_Revision_clone(object) : nullptr; +inline platform_mobile_data_contracts_DataContractFFI * clone(platform_mobile_data_contracts_DataContractFFI * object) { + return (object != nullptr) ? platform_mobile_data_contracts_DataContractFFI_clone(object) : nullptr; } -inline dpp_voting_vote_polls_VotePoll * clone(dpp_voting_vote_polls_VotePoll * object) { - return (object != nullptr) ? platform_mobile_clone_VotePoll_clone(object) : nullptr; +inline std_collections_BTreeSet_drive_proof_verifier_types_Voter * clone(std_collections_BTreeSet_drive_proof_verifier_types_Voter * object) { + return (object != nullptr) ? platform_mobile_clone_std_collections_BTreeSet_drive_proof_verifier_types_Voter_clone(object) : nullptr; } -inline drive_proof_verifier_types_ContestedResources * clone(drive_proof_verifier_types_ContestedResources * object) { - return (object != nullptr) ? platform_mobile_clone_ContestedResources_clone(object) : nullptr; +inline drive_query_ordering_OrderClause * clone(drive_query_ordering_OrderClause * object) { + return (object != nullptr) ? platform_mobile_clone_OrderClause_clone(object) : nullptr; } -inline Arr_u8_32 * clone(Arr_u8_32 * object) { - return (object != nullptr) ? platform_mobile_clone_Arr_u8_32_clone(object) : nullptr; +inline drive_query_conditions_WhereClause * clone(drive_query_conditions_WhereClause * object) { + return (object != nullptr) ? platform_mobile_clone_WhereClause_clone(object) : nullptr; } -inline dpp_document_Document * clone(dpp_document_Document * object) { - return (object != nullptr) ? platform_mobile_clone_Document_clone(object) : nullptr; +inline dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 * clone(dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 * object) { + return (object != nullptr) ? platform_mobile_clone_ContenderWithSerializedDocumentV0_clone(object) : nullptr; } -inline dpp_voting_votes_Vote * clone(dpp_voting_votes_Vote * object) { - return (object != nullptr) ? platform_mobile_clone_Vote_clone(object) : nullptr; +inline Vec_u8 * clone(Vec_u8 * object) { + return (object != nullptr) ? platform_mobile_clone_Vec_u8_clone(object) : nullptr; } -inline Arr_u8_36 * clone(Arr_u8_36 * object) { - return (object != nullptr) ? platform_mobile_clone_Arr_u8_36_clone(object) : nullptr; +inline dpp_prelude_BlockHeight * clone(dpp_prelude_BlockHeight * object) { + return (object != nullptr) ? platform_mobile_clone_BlockHeight_clone(object) : nullptr; } inline Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll * clone(Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll * object) { return (object != nullptr) ? platform_mobile_clone_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_clone(object) : nullptr; } -inline drive_query_ordering_OrderClause * clone(drive_query_ordering_OrderClause * object) { - return (object != nullptr) ? platform_mobile_clone_OrderClause_clone(object) : nullptr; -} -inline dpp_voting_votes_resource_vote_ResourceVote * clone(dpp_voting_votes_resource_vote_ResourceVote * object) { - return (object != nullptr) ? platform_mobile_clone_ResourceVote_clone(object) : nullptr; -} inline drive_query_conditions_WhereOperator * clone(drive_query_conditions_WhereOperator * object) { return (object != nullptr) ? platform_mobile_clone_WhereOperator_clone(object) : nullptr; } inline drive_proof_verifier_types_VotePollsGroupedByTimestamp * clone(drive_proof_verifier_types_VotePollsGroupedByTimestamp * object) { return (object != nullptr) ? platform_mobile_clone_VotePollsGroupedByTimestamp_clone(object) : nullptr; } -inline Vec_u8 * clone(Vec_u8 * object) { - return (object != nullptr) ? platform_mobile_clone_Vec_u8_clone(object) : nullptr; +inline dpp_identity_identity_public_key_KeyID * clone(dpp_identity_identity_public_key_KeyID * object) { + return (object != nullptr) ? platform_mobile_clone_KeyID_clone(object) : nullptr; } -inline dpp_identity_identity_public_key_TimestampMillis * clone(dpp_identity_identity_public_key_TimestampMillis * object) { - return (object != nullptr) ? platform_mobile_clone_TimestampMillis_clone(object) : nullptr; +inline drive_proof_verifier_types_ContestedResource * clone(drive_proof_verifier_types_ContestedResource * object) { + return (object != nullptr) ? platform_mobile_clone_ContestedResource_clone(object) : nullptr; +} +inline dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll * clone(dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll * object) { + return (object != nullptr) ? platform_mobile_clone_ContestedDocumentResourceVotePoll_clone(object) : nullptr; +} +inline dpp_voting_contender_structs_contender_ContenderWithSerializedDocument * clone(dpp_voting_contender_structs_contender_ContenderWithSerializedDocument * object) { + return (object != nullptr) ? platform_mobile_clone_ContenderWithSerializedDocument_clone(object) : nullptr; +} +inline drive_proof_verifier_types_ResourceVotesByIdentity * clone(drive_proof_verifier_types_ResourceVotesByIdentity * object) { + return (object != nullptr) ? platform_mobile_clone_ResourceVotesByIdentity_clone(object) : nullptr; +} +inline Arr_u8_36 * clone(Arr_u8_36 * object) { + return (object != nullptr) ? platform_mobile_clone_Arr_u8_36_clone(object) : nullptr; +} +inline drive_proof_verifier_types_Voter * clone(drive_proof_verifier_types_Voter * object) { + return (object != nullptr) ? platform_mobile_clone_Voter_clone(object) : nullptr; +} +inline platform_value_Hash256 * clone(platform_value_Hash256 * object) { + return (object != nullptr) ? platform_mobile_clone_Hash256_clone(object) : nullptr; } inline drive_proof_verifier_types_Contenders * clone(drive_proof_verifier_types_Contenders * object) { return (object != nullptr) ? platform_mobile_clone_Contenders_clone(object) : nullptr; } -inline platform_value_value_map_ValueMap * clone(platform_value_value_map_ValueMap * object) { - return (object != nullptr) ? platform_mobile_clone_ValueMap_clone(object) : nullptr; -} -inline dpp_prelude_TimestampMillis * clone(dpp_prelude_TimestampMillis * object) { - return (object != nullptr) ? platform_mobile_clone_prelude_TimestampMillis_clone(object) : nullptr; +inline drive_proof_verifier_types_ContestedResources * clone(drive_proof_verifier_types_ContestedResources * object) { + return (object != nullptr) ? platform_mobile_clone_ContestedResources_clone(object) : nullptr; } inline dpp_document_v0_DocumentV0 * clone(dpp_document_v0_DocumentV0 * object) { return (object != nullptr) ? platform_mobile_clone_DocumentV0_clone(object) : nullptr; } -inline dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice * clone(dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice * object) { - return (object != nullptr) ? platform_mobile_clone_ResourceVoteChoice_clone(object) : nullptr; -} inline dpp_prelude_CoreBlockHeight * clone(dpp_prelude_CoreBlockHeight * object) { return (object != nullptr) ? platform_mobile_clone_CoreBlockHeight_clone(object) : nullptr; } -inline dpp_prelude_BlockHeight * clone(dpp_prelude_BlockHeight * object) { - return (object != nullptr) ? platform_mobile_clone_BlockHeight_clone(object) : nullptr; +inline drive_proof_verifier_types_Voters * clone(drive_proof_verifier_types_Voters * object) { + return (object != nullptr) ? platform_mobile_clone_Voters_clone(object) : nullptr; } -inline dpp_voting_votes_resource_vote_v0_ResourceVoteV0 * clone(dpp_voting_votes_resource_vote_v0_ResourceVoteV0 * object) { - return (object != nullptr) ? platform_mobile_clone_ResourceVoteV0_clone(object) : nullptr; +inline Vec_platform_value_Value * clone(Vec_platform_value_Value * object) { + return (object != nullptr) ? platform_mobile_clone_Vec_Value_clone(object) : nullptr; } -inline Arr_u8_20 * clone(Arr_u8_20 * object) { - return (object != nullptr) ? platform_mobile_clone_Arr_u8_20_clone(object) : nullptr; +inline dpp_document_Document * clone(dpp_document_Document * object) { + return (object != nullptr) ? platform_mobile_clone_Document_clone(object) : nullptr; } -inline dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll * clone(dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll * object) { - return (object != nullptr) ? platform_mobile_clone_ContestedDocumentResourceVotePoll_clone(object) : nullptr; +inline dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice * clone(dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice * object) { + return (object != nullptr) ? platform_mobile_clone_ResourceVoteChoice_clone(object) : nullptr; } -inline dpp_voting_contender_structs_contender_ContenderWithSerializedDocument * clone(dpp_voting_contender_structs_contender_ContenderWithSerializedDocument * object) { - return (object != nullptr) ? platform_mobile_clone_ContenderWithSerializedDocument_clone(object) : nullptr; +inline dpp_identity_identity_public_key_TimestampMillis * clone(dpp_identity_identity_public_key_TimestampMillis * object) { + return (object != nullptr) ? platform_mobile_clone_TimestampMillis_clone(object) : nullptr; } -inline drive_query_conditions_WhereClause * clone(drive_query_conditions_WhereClause * object) { - return (object != nullptr) ? platform_mobile_clone_WhereClause_clone(object) : nullptr; +inline platform_value_Value * clone(platform_value_Value * object) { + return (object != nullptr) ? platform_mobile_clone_Value_clone(object) : nullptr; } -inline std_collections_BTreeSet_drive_proof_verifier_types_Voter * clone(std_collections_BTreeSet_drive_proof_verifier_types_Voter * object) { - return (object != nullptr) ? platform_mobile_clone_std_collections_BTreeSet_drive_proof_verifier_types_Voter_clone(object) : nullptr; +inline dpp_voting_votes_Vote * clone(dpp_voting_votes_Vote * object) { + return (object != nullptr) ? platform_mobile_clone_Vote_clone(object) : nullptr; } -inline dpp_identity_identity_public_key_KeyID * clone(dpp_identity_identity_public_key_KeyID * object) { - return (object != nullptr) ? platform_mobile_clone_KeyID_clone(object) : nullptr; +inline Arr_u8_20 * clone(Arr_u8_20 * object) { + return (object != nullptr) ? platform_mobile_clone_Arr_u8_20_clone(object) : nullptr; } -inline drive_proof_verifier_types_Voter * clone(drive_proof_verifier_types_Voter * object) { - return (object != nullptr) ? platform_mobile_clone_Voter_clone(object) : nullptr; +inline dpp_voting_votes_resource_vote_v0_ResourceVoteV0 * clone(dpp_voting_votes_resource_vote_v0_ResourceVoteV0 * object) { + return (object != nullptr) ? platform_mobile_clone_ResourceVoteV0_clone(object) : nullptr; } -inline drive_proof_verifier_types_Voters * clone(drive_proof_verifier_types_Voters * object) { - return (object != nullptr) ? platform_mobile_clone_Voters_clone(object) : nullptr; +inline platform_value_value_map_ValueMap * clone(platform_value_value_map_ValueMap * object) { + return (object != nullptr) ? platform_mobile_clone_ValueMap_clone(object) : nullptr; } -inline drive_proof_verifier_types_ContestedResource * clone(drive_proof_verifier_types_ContestedResource * object) { - return (object != nullptr) ? platform_mobile_clone_ContestedResource_clone(object) : nullptr; +inline Arr_u8_32 * clone(Arr_u8_32 * object) { + return (object != nullptr) ? platform_mobile_clone_Arr_u8_32_clone(object) : nullptr; } -inline dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 * clone(dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 * object) { - return (object != nullptr) ? platform_mobile_clone_ContenderWithSerializedDocumentV0_clone(object) : nullptr; +inline dpp_prelude_Revision * clone(dpp_prelude_Revision * object) { + return (object != nullptr) ? platform_mobile_clone_Revision_clone(object) : nullptr; } -inline platform_value_Value * clone(platform_value_Value * object) { - return (object != nullptr) ? platform_mobile_clone_Value_clone(object) : nullptr; +inline dpp_voting_vote_polls_VotePoll * clone(dpp_voting_vote_polls_VotePoll * object) { + return (object != nullptr) ? platform_mobile_clone_VotePoll_clone(object) : nullptr; +} +inline dpp_prelude_TimestampMillis * clone(dpp_prelude_TimestampMillis * object) { + return (object != nullptr) ? platform_mobile_clone_prelude_TimestampMillis_clone(object) : nullptr; } inline std_collections_Map_keys_String_values_platform_value_Value * clone(std_collections_Map_keys_String_values_platform_value_Value * object) { return (object != nullptr) ? platform_mobile_clone_std_collections_Map_keys_String_values_platform_value_Value_clone(object) : nullptr; } -inline drive_proof_verifier_types_ResourceVotesByIdentity * clone(drive_proof_verifier_types_ResourceVotesByIdentity * object) { - return (object != nullptr) ? platform_mobile_clone_ResourceVotesByIdentity_clone(object) : nullptr; -} -inline Vec_platform_value_Value * clone(Vec_platform_value_Value * object) { - return (object != nullptr) ? platform_mobile_clone_Vec_Value_clone(object) : nullptr; -} -inline platform_mobile_data_contracts_DataContractFFI * clone(platform_mobile_data_contracts_DataContractFFI * object) { - return (object != nullptr) ? platform_mobile_data_contracts_DataContractFFI_clone(object) : nullptr; +inline dpp_voting_votes_resource_vote_ResourceVote * clone(dpp_voting_votes_resource_vote_ResourceVote * object) { + return (object != nullptr) ? platform_mobile_clone_ResourceVote_clone(object) : nullptr; } inline platform_mobile_put_ChainAssetLockProofFFI * clone(platform_mobile_put_ChainAssetLockProofFFI * object) { return (object != nullptr) ? platform_mobile_put_ChainAssetLockProofFFI_clone(object) : nullptr; @@ -121,21 +121,21 @@ inline platform_mobile_put_InstantAssetLockProofFFI * clone(platform_mobile_put_ inline OutPoint * clone(OutPoint * object) { return (object != nullptr) ? platform_mobile_put_OutPointFFI_clone(object) : nullptr; } -inline dpp_identity_identity_Identity * clone(dpp_identity_identity_Identity * object) { - return (object != nullptr) ? platform_mobile_identity_Identity_clone(object) : nullptr; -} -inline dpp_identity_identity_public_key_IdentityPublicKey * clone(dpp_identity_identity_public_key_IdentityPublicKey * object) { - return (object != nullptr) ? platform_mobile_identity_IdentityPublicKey_clone(object) : nullptr; -} -inline std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey * clone(std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey * object) { - return (object != nullptr) ? platform_mobile_identity_std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_clone(object) : nullptr; +inline platform_value_types_identifier_Identifier * clone(platform_value_types_identifier_Identifier * object) { + return (object != nullptr) ? platform_mobile_identity_Identifier_clone(object) : nullptr; } inline dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 * clone(dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 * object) { return (object != nullptr) ? platform_mobile_identity_IdentityPublicKeyV0_clone(object) : nullptr; } -inline platform_value_types_identifier_Identifier * clone(platform_value_types_identifier_Identifier * object) { - return (object != nullptr) ? platform_mobile_identity_Identifier_clone(object) : nullptr; -} inline dpp_identity_v0_IdentityV0 * clone(dpp_identity_v0_IdentityV0 * object) { return (object != nullptr) ? platform_mobile_identity_IdentityV0_clone(object) : nullptr; } +inline std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey * clone(std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey * object) { + return (object != nullptr) ? platform_mobile_identity_std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_clone(object) : nullptr; +} +inline dpp_identity_identity_public_key_IdentityPublicKey * clone(dpp_identity_identity_public_key_IdentityPublicKey * object) { + return (object != nullptr) ? platform_mobile_identity_IdentityPublicKey_clone(object) : nullptr; +} +inline dpp_identity_identity_Identity * clone(dpp_identity_identity_Identity * object) { + return (object != nullptr) ? platform_mobile_identity_Identity_clone(object) : nullptr; +} diff --git a/dash-sdk-java/src/main/swig/ignore.i b/dash-sdk-java/src/main/swig/ignore.i index 70354a0..f9e34e3 100644 --- a/dash-sdk-java/src/main/swig/ignore.i +++ b/dash-sdk-java/src/main/swig/ignore.i @@ -1,29 +1,17 @@ -%ignore dpp_document_Document_V0_ctor(dpp_document_v0_DocumentV0 *o_o_0); -%ignore dpp_document_Document_destroy(dpp_document_Document *ffi); -%ignore dpp_document_v0_DocumentV0_ctor(platform_value_types_identifier_Identifier *id, platform_value_types_identifier_Identifier *owner_id, std_collections_Map_keys_String_values_platform_value_Value *properties, dpp_prelude_Revision *revision, dpp_identity_identity_public_key_TimestampMillis *created_at, dpp_identity_identity_public_key_TimestampMillis *updated_at, dpp_identity_identity_public_key_TimestampMillis *transferred_at, dpp_prelude_BlockHeight *created_at_block_height, dpp_prelude_BlockHeight *updated_at_block_height, dpp_prelude_BlockHeight *transferred_at_block_height, dpp_prelude_CoreBlockHeight *created_at_core_block_height, dpp_prelude_CoreBlockHeight *updated_at_core_block_height, dpp_prelude_CoreBlockHeight *transferred_at_core_block_height); -%ignore dpp_document_v0_DocumentV0_destroy(dpp_document_v0_DocumentV0 *ffi); -%ignore dpp_prelude_BlockHeight_ctor(uint64_t o_0); -%ignore dpp_prelude_BlockHeight_destroy(dpp_prelude_BlockHeight *ffi); -%ignore dpp_prelude_Revision_ctor(uint64_t o_0); -%ignore dpp_prelude_Revision_destroy(dpp_prelude_Revision *ffi); -%ignore dpp_prelude_TimestampMillis_ctor(uint64_t o_0); -%ignore dpp_prelude_TimestampMillis_destroy(dpp_prelude_TimestampMillis *ffi); -%ignore dpp_prelude_CoreBlockHeight_ctor(uint32_t o_0); -%ignore dpp_prelude_CoreBlockHeight_destroy(dpp_prelude_CoreBlockHeight *ffi); -%ignore dpp_block_block_info_BlockInfo_ctor(dpp_prelude_TimestampMillis *time_ms, dpp_prelude_BlockHeight *height, dpp_prelude_CoreBlockHeight *core_height, dpp_block_epoch_Epoch *epoch); -%ignore dpp_block_block_info_BlockInfo_destroy(dpp_block_block_info_BlockInfo *ffi); -%ignore dpp_block_epoch_EpochIndex_ctor(uint16_t o_0); -%ignore dpp_block_epoch_EpochIndex_destroy(dpp_block_epoch_EpochIndex *ffi); -%ignore dpp_block_epoch_Epoch_ctor(dpp_block_epoch_EpochIndex *index, Arr_u8_2 *key); -%ignore dpp_block_epoch_Epoch_destroy(dpp_block_epoch_Epoch *ffi); -%ignore dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_NoWinner_ctor(); -%ignore dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_WonByIdentity_ctor(platform_value_types_identifier_Identifier *o_o_0); -%ignore dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_Locked_ctor(); -%ignore dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_destroy(dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo *ffi); -%ignore dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_V0_ctor(dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 *o_o_0); -%ignore dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_destroy(dpp_voting_contender_structs_contender_ContenderWithSerializedDocument *ffi); -%ignore dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_ctor(platform_value_types_identifier_Identifier *identity_id, Vec_u8 *serialized_document, uint32_t *vote_tally); -%ignore dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_destroy(dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 *ffi); +%ignore drive_proof_verifier_types_ContestedResource_ctor(platform_value_Value *o_0); +%ignore drive_proof_verifier_types_ContestedResource_destroy(drive_proof_verifier_types_ContestedResource *ffi); +%ignore drive_proof_verifier_types_ContestedResources_ctor(Vec_drive_proof_verifier_types_ContestedResource *o_0); +%ignore drive_proof_verifier_types_ContestedResources_destroy(drive_proof_verifier_types_ContestedResources *ffi); +%ignore drive_proof_verifier_types_ResourceVotesByIdentity_ctor(std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote *o_0); +%ignore drive_proof_verifier_types_ResourceVotesByIdentity_destroy(drive_proof_verifier_types_ResourceVotesByIdentity *ffi); +%ignore drive_proof_verifier_types_Voter_ctor(platform_value_types_identifier_Identifier *o_0); +%ignore drive_proof_verifier_types_Voter_destroy(drive_proof_verifier_types_Voter *ffi); +%ignore drive_proof_verifier_types_VotePollsGroupedByTimestamp_ctor(Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll *o_0); +%ignore drive_proof_verifier_types_VotePollsGroupedByTimestamp_destroy(drive_proof_verifier_types_VotePollsGroupedByTimestamp *ffi); +%ignore drive_proof_verifier_types_Contenders_ctor(Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo *winner, std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument *contenders, uint32_t *abstain_vote_tally, uint32_t *lock_vote_tally); +%ignore drive_proof_verifier_types_Contenders_destroy(drive_proof_verifier_types_Contenders *ffi); +%ignore drive_proof_verifier_types_Voters_ctor(std_collections_BTreeSet_drive_proof_verifier_types_Voter *o_0); +%ignore drive_proof_verifier_types_Voters_destroy(drive_proof_verifier_types_Voters *ffi); %ignore dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice_TowardsIdentity_ctor(platform_value_types_identifier_Identifier *o_o_0); %ignore dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice_Abstain_ctor(); %ignore dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice_Lock_ctor(); @@ -34,24 +22,51 @@ %ignore dpp_voting_votes_resource_vote_ResourceVote_destroy(dpp_voting_votes_resource_vote_ResourceVote *ffi); %ignore dpp_voting_votes_resource_vote_v0_ResourceVoteV0_ctor(dpp_voting_vote_polls_VotePoll *vote_poll, dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice *resource_vote_choice); %ignore dpp_voting_votes_resource_vote_v0_ResourceVoteV0_destroy(dpp_voting_votes_resource_vote_v0_ResourceVoteV0 *ffi); +%ignore dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_NoWinner_ctor(); +%ignore dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_WonByIdentity_ctor(platform_value_types_identifier_Identifier *o_o_0); +%ignore dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_Locked_ctor(); +%ignore dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_destroy(dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo *ffi); %ignore dpp_voting_vote_polls_VotePoll_ContestedDocumentResourceVotePoll_ctor(dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll *o_o_0); %ignore dpp_voting_vote_polls_VotePoll_destroy(dpp_voting_vote_polls_VotePoll *ffi); %ignore dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_ctor(platform_value_types_identifier_Identifier *contract_id, char *document_type_name, char *index_name, Vec_platform_value_Value *index_values); %ignore dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_destroy(dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll *ffi); -%ignore dpp_identity_identity_Identity_V0_ctor(dpp_identity_v0_IdentityV0 *o_o_0); -%ignore dpp_identity_identity_Identity_destroy(dpp_identity_identity_Identity *ffi); -%ignore dpp_identity_v0_IdentityV0_ctor(platform_value_types_identifier_Identifier *id, std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey *public_keys, uint64_t balance, dpp_prelude_Revision *revision); -%ignore dpp_identity_v0_IdentityV0_destroy(dpp_identity_v0_IdentityV0 *ffi); +%ignore dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_V0_ctor(dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 *o_o_0); +%ignore dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_destroy(dpp_voting_contender_structs_contender_ContenderWithSerializedDocument *ffi); +%ignore dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_ctor(platform_value_types_identifier_Identifier *identity_id, Vec_u8 *serialized_document, uint32_t *vote_tally); +%ignore dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_destroy(dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 *ffi); +%ignore dpp_block_block_info_BlockInfo_ctor(dpp_prelude_TimestampMillis *time_ms, dpp_prelude_BlockHeight *height, dpp_prelude_CoreBlockHeight *core_height, dpp_block_epoch_Epoch *epoch); +%ignore dpp_block_block_info_BlockInfo_destroy(dpp_block_block_info_BlockInfo *ffi); +%ignore dpp_block_epoch_EpochIndex_ctor(uint16_t o_0); +%ignore dpp_block_epoch_EpochIndex_destroy(dpp_block_epoch_EpochIndex *ffi); +%ignore dpp_block_epoch_Epoch_ctor(dpp_block_epoch_EpochIndex *index, Arr_u8_2 *key); +%ignore dpp_block_epoch_Epoch_destroy(dpp_block_epoch_Epoch *ffi); +%ignore dpp_prelude_CoreBlockHeight_ctor(uint32_t o_0); +%ignore dpp_prelude_CoreBlockHeight_destroy(dpp_prelude_CoreBlockHeight *ffi); +%ignore dpp_prelude_BlockHeight_ctor(uint64_t o_0); +%ignore dpp_prelude_BlockHeight_destroy(dpp_prelude_BlockHeight *ffi); +%ignore dpp_prelude_Revision_ctor(uint64_t o_0); +%ignore dpp_prelude_Revision_destroy(dpp_prelude_Revision *ffi); +%ignore dpp_prelude_TimestampMillis_ctor(uint64_t o_0); +%ignore dpp_prelude_TimestampMillis_destroy(dpp_prelude_TimestampMillis *ffi); +%ignore dpp_document_Document_V0_ctor(dpp_document_v0_DocumentV0 *o_o_0); +%ignore dpp_document_Document_destroy(dpp_document_Document *ffi); +%ignore dpp_document_v0_DocumentV0_ctor(platform_value_types_identifier_Identifier *id, platform_value_types_identifier_Identifier *owner_id, std_collections_Map_keys_String_values_platform_value_Value *properties, dpp_prelude_Revision *revision, dpp_identity_identity_public_key_TimestampMillis *created_at, dpp_identity_identity_public_key_TimestampMillis *updated_at, dpp_identity_identity_public_key_TimestampMillis *transferred_at, dpp_prelude_BlockHeight *created_at_block_height, dpp_prelude_BlockHeight *updated_at_block_height, dpp_prelude_BlockHeight *transferred_at_block_height, dpp_prelude_CoreBlockHeight *created_at_core_block_height, dpp_prelude_CoreBlockHeight *updated_at_core_block_height, dpp_prelude_CoreBlockHeight *transferred_at_core_block_height); +%ignore dpp_document_v0_DocumentV0_destroy(dpp_document_v0_DocumentV0 *ffi); +%ignore dpp_identity_identity_public_key_KeyID_ctor(uint32_t o_0); +%ignore dpp_identity_identity_public_key_KeyID_destroy(dpp_identity_identity_public_key_KeyID *ffi); %ignore dpp_identity_identity_public_key_TimestampMillis_ctor(uint64_t o_0); %ignore dpp_identity_identity_public_key_TimestampMillis_destroy(dpp_identity_identity_public_key_TimestampMillis *ffi); %ignore dpp_identity_identity_public_key_IdentityPublicKey_V0_ctor(dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 *o_o_0); %ignore dpp_identity_identity_public_key_IdentityPublicKey_destroy(dpp_identity_identity_public_key_IdentityPublicKey *ffi); %ignore dpp_identity_identity_public_key_KeyCount_ctor(dpp_identity_identity_public_key_KeyID *o_0); %ignore dpp_identity_identity_public_key_KeyCount_destroy(dpp_identity_identity_public_key_KeyCount *ffi); -%ignore dpp_identity_identity_public_key_KeyID_ctor(uint32_t o_0); -%ignore dpp_identity_identity_public_key_KeyID_destroy(dpp_identity_identity_public_key_KeyID *ffi); %ignore dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_ctor(dpp_identity_identity_public_key_KeyID *id, dpp_identity_identity_public_key_purpose_Purpose *purpose, dpp_identity_identity_public_key_security_level_SecurityLevel *security_level, dpp_identity_identity_public_key_contract_bounds_ContractBounds *contract_bounds, dpp_identity_identity_public_key_key_type_KeyType *key_type, bool read_only, platform_value_types_binary_data_BinaryData *data, dpp_identity_identity_public_key_TimestampMillis *disabled_at); %ignore dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_destroy(dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 *ffi); +%ignore dpp_identity_identity_public_key_security_level_SecurityLevel_MASTER_ctor(); +%ignore dpp_identity_identity_public_key_security_level_SecurityLevel_CRITICAL_ctor(); +%ignore dpp_identity_identity_public_key_security_level_SecurityLevel_HIGH_ctor(); +%ignore dpp_identity_identity_public_key_security_level_SecurityLevel_MEDIUM_ctor(); +%ignore dpp_identity_identity_public_key_security_level_SecurityLevel_destroy(dpp_identity_identity_public_key_security_level_SecurityLevel *ffi); %ignore dpp_identity_identity_public_key_contract_bounds_ContractBounds_SingleContract_ctor(platform_value_types_identifier_Identifier *id); %ignore dpp_identity_identity_public_key_contract_bounds_ContractBounds_SingleContractDocumentType_ctor(platform_value_types_identifier_Identifier *id, char *document_type_name); %ignore dpp_identity_identity_public_key_contract_bounds_ContractBounds_destroy(dpp_identity_identity_public_key_contract_bounds_ContractBounds *ffi); @@ -61,36 +76,22 @@ %ignore dpp_identity_identity_public_key_purpose_Purpose_TRANSFER_ctor(); %ignore dpp_identity_identity_public_key_purpose_Purpose_SYSTEM_ctor(); %ignore dpp_identity_identity_public_key_purpose_Purpose_VOTING_ctor(); +%ignore dpp_identity_identity_public_key_purpose_Purpose_OWNER_ctor(); %ignore dpp_identity_identity_public_key_purpose_Purpose_destroy(dpp_identity_identity_public_key_purpose_Purpose *ffi); -%ignore dpp_identity_identity_public_key_security_level_SecurityLevel_MASTER_ctor(); -%ignore dpp_identity_identity_public_key_security_level_SecurityLevel_CRITICAL_ctor(); -%ignore dpp_identity_identity_public_key_security_level_SecurityLevel_HIGH_ctor(); -%ignore dpp_identity_identity_public_key_security_level_SecurityLevel_MEDIUM_ctor(); -%ignore dpp_identity_identity_public_key_security_level_SecurityLevel_destroy(dpp_identity_identity_public_key_security_level_SecurityLevel *ffi); %ignore dpp_identity_identity_public_key_key_type_KeyType_ECDSA_SECP256K1_ctor(); %ignore dpp_identity_identity_public_key_key_type_KeyType_BLS12_381_ctor(); %ignore dpp_identity_identity_public_key_key_type_KeyType_ECDSA_HASH160_ctor(); %ignore dpp_identity_identity_public_key_key_type_KeyType_BIP13_SCRIPT_HASH_ctor(); %ignore dpp_identity_identity_public_key_key_type_KeyType_EDDSA_25519_HASH160_ctor(); %ignore dpp_identity_identity_public_key_key_type_KeyType_destroy(dpp_identity_identity_public_key_key_type_KeyType *ffi); -%ignore drive_query_ordering_OrderClause_ctor(char *field, bool ascending); -%ignore drive_query_ordering_OrderClause_destroy(drive_query_ordering_OrderClause *ffi); -%ignore drive_query_conditions_WhereOperator_Equal_ctor(); -%ignore drive_query_conditions_WhereOperator_GreaterThan_ctor(); -%ignore drive_query_conditions_WhereOperator_GreaterThanOrEquals_ctor(); -%ignore drive_query_conditions_WhereOperator_LessThan_ctor(); -%ignore drive_query_conditions_WhereOperator_LessThanOrEquals_ctor(); -%ignore drive_query_conditions_WhereOperator_Between_ctor(); -%ignore drive_query_conditions_WhereOperator_BetweenExcludeBounds_ctor(); -%ignore drive_query_conditions_WhereOperator_BetweenExcludeLeft_ctor(); -%ignore drive_query_conditions_WhereOperator_BetweenExcludeRight_ctor(); -%ignore drive_query_conditions_WhereOperator_In_ctor(); -%ignore drive_query_conditions_WhereOperator_StartsWith_ctor(); -%ignore drive_query_conditions_WhereOperator_destroy(drive_query_conditions_WhereOperator *ffi); -%ignore drive_query_conditions_WhereClause_ctor(char *field, drive_query_conditions_WhereOperator *operator_, platform_value_Value *value); -%ignore drive_query_conditions_WhereClause_destroy(drive_query_conditions_WhereClause *ffi); +%ignore dpp_identity_v0_IdentityV0_ctor(platform_value_types_identifier_Identifier *id, std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey *public_keys, uint64_t balance, dpp_prelude_Revision *revision); +%ignore dpp_identity_v0_IdentityV0_destroy(dpp_identity_v0_IdentityV0 *ffi); +%ignore dpp_identity_identity_Identity_V0_ctor(dpp_identity_v0_IdentityV0 *o_o_0); +%ignore dpp_identity_identity_Identity_destroy(dpp_identity_identity_Identity *ffi); %ignore dash_sdk_platform_types_identity_PublicKeyHash_ctor(Arr_u8_20 *o_0); %ignore dash_sdk_platform_types_identity_PublicKeyHash_destroy(dash_sdk_platform_types_identity_PublicKeyHash *ffi); +%ignore platform_value_Hash256_ctor(Arr_u8_32 *o_0); +%ignore platform_value_Hash256_destroy(platform_value_Hash256 *ffi); %ignore platform_value_Value_U128_ctor(u128 o_o_0); %ignore platform_value_Value_I128_ctor(i128 o_o_0); %ignore platform_value_Value_U64_ctor(uint64_t o_o_0); @@ -115,8 +116,8 @@ %ignore platform_value_Value_Array_ctor(Vec_platform_value_Value *o_o_0); %ignore platform_value_Value_Map_ctor(platform_value_value_map_ValueMap *o_o_0); %ignore platform_value_Value_destroy(platform_value_Value *ffi); -%ignore platform_value_Hash256_ctor(Arr_u8_32 *o_0); -%ignore platform_value_Hash256_destroy(platform_value_Hash256 *ffi); +%ignore platform_value_value_map_ValueMap_ctor(Vec_Tuple_platform_value_Value_platform_value_Value *o_0); +%ignore platform_value_value_map_ValueMap_destroy(platform_value_value_map_ValueMap *ffi); %ignore platform_value_error_Error_Unsupported_ctor(char *o_o_0); %ignore platform_value_error_Error_StructureError_ctor(char *o_o_0); %ignore platform_value_error_Error_PathError_ctor(char *o_o_0); @@ -131,156 +132,156 @@ %ignore platform_value_error_Error_SerdeDeserializationError_ctor(char *o_o_0); %ignore platform_value_error_Error_CborSerializationError_ctor(char *o_o_0); %ignore platform_value_error_Error_destroy(platform_value_error_Error *ffi); -%ignore platform_value_types_binary_data_BinaryData_ctor(Vec_u8 *o_0); -%ignore platform_value_types_binary_data_BinaryData_destroy(platform_value_types_binary_data_BinaryData *ffi); -%ignore platform_value_types_identifier_Identifier_ctor(platform_value_types_identifier_IdentifierBytes32 *o_0); -%ignore platform_value_types_identifier_Identifier_destroy(platform_value_types_identifier_Identifier *ffi); %ignore platform_value_types_identifier_IdentifierBytes32_ctor(Arr_u8_32 *o_0); %ignore platform_value_types_identifier_IdentifierBytes32_destroy(platform_value_types_identifier_IdentifierBytes32 *ffi); -%ignore platform_value_value_map_ValueMap_ctor(Vec_Tuple_platform_value_Value_platform_value_Value *o_0); -%ignore platform_value_value_map_ValueMap_destroy(platform_value_value_map_ValueMap *ffi); -%ignore drive_proof_verifier_types_ContestedResource_Value_ctor(platform_value_Value *o_o_0); -%ignore drive_proof_verifier_types_ContestedResource_destroy(drive_proof_verifier_types_ContestedResource *ffi); -%ignore drive_proof_verifier_types_Contenders_ctor(Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo *winner, std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument *contenders, uint32_t *abstain_vote_tally, uint32_t *lock_vote_tally); -%ignore drive_proof_verifier_types_Contenders_destroy(drive_proof_verifier_types_Contenders *ffi); -%ignore drive_proof_verifier_types_Voters_ctor(std_collections_BTreeSet_drive_proof_verifier_types_Voter *o_0); -%ignore drive_proof_verifier_types_Voters_destroy(drive_proof_verifier_types_Voters *ffi); -%ignore drive_proof_verifier_types_ContestedResources_ctor(Vec_drive_proof_verifier_types_ContestedResource *o_0); -%ignore drive_proof_verifier_types_ContestedResources_destroy(drive_proof_verifier_types_ContestedResources *ffi); -%ignore drive_proof_verifier_types_Voter_ctor(platform_value_types_identifier_Identifier *o_0); -%ignore drive_proof_verifier_types_Voter_destroy(drive_proof_verifier_types_Voter *ffi); -%ignore drive_proof_verifier_types_ResourceVotesByIdentity_ctor(std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote *o_0); -%ignore drive_proof_verifier_types_ResourceVotesByIdentity_destroy(drive_proof_verifier_types_ResourceVotesByIdentity *ffi); -%ignore drive_proof_verifier_types_VotePollsGroupedByTimestamp_ctor(Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll *o_0); -%ignore drive_proof_verifier_types_VotePollsGroupedByTimestamp_destroy(drive_proof_verifier_types_VotePollsGroupedByTimestamp *ffi); -%ignore platform_mobile_clone_Hash256_clone(platform_value_Hash256 *o); -%ignore platform_mobile_clone_Revision_clone(dpp_prelude_Revision *revision); -%ignore platform_mobile_clone_VotePoll_clone(dpp_voting_vote_polls_VotePoll *o); -%ignore platform_mobile_clone_ContestedResources_clone(drive_proof_verifier_types_ContestedResources *o); -%ignore platform_mobile_clone_Arr_u8_32_clone(Arr_u8_32 *slice); -%ignore platform_mobile_clone_Document_clone(dpp_document_Document *document); -%ignore platform_mobile_clone_Vote_clone(dpp_voting_votes_Vote *o); -%ignore platform_mobile_clone_Arr_u8_36_clone(Arr_u8_36 *slice); -%ignore platform_mobile_clone_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_clone(Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll *o); +%ignore platform_value_types_identifier_Identifier_ctor(platform_value_types_identifier_IdentifierBytes32 *o_0); +%ignore platform_value_types_identifier_Identifier_destroy(platform_value_types_identifier_Identifier *ffi); +%ignore platform_value_types_binary_data_BinaryData_ctor(Vec_u8 *o_0); +%ignore platform_value_types_binary_data_BinaryData_destroy(platform_value_types_binary_data_BinaryData *ffi); +%ignore platform_mobile_data_contracts_DataContractFFI_clone(platform_mobile_data_contracts_DataContractFFI *value); +%ignore platform_mobile_data_contracts_DataContractFFI_ctor(platform_value_types_identifier_Identifier *id, platform_value_types_identifier_Identifier *owner_id, Vec_String *doc_types, uint32_t version); +%ignore platform_mobile_data_contracts_DataContractFFI_destroy(platform_mobile_data_contracts_DataContractFFI *ffi); +%ignore platform_mobile_clone_std_collections_BTreeSet_drive_proof_verifier_types_Voter_clone(std_collections_BTreeSet_drive_proof_verifier_types_Voter *o); %ignore platform_mobile_clone_OrderClause_clone(drive_query_ordering_OrderClause *o); -%ignore platform_mobile_clone_ResourceVote_clone(dpp_voting_votes_resource_vote_ResourceVote *o); -%ignore platform_mobile_clone_WhereOperator_clone(drive_query_conditions_WhereOperator *o); -%ignore platform_mobile_clone_VotePollsGroupedByTimestamp_clone(drive_proof_verifier_types_VotePollsGroupedByTimestamp *o); +%ignore platform_mobile_clone_WhereClause_clone(drive_query_conditions_WhereClause *o); +%ignore platform_mobile_clone_ContenderWithSerializedDocumentV0_clone(dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 *o); %ignore platform_mobile_clone_Vec_u8_clone(Vec_u8 *vec); -%ignore platform_mobile_clone_TimestampMillis_clone(dpp_identity_identity_public_key_TimestampMillis *time); -%ignore platform_mobile_clone_Contenders_clone(drive_proof_verifier_types_Contenders *o); -%ignore platform_mobile_clone_ValueMap_clone(platform_value_value_map_ValueMap *value_map); -%ignore platform_mobile_clone_prelude_TimestampMillis_clone(dpp_prelude_TimestampMillis *time); -%ignore platform_mobile_clone_DocumentV0_clone(dpp_document_v0_DocumentV0 *document); -%ignore platform_mobile_clone_ResourceVoteChoice_clone(dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice *o); -%ignore platform_mobile_clone_CoreBlockHeight_clone(dpp_prelude_CoreBlockHeight *height); %ignore platform_mobile_clone_BlockHeight_clone(dpp_prelude_BlockHeight *height); -%ignore platform_mobile_clone_ResourceVoteV0_clone(dpp_voting_votes_resource_vote_v0_ResourceVoteV0 *o); -%ignore platform_mobile_clone_Arr_u8_20_clone(Arr_u8_20 *slice); +%ignore platform_mobile_clone_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_clone(Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll *o); +%ignore platform_mobile_clone_WhereOperator_clone(drive_query_conditions_WhereOperator *o); +%ignore platform_mobile_clone_VotePollsGroupedByTimestamp_clone(drive_proof_verifier_types_VotePollsGroupedByTimestamp *o); +%ignore platform_mobile_clone_KeyID_clone(dpp_identity_identity_public_key_KeyID *id); +%ignore platform_mobile_clone_ContestedResource_clone(drive_proof_verifier_types_ContestedResource *o); %ignore platform_mobile_clone_ContestedDocumentResourceVotePoll_clone(dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll *o); %ignore platform_mobile_clone_ContenderWithSerializedDocument_clone(dpp_voting_contender_structs_contender_ContenderWithSerializedDocument *o); -%ignore platform_mobile_clone_WhereClause_clone(drive_query_conditions_WhereClause *o); -%ignore platform_mobile_clone_std_collections_BTreeSet_drive_proof_verifier_types_Voter_clone(std_collections_BTreeSet_drive_proof_verifier_types_Voter *o); -%ignore platform_mobile_clone_KeyID_clone(dpp_identity_identity_public_key_KeyID *id); +%ignore platform_mobile_clone_ResourceVotesByIdentity_clone(drive_proof_verifier_types_ResourceVotesByIdentity *o); +%ignore platform_mobile_clone_Arr_u8_36_clone(Arr_u8_36 *slice); %ignore platform_mobile_clone_Voter_clone(drive_proof_verifier_types_Voter *o); +%ignore platform_mobile_clone_Hash256_clone(platform_value_Hash256 *o); +%ignore platform_mobile_clone_Contenders_clone(drive_proof_verifier_types_Contenders *o); +%ignore platform_mobile_clone_ContestedResources_clone(drive_proof_verifier_types_ContestedResources *o); +%ignore platform_mobile_clone_DocumentV0_clone(dpp_document_v0_DocumentV0 *document); +%ignore platform_mobile_clone_CoreBlockHeight_clone(dpp_prelude_CoreBlockHeight *height); %ignore platform_mobile_clone_Voters_clone(drive_proof_verifier_types_Voters *o); -%ignore platform_mobile_clone_ContestedResource_clone(drive_proof_verifier_types_ContestedResource *o); -%ignore platform_mobile_clone_ContenderWithSerializedDocumentV0_clone(dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 *o); +%ignore platform_mobile_clone_Vec_Value_clone(Vec_platform_value_Value *value_vec); +%ignore platform_mobile_clone_Document_clone(dpp_document_Document *document); +%ignore platform_mobile_clone_ResourceVoteChoice_clone(dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice *o); +%ignore platform_mobile_clone_TimestampMillis_clone(dpp_identity_identity_public_key_TimestampMillis *time); %ignore platform_mobile_clone_Value_clone(platform_value_Value *value); +%ignore platform_mobile_clone_Vote_clone(dpp_voting_votes_Vote *o); +%ignore platform_mobile_clone_Arr_u8_20_clone(Arr_u8_20 *slice); +%ignore platform_mobile_clone_ResourceVoteV0_clone(dpp_voting_votes_resource_vote_v0_ResourceVoteV0 *o); +%ignore platform_mobile_clone_ValueMap_clone(platform_value_value_map_ValueMap *value_map); +%ignore platform_mobile_clone_Arr_u8_32_clone(Arr_u8_32 *slice); +%ignore platform_mobile_clone_Revision_clone(dpp_prelude_Revision *revision); +%ignore platform_mobile_clone_VotePoll_clone(dpp_voting_vote_polls_VotePoll *o); +%ignore platform_mobile_clone_prelude_TimestampMillis_clone(dpp_prelude_TimestampMillis *time); %ignore platform_mobile_clone_std_collections_Map_keys_String_values_platform_value_Value_clone(std_collections_Map_keys_String_values_platform_value_Value *map); -%ignore platform_mobile_clone_ResourceVotesByIdentity_clone(drive_proof_verifier_types_ResourceVotesByIdentity *o); -%ignore platform_mobile_clone_Vec_Value_clone(Vec_platform_value_Value *value_vec); -%ignore platform_mobile_data_contracts_DataContractFFI_ctor(platform_value_types_identifier_Identifier *id, platform_value_types_identifier_Identifier *owner_id, Vec_String *doc_types, uint32_t version); -%ignore platform_mobile_data_contracts_DataContractFFI_destroy(platform_mobile_data_contracts_DataContractFFI *ffi); -%ignore platform_mobile_data_contracts_DataContractFFI_clone(platform_mobile_data_contracts_DataContractFFI *value); -%ignore platform_mobile_fetch_document_StartPoint_StartAfter_ctor(Vec_u8 *o_o_0); -%ignore platform_mobile_fetch_document_StartPoint_StartAt_ctor(Vec_u8 *o_o_0); -%ignore platform_mobile_fetch_document_StartPoint_destroy(platform_mobile_fetch_document_StartPoint *ffi); -%ignore platform_mobile_put_ChainAssetLockProofFFI_ctor(uint32_t core_chain_locked_height, OutPoint *out_point); -%ignore platform_mobile_put_ChainAssetLockProofFFI_destroy(platform_mobile_put_ChainAssetLockProofFFI *ffi); -%ignore platform_mobile_put_ChainAssetLockProofFFI_clone(platform_mobile_put_ChainAssetLockProofFFI *a); -%ignore platform_mobile_put_InstantAssetLockProofFFI_clone(platform_mobile_put_InstantAssetLockProofFFI *a); -%ignore platform_mobile_put_AssetLockProofFFI_Instant_ctor(platform_mobile_put_InstantAssetLockProofFFI *o_o_0); -%ignore platform_mobile_put_AssetLockProofFFI_Chain_ctor(platform_mobile_put_ChainAssetLockProofFFI *o_o_0); -%ignore platform_mobile_put_AssetLockProofFFI_destroy(platform_mobile_put_AssetLockProofFFI *ffi); +%ignore platform_mobile_clone_ResourceVote_clone(dpp_voting_votes_resource_vote_ResourceVote *o); %ignore platform_mobile_put_OutPointFFI_ctor(Arr_u8_32 *txid, uint32_t vout); %ignore platform_mobile_put_OutPointFFI_destroy(platform_mobile_put_OutPointFFI *ffi); -%ignore platform_mobile_put_OutPointFFI_clone(OutPoint *a); %ignore platform_mobile_put_InstantAssetLockProofFFI_ctor(Vec_u8 *instant_lock, Vec_u8 *transaction, uint32_t output_index); %ignore platform_mobile_put_InstantAssetLockProofFFI_destroy(platform_mobile_put_InstantAssetLockProofFFI *ffi); -%ignore platform_mobile_identity_Identity_clone(dpp_identity_identity_Identity *identity); -%ignore platform_mobile_identity_IdentityPublicKey_clone(dpp_identity_identity_public_key_IdentityPublicKey *identity_public_key); -%ignore platform_mobile_identity_std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_clone(std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey *public_keys); -%ignore platform_mobile_identity_IdentityPublicKeyV0_clone(dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 *identity_public_key); +%ignore platform_mobile_put_AssetLockProofFFI_Instant_ctor(platform_mobile_put_InstantAssetLockProofFFI *o_o_0); +%ignore platform_mobile_put_AssetLockProofFFI_Chain_ctor(platform_mobile_put_ChainAssetLockProofFFI *o_o_0); +%ignore platform_mobile_put_AssetLockProofFFI_destroy(platform_mobile_put_AssetLockProofFFI *ffi); +%ignore platform_mobile_put_ChainAssetLockProofFFI_clone(platform_mobile_put_ChainAssetLockProofFFI *a); +%ignore platform_mobile_put_ChainAssetLockProofFFI_ctor(uint32_t core_chain_locked_height, OutPoint *out_point); +%ignore platform_mobile_put_ChainAssetLockProofFFI_destroy(platform_mobile_put_ChainAssetLockProofFFI *ffi); +%ignore platform_mobile_put_InstantAssetLockProofFFI_clone(platform_mobile_put_InstantAssetLockProofFFI *a); +%ignore platform_mobile_put_OutPointFFI_clone(OutPoint *a); %ignore platform_mobile_identity_Identifier_clone(platform_value_types_identifier_Identifier *identifier); +%ignore platform_mobile_identity_IdentityPublicKeyV0_clone(dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 *identity_public_key); %ignore platform_mobile_identity_IdentityV0_clone(dpp_identity_v0_IdentityV0 *identity); -%ignore Arr_u8_20_ctor(uintptr_t count, uint8_t *values); -%ignore Arr_u8_20_destroy(Arr_u8_20 *ffi); -%ignore Result_ok_Option_dpp_identity_identity_Identity_err_String_ctor(dpp_identity_identity_Identity *ok, char *error); -%ignore Result_ok_Option_dpp_identity_identity_Identity_err_String_destroy(Result_ok_Option_dpp_identity_identity_Identity_err_String *ffi); -%ignore std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_ctor(uintptr_t count, platform_value_types_identifier_Identifier **keys, dpp_voting_contender_structs_contender_ContenderWithSerializedDocument **values); -%ignore std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_destroy(std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument *ffi); -%ignore std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_ctor(uintptr_t count, dpp_identity_identity_public_key_KeyID **keys, dpp_identity_identity_public_key_IdentityPublicKey **values); -%ignore std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_destroy(std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey *ffi); -%ignore Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String_ctor(drive_proof_verifier_types_ResourceVotesByIdentity *ok, char *error); -%ignore Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String_destroy(Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String *ffi); -%ignore Result_ok_drive_proof_verifier_types_ContestedResources_err_String_ctor(drive_proof_verifier_types_ContestedResources *ok, char *error); -%ignore Result_ok_drive_proof_verifier_types_ContestedResources_err_String_destroy(Result_ok_drive_proof_verifier_types_ContestedResources_err_String *ffi); -%ignore Arr_u8_32_ctor(uintptr_t count, uint8_t *values); -%ignore Arr_u8_32_destroy(Arr_u8_32 *ffi); -%ignore Result_ok_dpp_identity_identity_Identity_err_String_ctor(dpp_identity_identity_Identity *ok, char *error); -%ignore Result_ok_dpp_identity_identity_Identity_err_String_destroy(Result_ok_dpp_identity_identity_Identity_err_String *ffi); -%ignore std_collections_BTreeSet_drive_proof_verifier_types_Voter_ctor(uintptr_t count, drive_proof_verifier_types_Voter **values); -%ignore std_collections_BTreeSet_drive_proof_verifier_types_Voter_destroy(std_collections_BTreeSet_drive_proof_verifier_types_Voter *ffi); -%ignore Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo_ctor(dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo *o_0, dpp_block_block_info_BlockInfo *o_1); -%ignore Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo_destroy(Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo *ffi); +%ignore platform_mobile_identity_std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_clone(std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey *public_keys); +%ignore platform_mobile_identity_IdentityPublicKey_clone(dpp_identity_identity_public_key_IdentityPublicKey *identity_public_key); +%ignore platform_mobile_identity_Identity_clone(dpp_identity_identity_Identity *identity); +%ignore platform_mobile_fetch_document_StartPoint_StartAfter_ctor(Vec_u8 *o_o_0); +%ignore platform_mobile_fetch_document_StartPoint_StartAt_ctor(Vec_u8 *o_o_0); +%ignore platform_mobile_fetch_document_StartPoint_destroy(platform_mobile_fetch_document_StartPoint *ffi); +%ignore drive_query_conditions_WhereClause_ctor(char *field, drive_query_conditions_WhereOperator *operator_, platform_value_Value *value); +%ignore drive_query_conditions_WhereClause_destroy(drive_query_conditions_WhereClause *ffi); +%ignore drive_query_conditions_WhereOperator_Equal_ctor(); +%ignore drive_query_conditions_WhereOperator_GreaterThan_ctor(); +%ignore drive_query_conditions_WhereOperator_GreaterThanOrEquals_ctor(); +%ignore drive_query_conditions_WhereOperator_LessThan_ctor(); +%ignore drive_query_conditions_WhereOperator_LessThanOrEquals_ctor(); +%ignore drive_query_conditions_WhereOperator_Between_ctor(); +%ignore drive_query_conditions_WhereOperator_BetweenExcludeBounds_ctor(); +%ignore drive_query_conditions_WhereOperator_BetweenExcludeLeft_ctor(); +%ignore drive_query_conditions_WhereOperator_BetweenExcludeRight_ctor(); +%ignore drive_query_conditions_WhereOperator_In_ctor(); +%ignore drive_query_conditions_WhereOperator_StartsWith_ctor(); +%ignore drive_query_conditions_WhereOperator_destroy(drive_query_conditions_WhereOperator *ffi); +%ignore drive_query_ordering_OrderClause_ctor(char *field, bool ascending); +%ignore drive_query_ordering_OrderClause_destroy(drive_query_ordering_OrderClause *ffi); +%ignore Vec_drive_proof_verifier_types_ContestedResource_ctor(uintptr_t count, drive_proof_verifier_types_ContestedResource **values); +%ignore Vec_drive_proof_verifier_types_ContestedResource_destroy(Vec_drive_proof_verifier_types_ContestedResource *ffi); %ignore Vec_u8_ctor(uintptr_t count, uint8_t *values); %ignore Vec_u8_destroy(Vec_u8 *ffi); %ignore Result_ok_u64_err_String_ctor(uint64_t *ok, char *error); %ignore Result_ok_u64_err_String_destroy(Result_ok_u64_err_String *ffi); +%ignore Vec_dpp_document_Document_ctor(uintptr_t count, dpp_document_Document **values); +%ignore Vec_dpp_document_Document_destroy(Vec_dpp_document_Document *ffi); +%ignore Result_ok_Vec_dpp_document_Document_err_String_ctor(Vec_dpp_document_Document *ok, char *error); +%ignore Result_ok_Vec_dpp_document_Document_err_String_destroy(Result_ok_Vec_dpp_document_Document_err_String *ffi); %ignore Result_ok_Vec_u8_err_String_ctor(Vec_u8 *ok, char *error); %ignore Result_ok_Vec_u8_err_String_destroy(Result_ok_Vec_u8_err_String *ffi); -%ignore Result_ok_Option_dpp_voting_votes_Vote_err_String_ctor(dpp_voting_votes_Vote *ok, char *error); -%ignore Result_ok_Option_dpp_voting_votes_Vote_err_String_destroy(Result_ok_Option_dpp_voting_votes_Vote_err_String *ffi); -%ignore Tuple_platform_value_Value_platform_value_Value_ctor(platform_value_Value *o_0, platform_value_Value *o_1); -%ignore Tuple_platform_value_Value_platform_value_Value_destroy(Tuple_platform_value_Value_platform_value_Value *ffi); -%ignore Arr_u8_36_ctor(uintptr_t count, uint8_t *values); -%ignore Arr_u8_36_destroy(Arr_u8_36 *ffi); +%ignore Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo_ctor(dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo *o_0, dpp_block_block_info_BlockInfo *o_1); +%ignore Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo_destroy(Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo *ffi); +%ignore std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_ctor(uintptr_t count, platform_value_types_identifier_Identifier **keys, dpp_voting_contender_structs_contender_ContenderWithSerializedDocument **values); +%ignore std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_destroy(std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument *ffi); +%ignore Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String_ctor(platform_mobile_data_contracts_DataContractFFI *ok, char *error); +%ignore Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String_destroy(Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String *ffi); +%ignore Arr_u8_20_ctor(uintptr_t count, uint8_t *values); +%ignore Arr_u8_20_destroy(Arr_u8_20 *ffi); %ignore Vec_drive_query_conditions_WhereClause_ctor(uintptr_t count, drive_query_conditions_WhereClause **values); %ignore Vec_drive_query_conditions_WhereClause_destroy(Vec_drive_query_conditions_WhereClause *ffi); -%ignore Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_ctor(dpp_prelude_TimestampMillis *o_0, Vec_dpp_voting_vote_polls_VotePoll *o_1); -%ignore Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_destroy(Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll *ffi); +%ignore Result_ok_dpp_identity_identity_Identity_err_String_ctor(dpp_identity_identity_Identity *ok, char *error); +%ignore Result_ok_dpp_identity_identity_Identity_err_String_destroy(Result_ok_dpp_identity_identity_Identity_err_String *ffi); +%ignore Result_ok_drive_proof_verifier_types_Contenders_err_String_ctor(drive_proof_verifier_types_Contenders *ok, char *error); +%ignore Result_ok_drive_proof_verifier_types_Contenders_err_String_destroy(Result_ok_drive_proof_verifier_types_Contenders_err_String *ffi); +%ignore std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_ctor(uintptr_t count, dpp_identity_identity_public_key_KeyID **keys, dpp_identity_identity_public_key_IdentityPublicKey **values); +%ignore std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_destroy(std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey *ffi); +%ignore std_collections_BTreeSet_drive_proof_verifier_types_Voter_ctor(uintptr_t count, drive_proof_verifier_types_Voter **values); +%ignore std_collections_BTreeSet_drive_proof_verifier_types_Voter_destroy(std_collections_BTreeSet_drive_proof_verifier_types_Voter *ffi); %ignore std_collections_Map_keys_String_values_platform_value_Value_ctor(uintptr_t count, char **keys, platform_value_Value **values); %ignore std_collections_Map_keys_String_values_platform_value_Value_destroy(std_collections_Map_keys_String_values_platform_value_Value *ffi); -%ignore Vec_drive_proof_verifier_types_ContestedResource_ctor(uintptr_t count, drive_proof_verifier_types_ContestedResource **values); -%ignore Vec_drive_proof_verifier_types_ContestedResource_destroy(Vec_drive_proof_verifier_types_ContestedResource *ffi); -%ignore Vec_dpp_voting_vote_polls_VotePoll_ctor(uintptr_t count, dpp_voting_vote_polls_VotePoll **values); -%ignore Vec_dpp_voting_vote_polls_VotePoll_destroy(Vec_dpp_voting_vote_polls_VotePoll *ffi); +%ignore Arr_u8_36_ctor(uintptr_t count, uint8_t *values); +%ignore Arr_u8_36_destroy(Arr_u8_36 *ffi); +%ignore std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote_ctor(uintptr_t count, platform_value_types_identifier_Identifier **keys, dpp_voting_votes_resource_vote_ResourceVote **values); +%ignore std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote_destroy(std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote *ffi); +%ignore Result_ok_drive_proof_verifier_types_ContestedResources_err_String_ctor(drive_proof_verifier_types_ContestedResources *ok, char *error); +%ignore Result_ok_drive_proof_verifier_types_ContestedResources_err_String_destroy(Result_ok_drive_proof_verifier_types_ContestedResources_err_String *ffi); +%ignore Vec_String_ctor(uintptr_t count, char **values); +%ignore Vec_String_destroy(Vec_String *ffi); %ignore Vec_platform_value_Value_ctor(uintptr_t count, platform_value_Value **values); %ignore Vec_platform_value_Value_destroy(Vec_platform_value_Value *ffi); +%ignore Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_ctor(dpp_prelude_TimestampMillis *o_0, Vec_dpp_voting_vote_polls_VotePoll *o_1); +%ignore Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_destroy(Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll *ffi); +%ignore Vec_dpp_voting_vote_polls_VotePoll_ctor(uintptr_t count, dpp_voting_vote_polls_VotePoll **values); +%ignore Vec_dpp_voting_vote_polls_VotePoll_destroy(Vec_dpp_voting_vote_polls_VotePoll *ffi); +%ignore Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_ctor(uintptr_t count, Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll **values); +%ignore Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_destroy(Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll *ffi); +%ignore Arr_u8_32_ctor(uintptr_t count, uint8_t *values); +%ignore Arr_u8_32_destroy(Arr_u8_32 *ffi); +%ignore Result_ok_Option_dpp_voting_votes_Vote_err_String_ctor(dpp_voting_votes_Vote *ok, char *error); +%ignore Result_ok_Option_dpp_voting_votes_Vote_err_String_destroy(Result_ok_Option_dpp_voting_votes_Vote_err_String *ffi); +%ignore Arr_u8_2_ctor(uintptr_t count, uint8_t *values); +%ignore Arr_u8_2_destroy(Arr_u8_2 *ffi); +%ignore Result_ok_Option_dpp_identity_identity_Identity_err_String_ctor(dpp_identity_identity_Identity *ok, char *error); +%ignore Result_ok_Option_dpp_identity_identity_Identity_err_String_destroy(Result_ok_Option_dpp_identity_identity_Identity_err_String *ffi); %ignore Vec_Tuple_platform_value_Value_platform_value_Value_ctor(uintptr_t count, Tuple_platform_value_Value_platform_value_Value **values); %ignore Vec_Tuple_platform_value_Value_platform_value_Value_destroy(Vec_Tuple_platform_value_Value_platform_value_Value *ffi); -%ignore Result_ok_Vec_dpp_document_Document_err_String_ctor(Vec_dpp_document_Document *ok, char *error); -%ignore Result_ok_Vec_dpp_document_Document_err_String_destroy(Result_ok_Vec_dpp_document_Document_err_String *ffi); -%ignore Result_ok_drive_proof_verifier_types_Contenders_err_String_ctor(drive_proof_verifier_types_Contenders *ok, char *error); -%ignore Result_ok_drive_proof_verifier_types_Contenders_err_String_destroy(Result_ok_drive_proof_verifier_types_Contenders_err_String *ffi); -%ignore Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String_ctor(drive_proof_verifier_types_VotePollsGroupedByTimestamp *ok, char *error); -%ignore Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String_destroy(Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String *ffi); %ignore Result_ok_dpp_document_Document_err_String_ctor(dpp_document_Document *ok, char *error); %ignore Result_ok_dpp_document_Document_err_String_destroy(Result_ok_dpp_document_Document_err_String *ffi); +%ignore Tuple_platform_value_Value_platform_value_Value_ctor(platform_value_Value *o_0, platform_value_Value *o_1); +%ignore Tuple_platform_value_Value_platform_value_Value_destroy(Tuple_platform_value_Value_platform_value_Value *ffi); +%ignore Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String_ctor(drive_proof_verifier_types_VotePollsGroupedByTimestamp *ok, char *error); +%ignore Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String_destroy(Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String *ffi); %ignore Result_ok_dpp_voting_votes_Vote_err_String_ctor(dpp_voting_votes_Vote *ok, char *error); %ignore Result_ok_dpp_voting_votes_Vote_err_String_destroy(Result_ok_dpp_voting_votes_Vote_err_String *ffi); -%ignore Vec_dpp_document_Document_ctor(uintptr_t count, dpp_document_Document **values); -%ignore Vec_dpp_document_Document_destroy(Vec_dpp_document_Document *ffi); %ignore Vec_drive_query_ordering_OrderClause_ctor(uintptr_t count, drive_query_ordering_OrderClause **values); %ignore Vec_drive_query_ordering_OrderClause_destroy(Vec_drive_query_ordering_OrderClause *ffi); -%ignore Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String_ctor(platform_mobile_data_contracts_DataContractFFI *ok, char *error); -%ignore Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String_destroy(Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String *ffi); -%ignore Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_ctor(uintptr_t count, Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll **values); -%ignore Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_destroy(Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll *ffi); -%ignore Arr_u8_2_ctor(uintptr_t count, uint8_t *values); -%ignore Arr_u8_2_destroy(Arr_u8_2 *ffi); -%ignore Vec_String_ctor(uintptr_t count, char **values); -%ignore Vec_String_destroy(Vec_String *ffi); -%ignore std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote_ctor(uintptr_t count, platform_value_types_identifier_Identifier **keys, dpp_voting_votes_resource_vote_ResourceVote **values); -%ignore std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote_destroy(std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote *ffi); +%ignore Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String_ctor(drive_proof_verifier_types_ResourceVotesByIdentity *ok, char *error); +%ignore Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String_destroy(Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String *ffi); From b35c9cd6a60333c230bd228b2b510db32c8b1f1f Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 3 Jul 2025 18:14:29 -0700 Subject: [PATCH 17/36] chore: update Cargo.lock --- dash-sdk-android/src/main/rust/Cargo.lock | 71 ++++++++-- dash-sdk-bindings/Cargo.lock | 137 ++++++++++++++------ platform-mobile/Cargo.lock | 150 +++++++++++++++++----- 3 files changed, 276 insertions(+), 82 deletions(-) diff --git a/dash-sdk-android/src/main/rust/Cargo.lock b/dash-sdk-android/src/main/rust/Cargo.lock index 98794ba..c0714db 100644 --- a/dash-sdk-android/src/main/rust/Cargo.lock +++ b/dash-sdk-android/src/main/rust/Cargo.lock @@ -61,6 +61,15 @@ dependencies = [ "libc", ] +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + [[package]] name = "anstream" version = "0.6.15" @@ -463,6 +472,20 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 1.0.64", +] + [[package]] name = "cargo_metadata" version = "0.19.2" @@ -848,8 +871,8 @@ dependencies = [ "drive", "drive-proof-verifier", "envy", - "ferment", - "ferment-macro 0.2.3", + "ferment-interfaces", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "futures", "hex", "http 1.1.0", @@ -876,9 +899,9 @@ dependencies = [ "dpp", "drive", "drive-proof-verifier", - "ferment", + "ferment 0.2.3", "ferment-interfaces", - "ferment-macro 0.1.4", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "ferment-sys", "platform-mobile", "platform-value", @@ -1118,7 +1141,7 @@ dependencies = [ "data-contracts", "derive_more 1.0.0", "env_logger", - "ferment-macro 0.2.3", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "getrandom", "hex", "indexmap 2.7.0", @@ -1153,7 +1176,8 @@ dependencies = [ "byteorder", "derive_more 1.0.0", "dpp", - "ferment-macro 0.2.3", + "ferment 0.1.4", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "grovedb", "grovedb-costs", "grovedb-epoch-based-storage-flags", @@ -1180,7 +1204,7 @@ dependencies = [ "derive_more 1.0.0", "dpp", "drive", - "ferment-macro 0.2.3", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "hex", "indexmap 2.7.0", "platform-serialization", @@ -1363,6 +1387,20 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "ferment" +version = "0.1.4" +dependencies = [ + "ansi_term", + "cargo_metadata 0.18.1", + "env_logger", + "ferment-macro 0.1.4", + "log", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "ferment" version = "0.2.3" @@ -1380,6 +1418,14 @@ dependencies = [ "indexmap 2.7.0", ] +[[package]] +name = "ferment-macro" +version = "0.1.4" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "ferment-macro" version = "0.1.4" @@ -1403,7 +1449,7 @@ name = "ferment-sys" version = "0.2.3" source = "git+https://github.com/dashpay/ferment?tag=v0.2.3#867aba9a03b86c8552d3526952af80f566ab0174" dependencies = [ - "cargo_metadata", + "cargo_metadata 0.19.2", "cbindgen 0.28.0", "env_logger", "ferment-macro 0.2.3", @@ -2916,7 +2962,7 @@ dependencies = [ "drive", "drive-proof-verifier", "envy", - "ferment", + "ferment 0.2.3", "ferment-macro 0.2.3", "hex", "http 0.2.12", @@ -2969,7 +3015,8 @@ dependencies = [ "bs58", "cbindgen 0.26.0", "ciborium", - "ferment-macro 0.2.3", + "ferment 0.1.4", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "hex", "indexmap 2.7.0", "platform-serialization", @@ -2986,7 +3033,7 @@ name = "platform-version" version = "2.0.0-rc.17" dependencies = [ "bincode", - "ferment-macro 0.2.3", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "grovedb-version", "once_cell", "thiserror 2.0.12", @@ -3305,7 +3352,7 @@ dependencies = [ "backon", "chrono", "dapi-grpc", - "ferment-macro 0.2.3", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "futures", "getrandom", "gloo-timers", diff --git a/dash-sdk-bindings/Cargo.lock b/dash-sdk-bindings/Cargo.lock index 0d3323d..960bc43 100644 --- a/dash-sdk-bindings/Cargo.lock +++ b/dash-sdk-bindings/Cargo.lock @@ -61,6 +61,15 @@ dependencies = [ "libc", ] +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + [[package]] name = "anstream" version = "0.6.15" @@ -463,6 +472,20 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 1.0.68", +] + [[package]] name = "cargo_metadata" version = "0.19.2" @@ -770,7 +793,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "dapi-grpc-macros", "futures-core", @@ -787,7 +810,7 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "heck 0.5.0", "quote", @@ -831,7 +854,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "arc-swap", "async-trait", @@ -848,8 +871,8 @@ dependencies = [ "drive", "drive-proof-verifier", "envy", - "ferment", - "ferment-macro", + "ferment-interfaces", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "futures", "hex", "http 1.1.0", @@ -876,8 +899,8 @@ dependencies = [ "dpp", "drive", "drive-proof-verifier", - "ferment", - "ferment-macro", + "ferment 0.2.3", + "ferment-macro 0.2.3", "ferment-sys", "platform-mobile", "platform-value", @@ -964,7 +987,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -974,7 +997,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1092,7 +1115,7 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dpns-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -1102,7 +1125,7 @@ dependencies = [ [[package]] name = "dpp" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "anyhow", "async-trait", @@ -1118,7 +1141,7 @@ dependencies = [ "data-contracts", "derive_more 1.0.0", "env_logger", - "ferment-macro", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "getrandom", "hex", "indexmap 2.7.0", @@ -1147,13 +1170,13 @@ dependencies = [ [[package]] name = "drive" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "bincode", "byteorder", "derive_more 1.0.0", "dpp", - "ferment-macro", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "grovedb", "grovedb-costs", "grovedb-epoch-based-storage-flags", @@ -1173,14 +1196,14 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "bincode", "dapi-grpc", "derive_more 1.0.0", "dpp", "drive", - "ferment-macro", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "hex", "indexmap 2.7.0", "platform-serialization", @@ -1355,7 +1378,7 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "feature-flags-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -1363,6 +1386,20 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "ferment" +version = "0.1.4" +dependencies = [ + "ansi_term", + "cargo_metadata 0.18.1", + "env_logger", + "ferment-macro 0.1.4", + "log", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "ferment" version = "0.2.3" @@ -1372,6 +1409,31 @@ dependencies = [ "serde_json", ] +[[package]] +name = "ferment-interfaces" +version = "0.1.4" +source = "git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default#a9cf93872a7bd1229c394ac2443c109fb0d70949" +dependencies = [ + "indexmap 2.7.0", +] + +[[package]] +name = "ferment-macro" +version = "0.1.4" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ferment-macro" +version = "0.1.4" +source = "git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default#a9cf93872a7bd1229c394ac2443c109fb0d70949" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "ferment-macro" version = "0.2.3" @@ -1386,10 +1448,10 @@ name = "ferment-sys" version = "0.2.3" source = "git+https://github.com/dashpay/ferment?tag=v0.2.3#867aba9a03b86c8552d3526952af80f566ab0174" dependencies = [ - "cargo_metadata", + "cargo_metadata 0.19.2", "cbindgen 0.28.0", "env_logger", - "ferment-macro", + "ferment-macro 0.2.3", "proc-macro2", "quote", "syn 1.0.109", @@ -2224,7 +2286,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "json-patch", "once_cell", @@ -2281,7 +2343,7 @@ dependencies = [ [[package]] name = "keyword-search-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -2346,7 +2408,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -2899,8 +2961,8 @@ dependencies = [ "drive", "drive-proof-verifier", "envy", - "ferment", - "ferment-macro", + "ferment 0.2.3", + "ferment-macro 0.2.3", "hex", "http 0.2.12", "lazy_static", @@ -2927,7 +2989,7 @@ dependencies = [ [[package]] name = "platform-serialization" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "bincode", "platform-version", @@ -2935,7 +2997,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "proc-macro2", "quote", @@ -2945,14 +3007,15 @@ dependencies = [ [[package]] name = "platform-value" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "base64 0.22.1", "bincode", "bs58", "cbindgen 0.26.0", "ciborium", - "ferment-macro", + "ferment 0.1.4", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "hex", "indexmap 2.7.0", "platform-serialization", @@ -2966,10 +3029,10 @@ dependencies = [ [[package]] name = "platform-version" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "bincode", - "ferment-macro", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "grovedb-version", "once_cell", "thiserror 2.0.12", @@ -2978,7 +3041,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "proc-macro2", "quote", @@ -3283,12 +3346,12 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "backon", "chrono", "dapi-grpc", - "ferment-macro", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "futures", "getrandom", "gloo-timers", @@ -3670,7 +3733,7 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "simple-signer" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "base64 0.22.1", "bincode", @@ -4039,7 +4102,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "token-history-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -4569,7 +4632,7 @@ dependencies = [ [[package]] name = "wallet-utils-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -4913,7 +4976,7 @@ dependencies = [ [[package]] name = "withdrawals-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "num_enum 0.5.11", "platform-value", diff --git a/platform-mobile/Cargo.lock b/platform-mobile/Cargo.lock index 18e0684..0bb98d0 100644 --- a/platform-mobile/Cargo.lock +++ b/platform-mobile/Cargo.lock @@ -61,6 +61,15 @@ dependencies = [ "libc", ] +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + [[package]] name = "anstream" version = "0.6.15" @@ -445,6 +454,38 @@ dependencies = [ "serde", ] +[[package]] +name = "camino" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 1.0.64", +] + [[package]] name = "cbindgen" version = "0.26.0" @@ -702,7 +743,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "dapi-grpc-macros", "futures-core", @@ -719,7 +760,7 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "heck 0.5.0", "quote", @@ -763,7 +804,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "arc-swap", "async-trait", @@ -780,8 +821,8 @@ dependencies = [ "drive", "drive-proof-verifier", "envy", - "ferment", - "ferment-macro", + "ferment-interfaces", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "futures", "hex", "http 1.1.0", @@ -878,7 +919,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -888,7 +929,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1006,7 +1047,7 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dpns-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -1016,7 +1057,7 @@ dependencies = [ [[package]] name = "dpp" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "anyhow", "async-trait", @@ -1032,7 +1073,7 @@ dependencies = [ "data-contracts", "derive_more 1.0.0", "env_logger", - "ferment-macro", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "getrandom", "hex", "indexmap 2.7.0", @@ -1061,13 +1102,13 @@ dependencies = [ [[package]] name = "drive" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "bincode", "byteorder", "derive_more 1.0.0", "dpp", - "ferment-macro", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "grovedb", "grovedb-costs", "grovedb-epoch-based-storage-flags", @@ -1087,14 +1128,14 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "bincode", "dapi-grpc", "derive_more 1.0.0", "dpp", "drive", - "ferment-macro", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "hex", "indexmap 2.7.0", "platform-serialization", @@ -1269,7 +1310,7 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "feature-flags-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -1277,6 +1318,20 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "ferment" +version = "0.1.4" +dependencies = [ + "ansi_term", + "cargo_metadata", + "env_logger", + "ferment-macro 0.1.4", + "log", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "ferment" version = "0.2.3" @@ -1286,6 +1341,31 @@ dependencies = [ "serde_json", ] +[[package]] +name = "ferment-interfaces" +version = "0.1.4" +source = "git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default#a9cf93872a7bd1229c394ac2443c109fb0d70949" +dependencies = [ + "indexmap 2.7.0", +] + +[[package]] +name = "ferment-macro" +version = "0.1.4" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ferment-macro" +version = "0.1.4" +source = "git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default#a9cf93872a7bd1229c394ac2443c109fb0d70949" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "ferment-macro" version = "0.2.3" @@ -2124,7 +2204,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "json-patch", "once_cell", @@ -2181,7 +2261,7 @@ dependencies = [ [[package]] name = "keyword-search-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -2246,7 +2326,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -2799,8 +2879,8 @@ dependencies = [ "drive", "drive-proof-verifier", "envy", - "ferment", - "ferment-macro", + "ferment 0.2.3", + "ferment-macro 0.2.3", "hex", "http 0.2.12", "lazy_static", @@ -2827,7 +2907,7 @@ dependencies = [ [[package]] name = "platform-serialization" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "bincode", "platform-version", @@ -2835,7 +2915,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "proc-macro2", "quote", @@ -2845,14 +2925,15 @@ dependencies = [ [[package]] name = "platform-value" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "base64 0.22.1", "bincode", "bs58", "cbindgen", "ciborium", - "ferment-macro", + "ferment 0.1.4", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "hex", "indexmap 2.7.0", "platform-serialization", @@ -2866,10 +2947,10 @@ dependencies = [ [[package]] name = "platform-version" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "bincode", - "ferment-macro", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "grovedb-version", "once_cell", "thiserror 2.0.12", @@ -2878,7 +2959,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "proc-macro2", "quote", @@ -3183,12 +3264,12 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "backon", "chrono", "dapi-grpc", - "ferment-macro", + "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "futures", "getrandom", "gloo-timers", @@ -3400,6 +3481,9 @@ name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] [[package]] name = "serde" @@ -3566,7 +3650,7 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "simple-signer" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "base64 0.22.1", "bincode", @@ -3944,7 +4028,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "token-history-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -4446,7 +4530,7 @@ dependencies = [ [[package]] name = "wallet-utils-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -4744,7 +4828,7 @@ dependencies = [ [[package]] name = "withdrawals-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "num_enum 0.5.11", "platform-value", From 24c4ca46e2297fb507a70482a21e20c25265a337 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 3 Jul 2025 21:57:35 -0700 Subject: [PATCH 18/36] tests: remove obsolete tests --- .../org/dashj/platform/sdk/ValueTest.java | 28 +------------------ 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/dash-sdk-java/src/test/java/org/dashj/platform/sdk/ValueTest.java b/dash-sdk-java/src/test/java/org/dashj/platform/sdk/ValueTest.java index 40533bb..9c02d8a 100644 --- a/dash-sdk-java/src/test/java/org/dashj/platform/sdk/ValueTest.java +++ b/dash-sdk-java/src/test/java/org/dashj/platform/sdk/ValueTest.java @@ -18,39 +18,13 @@ public class ValueTest extends BaseTest { - @Test - public void getPlatformValueTest() { - PlatformValue value = dashsdk.platformMobileTestsGetPlatformValueBool(false); - assertNotNull(value); - assertEquals(PlatformValue.Tag.Bool, value.getTag()); - assertFalse(value.getBool()); - value.delete(); - } - - @Test - public void getPlatformValueMapTest() { - PlatformValue value = dashsdk.platformMobileTestsGetPlatformValueWithMap(); - assertNotNull(value); - assertEquals(PlatformValue.Tag.Map, value.getTag()); - PlatformValueMap valueMap = value.getMap(); - Map map = valueMap.get_0(); - assertNotNull(map); - assertEquals(1, map.size()); - map.forEach((k, v) -> { - assertEquals(PlatformValue.Tag.Text, k.getTag()); - assertEquals(PlatformValue.Tag.I32, v.getTag()); - }); - - value.delete(); - } @Test public void createPlatformValueTest() { PlatformValue v1 = new PlatformValue((byte)1); assertEquals(PlatformValue.Tag.I8, v1.getTag()); assertEquals((byte) 1, v1.getI8()); - //PlatformValue v2 = new PlatformValue((short)1); - //assertEquals(PlatformValue.Tag.I16, v2.getTag()); + PlatformValue v3 = new PlatformValue(1); assertEquals(PlatformValue.Tag.I32, v3.getTag()); assertEquals(1, v3.getI32()); From e53e4a553cbdfa149133adcb97edc47448f2b160 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 3 Jul 2025 21:57:55 -0700 Subject: [PATCH 19/36] tests: remove obsolete tests --- .../org/dashj/platform/sdk/BinaryDataTest.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/dash-sdk-java/src/test/java/org/dashj/platform/sdk/BinaryDataTest.java b/dash-sdk-java/src/test/java/org/dashj/platform/sdk/BinaryDataTest.java index ea5d004..17ee7c1 100644 --- a/dash-sdk-java/src/test/java/org/dashj/platform/sdk/BinaryDataTest.java +++ b/dash-sdk-java/src/test/java/org/dashj/platform/sdk/BinaryDataTest.java @@ -28,22 +28,4 @@ public void createBinaryDataInJavaAndDestroyTest() { System.out.printf("BinaryData %x\n", BinaryData.getCPtr(data)); data.delete(); } - - @Test - public void getBinaryDataEmptyTest() { - BinaryData data = dashsdk.platformMobileTestsGetBinaryDataEmpty(); - assertNotNull(data); - assertEquals(0, data.get_0().length); - assertArrayEquals(new byte[0], data.get_0()); - data.delete(); - } - - @Test - public void getBinaryData4Test() { - BinaryData data = dashsdk.platformMobileTestsGetBinaryData4(); - assertNotNull(data); - assertEquals(4, data.get_0().length); - assertArrayEquals(new byte[] {0, 1, 2, 3}, data.get_0()); - data.delete(); - } } From 9965ca9b5ee0a058f73dc90ed2c39889806a63c7 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 3 Jul 2025 21:58:03 -0700 Subject: [PATCH 20/36] tests: remove obsolete tests --- dash-sdk-android/src/main/rust/Cargo.lock | 47 +++++++++++------------ 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/dash-sdk-android/src/main/rust/Cargo.lock b/dash-sdk-android/src/main/rust/Cargo.lock index c0714db..d8c5c88 100644 --- a/dash-sdk-android/src/main/rust/Cargo.lock +++ b/dash-sdk-android/src/main/rust/Cargo.lock @@ -793,7 +793,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "dapi-grpc-macros", "futures-core", @@ -810,7 +810,7 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "heck 0.5.0", "quote", @@ -854,7 +854,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "arc-swap", "async-trait", @@ -987,7 +987,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -997,7 +997,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1115,7 +1115,7 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dpns-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -1125,7 +1125,7 @@ dependencies = [ [[package]] name = "dpp" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "anyhow", "async-trait", @@ -1170,13 +1170,12 @@ dependencies = [ [[package]] name = "drive" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "bincode", "byteorder", "derive_more 1.0.0", "dpp", - "ferment 0.1.4", "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", "grovedb", "grovedb-costs", @@ -1197,7 +1196,7 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "bincode", "dapi-grpc", @@ -1379,7 +1378,7 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "feature-flags-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -2287,7 +2286,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "json-patch", "once_cell", @@ -2344,7 +2343,7 @@ dependencies = [ [[package]] name = "keyword-search-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -2409,7 +2408,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -2990,7 +2989,7 @@ dependencies = [ [[package]] name = "platform-serialization" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "bincode", "platform-version", @@ -2998,7 +2997,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "proc-macro2", "quote", @@ -3008,7 +3007,7 @@ dependencies = [ [[package]] name = "platform-value" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "base64 0.22.1", "bincode", @@ -3030,7 +3029,7 @@ dependencies = [ [[package]] name = "platform-version" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "bincode", "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", @@ -3042,7 +3041,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "proc-macro2", "quote", @@ -3347,7 +3346,7 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "backon", "chrono", @@ -3733,7 +3732,7 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "simple-signer" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "base64 0.22.1", "bincode", @@ -4105,7 +4104,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "token-history-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -4624,7 +4623,7 @@ dependencies = [ [[package]] name = "wallet-utils-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "platform-value", "platform-version", @@ -4922,7 +4921,7 @@ dependencies = [ [[package]] name = "withdrawals-contract" -version = "2.0.0-rc.17" +version = "2.0.0" dependencies = [ "num_enum 0.5.11", "platform-value", From 8229fc3865683552f1d8ba3f14f0fef0b08c97fa Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 20 Oct 2025 11:28:50 -0700 Subject: [PATCH 21/36] feat: match to txmetadata spec --- .../dashj/platform/wallet/TxMetadataItem.kt | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt index 7ec2739..ac9cc60 100644 --- a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt +++ b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt @@ -10,7 +10,6 @@ package org.dashj.platform.wallet import com.google.common.primitives.Ints import com.google.protobuf.ByteString import org.bitcoinj.core.Sha256Hash -import org.dashj.platform.dpp.toHex import org.dashj.platform.dpp.util.Cbor import java.text.DecimalFormat @@ -31,6 +30,7 @@ import java.text.DecimalFormat * @property barcodeValue * @property barcodeFormat * @property merchantUrl + * @property otherData Additional key-value string data * @constructor Create empty Tx metadata item */ @@ -50,6 +50,7 @@ class TxMetadataItem( val barcodeValue: String? = null, val barcodeFormat: String? = null, val merchantUrl: String? = null, + val otherData: Map? = null, ) { val data = hashMapOf() @@ -70,7 +71,8 @@ class TxMetadataItem( rawObject["originalPrice"] as? Double, rawObject["barcodeValue"] as? String, rawObject["barcodeFormat"] as? String, - rawObject["merchantUrl"] as? String + rawObject["merchantUrl"] as? String, + rawObject["otherData"] as? Map ) { data.putAll(rawObject) } @@ -90,7 +92,8 @@ class TxMetadataItem( if (protoTxMetadata.originalPrice != 0.00) protoTxMetadata.originalPrice else null, if (protoTxMetadata.barcodeValue != "") protoTxMetadata.barcodeValue else null, if (protoTxMetadata.barcodeFormat != "") protoTxMetadata.barcodeFormat else null, - if (protoTxMetadata.merchantUrl != "") protoTxMetadata.merchantUrl else null + if (protoTxMetadata.merchantUrl != "") protoTxMetadata.merchantUrl else null, + if (protoTxMetadata.otherDataMap.isNotEmpty()) protoTxMetadata.otherDataMap else null ) fun toObject(): Map { @@ -98,7 +101,7 @@ class TxMetadataItem( "txId" to txId, ) timestamp?.let { - map["timestamp"] to it + map["timestamp"] = it } memo?.let { @@ -153,6 +156,10 @@ class TxMetadataItem( map["merchantUrl"] = it } + otherData?.let { + map["otherData"] = it + } + return map } @@ -161,7 +168,7 @@ class TxMetadataItem( "txId" to Sha256Hash.wrap(txId).toString() ) timestamp?.let { - map["timestamp"] to it + map["timestamp"] = it.toString() } memo?.let { @@ -218,6 +225,10 @@ class TxMetadataItem( map["merchantUrl"] = it } + otherData?.let { + map.putAll(it) + } + return map } @@ -225,6 +236,7 @@ class TxMetadataItem( return Cbor.encode(toObject()).size } + // does not compare timestamp override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -242,7 +254,8 @@ class TxMetadataItem( originalPrice == other.originalPrice && barcodeValue == other.barcodeValue && barcodeFormat == other.barcodeFormat && - merchantUrl == other.merchantUrl + merchantUrl == other.merchantUrl && + otherData == other.otherData } return false } @@ -266,7 +279,7 @@ class TxMetadataItem( currencyCode?.let { builder.currencyCode = it } taxCategory?.let { builder.taxCategory = it } service?.let { builder.service = it } - customIconUrl?.let { builder.currencyCode = it } + customIconUrl?.let { builder.customIconUrl = it } giftCardNumber?.let { builder.giftCardNumber = it } giftCardPin?.let { builder.giftCardPin = it } merchantName?.let { builder.merchantName = it } @@ -274,6 +287,7 @@ class TxMetadataItem( barcodeValue?.let { builder.barcodeValue = it } barcodeFormat?.let { builder.barcodeFormat = it } merchantUrl?.let { builder.merchantUrl = it } + otherData?.let { builder.putAllOtherData(it) } return builder.build() } @@ -285,6 +299,7 @@ class TxMetadataItem( return (timestamp != null && timestamp != 0L) || taxCategory != null || memo != null || currencyCode != null || exchangeRate != null || service != null || customIconUrl != null || giftCardNumber != null || giftCardPin != null || merchantName != null || originalPrice != null || - barcodeValue != null || barcodeFormat != null || merchantUrl != null + barcodeValue != null || barcodeFormat != null || merchantUrl != null || + (otherData != null && otherData.isNotEmpty()) } } From ba3b39135b22a14b4ede59462815b1ead68f4749 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 20 Oct 2025 11:29:15 -0700 Subject: [PATCH 22/36] feat: improve DisplayIdentityKeys.kt --- .../main/kotlin/dashj/org/platform/DisplayIdentityKeys.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/examples/src/main/kotlin/dashj/org/platform/DisplayIdentityKeys.kt b/examples/src/main/kotlin/dashj/org/platform/DisplayIdentityKeys.kt index 48541d9..2a79965 100644 --- a/examples/src/main/kotlin/dashj/org/platform/DisplayIdentityKeys.kt +++ b/examples/src/main/kotlin/dashj/org/platform/DisplayIdentityKeys.kt @@ -6,6 +6,8 @@ */ package dashj.org.platform +import org.bitcoinj.core.Address +import org.bitcoinj.core.DumpedPrivateKey import org.bitcoinj.crypto.MnemonicCode import org.bitcoinj.wallet.authentication.AuthenticationGroupExtension import java.util.Scanner @@ -40,7 +42,11 @@ class DisplayIdentityKeys { val authGroup = client.wallet!!.getKeyChainExtension(AuthenticationGroupExtension.EXTENSION_ID) as AuthenticationGroupExtension val firstKey = authGroup.identityKeyChain.getKey(0) println(firstKey) + println("privateKey: ${firstKey.privKeyBytes.toHex()}") + println("privateKey: ${DumpedPrivateKey(client.params,firstKey.privKeyBytes, true)}") + println("pubkey: ${firstKey.pubKey.toHex()}") println("pubkeyhash: ${firstKey.pubKeyHash.toHex()}") + println("address: ${Address.fromKey(client.params, firstKey)}") } } } From 2579d9aa3dbe23bac866cdfff86ea3522e5e23c0 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 20 Oct 2025 11:29:54 -0700 Subject: [PATCH 23/36] tests: update DataContractTest --- .../dashj/platform/sdk/DataContractTest.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/dash-sdk-java/src/test/java/org/dashj/platform/sdk/DataContractTest.java b/dash-sdk-java/src/test/java/org/dashj/platform/sdk/DataContractTest.java index 887c4d6..3840833 100644 --- a/dash-sdk-java/src/test/java/org/dashj/platform/sdk/DataContractTest.java +++ b/dash-sdk-java/src/test/java/org/dashj/platform/sdk/DataContractTest.java @@ -25,6 +25,20 @@ public void fetchDataContractTest() throws Exception { dataContract.getDoc_types().forEach(System.out::println); } + @Test + public void fetchDashPayDataContractTest() throws Exception { + Identifier contractId = new Identifier(dashPayContractId); + Result, String> result = dashsdk.platformMobileDataContractsFetchDataContract( + sdk, contractId); + + Optional dataContractResult = result.unwrap(); + assertTrue(dataContractResult.isPresent()); + DataContract dataContract = dataContractResult.get(); + assertArrayEquals(dashPayContractId, dataContract.getId().get_0().get_0()); + assertEquals(3, dataContract.getDoc_types().size()); + dataContract.getDoc_types().forEach(System.out::println); + } + @Test public void fetchWalletUtilsDataContractTest() throws Exception { Identifier contractId = new Identifier(walletUtilsContracId); @@ -35,8 +49,9 @@ public void fetchWalletUtilsDataContractTest() throws Exception { assertTrue(dataContractResult.isPresent()); DataContract dataContract = dataContractResult.get(); assertArrayEquals(walletUtilsContracId, dataContract.getId().get_0().get_0()); - assertEquals(3, dataContract.getDoc_types().size()); + assertEquals(1, dataContract.getDoc_types().size()); assertTrue("didn't find txMetadata", dataContract.getDoc_types().stream().allMatch(type -> type.equals("txMetadata"))); + dataContract.getDoc_types().forEach(System.out::println); } @Test From 6a714ae4e9ad502f15bbccb017319f3e8517e597 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 20 Oct 2025 11:30:32 -0700 Subject: [PATCH 24/36] tests: add tests for creatinging txmetadata objects --- .../dashpay/BlockchainIdentityTest.kt | 160 +++++++++++++++++- 1 file changed, 151 insertions(+), 9 deletions(-) diff --git a/dpp/src/test/kotlin/org/dashj/platform/dashpay/BlockchainIdentityTest.kt b/dpp/src/test/kotlin/org/dashj/platform/dashpay/BlockchainIdentityTest.kt index 3d295d6..82876d2 100644 --- a/dpp/src/test/kotlin/org/dashj/platform/dashpay/BlockchainIdentityTest.kt +++ b/dpp/src/test/kotlin/org/dashj/platform/dashpay/BlockchainIdentityTest.kt @@ -1,10 +1,20 @@ package org.dashj.platform.dashpay +import org.bitcoinj.core.Sha256Hash +import org.bitcoinj.crypto.ChildNumber +import org.bitcoinj.crypto.KeyCrypterException +import org.bouncycastle.crypto.params.KeyParameter +import org.dashj.platform.contracts.wallet.TxMetadataDocument +import org.dashj.platform.dpp.document.Document import org.dashj.platform.dpp.identifier.Identifier import org.dashj.platform.dpp.identity.Identity +import org.dashj.platform.dpp.util.Entropy +import org.dashj.platform.wallet.TxMetadataItem import kotlin.random.Random import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotEquals +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.Assertions.assertThrows import org.junit.jupiter.api.Test class BlockchainIdentityTest : PlatformNetwork() { @@ -32,18 +42,150 @@ class BlockchainIdentityTest : PlatformNetwork() { assertEquals(updatedProfile, Profile(retrievedProfile)) } - @Test - fun sendContactRequestTest() { - - blockchainIdentity.recoverIdentity(authenticationGroupExtension.identityKeyChain.getKey(0, true).pubKeyHash) +// @Test +// fun sendContactRequestTest() { +// +// blockchainIdentity.recoverIdentity(authenticationGroupExtension.identityKeyChain.getKey(0, true).pubKeyHash) +// +// val cr = ContactRequests(platform) +// +// // my-test-1 +// val toUserIdentity = platform.identities.get("6ffk46v6m79RPbiomNT1kLXX7unqgw5FkWhsTuPi4Aj7") +// +// val document = cr.create(blockchainIdentity, toUserIdentity!!, null) +// +// println(document) +// } - val cr = ContactRequests(platform) + @Test + fun createTxMetadataTest() { + if (blockchainIdentity.recoverIdentity(authenticationGroupExtension.identityKeyChain.getKey(0, true).pubKeyHash)) { + val txMetadataItems = listOf( + TxMetadataItem( + Entropy.generateRandomBytes(32), + System.currentTimeMillis() / 1000, + "Test Transaction 1", + 25.50, + "USD", + "expense", + "TestService" + ), + TxMetadataItem( + Entropy.generateRandomBytes(32), + System.currentTimeMillis() / 1000, + "Test Transaction 2", + 75.25, + "USD", + "income" + ) + ) + + val documents = blockchainIdentity.createTxMetadata( + txMetadataItems, + null, + 1, + TxMetadataDocument.VERSION_PROTOBUF + ) + + assertEquals(1, documents.size) + val document = documents.first() + assertEquals("txMetadata", document.type) + assertTrue(document.data.containsKey("keyIndex")) + assertTrue(document.data.containsKey("encryptionKeyIndex")) + assertTrue(document.data.containsKey("encryptedMetadata")) + + // Test decryption to verify round-trip functionality + val txMetadataDocument = TxMetadataDocument(document) + val decryptedItems = blockchainIdentity.decryptTxMetadata(txMetadataDocument, null) + + assertEquals(2, decryptedItems.size) + assertEquals(txMetadataItems[0], decryptedItems[0]) + assertEquals(txMetadataItems[1], decryptedItems[1]) + } else { + println("Skipping test - could not recover identity") + } + } - // my-test-1 - val toUserIdentity = platform.identities.get("6ffk46v6m79RPbiomNT1kLXX7unqgw5FkWhsTuPi4Aj7") + @Test + fun createTxMetadataEmptyListTest() { + if (blockchainIdentity.recoverIdentity(authenticationGroupExtension.identityKeyChain.getKey(0, true).pubKeyHash)) { + val documents = blockchainIdentity.createTxMetadata( + emptyList(), + null, + 1, + TxMetadataDocument.VERSION_PROTOBUF + ) + + assertEquals(0, documents.size) + } + } - val document = cr.create(blockchainIdentity, toUserIdentity!!, null) - println(document) + @Test + fun createTxMetadataLargeDataTest() { + if (blockchainIdentity.recoverIdentity(authenticationGroupExtension.identityKeyChain.getKey(0, true).pubKeyHash)) { + val largeItems = (1..50).map { i -> + TxMetadataItem( + Entropy.generateRandomBytes(32), + System.currentTimeMillis() / 1000, + "Transaction $i with very long memo to simulate large data size that might exceed document limits", + 100.0 * i, + "USD", + "expense", + "TestService", + customIconUrl = "https://example.com/very-long-url-$i", + merchantName = "Very Long Merchant Name $i", + merchantUrl = "https://very-long-merchant-url-$i.com" + ) + } + + val documents = blockchainIdentity.createTxMetadata( + largeItems, + null, + 1, + TxMetadataDocument.VERSION_PROTOBUF + ) + + assertTrue(documents.size > 1, "Large data should be split into multiple documents") + + // Verify each document structure and key derivation + documents.forEach { document -> + assertEquals("txMetadata", document.type) + assertTrue(document.data.containsKey("encryptedMetadata")) + val encryptedData = document.data["encryptedMetadata"] as ByteArray + assertTrue(encryptedData.size <= TxMetadataDocument.MAX_ENCRYPTED_SIZE + 100) + + // Verify key derivation matches expected path + val txMetadataDocument = TxMetadataDocument(document) + val actualEncryptionKey = blockchainIdentity.privateKeyAtPath( + txMetadataDocument.keyIndex, + TxMetadataDocument.childNumber, + txMetadataDocument.encryptionKeyIndex, + org.dashj.platform.sdk.KeyType.ECDSA_SECP256K1, + null + ) + + val parentEncryptionKeyPath = org.bitcoinj.wallet.DerivationPathFactory.get(blockchainIdentity.params).blockchainIdentityECDSADerivationPath() + val parentEncryptionKey = authenticationGroupExtension.identityKeyChain.getKeyByPath(parentEncryptionKeyPath) + .deriveChildKey(ChildNumber(2, true)) + val expectedEncryptionKey = parentEncryptionKey + .deriveChildKey(ChildNumber(2 shl 15 + 1, true)) + .derive(1) + assertEquals(expectedEncryptionKey, actualEncryptionKey) + } + + // Verify decryption and reconstruction of all items + val allDecryptedItems = mutableListOf() + documents.forEach { document -> + val txMetadataDocument = TxMetadataDocument(document) + val decryptedItems = blockchainIdentity.decryptTxMetadata(txMetadataDocument, null) + allDecryptedItems.addAll(decryptedItems) + } + + assertEquals(largeItems.size, allDecryptedItems.size) + largeItems.forEachIndexed { index, originalItem -> + assertEquals(originalItem, allDecryptedItems[index]) + } + } } } From 62d56d415b68824b945e80a2f433d786df774469 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 23 Oct 2025 10:34:12 -0700 Subject: [PATCH 25/36] fix: align with txmetadata specification --- .../main/java/org/dashj/platform/wallet/TxMetadataDocument.kt | 2 +- dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt index 48e0c93..b215c47 100644 --- a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt +++ b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt @@ -74,7 +74,7 @@ class TxMetadataDocument(document: Document) : AbstractDocument(document) { txMetadataVersion = VERSION_PROTOBUF batch.itemsList.map { TxMetadataItem(it) } } - else -> error("") + else -> error("unknown txmetadata version $version") } } } diff --git a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt index ac9cc60..214751a 100644 --- a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt +++ b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataItem.kt @@ -93,7 +93,7 @@ class TxMetadataItem( if (protoTxMetadata.barcodeValue != "") protoTxMetadata.barcodeValue else null, if (protoTxMetadata.barcodeFormat != "") protoTxMetadata.barcodeFormat else null, if (protoTxMetadata.merchantUrl != "") protoTxMetadata.merchantUrl else null, - if (protoTxMetadata.otherDataMap.isNotEmpty()) protoTxMetadata.otherDataMap else null + protoTxMetadata.otherDataMap.ifEmpty { null } ) fun toObject(): Map { From 08ff50717864f1d5e2701ae9eeb59f56c3e161c6 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 23 Oct 2025 10:34:26 -0700 Subject: [PATCH 26/36] tests: add CreateTxMetadataTest.kt --- .../src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt b/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt index 4063c26..8fdf7d4 100644 --- a/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt +++ b/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt @@ -139,7 +139,7 @@ object CreateTxMetadataTest { private fun publishTransactions(txMetadata: TxMetadataItem, count: Int) { val txMetadataList = arrayListOf() - for (i in IntRange(0, count)) { + repeat(count) { txMetadataList.add(txMetadata) } val balanceBefore = dashsdk.platformMobileFetchIdentityFetchIdentityBalanceWithSdk(platform.rustSdk, blockchainIdentity.uniqueIdentifier.toNative()) From 102b2003ff1f93241ec285b832bc1919ddbc48fb Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 23 Oct 2025 10:35:58 -0700 Subject: [PATCH 27/36] fix: display all contested resources --- .../dashj/org/platform/PlatformExplorer.kt | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/examples/src/main/kotlin/dashj/org/platform/PlatformExplorer.kt b/examples/src/main/kotlin/dashj/org/platform/PlatformExplorer.kt index 8968b1a..be52047 100644 --- a/examples/src/main/kotlin/dashj/org/platform/PlatformExplorer.kt +++ b/examples/src/main/kotlin/dashj/org/platform/PlatformExplorer.kt @@ -546,26 +546,28 @@ object PlatformExplorer { null, false ) - val contestedResources = result.unwrap() - val list = contestedResources._0 + var contestedResources = result.unwrap() + var list = contestedResources._0 println("${list.size} contested resources: ") for (item in list) { println(item.value.text) } - val result2 = dashsdk.platformMobileVotingGetContestedResources( - sdk, - "domain", - Identifier(dpnsContractId), - 100, - contestedResources._0.lastOrNull()?._0, - false - ) - val contestedResources2 = result2.unwrap() - val list2 = contestedResources2._0 - println("${list2.size} contested resources: ") - for (item in list2) { - println(item.value.text) + while (list.size == 100) { + val result2 = dashsdk.platformMobileVotingGetContestedResources( + sdk, + "domain", + Identifier(dpnsContractId), + 100, + contestedResources._0.lastOrNull()?._0, + false + ) + contestedResources = result2.unwrap() + list = contestedResources._0 + println("${list.size} contested resources: ") + for (item in list) { + println(item.value.text) + } } } "11" -> { From 46fd0250990e5de27c4631e517dc30fcaf56a68b Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 23 Oct 2025 10:36:21 -0700 Subject: [PATCH 28/36] fix: resolve some issues with RegisteredNamesWithBalance --- .../platform/RegisteredNamesWithBalance.kt | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/examples/src/main/kotlin/dashj/org/platform/RegisteredNamesWithBalance.kt b/examples/src/main/kotlin/dashj/org/platform/RegisteredNamesWithBalance.kt index 0a92836..80bcb8a 100644 --- a/examples/src/main/kotlin/dashj/org/platform/RegisteredNamesWithBalance.kt +++ b/examples/src/main/kotlin/dashj/org/platform/RegisteredNamesWithBalance.kt @@ -31,7 +31,7 @@ class RegisteredNamesWithBalance { val platform = sdk.platform var lastItem = Identifier.from(Sha256Hash.ZERO_HASH) - var documents: List? = null + var documents: List val allDocuments = arrayListOf() var requests = 0 val limit = Documents.DOCUMENT_LIMIT @@ -45,20 +45,16 @@ class RegisteredNamesWithBalance { allDocuments.addAll(documents) requests += 1 -// for (doc in documents) { -// println( -// "Name: %-20s".format(doc.data["label"]) + -// " (domain: " + doc.data["normalizedParentDomainName"] + -// ") Identity: " + doc.ownerId -// ) -// } + if (documents.isEmpty()) { + break + } lastItem = documents.last().id - if (documents.size == 100) { + if (documents.size == limit) { queryOpts = DocumentQuery.Builder() .startAt(lastItem) .orderBy("normalizedLabel") - .limit(100) + .limit(limit) .build() } } catch (e: Exception) { @@ -66,12 +62,17 @@ class RegisteredNamesWithBalance { println(e.message) return } - } while (requests >= 0 && documents!!.size == limit) + } while (requests >= 0 && documents.size == limit) val nameBalanceMap = hashMapOf() allDocuments.forEachIndexed { i, document -> val nameDocument = DomainDocument(document) - val balance = try { platform.client.getIdentityBalance(nameDocument.dashUniqueIdentityId!!) } catch (e: Exception) { - 2 } + val balance = try { + platform.client.getIdentityBalance(nameDocument.dashUniqueIdentityId!!) + } catch (e: Exception) { + println("Failed to fetch balance for ${nameDocument.label}: ${e.message}") + null + } ?: return@forEachIndexed nameBalanceMap[nameDocument.normalizedLabel] = balance } println("username count: ${allDocuments.size}") From 5ee49e92afacd138eb77ab1701ddc2b288392a49 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 23 Oct 2025 10:37:07 -0700 Subject: [PATCH 29/36] chore update Cargo.lock files --- dash-sdk-android/src/main/rust/Cargo.lock | 116 +- dash-sdk-bindings/Cargo.lock | 2130 +++++++++++++-------- platform-mobile/Cargo.lock | 150 +- 3 files changed, 1351 insertions(+), 1045 deletions(-) diff --git a/dash-sdk-android/src/main/rust/Cargo.lock b/dash-sdk-android/src/main/rust/Cargo.lock index d8c5c88..c162d7f 100644 --- a/dash-sdk-android/src/main/rust/Cargo.lock +++ b/dash-sdk-android/src/main/rust/Cargo.lock @@ -61,15 +61,6 @@ dependencies = [ "libc", ] -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - [[package]] name = "anstream" version = "0.6.15" @@ -472,20 +463,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror 1.0.64", -] - [[package]] name = "cargo_metadata" version = "0.19.2" @@ -793,7 +770,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "2.0.0" +version = "2.0.1" dependencies = [ "dapi-grpc-macros", "futures-core", @@ -810,7 +787,7 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "2.0.0" +version = "2.0.1" dependencies = [ "heck 0.5.0", "quote", @@ -854,7 +831,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "2.0.0" +version = "2.0.1" dependencies = [ "arc-swap", "async-trait", @@ -871,8 +848,8 @@ dependencies = [ "drive", "drive-proof-verifier", "envy", - "ferment-interfaces", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment", + "ferment-macro 0.2.3", "futures", "hex", "http 1.1.0", @@ -899,9 +876,9 @@ dependencies = [ "dpp", "drive", "drive-proof-verifier", - "ferment 0.2.3", + "ferment", "ferment-interfaces", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro 0.1.4", "ferment-sys", "platform-mobile", "platform-value", @@ -987,7 +964,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -997,7 +974,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "2.0.0" +version = "2.0.1" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1115,7 +1092,7 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dpns-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -1125,7 +1102,7 @@ dependencies = [ [[package]] name = "dpp" -version = "2.0.0" +version = "2.0.1" dependencies = [ "anyhow", "async-trait", @@ -1141,7 +1118,7 @@ dependencies = [ "data-contracts", "derive_more 1.0.0", "env_logger", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro 0.2.3", "getrandom", "hex", "indexmap 2.7.0", @@ -1170,13 +1147,13 @@ dependencies = [ [[package]] name = "drive" -version = "2.0.0" +version = "2.0.1" dependencies = [ "bincode", "byteorder", "derive_more 1.0.0", "dpp", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro 0.2.3", "grovedb", "grovedb-costs", "grovedb-epoch-based-storage-flags", @@ -1196,14 +1173,14 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "2.0.0" +version = "2.0.1" dependencies = [ "bincode", "dapi-grpc", "derive_more 1.0.0", "dpp", "drive", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro 0.2.3", "hex", "indexmap 2.7.0", "platform-serialization", @@ -1378,7 +1355,7 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "feature-flags-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -1386,20 +1363,6 @@ dependencies = [ "thiserror 2.0.12", ] -[[package]] -name = "ferment" -version = "0.1.4" -dependencies = [ - "ansi_term", - "cargo_metadata 0.18.1", - "env_logger", - "ferment-macro 0.1.4", - "log", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "ferment" version = "0.2.3" @@ -1417,14 +1380,6 @@ dependencies = [ "indexmap 2.7.0", ] -[[package]] -name = "ferment-macro" -version = "0.1.4" -dependencies = [ - "quote", - "syn 1.0.109", -] - [[package]] name = "ferment-macro" version = "0.1.4" @@ -1448,7 +1403,7 @@ name = "ferment-sys" version = "0.2.3" source = "git+https://github.com/dashpay/ferment?tag=v0.2.3#867aba9a03b86c8552d3526952af80f566ab0174" dependencies = [ - "cargo_metadata 0.19.2", + "cargo_metadata", "cbindgen 0.28.0", "env_logger", "ferment-macro 0.2.3", @@ -2286,7 +2241,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "2.0.0" +version = "2.0.1" dependencies = [ "json-patch", "once_cell", @@ -2343,7 +2298,7 @@ dependencies = [ [[package]] name = "keyword-search-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -2408,7 +2363,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -2961,7 +2916,7 @@ dependencies = [ "drive", "drive-proof-verifier", "envy", - "ferment 0.2.3", + "ferment", "ferment-macro 0.2.3", "hex", "http 0.2.12", @@ -2989,7 +2944,7 @@ dependencies = [ [[package]] name = "platform-serialization" -version = "2.0.0" +version = "2.0.1" dependencies = [ "bincode", "platform-version", @@ -2997,7 +2952,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "2.0.0" +version = "2.0.1" dependencies = [ "proc-macro2", "quote", @@ -3007,15 +2962,14 @@ dependencies = [ [[package]] name = "platform-value" -version = "2.0.0" +version = "2.0.1" dependencies = [ "base64 0.22.1", "bincode", "bs58", "cbindgen 0.26.0", "ciborium", - "ferment 0.1.4", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro 0.2.3", "hex", "indexmap 2.7.0", "platform-serialization", @@ -3029,10 +2983,10 @@ dependencies = [ [[package]] name = "platform-version" -version = "2.0.0" +version = "2.0.1" dependencies = [ "bincode", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro 0.2.3", "grovedb-version", "once_cell", "thiserror 2.0.12", @@ -3041,7 +2995,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "2.0.0" +version = "2.0.1" dependencies = [ "proc-macro2", "quote", @@ -3346,12 +3300,12 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "2.0.0" +version = "2.0.1" dependencies = [ "backon", "chrono", "dapi-grpc", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro 0.2.3", "futures", "getrandom", "gloo-timers", @@ -3732,7 +3686,7 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "simple-signer" -version = "2.0.0" +version = "2.0.1" dependencies = [ "base64 0.22.1", "bincode", @@ -4104,7 +4058,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "token-history-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -4623,7 +4577,7 @@ dependencies = [ [[package]] name = "wallet-utils-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -4921,7 +4875,7 @@ dependencies = [ [[package]] name = "withdrawals-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "num_enum 0.5.11", "platform-value", diff --git a/dash-sdk-bindings/Cargo.lock b/dash-sdk-bindings/Cargo.lock index 960bc43..a94b174 100644 --- a/dash-sdk-bindings/Cargo.lock +++ b/dash-sdk-bindings/Cargo.lock @@ -4,27 +4,27 @@ version = 4 [[package]] name = "addr2line" -version = "0.22.0" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.3.3", "once_cell", "serde", "version_check", @@ -42,15 +42,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" - -[[package]] -name = "android-tzdata" -version = "0.1.1" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android_system_properties" @@ -61,20 +55,11 @@ dependencies = [ "libc", ] -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -87,49 +72,50 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell_polyfill", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" dependencies = [ "derive_arbitrary", ] @@ -142,25 +128,25 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] @@ -182,15 +168,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backon" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302eaff5357a264a2c42f127ecb8bac761cf99749fc3dc95677e2743991f99e7" +checksum = "592277618714fbcecda9a02ba7a8781f319d26532a88553bbacc77ba5d2b3a8d" dependencies = [ "fastrand", "tokio", @@ -198,17 +184,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-link 0.2.1", ] [[package]] @@ -246,9 +232,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bech32" @@ -282,7 +268,7 @@ source = "git+https://github.com/dashpay/rs-bip37-bloom-filter?branch=develop#35 dependencies = [ "bitvec", "murmur3", - "thiserror 1.0.68", + "thiserror 1.0.69", ] [[package]] @@ -324,9 +310,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" [[package]] name = "bitvec" @@ -382,7 +368,7 @@ dependencies = [ "sha2", "sha3", "subtle", - "thiserror 2.0.12", + "thiserror 2.0.17", "uint-zigzag", "vsss-rs", "zeroize", @@ -429,15 +415,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytecount" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "byteorder" @@ -447,20 +433,20 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] [[package]] name = "camino" -version = "1.1.10" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -472,20 +458,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror 1.0.68", -] - [[package]] name = "cargo_metadata" version = "0.19.2" @@ -497,7 +469,7 @@ dependencies = [ "semver", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -525,47 +497,47 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eadd868a2ce9ca38de7eeafdcec9c7065ef89b42b32f0839278d55f35c54d1ff" dependencies = [ - "clap 4.5.40", + "clap 4.5.48", "heck 0.4.1", - "indexmap 2.7.0", + "indexmap 2.11.4", "log", "proc-macro2", "quote", "serde", "serde_json", - "syn 2.0.87", + "syn 2.0.106", "tempfile", - "toml 0.8.19", + "toml 0.8.23", ] [[package]] name = "cc" -version = "1.2.16" +version = "1.2.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" +checksum = "e1d05d92f4b1fd76aad469d46cdd858ca761576082cd37df81416691e50199fb" dependencies = [ + "find-msvc-tools", "shlex", ] [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -634,18 +606,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.40" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" +checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.40" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" +checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" dependencies = [ "anstream", "anstyle", @@ -670,9 +642,9 @@ checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "const-oid" @@ -696,11 +668,21 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core2" @@ -713,33 +695,33 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" @@ -788,18 +770,18 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "dapi-grpc" -version = "2.0.0" +version = "2.0.1" dependencies = [ "dapi-grpc-macros", "futures-core", - "getrandom", + "getrandom 0.2.16", "platform-version", - "prost 0.13.3", + "prost 0.13.5", "serde", "serde_bytes", "serde_json", @@ -810,18 +792,18 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "2.0.0" +version = "2.0.1" dependencies = [ "heck 0.5.0", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "darling" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ "darling_core", "darling_macro", @@ -829,32 +811,32 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "dash-sdk" -version = "2.0.0" +version = "2.0.1" dependencies = [ "arc-swap", "async-trait", @@ -871,18 +853,18 @@ dependencies = [ "drive", "drive-proof-verifier", "envy", - "ferment-interfaces", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment", + "ferment-macro", "futures", "hex", - "http 1.1.0", + "http 1.3.1", "lru", "pollster", "rs-dapi-client", "rustls-pemfile", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-util", "tracing", @@ -899,12 +881,12 @@ dependencies = [ "dpp", "drive", "drive-proof-verifier", - "ferment 0.2.3", - "ferment-macro 0.2.3", + "ferment", + "ferment-macro", "ferment-sys", "platform-mobile", "platform-value", - "toml 0.8.19", + "toml 0.8.23", ] [[package]] @@ -915,7 +897,7 @@ dependencies = [ "anyhow", "base64-compat", "bech32", - "bitflags 2.9.1", + "bitflags 2.9.4", "blake3", "blsful", "dashcore-private 0.39.6", @@ -926,18 +908,18 @@ dependencies = [ "rustversion", "secp256k1", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "dashcore-private" -version = "0.1.0" -source = "git+https://github.com/dashpay/rust-dashcore#db9ad0df2baded4ca478663013f823491bddcd7c" +version = "0.39.6" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.39.6#51df58f5d5d499f5ee80ab17076ff70b5347c7db" [[package]] name = "dashcore-private" -version = "0.39.6" -source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.39.6#51df58f5d5d499f5ee80ab17076ff70b5347c7db" +version = "0.40.0" +source = "git+https://github.com/dashpay/rust-dashcore#e44b1fb2086ad57c8884995f9f93f14de91bf964" [[package]] name = "dashcore-rpc" @@ -968,36 +950,36 @@ dependencies = [ [[package]] name = "dashcore_hashes" -version = "0.14.0" -source = "git+https://github.com/dashpay/rust-dashcore#db9ad0df2baded4ca478663013f823491bddcd7c" +version = "0.39.6" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.39.6#51df58f5d5d499f5ee80ab17076ff70b5347c7db" dependencies = [ - "dashcore-private 0.1.0", + "dashcore-private 0.39.6", "secp256k1", + "serde", ] [[package]] name = "dashcore_hashes" -version = "0.39.6" -source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.39.6#51df58f5d5d499f5ee80ab17076ff70b5347c7db" +version = "0.40.0" +source = "git+https://github.com/dashpay/rust-dashcore#e44b1fb2086ad57c8884995f9f93f14de91bf964" dependencies = [ - "dashcore-private 0.39.6", + "dashcore-private 0.40.0", "secp256k1", - "serde", ] [[package]] name = "dashpay-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "data-contracts" -version = "2.0.0" +version = "2.0.1" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1007,7 +989,7 @@ dependencies = [ "platform-value", "platform-version", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "token-history-contract", "wallet-utils-contract", "withdrawals-contract", @@ -1015,9 +997,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "zeroize", @@ -1025,23 +1007,23 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] @@ -1070,7 +1052,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", "unicode-xid", ] @@ -1082,7 +1064,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] @@ -1104,7 +1086,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] @@ -1115,17 +1097,17 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dpns-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "dpp" -version = "2.0.0" +version = "2.0.1" dependencies = [ "anyhow", "async-trait", @@ -1141,17 +1123,17 @@ dependencies = [ "data-contracts", "derive_more 1.0.0", "env_logger", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", - "getrandom", + "ferment-macro", + "getrandom 0.2.16", "hex", - "indexmap 2.7.0", + "indexmap 2.11.4", "integer-encoding", "itertools 0.13.0", "json-schema-compatibility-validator", "jsonschema", "lazy_static", "nohash-hasher", - "num_enum 0.7.3", + "num_enum 0.7.4", "once_cell", "platform-serialization", "platform-serialization-derive", @@ -1165,53 +1147,53 @@ dependencies = [ "serde_repr", "sha2", "strum", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "drive" -version = "2.0.0" +version = "2.0.1" dependencies = [ "bincode", "byteorder", "derive_more 1.0.0", "dpp", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro", "grovedb", "grovedb-costs", "grovedb-epoch-based-storage-flags", "grovedb-path", "grovedb-version", "hex", - "indexmap 2.7.0", + "indexmap 2.11.4", "integer-encoding", "nohash-hasher", "platform-value", "platform-version", "serde", "sqlparser", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", ] [[package]] name = "drive-proof-verifier" -version = "2.0.0" +version = "2.0.1" dependencies = [ "bincode", "dapi-grpc", "derive_more 1.0.0", "dpp", "drive", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro", "hex", - "indexmap 2.7.0", + "indexmap 2.11.4", "platform-serialization", "platform-serialization-derive", "serde", "serde_json", "tenderdash-abci", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", ] @@ -1222,7 +1204,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9c8d6ea916fadcd87e3d1ff4802b696d717c83519b47e76f267ab77e536dd5a" dependencies = [ "ed-derive", - "thiserror 1.0.68", + "thiserror 1.0.69", ] [[package]] @@ -1248,9 +1230,9 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ "curve25519-dalek", "ed25519", @@ -1263,9 +1245,9 @@ dependencies = [ [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elliptic-curve" @@ -1304,18 +1286,18 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] [[package]] name = "env_filter" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" dependencies = [ "log", "regex", @@ -1323,14 +1305,14 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.5" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff", "log", ] @@ -1345,18 +1327,18 @@ dependencies = [ [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -1366,38 +1348,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" dependencies = [ "bit-set", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata", + "regex-syntax", ] [[package]] name = "fastrand" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "feature-flags-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", "serde_json", - "thiserror 2.0.12", -] - -[[package]] -name = "ferment" -version = "0.1.4" -dependencies = [ - "ansi_term", - "cargo_metadata 0.18.1", - "env_logger", - "ferment-macro 0.1.4", - "log", - "proc-macro2", - "quote", - "syn 1.0.109", + "thiserror 2.0.17", ] [[package]] @@ -1405,35 +1373,10 @@ name = "ferment" version = "0.2.3" source = "git+https://github.com/dashpay/ferment?tag=v0.2.3#867aba9a03b86c8552d3526952af80f566ab0174" dependencies = [ - "indexmap 2.7.0", + "indexmap 2.11.4", "serde_json", ] -[[package]] -name = "ferment-interfaces" -version = "0.1.4" -source = "git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default#a9cf93872a7bd1229c394ac2443c109fb0d70949" -dependencies = [ - "indexmap 2.7.0", -] - -[[package]] -name = "ferment-macro" -version = "0.1.4" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ferment-macro" -version = "0.1.4" -source = "git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default#a9cf93872a7bd1229c394ac2443c109fb0d70949" -dependencies = [ - "quote", - "syn 1.0.109", -] - [[package]] name = "ferment-macro" version = "0.2.3" @@ -1448,10 +1391,10 @@ name = "ferment-sys" version = "0.2.3" source = "git+https://github.com/dashpay/ferment?tag=v0.2.3#867aba9a03b86c8552d3526952af80f566ab0174" dependencies = [ - "cargo_metadata 0.19.2", + "cargo_metadata", "cbindgen 0.28.0", "env_logger", - "ferment-macro 0.2.3", + "ferment-macro", "proc-macro2", "quote", "syn 1.0.109", @@ -1459,9 +1402,9 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "bitvec", "rand_core", @@ -1474,17 +1417,23 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +[[package]] +name = "find-msvc-tools" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0399f9d26e5191ce32c498bebd31e7a3ceabc2745f0ac54af3f335126c3f24b3" + [[package]] name = "fixedbitset" -version = "0.4.2" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.0.31" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" dependencies = [ "crc32fast", "miniz_oxide", @@ -1507,9 +1456,15 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.4" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "foreign-types" @@ -1528,9 +1483,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -1559,9 +1514,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1574,9 +1529,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1584,15 +1539,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1601,38 +1556,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1659,9 +1614,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb8bc4c28d15ade99c7e90b219f30da4be5c88e586277e8cbe886beeb868ab2" +checksum = "e8c8444bc9d71b935156cc0ccab7f622180808af7867b1daae6547d773591703" dependencies = [ "serde", "typenum", @@ -1669,28 +1624,42 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "r-efi", + "wasi 0.14.7+wasi-0.2.4", "wasm-bindgen", ] [[package]] name = "gimli" -version = "0.29.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gloo-timers" @@ -1732,11 +1701,11 @@ dependencies = [ "grovedb-version", "hex", "hex-literal", - "indexmap 2.7.0", + "indexmap 2.11.4", "integer-encoding", "reqwest", "sha2", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -1747,7 +1716,7 @@ checksum = "0ab159c3f82b0387f6a27a54930b18aa594b507013de947c8e909cf61abb75fe" dependencies = [ "integer-encoding", "intmap", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -1760,7 +1729,7 @@ dependencies = [ "hex", "integer-encoding", "intmap", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -1779,9 +1748,9 @@ dependencies = [ "grovedb-version", "grovedb-visualize", "hex", - "indexmap 2.7.0", + "indexmap 2.11.4", "integer-encoding", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -1799,7 +1768,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d61d27c76d49758b365a9e4a9da7f995f976b9525626bf645aef258024defd2" dependencies = [ - "thiserror 2.0.12", + "thiserror 2.0.17", "versioned-feature-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1815,17 +1784,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.5" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.1.0", - "indexmap 2.7.0", + "http 1.3.1", + "indexmap 2.11.4", "slab", "tokio", "tokio-util", @@ -1859,23 +1828,22 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "ahash", "allocator-api2", + "equivalent", + "foldhash 0.1.5", ] [[package]] name = "hashbrown" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", + "foldhash 0.2.0", ] [[package]] @@ -1911,9 +1879,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -1976,9 +1944,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -2003,18 +1971,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.3.1", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", - "http 1.1.0", + "futures-core", + "http 1.3.1", "http-body 1.0.1", "pin-project-lite", ] @@ -2025,15 +1993,15 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f056c8559e3757392c8d091e796416e4649d8e49e88b8d76df6c002f05027fd" dependencies = [ - "http 1.1.0", + "http 1.3.1", "serde", ] [[package]] name = "httparse" -version = "1.9.4" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -2041,28 +2009,24 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "hyper" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "h2", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "httparse", "httpdate", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -2070,12 +2034,11 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", - "http 1.1.0", + "http 1.3.1", "hyper", "hyper-util", "rustls", @@ -2116,33 +2079,41 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", + "futures-core", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "hyper", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.6.0", + "system-configuration", "tokio", "tower-service", "tracing", + "windows-registry", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -2156,6 +2127,92 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2164,12 +2221,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -2185,13 +2253,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.0" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", - "hashbrown 0.15.1", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] @@ -2211,30 +2280,51 @@ checksum = "0d762194228a2f1c11063e46e32e5acb96e66e906382b9eb5441f2e0504bbd5a" [[package]] name = "intmap" -version = "3.1.0" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "210870d5399600055a955c020cc97e462203c234dc2b103b5da5d80fdbd5eed5" +checksum = "16dd999647b7a027fadf2b3041a4ea9c8ae21562823fe5cbdecd46537d535ae2" dependencies = [ "serde", ] [[package]] -name = "ipnet" -version = "2.9.0" +name = "io-uring" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "libc", +] [[package]] -name = "is_terminal_polyfill" -version = "1.70.1" +name = "ipnet" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] -name = "iso8601" -version = "0.6.1" +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "iso8601" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924e5d73ea28f59011fec52a0d12185d496a9b075d360657aed2a5707f701153" +checksum = "e1082f0c48f143442a1ac6122f67e360ceee130b967af4d50996e5154a45df46" dependencies = [ "nom", ] @@ -2259,15 +2349,39 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jiff" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ "once_cell", "wasm-bindgen", @@ -2281,17 +2395,17 @@ checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" dependencies = [ "serde", "serde_json", - "thiserror 1.0.68", + "thiserror 1.0.69", ] [[package]] name = "json-schema-compatibility-validator" -version = "2.0.0" +version = "2.0.1" dependencies = [ "json-patch", "once_cell", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -2308,7 +2422,7 @@ dependencies = [ [[package]] name = "jsonschema" version = "0.18.0" -source = "git+https://github.com/dashpay/jsonschema-rs?branch=configure_regexp#7b00a2442ce44772e278b468bc4c2adc5e252226" +source = "git+https://github.com/dashpay/jsonschema-rs?branch=configure_regexp#aacc1ab5140daac30eb65d376852f01f5381979d" dependencies = [ "ahash", "anyhow", @@ -2316,13 +2430,13 @@ dependencies = [ "bytecount", "fancy-regex", "fraction", - "getrandom", + "getrandom 0.3.3", "iso8601", "itoa", "memchr", "num-cmp", "once_cell", - "parking_lot 0.12.3", + "parking_lot 0.12.5", "percent-encoding", "regex", "serde", @@ -2343,12 +2457,12 @@ dependencies = [ [[package]] name = "keyword-search-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -2365,37 +2479,42 @@ checksum = "744a4c881f502e98c2241d2e5f50040ac73b30194d64452bb6260393b53f0dc9" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.176" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] -[[package]] -name = "lockfree-object-pool" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" - [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "lru" @@ -2403,33 +2522,33 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.1", + "hashbrown 0.15.5", ] [[package]] name = "masternode-reward-shares-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "merlin" @@ -2449,41 +2568,36 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ - "adler", + "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ - "hermit-abi 0.3.9", "libc", - "wasi", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] name = "multiexp" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a383da1ae933078ddb1e4141f1dd617b512b4183779d6977e6451b0e644806" +checksum = "7ec2ce93a6f06ac6cae04c1da3f2a6a24fcfc1f0eb0b4e0f3d302f0df45326cb" dependencies = [ "ff", "group", + "rand_core", "rustversion", "std-shims", "zeroize", @@ -2491,9 +2605,9 @@ dependencies = [ [[package]] name = "multimap" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" [[package]] name = "murmur3" @@ -2503,9 +2617,9 @@ checksum = "9252111cf132ba0929b6f8e030cac2a24b507f3a4d6db6fb2896f27b354c714b" [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -2513,7 +2627,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "security-framework", + "security-framework 2.11.1", "security-framework-sys", "tempfile", ] @@ -2526,22 +2640,20 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nom" -version = "7.1.3" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" dependencies = [ "memchr", - "minimal-lexical", ] [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" dependencies = [ - "overload", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -2601,7 +2713,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] @@ -2647,11 +2759,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.5.2", "libc", ] @@ -2666,11 +2778,12 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ - "num_enum_derive 0.7.3", + "num_enum_derive 0.7.4", + "rustversion", ] [[package]] @@ -2687,38 +2800,44 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "object" -version = "0.36.3" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "cfg-if", "foreign-types", "libc", @@ -2735,20 +2854,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", @@ -2762,12 +2881,6 @@ version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "pairing" version = "0.23.0" @@ -2790,12 +2903,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.12", ] [[package]] @@ -2814,15 +2927,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.3", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -2842,18 +2955,18 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "petgraph" -version = "0.6.5" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.7.0", + "indexmap 2.11.4", ] [[package]] @@ -2896,29 +3009,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -2938,9 +3051,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "platform-mobile" @@ -2952,7 +3065,7 @@ dependencies = [ "dash-sdk", "dashcore", "dashcore-rpc", - "dashcore_hashes 0.14.0", + "dashcore_hashes 0.40.0", "dashpay-contract", "data-contracts", "dotenvy", @@ -2961,8 +3074,8 @@ dependencies = [ "drive", "drive-proof-verifier", "envy", - "ferment 0.2.3", - "ferment-macro 0.2.3", + "ferment", + "ferment-macro", "hex", "http 0.2.12", "lazy_static", @@ -2978,7 +3091,7 @@ dependencies = [ "serde_json", "sha2", "simple-signer", - "syn 2.0.87", + "syn 2.0.106", "tokio", "tonic 0.11.0", "tracing", @@ -2989,7 +3102,7 @@ dependencies = [ [[package]] name = "platform-serialization" -version = "2.0.0" +version = "2.0.1" dependencies = [ "bincode", "platform-version", @@ -2997,55 +3110,54 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "2.0.0" +version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", "virtue 0.0.17", ] [[package]] name = "platform-value" -version = "2.0.0" +version = "2.0.1" dependencies = [ "base64 0.22.1", "bincode", "bs58", "cbindgen 0.26.0", "ciborium", - "ferment 0.1.4", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro", "hex", - "indexmap 2.7.0", + "indexmap 2.11.4", "platform-serialization", "platform-version", "rand", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "treediff", ] [[package]] name = "platform-version" -version = "2.0.0" +version = "2.0.1" dependencies = [ "bincode", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro", "grovedb-version", "once_cell", - "thiserror 2.0.12", + "thiserror 2.0.17", "versioned-feature-core 1.0.0 (git+https://github.com/dashpay/versioned-feature-core)", ] [[package]] name = "platform-versioning" -version = "2.0.0" +version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] @@ -3054,6 +3166,30 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -3062,21 +3198,21 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] @@ -3091,18 +3227,18 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.21.1", + "toml_edit 0.23.6", ] [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] @@ -3118,9 +3254,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", "prost-derive", @@ -3128,56 +3264,61 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15" +checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" dependencies = [ - "bytes", "heck 0.5.0", - "itertools 0.13.0", + "itertools 0.14.0", "log", "multimap", "once_cell", "petgraph", "prettyplease", - "prost 0.13.3", + "prost 0.13.5", "prost-types", "regex", - "syn 2.0.87", + "syn 2.0.106", "tempfile", ] [[package]] name = "prost-derive" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "prost-types" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" dependencies = [ - "prost 0.13.3", + "prost 0.13.5", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "radium" version = "0.7.0" @@ -3211,7 +3352,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.16", ] [[package]] @@ -3234,62 +3375,47 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", ] [[package]] name = "regex" -version = "1.10.6" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.1.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "reqwest" -version = "0.12.5" +version = "0.12.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" dependencies = [ "base64 0.22.1", "bytes", @@ -3298,72 +3424,69 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper", "hyper-rustls", "hyper-tls", "hyper-util", - "ipnet", "js-sys", "log", "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", "tokio-native-tls", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg", ] [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.16", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] [[package]] name = "rs-dapi-client" -version = "2.0.0" +version = "2.0.1" dependencies = [ "backon", "chrono", "dapi-grpc", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro", "futures", - "getrandom", + "getrandom 0.2.16", "gloo-timers", "hex", - "http 1.1.0", + "http 1.3.1", "http-serde", "lru", "rand", "serde", "serde_json", "sha2", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tonic-web-wasm-client", "tracing", @@ -3372,37 +3495,50 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "errno", "libc", - "linux-raw-sys", - "windows-sys 0.52.0", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags 2.9.4", + "errno", + "libc", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.28" +version = "0.23.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" +checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" dependencies = [ "log", "once_cell", @@ -3415,24 +3551,22 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" dependencies = [ "openssl-probe", - "rustls-pemfile", "rustls-pki-types", "schannel", - "security-framework", + "security-framework 3.5.1", ] [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] @@ -3447,9 +3581,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.3" +version = "0.103.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" dependencies = [ "ring", "rustls-pki-types", @@ -3458,15 +3592,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -3479,11 +3613,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3533,8 +3667,21 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.1", - "core-foundation", + "bitflags 2.9.4", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" +dependencies = [ + "bitflags 2.9.4", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -3542,9 +3689,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -3552,19 +3699,21 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] @@ -3579,53 +3728,64 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.15" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" dependencies = [ "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.7.0", + "indexmap 2.11.4", "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -3667,7 +3827,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] @@ -3682,9 +3842,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -3733,7 +3893,7 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "simple-signer" -version = "2.0.0" +version = "2.0.1" dependencies = [ "base64 0.22.1", "bincode", @@ -3749,38 +3909,42 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", ] [[package]] -name = "spin" -version = "0.9.8" +name = "socket2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" dependencies = [ - "lock_api", + "libc", + "windows-sys 0.59.0", ] +[[package]] +name = "spin" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" + [[package]] name = "spki" version = "0.7.3" @@ -3808,11 +3972,12 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "std-shims" -version = "0.1.1" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e49360f31b0b75a6a82a5205c6103ea07a79a60808d44f5cc879d303337926" +checksum = "227c4f8561598188d0df96dbe749824576174bba278b5b6bb2eacff1066067d0" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.16.0", + "rustversion", "spin", ] @@ -3847,7 +4012,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] @@ -3878,9 +4043,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -3889,26 +4054,40 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 1.3.2", - "core-foundation", + "bitflags 2.9.4", + "core-foundation 0.9.4", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", @@ -3922,15 +4101,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.3", "once_cell", - "rustix", - "windows-sys 0.59.0", + "rustix 1.1.2", + "windows-sys 0.61.2", ] [[package]] @@ -3943,7 +4122,7 @@ dependencies = [ "lhash", "semver", "tenderdash-proto", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", "url", ] @@ -3959,7 +4138,7 @@ dependencies = [ "flex-error", "num-derive", "num-traits", - "prost 0.13.3", + "prost 0.13.5", "serde", "subtle-encoding", "tenderdash-proto-compiler", @@ -3991,58 +4170,57 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" [[package]] name = "thiserror" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.68", + "thiserror-impl 1.0.69", ] [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.17", ] [[package]] name = "thiserror-impl" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -4056,9 +4234,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -4071,25 +4249,35 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", ] +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -4102,39 +4290,41 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "token-history-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "tokio" -version = "1.41.0" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "pin-project-lite", - "socket2", + "slab", + "socket2 0.6.0", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] @@ -4149,9 +4339,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ "rustls", "tokio", @@ -4159,9 +4349,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -4170,9 +4360,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -4192,60 +4382,86 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", - "toml_edit 0.22.20", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.7.0", - "toml_datetime", + "indexmap 2.11.4", + "toml_datetime 0.6.11", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.7.0", - "toml_datetime", - "winnow 0.5.40", + "indexmap 2.11.4", + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_write", + "winnow 0.7.13", ] [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.23.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" dependencies = [ - "indexmap 2.7.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow 0.6.18", + "indexmap 2.11.4", + "toml_datetime 0.7.2", + "toml_parser", + "winnow 0.7.13", ] +[[package]] +name = "toml_parser" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +dependencies = [ + "winnow 0.7.13", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "tonic" version = "0.11.0" @@ -4277,7 +4493,7 @@ dependencies = [ "base64 0.22.1", "bytes", "h2", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper", @@ -4285,9 +4501,9 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "prost 0.13.3", + "prost 0.13.5", "rustls-native-certs", - "socket2", + "socket2 0.5.10", "tokio", "tokio-rustls", "tokio-stream", @@ -4295,7 +4511,7 @@ dependencies = [ "tower-layer", "tower-service", "tracing", - "webpki-roots", + "webpki-roots 0.26.11", ] [[package]] @@ -4309,7 +4525,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] @@ -4322,13 +4538,13 @@ dependencies = [ "byteorder", "bytes", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "httparse", "js-sys", "pin-project", - "thiserror 2.0.12", + "thiserror 2.0.17", "tonic 0.13.1", "tower-service", "wasm-bindgen", @@ -4345,7 +4561,7 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "indexmap 2.7.0", + "indexmap 2.11.4", "pin-project-lite", "slab", "sync_wrapper", @@ -4356,6 +4572,24 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.4", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -4370,9 +4604,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -4381,20 +4615,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -4417,21 +4651,21 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "678d561ce3d4b33dfcfb1c6bd13c422aad89be5bf0e66e20d518a5a254345b54" dependencies = [ - "rustix", + "rustix 0.38.44", "tracing", "tracing-subscriber", ] [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "sharded-slab", "smallvec", "thread_local", @@ -4454,9 +4688,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" -version = "1.17.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "uint-zigzag" @@ -4467,32 +4701,17 @@ dependencies = [ "core2", ] -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "untrusted" @@ -4502,12 +4721,11 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "3.0.3" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "217751151c53226090391713e533d9a5e904ba2570dabaaace29032687589c3e" +checksum = "99ba1025f18a4a3fc3e9b48c868e9beb4f24f4b4b1a325bada26bd4119f46537" dependencies = [ "base64 0.22.1", - "cc", "flate2", "log", "percent-encoding", @@ -4516,30 +4734,31 @@ dependencies = [ "rustls-pki-types", "ureq-proto", "utf-8", - "webpki-roots", + "webpki-roots 1.0.3", ] [[package]] name = "ureq-proto" -version = "0.3.5" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae239d0a3341aebc94259414d1dc67cfce87d41cbebc816772c91b77902fafa4" +checksum = "60b4531c118335662134346048ddb0e54cc86bd7e81866757873055f0e38f5d2" dependencies = [ "base64 0.22.1", - "http 1.1.0", + "http 1.3.1", "httparse", "log", ] [[package]] name = "url" -version = "2.5.2" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -4548,6 +4767,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -4556,15 +4781,19 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.10.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -4610,7 +4839,7 @@ dependencies = [ "crypto-bigint", "elliptic-curve", "elliptic-curve-tools", - "generic-array 1.1.1", + "generic-array 1.2.0", "hex", "num", "rand_core", @@ -4632,12 +4861,12 @@ dependencies = [ [[package]] name = "wallet-utils-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -4651,41 +4880,60 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", @@ -4696,9 +4944,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4706,31 +4954,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" dependencies = [ "unicode-ident", ] [[package]] name = "wasm-streams" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -4741,9 +4989,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", @@ -4751,9 +4999,18 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.3" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.3", +] + +[[package]] +name = "webpki-roots" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" dependencies = [ "rustls-pki-types", ] @@ -4776,11 +5033,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4791,20 +5048,96 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.52.0" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-targets 0.52.6", + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", ] [[package]] -name = "windows-sys" -version = "0.48.0" +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-targets 0.48.5", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -4826,18 +5159,21 @@ dependencies = [ ] [[package]] -name = "windows-targets" -version = "0.48.5" +name = "windows-sys" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -4849,7 +5185,7 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", @@ -4857,10 +5193,21 @@ dependencies = [ ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" +name = "windows-targets" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] [[package]] name = "windows_aarch64_gnullvm" @@ -4869,10 +5216,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" +name = "windows_aarch64_gnullvm" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -4881,10 +5228,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] -name = "windows_i686_gnu" -version = "0.48.5" +name = "windows_aarch64_msvc" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -4892,6 +5239,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" @@ -4899,10 +5252,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] -name = "windows_i686_msvc" -version = "0.48.5" +name = "windows_i686_gnullvm" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -4911,10 +5264,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" +name = "windows_i686_msvc" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -4923,10 +5276,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" +name = "windows_x86_64_gnu" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -4935,10 +5288,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" +name = "windows_x86_64_gnullvm" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -4946,6 +5299,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + [[package]] name = "winnow" version = "0.5.40" @@ -4957,26 +5316,22 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.18" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] [[package]] -name = "winreg" -version = "0.52.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "withdrawals-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "num_enum 0.5.11", "platform-value", @@ -4984,9 +5339,15 @@ dependencies = [ "serde", "serde_json", "serde_repr", - "thiserror 2.0.12", + "thiserror 2.0.17", ] +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + [[package]] name = "wyz" version = "0.5.1" @@ -4996,32 +5357,76 @@ dependencies = [ "tap", ] +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure", +] + [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", + "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "serde", "zeroize_derive", @@ -5035,37 +5440,68 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.106", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] name = "zip" -version = "2.2.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" dependencies = [ "arbitrary", "crc32fast", "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.7.0", + "indexmap 2.11.4", "memchr", - "thiserror 1.0.68", + "thiserror 2.0.17", "zopfli", ] [[package]] name = "zopfli" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" dependencies = [ "bumpalo", "crc32fast", - "lockfree-object-pool", "log", - "once_cell", "simd-adler32", ] diff --git a/platform-mobile/Cargo.lock b/platform-mobile/Cargo.lock index 0bb98d0..8194e24 100644 --- a/platform-mobile/Cargo.lock +++ b/platform-mobile/Cargo.lock @@ -61,15 +61,6 @@ dependencies = [ "libc", ] -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - [[package]] name = "anstream" version = "0.6.15" @@ -454,38 +445,6 @@ dependencies = [ "serde", ] -[[package]] -name = "camino" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror 1.0.64", -] - [[package]] name = "cbindgen" version = "0.26.0" @@ -743,7 +702,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "2.0.0" +version = "2.0.1" dependencies = [ "dapi-grpc-macros", "futures-core", @@ -760,7 +719,7 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "2.0.0" +version = "2.0.1" dependencies = [ "heck 0.5.0", "quote", @@ -804,7 +763,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "2.0.0" +version = "2.0.1" dependencies = [ "arc-swap", "async-trait", @@ -821,8 +780,8 @@ dependencies = [ "drive", "drive-proof-verifier", "envy", - "ferment-interfaces", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment", + "ferment-macro", "futures", "hex", "http 1.1.0", @@ -919,7 +878,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -929,7 +888,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "2.0.0" +version = "2.0.1" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1047,7 +1006,7 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dpns-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -1057,7 +1016,7 @@ dependencies = [ [[package]] name = "dpp" -version = "2.0.0" +version = "2.0.1" dependencies = [ "anyhow", "async-trait", @@ -1073,7 +1032,7 @@ dependencies = [ "data-contracts", "derive_more 1.0.0", "env_logger", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro", "getrandom", "hex", "indexmap 2.7.0", @@ -1102,13 +1061,13 @@ dependencies = [ [[package]] name = "drive" -version = "2.0.0" +version = "2.0.1" dependencies = [ "bincode", "byteorder", "derive_more 1.0.0", "dpp", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro", "grovedb", "grovedb-costs", "grovedb-epoch-based-storage-flags", @@ -1128,14 +1087,14 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "2.0.0" +version = "2.0.1" dependencies = [ "bincode", "dapi-grpc", "derive_more 1.0.0", "dpp", "drive", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro", "hex", "indexmap 2.7.0", "platform-serialization", @@ -1310,7 +1269,7 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "feature-flags-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -1318,20 +1277,6 @@ dependencies = [ "thiserror 2.0.12", ] -[[package]] -name = "ferment" -version = "0.1.4" -dependencies = [ - "ansi_term", - "cargo_metadata", - "env_logger", - "ferment-macro 0.1.4", - "log", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "ferment" version = "0.2.3" @@ -1341,31 +1286,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "ferment-interfaces" -version = "0.1.4" -source = "git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default#a9cf93872a7bd1229c394ac2443c109fb0d70949" -dependencies = [ - "indexmap 2.7.0", -] - -[[package]] -name = "ferment-macro" -version = "0.1.4" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ferment-macro" -version = "0.1.4" -source = "git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default#a9cf93872a7bd1229c394ac2443c109fb0d70949" -dependencies = [ - "quote", - "syn 1.0.109", -] - [[package]] name = "ferment-macro" version = "0.2.3" @@ -2204,7 +2124,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "2.0.0" +version = "2.0.1" dependencies = [ "json-patch", "once_cell", @@ -2261,7 +2181,7 @@ dependencies = [ [[package]] name = "keyword-search-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -2326,7 +2246,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -2879,8 +2799,8 @@ dependencies = [ "drive", "drive-proof-verifier", "envy", - "ferment 0.2.3", - "ferment-macro 0.2.3", + "ferment", + "ferment-macro", "hex", "http 0.2.12", "lazy_static", @@ -2907,7 +2827,7 @@ dependencies = [ [[package]] name = "platform-serialization" -version = "2.0.0" +version = "2.0.1" dependencies = [ "bincode", "platform-version", @@ -2915,7 +2835,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "2.0.0" +version = "2.0.1" dependencies = [ "proc-macro2", "quote", @@ -2925,15 +2845,14 @@ dependencies = [ [[package]] name = "platform-value" -version = "2.0.0" +version = "2.0.1" dependencies = [ "base64 0.22.1", "bincode", "bs58", "cbindgen", "ciborium", - "ferment 0.1.4", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro", "hex", "indexmap 2.7.0", "platform-serialization", @@ -2947,10 +2866,10 @@ dependencies = [ [[package]] name = "platform-version" -version = "2.0.0" +version = "2.0.1" dependencies = [ "bincode", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro", "grovedb-version", "once_cell", "thiserror 2.0.12", @@ -2959,7 +2878,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "2.0.0" +version = "2.0.1" dependencies = [ "proc-macro2", "quote", @@ -3264,12 +3183,12 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "2.0.0" +version = "2.0.1" dependencies = [ "backon", "chrono", "dapi-grpc", - "ferment-macro 0.1.4 (git+https://github.com/dashpay/ferment?branch=feat%2Fopaque-default)", + "ferment-macro", "futures", "getrandom", "gloo-timers", @@ -3481,9 +3400,6 @@ name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] [[package]] name = "serde" @@ -3650,7 +3566,7 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "simple-signer" -version = "2.0.0" +version = "2.0.1" dependencies = [ "base64 0.22.1", "bincode", @@ -4028,7 +3944,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "token-history-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -4530,7 +4446,7 @@ dependencies = [ [[package]] name = "wallet-utils-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "platform-value", "platform-version", @@ -4828,7 +4744,7 @@ dependencies = [ [[package]] name = "withdrawals-contract" -version = "2.0.0" +version = "2.0.1" dependencies = [ "num_enum 0.5.11", "platform-value", From dc20aecb471b07ca81b85e513ea27506aa069d58 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 3 Nov 2025 08:32:51 -0800 Subject: [PATCH 30/36] chore: CBOR handling fix --- .../main/java/org/dashj/platform/wallet/TxMetadataDocument.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt index b215c47..b4ccae1 100644 --- a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt +++ b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt @@ -64,7 +64,7 @@ class TxMetadataDocument(document: Document) : AbstractDocument(document) { val version = decryptedData.copyOfRange(0, 1)[0].toInt() and 0xFF return when (version) { VERSION_CBOR -> { - val list = Cbor.decodeList(decryptedData) + val list = Cbor.decodeList(decryptedData.copyOfRange(1, decryptedData.size)) this.txMetadataVersion = VERSION_CBOR // use .map to convert to List list.map { TxMetadataItem(it as Map) } From d9739e7681a97b59efefeb3181314f34a03ad686 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 3 Nov 2025 08:33:11 -0800 Subject: [PATCH 31/36] chore: check for empty array --- examples/src/main/kotlin/dashj/org/platform/CreateTxMetadata.kt | 2 +- .../src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadata.kt b/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadata.kt index 026b1c8..264276d 100644 --- a/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadata.kt +++ b/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadata.kt @@ -51,7 +51,7 @@ class CreateTxMetadata { println("Tx Metadata: -----------------------------------") for (doc in documents) { val txDoc = TxMetadataDocument(doc) - if (txDoc.encryptedMetadata[0] != 0.toByte()) { + if (txDoc.encryptedMetadata.isNotEmpty() && txDoc.encryptedMetadata[0] != 0.toByte()) { println(JSONObject(doc.toJSON()).toString(2)) val txList = blockchainIdentity.decryptTxMetadata(txDoc, null) println(" $txList") diff --git a/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt b/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt index 8fdf7d4..e90e0ab 100644 --- a/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt +++ b/examples/src/main/kotlin/dashj/org/platform/CreateTxMetadataTest.kt @@ -190,7 +190,7 @@ object CreateTxMetadataTest { println("Tx Metadata: -----------------------------------") for (doc in documents) { val txDoc = TxMetadataDocument(doc) - if (txDoc.encryptedMetadata[0] != 0.toByte()) { + if (txDoc.encryptedMetadata.isNotEmpty() && txDoc.encryptedMetadata[0] != 0.toByte()) { println(JSONObject(doc.toJSON()).toString(2)) val txList = blockchainIdentity.decryptTxMetadata(txDoc, null) println(" $txList") From b43ab11cf1c0380b3966397fac72394207c62c06 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 3 Nov 2025 12:09:33 -0800 Subject: [PATCH 32/36] fix: align with txmetadataspec (path) --- .../main/java/org/dashj/platform/wallet/TxMetadataDocument.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt index b4ccae1..4466042 100644 --- a/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt +++ b/dpp/src/main/java/org/dashj/platform/wallet/TxMetadataDocument.kt @@ -20,8 +20,8 @@ import org.dashj.platform.wallet.WalletUtils.TxMetadataBatch class TxMetadataDocument(document: Document) : AbstractDocument(document) { companion object { - // 2^16 + 2 - val childNumber = ChildNumber(2 shl 15 + 1, true) + // 2^15 + 1 + val childNumber = ChildNumber((2 shl 14) + 1, true) const val MAX_ENCRYPTED_SIZE = 4096 - 32 // leave room for a partially filled block and the IV const val VERSION_UNKNOWN = -1 From 9fdae8122a77f5ff9d9fa33636193f3518dc8518 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 3 Nov 2025 12:09:48 -0800 Subject: [PATCH 33/36] fix: add valid seed to PlatformNetwork.kt --- .../test/kotlin/org/dashj/platform/dashpay/PlatformNetwork.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dpp/src/test/kotlin/org/dashj/platform/dashpay/PlatformNetwork.kt b/dpp/src/test/kotlin/org/dashj/platform/dashpay/PlatformNetwork.kt index 2193175..e7e4f2c 100644 --- a/dpp/src/test/kotlin/org/dashj/platform/dashpay/PlatformNetwork.kt +++ b/dpp/src/test/kotlin/org/dashj/platform/dashpay/PlatformNetwork.kt @@ -23,7 +23,7 @@ import org.junit.jupiter.api.AfterEach open class PlatformNetwork { val platform = Platform(TestNet3Params.get()) - val seed = "domain major supply stove finger endorse crystal grape cinnamon syrup happy total" + val seed = "grid bind point inhale blame tell trigger alter index print insect return" val wallet: Wallet = Wallet( platform.params, KeyChainGroup.builder(platform.params) From 53679cc26e3e2907611ed832b9660bfacee2861d Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 3 Nov 2025 12:10:23 -0800 Subject: [PATCH 34/36] fix: update txmetadata derivation path, two ways --- .../org/dashj/platform/dashpay/BlockchainIdentityTest.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dpp/src/test/kotlin/org/dashj/platform/dashpay/BlockchainIdentityTest.kt b/dpp/src/test/kotlin/org/dashj/platform/dashpay/BlockchainIdentityTest.kt index 82876d2..8d49ce6 100644 --- a/dpp/src/test/kotlin/org/dashj/platform/dashpay/BlockchainIdentityTest.kt +++ b/dpp/src/test/kotlin/org/dashj/platform/dashpay/BlockchainIdentityTest.kt @@ -16,6 +16,7 @@ import org.junit.jupiter.api.Assertions.assertNotEquals import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Assertions.assertThrows import org.junit.jupiter.api.Test +import kotlin.math.pow class BlockchainIdentityTest : PlatformNetwork() { @@ -169,9 +170,14 @@ class BlockchainIdentityTest : PlatformNetwork() { val parentEncryptionKey = authenticationGroupExtension.identityKeyChain.getKeyByPath(parentEncryptionKeyPath) .deriveChildKey(ChildNumber(2, true)) val expectedEncryptionKey = parentEncryptionKey - .deriveChildKey(ChildNumber(2 shl 15 + 1, true)) + .deriveChildKey(ChildNumber((2 shl 14) + 1, true)) .derive(1) assertEquals(expectedEncryptionKey, actualEncryptionKey) + val expectedEncryptionKey2 = parentEncryptionKey + .deriveChildKey(ChildNumber(2.toDouble().pow(15).toInt() + 1, true)) + .derive(1) + assertEquals(expectedEncryptionKey2, actualEncryptionKey) + } // Verify decryption and reconstruction of all items @@ -186,6 +192,7 @@ class BlockchainIdentityTest : PlatformNetwork() { largeItems.forEachIndexed { index, originalItem -> assertEquals(originalItem, allDecryptedItems[index]) } + println("success!") } } } From 436c5a30c9a69e27567877c847fd49604d2bac19 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 3 Nov 2025 13:46:03 -0800 Subject: [PATCH 35/36] fix: allow individual documents to fail decryption --- .../java/org/dashj/platform/dashpay/BlockchainIdentity.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt b/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt index 0778a2f..4354f35 100644 --- a/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt +++ b/dpp/src/main/java/org/dashj/platform/dashpay/BlockchainIdentity.kt @@ -2374,7 +2374,11 @@ class BlockchainIdentity { val results = LinkedHashMap>() documents.forEach { val doc = TxMetadataDocument(it) - results[doc] = decryptTxMetadata(TxMetadataDocument(it), keyParameter) + try { + results[doc] = decryptTxMetadata(TxMetadataDocument(it), keyParameter) + } catch (e: Exception) { + log.info("txMetadata document could not be decrypted: {}", doc.id) + } } return results } From 53fd75e743ed0d491796af98c9d61909c1dfaee4 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 3 Nov 2025 13:46:22 -0800 Subject: [PATCH 36/36] chore: remove duplicate version set --- build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle b/build.gradle index 198f05b..801c763 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,5 @@ buildscript { ext.version = '2.0.1-TX-SNAPSHOT' - ext.version = '2.0.1' ext.kotlin_version = '1.8.22' ext.dashj_version = '21.1.9' repositories {