wowok 2.1.9 → 2.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +46 -0
- package/dist/cjs/bcs/bcs.d.ts +199 -199
- package/dist/cjs/bcs/bcs.js +273 -318
- package/dist/cjs/bcs/bcs.js.map +1 -0
- package/dist/cjs/bcs/effects.d.ts +109 -109
- package/dist/cjs/bcs/effects.js +205 -230
- package/dist/cjs/bcs/effects.js.map +1 -0
- package/dist/cjs/bcs/index.d.ts +1 -2584
- package/dist/cjs/bcs/index.js +61 -76
- package/dist/cjs/bcs/index.js.map +1 -0
- package/dist/cjs/bcs/pure.js +38 -58
- package/dist/cjs/bcs/pure.js.map +1 -0
- package/dist/cjs/bcs/type-tag-serializer.js +102 -114
- package/dist/cjs/bcs/type-tag-serializer.js.map +1 -0
- package/dist/cjs/bcs/types.js +6 -23
- package/dist/cjs/bcs/types.js.map +1 -0
- package/dist/cjs/client/index.js +17 -33
- package/dist/cjs/client/index.js.map +1 -0
- package/dist/cjs/client/network.js +25 -40
- package/dist/cjs/client/network.js.map +1 -0
- package/dist/cjs/cryptography/index.js +29 -45
- package/dist/cjs/cryptography/index.js.map +1 -0
- package/dist/cjs/cryptography/intent.d.ts +1 -1
- package/dist/cjs/cryptography/intent.js +20 -31
- package/dist/cjs/cryptography/intent.js.map +1 -0
- package/dist/cjs/cryptography/keypair.js +102 -116
- package/dist/cjs/cryptography/keypair.js.map +1 -0
- package/dist/cjs/cryptography/mnemonics.js +43 -41
- package/dist/cjs/cryptography/mnemonics.js.map +1 -0
- package/dist/cjs/cryptography/publickey.js +112 -134
- package/dist/cjs/cryptography/publickey.js.map +1 -0
- package/dist/cjs/cryptography/signature-scheme.js +24 -43
- package/dist/cjs/cryptography/signature-scheme.js.map +1 -0
- package/dist/cjs/cryptography/signature.d.ts +2 -24
- package/dist/cjs/cryptography/signature.js +50 -67
- package/dist/cjs/cryptography/signature.js.map +1 -0
- package/dist/cjs/experimental/cache.js +65 -0
- package/dist/cjs/experimental/cache.js.map +1 -0
- package/dist/cjs/experimental/client.js +27 -0
- package/dist/cjs/experimental/client.js.map +1 -0
- package/dist/cjs/experimental/core.js +89 -0
- package/dist/cjs/experimental/core.js.map +1 -0
- package/dist/cjs/experimental/errors.js +32 -0
- package/dist/cjs/experimental/errors.js.map +1 -0
- package/dist/cjs/experimental/index.js +15 -0
- package/dist/cjs/experimental/index.js.map +1 -0
- package/dist/cjs/experimental/persistent-storage.js +343 -0
- package/dist/cjs/experimental/persistent-storage.js.map +1 -0
- package/dist/cjs/experimental/persistent-storage.test.js +200 -0
- package/dist/cjs/experimental/persistent-storage.test.js.map +1 -0
- package/dist/cjs/experimental/transports/utils.js +104 -0
- package/dist/cjs/experimental/transports/utils.js.map +1 -0
- package/dist/cjs/experimental/types.js +6 -0
- package/dist/cjs/experimental/types.js.map +1 -0
- package/dist/cjs/faucet/faucet.js +106 -124
- package/dist/cjs/faucet/faucet.js.map +1 -0
- package/dist/cjs/faucet/index.js +12 -28
- package/dist/cjs/faucet/index.js.map +1 -0
- package/dist/cjs/grpc/client.js +47 -62
- package/dist/cjs/grpc/client.js.map +1 -0
- package/dist/cjs/grpc/core.js +580 -617
- package/dist/cjs/grpc/core.js.map +1 -0
- package/dist/cjs/grpc/index.js +9 -25
- package/dist/cjs/grpc/index.js.map +1 -0
- package/dist/cjs/grpc/proto/google/protobuf/any.js +168 -135
- package/dist/cjs/grpc/proto/google/protobuf/any.js.map +1 -0
- package/dist/cjs/grpc/proto/google/protobuf/duration.js +105 -90
- package/dist/cjs/grpc/proto/google/protobuf/duration.js.map +1 -0
- package/dist/cjs/grpc/proto/google/protobuf/empty.js +50 -28
- package/dist/cjs/grpc/proto/google/protobuf/empty.js.map +1 -0
- package/dist/cjs/grpc/proto/google/protobuf/field_mask.js +96 -75
- package/dist/cjs/grpc/proto/google/protobuf/field_mask.js.map +1 -0
- package/dist/cjs/grpc/proto/google/protobuf/struct.js +266 -215
- package/dist/cjs/grpc/proto/google/protobuf/struct.js.map +1 -0
- package/dist/cjs/grpc/proto/google/protobuf/timestamp.js +150 -131
- package/dist/cjs/grpc/proto/google/protobuf/timestamp.js.map +1 -0
- package/dist/cjs/grpc/proto/google/rpc/error_details.js +331 -302
- package/dist/cjs/grpc/proto/google/rpc/error_details.js.map +1 -0
- package/dist/cjs/grpc/proto/google/rpc/status.js +50 -50
- package/dist/cjs/grpc/proto/google/rpc/status.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js +84 -68
- package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js +45 -50
- package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js +38 -43
- package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js +70 -75
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js +79 -81
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js +183 -166
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js +369 -296
- package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js +80 -85
- package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js +31 -28
- package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/event.js +81 -83
- package/dist/cjs/grpc/proto/sui/rpc/v2/event.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js +80 -85
- package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js +876 -506
- package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js +56 -61
- package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/input.js +103 -83
- package/dist/cjs/grpc/proto/sui/rpc/v2/input.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js +76 -78
- package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js +69 -119
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js +392 -350
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js +599 -473
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js +46 -78
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js +242 -224
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js +32 -52
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js +139 -134
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/object.js +109 -111
- package/dist/cjs/grpc/proto/sui/rpc/v2/object.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js +46 -51
- package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js +76 -61
- package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js +46 -59
- package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js +568 -522
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js +54 -32
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +27 -47
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js +83 -86
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js +53 -85
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js +645 -529
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js +37 -51
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js +58 -61
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js +749 -730
- package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js +1218 -975
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +32 -46
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +1 -0
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js +186 -167
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +1 -0
- package/dist/cjs/index.js +96 -91
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/jsonRpc/client.js +654 -743
- package/dist/cjs/jsonRpc/client.js.map +1 -0
- package/dist/cjs/jsonRpc/core.d.ts +7 -7
- package/dist/cjs/jsonRpc/core.js +562 -606
- package/dist/cjs/jsonRpc/core.js.map +1 -0
- package/dist/cjs/jsonRpc/errors.js +38 -56
- package/dist/cjs/jsonRpc/errors.js.map +1 -0
- package/dist/cjs/jsonRpc/http-transport.js +70 -114
- package/dist/cjs/jsonRpc/http-transport.js.map +1 -0
- package/dist/cjs/jsonRpc/index.js +14 -30
- package/dist/cjs/jsonRpc/index.js.map +1 -0
- package/dist/cjs/jsonRpc/json-rpc-resolver.js +286 -290
- package/dist/cjs/jsonRpc/json-rpc-resolver.js.map +1 -0
- package/dist/cjs/jsonRpc/rpc-websocket-client.js +150 -207
- package/dist/cjs/jsonRpc/rpc-websocket-client.js.map +1 -0
- package/dist/cjs/jsonRpc/types/chain.js +4 -15
- package/dist/cjs/jsonRpc/types/chain.js.map +1 -0
- package/dist/cjs/jsonRpc/types/changes.js +4 -15
- package/dist/cjs/jsonRpc/types/changes.js.map +1 -0
- package/dist/cjs/jsonRpc/types/coins.js +4 -15
- package/dist/cjs/jsonRpc/types/coins.js.map +1 -0
- package/dist/cjs/jsonRpc/types/common.js +4 -15
- package/dist/cjs/jsonRpc/types/common.js.map +1 -0
- package/dist/cjs/jsonRpc/types/generated.d.ts +1 -1
- package/dist/cjs/jsonRpc/types/generated.js +4 -15
- package/dist/cjs/jsonRpc/types/generated.js.map +1 -0
- package/dist/cjs/jsonRpc/types/index.js +4 -15
- package/dist/cjs/jsonRpc/types/index.js.map +1 -0
- package/dist/cjs/jsonRpc/types/params.js +4 -15
- package/dist/cjs/jsonRpc/types/params.js.map +1 -0
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +54 -69
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js.map +1 -0
- package/dist/cjs/keypairs/ed25519/index.js +10 -26
- package/dist/cjs/keypairs/ed25519/index.js.map +1 -0
- package/dist/cjs/keypairs/ed25519/keypair.js +134 -159
- package/dist/cjs/keypairs/ed25519/keypair.js.map +1 -0
- package/dist/cjs/keypairs/ed25519/publickey.js +70 -84
- package/dist/cjs/keypairs/ed25519/publickey.js.map +1 -0
- package/dist/cjs/keypairs/index.js +21 -19
- package/dist/cjs/keypairs/index.js.map +1 -0
- package/dist/cjs/keypairs/passkey/index.js +11 -27
- package/dist/cjs/keypairs/passkey/index.js.map +1 -0
- package/dist/cjs/keypairs/passkey/keypair.js +245 -256
- package/dist/cjs/keypairs/passkey/keypair.js.map +1 -0
- package/dist/cjs/keypairs/passkey/publickey.js +163 -162
- package/dist/cjs/keypairs/passkey/publickey.js.map +1 -0
- package/dist/cjs/keypairs/passkey/types.js +4 -15
- package/dist/cjs/keypairs/passkey/types.js.map +1 -0
- package/dist/cjs/keypairs/secp256k1/index.js +10 -26
- package/dist/cjs/keypairs/secp256k1/index.js.map +1 -0
- package/dist/cjs/keypairs/secp256k1/keypair.js +129 -151
- package/dist/cjs/keypairs/secp256k1/keypair.js.map +1 -0
- package/dist/cjs/keypairs/secp256k1/publickey.js +71 -89
- package/dist/cjs/keypairs/secp256k1/publickey.js.map +1 -0
- package/dist/cjs/keypairs/secp256r1/index.js +10 -26
- package/dist/cjs/keypairs/secp256r1/index.js.map +1 -0
- package/dist/cjs/keypairs/secp256r1/keypair.js +127 -148
- package/dist/cjs/keypairs/secp256r1/keypair.js.map +1 -0
- package/dist/cjs/keypairs/secp256r1/publickey.js +72 -90
- package/dist/cjs/keypairs/secp256r1/publickey.js.map +1 -0
- package/dist/cjs/multisig/index.js +10 -26
- package/dist/cjs/multisig/index.js.map +1 -0
- package/dist/cjs/multisig/publickey.d.ts +1 -1
- package/dist/cjs/multisig/publickey.js +228 -276
- package/dist/cjs/multisig/publickey.js.map +1 -0
- package/dist/cjs/multisig/signer.js +62 -110
- package/dist/cjs/multisig/signer.js.map +1 -0
- package/dist/cjs/transactions/Arguments.d.ts +4 -4
- package/dist/cjs/transactions/Arguments.js +13 -34
- package/dist/cjs/transactions/Arguments.js.map +1 -0
- package/dist/cjs/transactions/Commands.js +111 -141
- package/dist/cjs/transactions/Commands.js.map +1 -0
- package/dist/cjs/transactions/Inputs.js +53 -82
- package/dist/cjs/transactions/Inputs.js.map +1 -0
- package/dist/cjs/transactions/ObjectCache.d.ts +8 -8
- package/dist/cjs/transactions/ObjectCache.js +204 -241
- package/dist/cjs/transactions/ObjectCache.js.map +1 -0
- package/dist/cjs/transactions/Transaction.d.ts +31 -31
- package/dist/cjs/transactions/Transaction.js +628 -719
- package/dist/cjs/transactions/Transaction.js.map +1 -0
- package/dist/cjs/transactions/TransactionData.d.ts +9 -9
- package/dist/cjs/transactions/TransactionData.js +396 -440
- package/dist/cjs/transactions/TransactionData.js.map +1 -0
- package/dist/cjs/transactions/__tests__/Transaction.test.js +169 -0
- package/dist/cjs/transactions/__tests__/Transaction.test.js.map +1 -0
- package/dist/cjs/transactions/__tests__/bcs.test.js +202 -0
- package/dist/cjs/transactions/__tests__/bcs.test.js.map +1 -0
- package/dist/cjs/transactions/data/internal.js +166 -207
- package/dist/cjs/transactions/data/internal.js.map +1 -0
- package/dist/cjs/transactions/data/v1.js +436 -495
- package/dist/cjs/transactions/data/v1.js.map +1 -0
- package/dist/cjs/transactions/data/v2.d.ts +5 -5
- package/dist/cjs/transactions/data/v2.js +94 -107
- package/dist/cjs/transactions/data/v2.js.map +1 -0
- package/dist/cjs/transactions/executor/caching.js +71 -113
- package/dist/cjs/transactions/executor/caching.js.map +1 -0
- package/dist/cjs/transactions/executor/parallel.js +339 -378
- package/dist/cjs/transactions/executor/parallel.js.map +1 -0
- package/dist/cjs/transactions/executor/queue.js +60 -80
- package/dist/cjs/transactions/executor/queue.js.map +1 -0
- package/dist/cjs/transactions/executor/serial.d.ts +4 -4
- package/dist/cjs/transactions/executor/serial.js +102 -131
- package/dist/cjs/transactions/executor/serial.js.map +1 -0
- package/dist/cjs/transactions/hash.js +17 -28
- package/dist/cjs/transactions/hash.js.map +1 -0
- package/dist/cjs/transactions/index.js +33 -49
- package/dist/cjs/transactions/index.js.map +1 -0
- package/dist/cjs/transactions/intents/CoinWithBalance.js +137 -191
- package/dist/cjs/transactions/intents/CoinWithBalance.js.map +1 -0
- package/dist/cjs/transactions/object.js +88 -111
- package/dist/cjs/transactions/object.js.map +1 -0
- package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js +20 -32
- package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js.map +1 -0
- package/dist/cjs/transactions/pure.js +38 -60
- package/dist/cjs/transactions/pure.js.map +1 -0
- package/dist/cjs/transactions/resolve.js +62 -88
- package/dist/cjs/transactions/resolve.js.map +1 -0
- package/dist/cjs/transactions/serializer.js +150 -163
- package/dist/cjs/transactions/serializer.js.map +1 -0
- package/dist/cjs/transactions/utils.d.ts +1 -1
- package/dist/cjs/transactions/utils.js +114 -125
- package/dist/cjs/transactions/utils.js.map +1 -0
- package/dist/cjs/utils/constants.js +29 -56
- package/dist/cjs/utils/constants.js.map +1 -0
- package/dist/cjs/utils/derived-objects.js +14 -30
- package/dist/cjs/utils/derived-objects.js.map +1 -0
- package/dist/cjs/utils/dynamic-fields.js +20 -37
- package/dist/cjs/utils/dynamic-fields.js.map +1 -0
- package/dist/cjs/utils/format.js +14 -30
- package/dist/cjs/utils/format.js.map +1 -0
- package/dist/cjs/utils/index.js +50 -64
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/move-registry.js +37 -35
- package/dist/cjs/utils/move-registry.js.map +1 -0
- package/dist/cjs/utils/sui-types.js +74 -68
- package/dist/cjs/utils/sui-types.js.map +1 -0
- package/dist/cjs/utils/suins.js +30 -46
- package/dist/cjs/utils/suins.js.map +1 -0
- package/dist/cjs/verify/index.js +12 -27
- package/dist/cjs/verify/index.js.map +1 -0
- package/dist/cjs/verify/verify.js +83 -110
- package/dist/cjs/verify/verify.js.map +1 -0
- package/dist/cjs/version.js +8 -25
- package/dist/cjs/version.js.map +1 -0
- package/dist/cjs/w/call/allocation.js +323 -413
- package/dist/cjs/w/call/allocation.js.map +1 -0
- package/dist/cjs/w/call/arb.js +105 -136
- package/dist/cjs/w/call/arb.js.map +1 -0
- package/dist/cjs/w/call/arbitration.js +1206 -1581
- package/dist/cjs/w/call/arbitration.js.map +1 -0
- package/dist/cjs/w/call/base.js +303 -333
- package/dist/cjs/w/call/base.js.map +1 -0
- package/dist/cjs/w/call/contact.js +335 -452
- package/dist/cjs/w/call/contact.js.map +1 -0
- package/dist/cjs/w/call/demand.js +690 -844
- package/dist/cjs/w/call/demand.js.map +1 -0
- package/dist/cjs/w/call/entity.js +167 -201
- package/dist/cjs/w/call/entity.js.map +1 -0
- package/dist/cjs/w/call/guard-ins.d.ts +1 -0
- package/dist/cjs/w/call/guard-ins.js +4376 -4384
- package/dist/cjs/w/call/guard-ins.js.map +1 -0
- package/dist/cjs/w/call/guard.d.ts +10 -0
- package/dist/cjs/w/call/guard.js +1078 -1119
- package/dist/cjs/w/call/guard.js.map +1 -0
- package/dist/cjs/w/call/index.d.ts +1 -1
- package/dist/cjs/w/call/index.js +69 -69
- package/dist/cjs/w/call/index.js.map +1 -0
- package/dist/cjs/w/call/machine.js +1105 -1419
- package/dist/cjs/w/call/machine.js.map +1 -0
- package/dist/cjs/w/call/order.js +314 -454
- package/dist/cjs/w/call/order.js.map +1 -0
- package/dist/cjs/w/call/passport.js +214 -253
- package/dist/cjs/w/call/passport.js.map +1 -0
- package/dist/cjs/w/call/payment.js +187 -224
- package/dist/cjs/w/call/payment.js.map +1 -0
- package/dist/cjs/w/call/permission.js +1183 -1294
- package/dist/cjs/w/call/permission.js.map +1 -0
- package/dist/cjs/w/call/personal.js +132 -170
- package/dist/cjs/w/call/personal.js.map +1 -0
- package/dist/cjs/w/call/progress.js +634 -794
- package/dist/cjs/w/call/progress.js.map +1 -0
- package/dist/cjs/w/call/proof.js +67 -116
- package/dist/cjs/w/call/proof.js.map +1 -0
- package/dist/cjs/w/call/repository.js +1037 -1251
- package/dist/cjs/w/call/repository.js.map +1 -0
- package/dist/cjs/w/call/resource.js +111 -131
- package/dist/cjs/w/call/resource.js.map +1 -0
- package/dist/cjs/w/call/reward.js +675 -853
- package/dist/cjs/w/call/reward.js.map +1 -0
- package/dist/cjs/w/call/service.js +1879 -2385
- package/dist/cjs/w/call/service.js.map +1 -0
- package/dist/cjs/w/call/treasury.js +841 -1138
- package/dist/cjs/w/call/treasury.js.map +1 -0
- package/dist/cjs/w/call/util.js +593 -624
- package/dist/cjs/w/call/util.js.map +1 -0
- package/dist/cjs/w/common.d.ts +1 -1
- package/dist/cjs/w/common.js +548 -518
- package/dist/cjs/w/common.js.map +1 -0
- package/dist/cjs/w/exception.js +574 -584
- package/dist/cjs/w/exception.js.map +1 -0
- package/dist/cjs/w/index.js +26 -23
- package/dist/cjs/w/index.js.map +1 -0
- package/dist/cjs/w/local/account.js +664 -741
- package/dist/cjs/w/local/account.js.map +1 -0
- package/dist/cjs/w/local/cache.js +180 -166
- package/dist/cjs/w/local/cache.js.map +1 -0
- package/dist/cjs/w/local/config.js +51 -80
- package/dist/cjs/w/local/config.js.map +1 -0
- package/dist/cjs/w/local/index.js +225 -290
- package/dist/cjs/w/local/index.js.map +1 -0
- package/dist/cjs/w/local/local.d.ts +2 -2
- package/dist/cjs/w/local/local.js +638 -646
- package/dist/cjs/w/local/local.js.map +1 -0
- package/dist/cjs/w/local/storage.js +210 -164
- package/dist/cjs/w/local/storage.js.map +1 -0
- package/dist/cjs/w/local/token.js +158 -175
- package/dist/cjs/w/local/token.js.map +1 -0
- package/dist/cjs/w/local/util.js +80 -51
- package/dist/cjs/w/local/util.js.map +1 -0
- package/dist/cjs/w/local/wip.js +1078 -802
- package/dist/cjs/w/local/wip.js.map +1 -0
- package/dist/cjs/w/messenger/crypto.js +496 -389
- package/dist/cjs/w/messenger/crypto.js.map +1 -0
- package/dist/cjs/w/messenger/index.js +53 -35
- package/dist/cjs/w/messenger/index.js.map +1 -0
- package/dist/cjs/w/messenger/messenger-api.js +1159 -1035
- package/dist/cjs/w/messenger/messenger-api.js.map +1 -0
- package/dist/cjs/w/messenger/messenger-manager.js +954 -1083
- package/dist/cjs/w/messenger/messenger-manager.js.map +1 -0
- package/dist/cjs/w/messenger/messenger.d.ts +1 -1
- package/dist/cjs/w/messenger/messenger.js +1304 -1450
- package/dist/cjs/w/messenger/messenger.js.map +1 -0
- package/dist/cjs/w/messenger/server.js +390 -512
- package/dist/cjs/w/messenger/server.js.map +1 -0
- package/dist/cjs/w/messenger/session.js +399 -403
- package/dist/cjs/w/messenger/session.js.map +1 -0
- package/dist/cjs/w/messenger/storage.js +881 -777
- package/dist/cjs/w/messenger/storage.js.map +1 -0
- package/dist/cjs/w/messenger/types.d.ts +2 -2
- package/dist/cjs/w/messenger/types.js +83 -103
- package/dist/cjs/w/messenger/types.js.map +1 -0
- package/dist/cjs/w/messenger/utils.js +29 -34
- package/dist/cjs/w/messenger/utils.js.map +1 -0
- package/dist/cjs/w/query/bult-in.js +101 -110
- package/dist/cjs/w/query/bult-in.js.map +1 -0
- package/dist/cjs/w/query/event.js +134 -146
- package/dist/cjs/w/query/event.js.map +1 -0
- package/dist/cjs/w/query/index.js +22 -20
- package/dist/cjs/w/query/index.js.map +1 -0
- package/dist/cjs/w/query/object.js +1576 -1576
- package/dist/cjs/w/query/object.js.map +1 -0
- package/dist/cjs/w/query/received.js +66 -88
- package/dist/cjs/w/query/received.js.map +1 -0
- package/dist/cjs/w/query/util.js +53 -77
- package/dist/cjs/w/query/util.js.map +1 -0
- package/dist/cjs/w/util.js +589 -675
- package/dist/cjs/w/util.js.map +1 -0
- package/dist/esm/bcs/bcs.d.ts +199 -199
- package/dist/esm/bcs/bcs.js +269 -310
- package/dist/esm/bcs/bcs.js.map +1 -0
- package/dist/esm/bcs/effects.d.ts +109 -109
- package/dist/esm/bcs/effects.js +171 -179
- package/dist/esm/bcs/effects.js.map +1 -0
- package/dist/esm/bcs/index.d.ts +1 -2584
- package/dist/esm/bcs/index.js +51 -94
- package/dist/esm/bcs/index.js.map +1 -0
- package/dist/esm/bcs/pure.js +35 -38
- package/dist/esm/bcs/pure.js.map +1 -0
- package/dist/esm/bcs/type-tag-serializer.js +98 -95
- package/dist/esm/bcs/type-tag-serializer.js.map +1 -0
- package/dist/esm/bcs/types.js +5 -5
- package/dist/esm/bcs/types.js.map +1 -0
- package/dist/esm/client/index.js +7 -23
- package/dist/esm/client/index.js.map +1 -0
- package/dist/esm/client/network.js +23 -22
- package/dist/esm/client/network.js.map +1 -0
- package/dist/esm/cryptography/index.js +9 -46
- package/dist/esm/cryptography/index.js.map +1 -0
- package/dist/esm/cryptography/intent.d.ts +1 -1
- package/dist/esm/cryptography/intent.js +18 -12
- package/dist/esm/cryptography/intent.js.map +1 -0
- package/dist/esm/cryptography/keypair.js +95 -99
- package/dist/esm/cryptography/keypair.js.map +1 -0
- package/dist/esm/cryptography/mnemonics.js +40 -24
- package/dist/esm/cryptography/mnemonics.js.map +1 -0
- package/dist/esm/cryptography/publickey.js +104 -115
- package/dist/esm/cryptography/publickey.js.map +1 -0
- package/dist/esm/cryptography/signature-scheme.js +22 -24
- package/dist/esm/cryptography/signature-scheme.js.map +1 -0
- package/dist/esm/cryptography/signature.d.ts +2 -24
- package/dist/esm/cryptography/signature.js +44 -48
- package/dist/esm/cryptography/signature.js.map +1 -0
- package/dist/esm/experimental/cache.js +61 -0
- package/dist/esm/experimental/cache.js.map +1 -0
- package/dist/esm/experimental/client.js +23 -0
- package/dist/esm/experimental/client.js.map +1 -0
- package/dist/esm/experimental/core.js +85 -0
- package/dist/esm/experimental/core.js.map +1 -0
- package/dist/esm/experimental/errors.js +27 -0
- package/dist/esm/experimental/errors.js.map +1 -0
- package/dist/esm/experimental/index.js +8 -0
- package/dist/esm/experimental/index.js.map +1 -0
- package/dist/esm/experimental/persistent-storage.js +337 -0
- package/dist/esm/experimental/persistent-storage.js.map +1 -0
- package/dist/esm/experimental/persistent-storage.test.js +198 -0
- package/dist/esm/experimental/persistent-storage.test.js.map +1 -0
- package/dist/esm/experimental/transports/utils.js +100 -0
- package/dist/esm/experimental/transports/utils.js.map +1 -0
- package/dist/esm/experimental/types.js +5 -0
- package/dist/esm/experimental/types.js.map +1 -0
- package/dist/esm/faucet/faucet.js +104 -111
- package/dist/esm/faucet/faucet.js.map +1 -0
- package/dist/esm/faucet/index.js +4 -16
- package/dist/esm/faucet/index.js.map +1 -0
- package/dist/esm/grpc/client.js +34 -34
- package/dist/esm/grpc/client.js.map +1 -0
- package/dist/esm/grpc/core.js +570 -601
- package/dist/esm/grpc/core.js.map +1 -0
- package/dist/esm/grpc/index.js +5 -6
- package/dist/esm/grpc/index.js.map +1 -0
- package/dist/esm/grpc/proto/google/protobuf/any.js +161 -111
- package/dist/esm/grpc/proto/google/protobuf/any.js.map +1 -0
- package/dist/esm/grpc/proto/google/protobuf/duration.js +99 -67
- package/dist/esm/grpc/proto/google/protobuf/duration.js.map +1 -0
- package/dist/esm/grpc/proto/google/protobuf/empty.js +46 -7
- package/dist/esm/grpc/proto/google/protobuf/empty.js.map +1 -0
- package/dist/esm/grpc/proto/google/protobuf/field_mask.js +90 -52
- package/dist/esm/grpc/proto/google/protobuf/field_mask.js.map +1 -0
- package/dist/esm/grpc/proto/google/protobuf/struct.js +258 -190
- package/dist/esm/grpc/proto/google/protobuf/struct.js.map +1 -0
- package/dist/esm/grpc/proto/google/protobuf/timestamp.js +144 -108
- package/dist/esm/grpc/proto/google/protobuf/timestamp.js.map +1 -0
- package/dist/esm/grpc/proto/google/rpc/error_details.js +313 -267
- package/dist/esm/grpc/proto/google/rpc/error_details.js.map +1 -0
- package/dist/esm/grpc/proto/google/rpc/status.js +45 -28
- package/dist/esm/grpc/proto/google/rpc/status.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/argument.js +80 -47
- package/dist/esm/grpc/proto/sui/rpc/v2/argument.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js +41 -29
- package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js +34 -22
- package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js +61 -49
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js +72 -57
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js +173 -139
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/effects.js +358 -268
- package/dist/esm/grpc/proto/sui/rpc/v2/effects.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js +72 -60
- package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js +29 -9
- package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/event.js +74 -59
- package/dist/esm/grpc/proto/sui/rpc/v2/event.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js +69 -57
- package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js +861 -474
- package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js +52 -40
- package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/input.js +98 -61
- package/dist/esm/grpc/proto/sui/rpc/v2/input.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js +71 -56
- package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js +65 -100
- package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js +365 -306
- package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js +585 -442
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js +42 -59
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js +226 -191
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js +28 -33
- package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js +129 -107
- package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/object.js +100 -85
- package/dist/esm/grpc/proto/sui/rpc/v2/object.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js +42 -30
- package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/owner.js +72 -40
- package/dist/esm/grpc/proto/sui/rpc/v2/owner.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js +42 -38
- package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/signature.js +544 -481
- package/dist/esm/grpc/proto/sui/rpc/v2/signature.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js +52 -13
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +23 -28
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js +74 -60
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js +49 -66
- package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js +623 -490
- package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js +33 -32
- package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js +50 -36
- package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js +737 -701
- package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js +1177 -917
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +28 -27
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +1 -0
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js +169 -133
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +1 -0
- package/dist/esm/index.js +21 -107
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/jsonRpc/client.js +646 -727
- package/dist/esm/jsonRpc/client.js.map +1 -0
- package/dist/esm/jsonRpc/core.d.ts +7 -7
- package/dist/esm/jsonRpc/core.js +550 -581
- package/dist/esm/jsonRpc/core.js.map +1 -0
- package/dist/esm/jsonRpc/errors.js +36 -41
- package/dist/esm/jsonRpc/errors.js.map +1 -0
- package/dist/esm/jsonRpc/http-transport.js +65 -93
- package/dist/esm/jsonRpc/http-transport.js.map +1 -0
- package/dist/esm/jsonRpc/index.js +6 -20
- package/dist/esm/jsonRpc/index.js.map +1 -0
- package/dist/esm/jsonRpc/json-rpc-resolver.js +281 -276
- package/dist/esm/jsonRpc/json-rpc-resolver.js.map +1 -0
- package/dist/esm/jsonRpc/rpc-websocket-client.js +147 -189
- package/dist/esm/jsonRpc/rpc-websocket-client.js.map +1 -0
- package/dist/esm/jsonRpc/types/chain.js +4 -0
- package/dist/esm/jsonRpc/types/chain.js.map +1 -0
- package/dist/esm/jsonRpc/types/changes.js +4 -0
- package/dist/esm/jsonRpc/types/changes.js.map +1 -0
- package/dist/esm/jsonRpc/types/coins.js +4 -0
- package/dist/esm/jsonRpc/types/coins.js.map +1 -0
- package/dist/esm/jsonRpc/types/common.js +4 -0
- package/dist/esm/jsonRpc/types/common.js.map +1 -0
- package/dist/esm/jsonRpc/types/generated.d.ts +1 -1
- package/dist/esm/jsonRpc/types/generated.js +4 -0
- package/dist/esm/jsonRpc/types/generated.js.map +1 -0
- package/dist/esm/jsonRpc/types/index.js +4 -0
- package/dist/esm/jsonRpc/types/index.js.map +1 -0
- package/dist/esm/jsonRpc/types/params.js +4 -0
- package/dist/esm/jsonRpc/types/params.js.map +1 -0
- package/dist/esm/keypairs/ed25519/ed25519-hd-key.js +49 -48
- package/dist/esm/keypairs/ed25519/ed25519-hd-key.js.map +1 -0
- package/dist/esm/keypairs/ed25519/index.js +5 -10
- package/dist/esm/keypairs/ed25519/index.js.map +1 -0
- package/dist/esm/keypairs/ed25519/keypair.js +128 -146
- package/dist/esm/keypairs/ed25519/keypair.js.map +1 -0
- package/dist/esm/keypairs/ed25519/publickey.js +64 -67
- package/dist/esm/keypairs/ed25519/publickey.js.map +1 -0
- package/dist/esm/keypairs/index.js +3 -0
- package/dist/esm/keypairs/index.js.map +1 -0
- package/dist/esm/keypairs/passkey/index.js +5 -12
- package/dist/esm/keypairs/passkey/index.js.map +1 -0
- package/dist/esm/keypairs/passkey/keypair.js +236 -243
- package/dist/esm/keypairs/passkey/keypair.js.map +1 -0
- package/dist/esm/keypairs/passkey/publickey.js +154 -140
- package/dist/esm/keypairs/passkey/publickey.js.map +1 -0
- package/dist/esm/keypairs/passkey/types.js +4 -0
- package/dist/esm/keypairs/passkey/types.js.map +1 -0
- package/dist/esm/keypairs/secp256k1/index.js +5 -10
- package/dist/esm/keypairs/secp256k1/index.js.map +1 -0
- package/dist/esm/keypairs/secp256k1/keypair.js +120 -134
- package/dist/esm/keypairs/secp256k1/keypair.js.map +1 -0
- package/dist/esm/keypairs/secp256k1/publickey.js +64 -71
- package/dist/esm/keypairs/secp256k1/publickey.js.map +1 -0
- package/dist/esm/keypairs/secp256r1/index.js +5 -10
- package/dist/esm/keypairs/secp256r1/index.js.map +1 -0
- package/dist/esm/keypairs/secp256r1/keypair.js +118 -131
- package/dist/esm/keypairs/secp256r1/keypair.js.map +1 -0
- package/dist/esm/keypairs/secp256r1/publickey.js +63 -66
- package/dist/esm/keypairs/secp256r1/publickey.js.map +1 -0
- package/dist/esm/multisig/index.js +5 -10
- package/dist/esm/multisig/index.js.map +1 -0
- package/dist/esm/multisig/publickey.d.ts +1 -1
- package/dist/esm/multisig/publickey.js +216 -253
- package/dist/esm/multisig/publickey.js.map +1 -0
- package/dist/esm/multisig/signer.js +57 -89
- package/dist/esm/multisig/signer.js.map +1 -0
- package/dist/esm/transactions/Arguments.d.ts +4 -4
- package/dist/esm/transactions/Arguments.js +9 -13
- package/dist/esm/transactions/Arguments.js.map +1 -0
- package/dist/esm/transactions/Commands.js +105 -118
- package/dist/esm/transactions/Commands.js.map +1 -0
- package/dist/esm/transactions/Inputs.js +49 -61
- package/dist/esm/transactions/Inputs.js.map +1 -0
- package/dist/esm/transactions/ObjectCache.d.ts +8 -8
- package/dist/esm/transactions/ObjectCache.js +200 -223
- package/dist/esm/transactions/ObjectCache.js.map +1 -0
- package/dist/esm/transactions/Transaction.d.ts +32 -32
- package/dist/esm/transactions/Transaction.js +611 -696
- package/dist/esm/transactions/Transaction.js.map +1 -0
- package/dist/esm/transactions/TransactionData.d.ts +9 -9
- package/dist/esm/transactions/TransactionData.js +386 -415
- package/dist/esm/transactions/TransactionData.js.map +1 -0
- package/dist/esm/transactions/__tests__/Transaction.test.js +167 -0
- package/dist/esm/transactions/__tests__/Transaction.test.js.map +1 -0
- package/dist/esm/transactions/__tests__/bcs.test.js +200 -0
- package/dist/esm/transactions/__tests__/bcs.test.js.map +1 -0
- package/dist/esm/transactions/data/internal.js +158 -205
- package/dist/esm/transactions/data/internal.js.map +1 -0
- package/dist/esm/transactions/data/v1.js +419 -487
- package/dist/esm/transactions/data/v1.js.map +1 -0
- package/dist/esm/transactions/data/v2.d.ts +5 -5
- package/dist/esm/transactions/data/v2.js +89 -107
- package/dist/esm/transactions/data/v2.js.map +1 -0
- package/dist/esm/transactions/executor/caching.d.ts +2 -2
- package/dist/esm/transactions/executor/caching.js +66 -93
- package/dist/esm/transactions/executor/caching.js.map +1 -0
- package/dist/esm/transactions/executor/parallel.js +329 -352
- package/dist/esm/transactions/executor/parallel.js.map +1 -0
- package/dist/esm/transactions/executor/queue.js +58 -64
- package/dist/esm/transactions/executor/queue.js.map +1 -0
- package/dist/esm/transactions/executor/serial.d.ts +5 -5
- package/dist/esm/transactions/executor/serial.js +96 -110
- package/dist/esm/transactions/executor/serial.js.map +1 -0
- package/dist/esm/transactions/hash.js +15 -9
- package/dist/esm/transactions/hash.js.map +1 -0
- package/dist/esm/transactions/index.js +15 -41
- package/dist/esm/transactions/index.js.map +1 -0
- package/dist/esm/transactions/intents/CoinWithBalance.js +127 -165
- package/dist/esm/transactions/intents/CoinWithBalance.js.map +1 -0
- package/dist/esm/transactions/object.js +86 -92
- package/dist/esm/transactions/object.js.map +1 -0
- package/dist/esm/transactions/plugins/NamedPackagesPlugin.js +18 -15
- package/dist/esm/transactions/plugins/NamedPackagesPlugin.js.map +1 -0
- package/dist/esm/transactions/pure.js +34 -39
- package/dist/esm/transactions/pure.js.map +1 -0
- package/dist/esm/transactions/resolve.js +58 -69
- package/dist/esm/transactions/resolve.js.map +1 -0
- package/dist/esm/transactions/serializer.js +145 -144
- package/dist/esm/transactions/serializer.js.map +1 -0
- package/dist/esm/transactions/utils.d.ts +1 -1
- package/dist/esm/transactions/utils.js +110 -109
- package/dist/esm/transactions/utils.js.map +1 -0
- package/dist/esm/utils/constants.js +26 -36
- package/dist/esm/utils/constants.js.map +1 -0
- package/dist/esm/utils/derived-objects.js +11 -10
- package/dist/esm/utils/derived-objects.js.map +1 -0
- package/dist/esm/utils/dynamic-fields.js +16 -16
- package/dist/esm/utils/dynamic-fields.js.map +1 -0
- package/dist/esm/utils/format.js +13 -13
- package/dist/esm/utils/format.js.map +1 -0
- package/dist/esm/utils/index.js +15 -76
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/move-registry.js +34 -17
- package/dist/esm/utils/move-registry.js.map +1 -0
- package/dist/esm/utils/sui-types.js +70 -54
- package/dist/esm/utils/sui-types.js.map +1 -0
- package/dist/esm/utils/suins.js +29 -29
- package/dist/esm/utils/suins.js.map +1 -0
- package/dist/esm/verify/index.js +5 -14
- package/dist/esm/verify/index.js.map +1 -0
- package/dist/esm/verify/verify.js +76 -93
- package/dist/esm/verify/verify.js.map +1 -0
- package/dist/esm/version.js +6 -6
- package/dist/esm/version.js.map +1 -0
- package/dist/esm/w/call/allocation.js +307 -402
- package/dist/esm/w/call/allocation.js.map +1 -0
- package/dist/esm/w/call/arb.js +100 -129
- package/dist/esm/w/call/arb.js.map +1 -0
- package/dist/esm/w/call/arbitration.js +1170 -1568
- package/dist/esm/w/call/arbitration.js.map +1 -0
- package/dist/esm/w/call/base.js +288 -315
- package/dist/esm/w/call/base.js.map +1 -0
- package/dist/esm/w/call/contact.js +318 -442
- package/dist/esm/w/call/contact.js.map +1 -0
- package/dist/esm/w/call/demand.js +673 -841
- package/dist/esm/w/call/demand.js.map +1 -0
- package/dist/esm/w/call/entity.js +162 -203
- package/dist/esm/w/call/entity.js.map +1 -0
- package/dist/esm/w/call/guard-ins.d.ts +1 -0
- package/dist/esm/w/call/guard-ins.js +4373 -4366
- package/dist/esm/w/call/guard-ins.js.map +1 -0
- package/dist/esm/w/call/guard.d.ts +10 -0
- package/dist/esm/w/call/guard.js +1061 -1115
- package/dist/esm/w/call/guard.js.map +1 -0
- package/dist/esm/w/call/index.d.ts +1 -1
- package/dist/esm/w/call/index.js +24 -54
- package/dist/esm/w/call/index.js.map +1 -0
- package/dist/esm/w/call/machine.js +1086 -1433
- package/dist/esm/w/call/machine.js.map +1 -0
- package/dist/esm/w/call/order.js +301 -448
- package/dist/esm/w/call/order.js.map +1 -0
- package/dist/esm/w/call/passport.js +204 -240
- package/dist/esm/w/call/passport.js.map +1 -0
- package/dist/esm/w/call/payment.js +177 -215
- package/dist/esm/w/call/payment.js.map +1 -0
- package/dist/esm/w/call/permission.js +1172 -1320
- package/dist/esm/w/call/permission.js.map +1 -0
- package/dist/esm/w/call/personal.js +121 -156
- package/dist/esm/w/call/personal.js.map +1 -0
- package/dist/esm/w/call/progress.js +625 -797
- package/dist/esm/w/call/progress.js.map +1 -0
- package/dist/esm/w/call/proof.js +61 -103
- package/dist/esm/w/call/proof.js.map +1 -0
- package/dist/esm/w/call/repository.js +1017 -1251
- package/dist/esm/w/call/repository.js.map +1 -0
- package/dist/esm/w/call/resource.js +108 -124
- package/dist/esm/w/call/resource.js.map +1 -0
- package/dist/esm/w/call/reward.js +660 -847
- package/dist/esm/w/call/reward.js.map +1 -0
- package/dist/esm/w/call/service.js +1849 -2400
- package/dist/esm/w/call/service.js.map +1 -0
- package/dist/esm/w/call/treasury.js +815 -1125
- package/dist/esm/w/call/treasury.js.map +1 -0
- package/dist/esm/w/call/util.js +553 -576
- package/dist/esm/w/call/util.js.map +1 -0
- package/dist/esm/w/common.d.ts +1 -1
- package/dist/esm/w/common.js +579 -580
- package/dist/esm/w/common.js.map +1 -0
- package/dist/esm/w/exception.js +570 -573
- package/dist/esm/w/exception.js.map +1 -0
- package/dist/esm/w/index.js +4 -0
- package/dist/esm/w/index.js.map +1 -0
- package/dist/esm/w/local/account.js +652 -709
- package/dist/esm/w/local/account.js.map +1 -0
- package/dist/esm/w/local/cache.js +176 -147
- package/dist/esm/w/local/cache.js.map +1 -0
- package/dist/esm/w/local/config.js +46 -60
- package/dist/esm/w/local/config.js.map +1 -0
- package/dist/esm/w/local/index.js +196 -273
- package/dist/esm/w/local/index.js.map +1 -0
- package/dist/esm/w/local/local.d.ts +2 -2
- package/dist/esm/w/local/local.js +631 -626
- package/dist/esm/w/local/local.js.map +1 -0
- package/dist/esm/w/local/storage.js +168 -136
- package/dist/esm/w/local/storage.js.map +1 -0
- package/dist/esm/w/local/token.js +149 -151
- package/dist/esm/w/local/token.js.map +1 -0
- package/dist/esm/w/local/util.js +45 -22
- package/dist/esm/w/local/util.js.map +1 -0
- package/dist/esm/w/local/wip.js +1038 -781
- package/dist/esm/w/local/wip.js.map +1 -0
- package/dist/esm/w/messenger/crypto.js +491 -387
- package/dist/esm/w/messenger/crypto.js.map +1 -0
- package/dist/esm/w/messenger/index.js +27 -24
- package/dist/esm/w/messenger/index.js.map +1 -0
- package/dist/esm/w/messenger/messenger-api.js +1111 -1017
- package/dist/esm/w/messenger/messenger-api.js.map +1 -0
- package/dist/esm/w/messenger/messenger-manager.js +944 -1052
- package/dist/esm/w/messenger/messenger-manager.js.map +1 -0
- package/dist/esm/w/messenger/messenger.d.ts +1 -1
- package/dist/esm/w/messenger/messenger.js +1258 -1421
- package/dist/esm/w/messenger/messenger.js.map +1 -0
- package/dist/esm/w/messenger/server.js +388 -499
- package/dist/esm/w/messenger/server.js.map +1 -0
- package/dist/esm/w/messenger/session.js +394 -399
- package/dist/esm/w/messenger/session.js.map +1 -0
- package/dist/esm/w/messenger/storage.js +840 -751
- package/dist/esm/w/messenger/storage.js.map +1 -0
- package/dist/esm/w/messenger/types.d.ts +2 -2
- package/dist/esm/w/messenger/types.js +80 -85
- package/dist/esm/w/messenger/types.js.map +1 -0
- package/dist/esm/w/messenger/utils.js +28 -16
- package/dist/esm/w/messenger/utils.js.map +1 -0
- package/dist/esm/w/query/bult-in.js +95 -100
- package/dist/esm/w/query/bult-in.js.map +1 -0
- package/dist/esm/w/query/event.js +128 -125
- package/dist/esm/w/query/event.js.map +1 -0
- package/dist/esm/w/query/index.js +3 -0
- package/dist/esm/w/query/index.js.map +1 -0
- package/dist/esm/w/query/object.js +1560 -1574
- package/dist/esm/w/query/object.js.map +1 -0
- package/dist/esm/w/query/received.js +57 -63
- package/dist/esm/w/query/received.js.map +1 -0
- package/dist/esm/w/query/util.js +48 -56
- package/dist/esm/w/query/util.js.map +1 -0
- package/dist/esm/w/util.js +578 -673
- package/dist/esm/w/util.js.map +1 -0
- package/package.json +14 -9
- package/dist/cjs/graphql/client.js +0 -98
- package/dist/cjs/graphql/core.js +0 -506
- package/dist/cjs/graphql/generated/2024.1/tada-env.js +0 -13141
- package/dist/cjs/graphql/generated/2024.1/tsconfig.tada.js +0 -11
- package/dist/cjs/graphql/generated/2024.4/tada-env.js +0 -13287
- package/dist/cjs/graphql/generated/2024.4/tsconfig.tada.js +0 -11
- package/dist/cjs/graphql/generated/latest/tada-env.js +0 -12925
- package/dist/cjs/graphql/generated/latest/tsconfig.tada.js +0 -11
- package/dist/cjs/graphql/generated/queries.js +0 -807
- package/dist/cjs/graphql/index.js +0 -25
- package/dist/cjs/graphql/schemas/2024.1/index.js +0 -28
- package/dist/cjs/graphql/schemas/2024.4/index.js +0 -28
- package/dist/cjs/graphql/schemas/latest/index.js +0 -28
- package/dist/cjs/graphql/types.js +0 -16
- package/dist/cjs/package.json +0 -5
- package/dist/cjs/w/local/.eslintrc.js +0 -15
- package/dist/cjs/w/messenger/.eslintrc.js +0 -15
- package/dist/cjs/zklogin/address.js +0 -93
- package/dist/cjs/zklogin/bcs.js +0 -41
- package/dist/cjs/zklogin/index.js +0 -45
- package/dist/cjs/zklogin/jwt-decode.js +0 -88
- package/dist/cjs/zklogin/jwt-utils.js +0 -128
- package/dist/cjs/zklogin/nonce.js +0 -60
- package/dist/cjs/zklogin/poseidon.js +0 -64
- package/dist/cjs/zklogin/publickey.js +0 -281
- package/dist/cjs/zklogin/signature.js +0 -57
- package/dist/cjs/zklogin/utils.js +0 -98
- package/dist/esm/graphql/client.js +0 -79
- package/dist/esm/graphql/core.js +0 -505
- package/dist/esm/graphql/generated/2024.1/tada-env.js +0 -13121
- package/dist/esm/graphql/generated/2024.1/tsconfig.tada.js +0 -16
- package/dist/esm/graphql/generated/2024.4/tada-env.js +0 -13267
- package/dist/esm/graphql/generated/2024.4/tsconfig.tada.js +0 -16
- package/dist/esm/graphql/generated/latest/tada-env.js +0 -12905
- package/dist/esm/graphql/generated/latest/tsconfig.tada.js +0 -16
- package/dist/esm/graphql/generated/queries.js +0 -788
- package/dist/esm/graphql/index.js +0 -8
- package/dist/esm/graphql/schemas/2024.1/index.js +0 -8
- package/dist/esm/graphql/schemas/2024.4/index.js +0 -8
- package/dist/esm/graphql/schemas/latest/index.js +0 -8
- package/dist/esm/graphql/types.js +0 -0
- package/dist/esm/package.json +0 -5
- package/dist/esm/w/local/.eslintrc.js +0 -23
- package/dist/esm/w/messenger/.eslintrc.js +0 -23
- package/dist/esm/zklogin/address.js +0 -78
- package/dist/esm/zklogin/bcs.js +0 -21
- package/dist/esm/zklogin/index.js +0 -38
- package/dist/esm/zklogin/jwt-decode.js +0 -68
- package/dist/esm/zklogin/jwt-utils.js +0 -108
- package/dist/esm/zklogin/nonce.js +0 -40
- package/dist/esm/zklogin/poseidon.js +0 -61
- package/dist/esm/zklogin/publickey.js +0 -265
- package/dist/esm/zklogin/signature.js +0 -37
- package/dist/esm/zklogin/utils.js +0 -78
- package/dist/tsconfig.esm.tsbuildinfo +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,448 +1,555 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
verifyMessage: () => verifyMessage,
|
|
40
|
-
verifySingleMerkleRoot: () => verifySingleMerkleRoot,
|
|
41
|
-
verifyWtsMessages: () => verifyWtsMessages
|
|
42
|
-
});
|
|
43
|
-
module.exports = __toCommonJS(crypto_exports);
|
|
44
|
-
var import_ed25519 = require("@noble/curves/ed25519");
|
|
45
|
-
var import_sha256 = require("@noble/hashes/sha256");
|
|
46
|
-
var import_utils = require("@noble/hashes/utils");
|
|
2
|
+
// Copyright (c) Wowok.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.recoverXed25519FromX25519PrivateKey = recoverXed25519FromX25519PrivateKey;
|
|
6
|
+
exports.hashSha256 = hashSha256;
|
|
7
|
+
exports.hashMessage = hashMessage;
|
|
8
|
+
exports.hashPlaintext = hashPlaintext;
|
|
9
|
+
exports.generateNonce = generateNonce;
|
|
10
|
+
exports.bytesToBase64 = bytesToBase64;
|
|
11
|
+
exports.base64ToBytes = base64ToBytes;
|
|
12
|
+
exports.bytesToHex = bytesToHex;
|
|
13
|
+
exports.hexToBytes = hexToBytes;
|
|
14
|
+
exports.arrayBufferToUint8Array = arrayBufferToUint8Array;
|
|
15
|
+
exports.uint8ArrayToArrayBuffer = uint8ArrayToArrayBuffer;
|
|
16
|
+
exports.bufferEqual = bufferEqual;
|
|
17
|
+
exports.calculateMerkleLeafHash = calculateMerkleLeafHash;
|
|
18
|
+
exports.merkleHash = merkleHash;
|
|
19
|
+
exports.computeNewRoot = computeNewRoot;
|
|
20
|
+
exports.verifyMerkleProof = verifyMerkleProof;
|
|
21
|
+
exports.verifyMerkleChain = verifyMerkleChain;
|
|
22
|
+
exports.verifySingleMerkleRoot = verifySingleMerkleRoot;
|
|
23
|
+
exports.verifyMessage = verifyMessage;
|
|
24
|
+
exports.verifyEd25519Signature = verifyEd25519Signature;
|
|
25
|
+
exports.verifyWtsMessages = verifyWtsMessages;
|
|
26
|
+
/**
|
|
27
|
+
* Messenger 加密工具模块
|
|
28
|
+
*
|
|
29
|
+
* 基于 Signal Protocol (双棘轮算法) 的端到端加密实现
|
|
30
|
+
* 使用 XEd25519 进行密钥转换,兼容 Ed25519 签名
|
|
31
|
+
*/
|
|
32
|
+
const ed25519_1 = require("@noble/curves/ed25519");
|
|
33
|
+
const sha256_1 = require("@noble/hashes/sha256");
|
|
34
|
+
const utils_1 = require("@noble/hashes/utils");
|
|
35
|
+
// ========== 签名与验证(内部函数) ==========
|
|
36
|
+
/**
|
|
37
|
+
* 使用 Ed25519 公钥验证签名(内部使用)
|
|
38
|
+
*/
|
|
47
39
|
function verifyEd25519(publicKey, message, signature) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
40
|
+
try {
|
|
41
|
+
return ed25519_1.ed25519.verify(signature, message, publicKey);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
53
46
|
}
|
|
47
|
+
// ========== 密钥生成 ==========
|
|
48
|
+
/**
|
|
49
|
+
* 从 X25519 私钥恢复 XEd25519 密钥对
|
|
50
|
+
*/
|
|
54
51
|
function recoverXed25519FromX25519PrivateKey(x25519PrivateKey) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
52
|
+
const x25519PublicKey = ed25519_1.x25519.getPublicKey(x25519PrivateKey);
|
|
53
|
+
const ed25519PrivateKey = x25519PrivateKey;
|
|
54
|
+
const ed25519PublicKey = ed25519_1.ed25519.getPublicKey(ed25519PrivateKey);
|
|
55
|
+
return {
|
|
56
|
+
x25519PublicKey,
|
|
57
|
+
x25519PrivateKey,
|
|
58
|
+
ed25519PrivateKey,
|
|
59
|
+
ed25519PublicKey,
|
|
60
|
+
};
|
|
64
61
|
}
|
|
62
|
+
// ========== 哈希函数 ==========
|
|
63
|
+
/**
|
|
64
|
+
* 计算 SHA-256 哈希
|
|
65
|
+
*/
|
|
65
66
|
function hashSha256(data) {
|
|
66
|
-
|
|
67
|
+
return (0, sha256_1.sha256)(data);
|
|
67
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* 计算消息哈希(用于 Merkle Tree 叶子节点)
|
|
71
|
+
*/
|
|
68
72
|
function hashMessage(data) {
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
const hash = (0, sha256_1.sha256)(new TextEncoder().encode(data));
|
|
74
|
+
return bytesToHex(hash);
|
|
71
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* 计算明文哈希(用于 Merkle Tree 证明)
|
|
78
|
+
* plaintext_hash = SHA256(plaintext + client_timestamp + guardAddress + passportAddress)
|
|
79
|
+
*/
|
|
72
80
|
function hashPlaintext(plaintext, clientTimestamp, guardAddress, passportAddress, lastReceivedLeafIndex) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
let data = plaintext + clientTimestamp.toString();
|
|
82
|
+
// 【新增】包含 lastReceivedLeafIndex 在哈希计算中
|
|
83
|
+
if (lastReceivedLeafIndex !== undefined && lastReceivedLeafIndex >= 0) {
|
|
84
|
+
data += lastReceivedLeafIndex.toString();
|
|
85
|
+
}
|
|
86
|
+
if (guardAddress) {
|
|
87
|
+
data += guardAddress;
|
|
88
|
+
}
|
|
89
|
+
if (passportAddress) {
|
|
90
|
+
data += passportAddress;
|
|
91
|
+
}
|
|
92
|
+
const hash = (0, sha256_1.sha256)(new TextEncoder().encode(data));
|
|
93
|
+
return "0x" + bytesToHex(hash);
|
|
85
94
|
}
|
|
95
|
+
// ========== 工具函数 ==========
|
|
96
|
+
/**
|
|
97
|
+
* 生成随机 nonce
|
|
98
|
+
*/
|
|
86
99
|
function generateNonce() {
|
|
87
|
-
|
|
100
|
+
return bytesToHex((0, utils_1.randomBytes)(16));
|
|
88
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Uint8Array 转 Base64
|
|
104
|
+
*/
|
|
89
105
|
function bytesToBase64(bytes) {
|
|
90
|
-
|
|
106
|
+
return Buffer.from(bytes).toString("base64");
|
|
91
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Base64 转 Uint8Array
|
|
110
|
+
*/
|
|
92
111
|
function base64ToBytes(base64) {
|
|
93
|
-
|
|
112
|
+
return new Uint8Array(Buffer.from(base64, "base64"));
|
|
94
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Uint8Array 转 Hex
|
|
116
|
+
*/
|
|
95
117
|
function bytesToHex(bytes) {
|
|
96
|
-
|
|
118
|
+
return Buffer.from(bytes).toString("hex");
|
|
97
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Hex 转 Uint8Array
|
|
122
|
+
*/
|
|
98
123
|
function hexToBytes(hex) {
|
|
99
|
-
|
|
124
|
+
return new Uint8Array(Buffer.from(hex, "hex"));
|
|
100
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* ArrayBuffer 转 Uint8Array
|
|
128
|
+
*/
|
|
101
129
|
function arrayBufferToUint8Array(buf) {
|
|
102
|
-
|
|
130
|
+
return new Uint8Array(buf);
|
|
103
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Uint8Array 转 ArrayBuffer
|
|
134
|
+
*/
|
|
104
135
|
function uint8ArrayToArrayBuffer(arr) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
arr.byteOffset + arr.byteLength
|
|
108
|
-
);
|
|
109
|
-
return result;
|
|
136
|
+
const result = arr.buffer.slice(arr.byteOffset, arr.byteOffset + arr.byteLength);
|
|
137
|
+
return result;
|
|
110
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* 比较两个 ArrayBuffer 是否相等
|
|
141
|
+
*/
|
|
111
142
|
function bufferEqual(a, b) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
143
|
+
if (a.byteLength !== b.byteLength)
|
|
144
|
+
return false;
|
|
145
|
+
const va = new Uint8Array(a);
|
|
146
|
+
const vb = new Uint8Array(b);
|
|
147
|
+
for (let i = 0; i < va.length; i++) {
|
|
148
|
+
if (va[i] !== vb[i])
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
return true;
|
|
119
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* 计算 Merkle 叶子哈希(与服务器端 calculate_message_hash 一致)
|
|
155
|
+
* leaf_hash = SHA256(plaintext_hash.as_bytes() + server_timestamp.to_le_bytes())
|
|
156
|
+
*/
|
|
120
157
|
function calculateMerkleLeafHash(plaintextHash, serverTimestamp) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
plaintextHashBytes
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const hash = (0, import_sha256.sha256)(combined);
|
|
132
|
-
return "0x" + bytesToHex(hash);
|
|
158
|
+
const plaintextHashBytes = new TextEncoder().encode(plaintextHash);
|
|
159
|
+
const timestampBuffer = new ArrayBuffer(8);
|
|
160
|
+
const timestampView = new DataView(timestampBuffer);
|
|
161
|
+
timestampView.setBigUint64(0, BigInt(serverTimestamp), true);
|
|
162
|
+
const timestampBytes = new Uint8Array(timestampBuffer);
|
|
163
|
+
const combined = new Uint8Array(plaintextHashBytes.length + timestampBytes.length);
|
|
164
|
+
combined.set(plaintextHashBytes);
|
|
165
|
+
combined.set(timestampBytes, plaintextHashBytes.length);
|
|
166
|
+
const hash = (0, sha256_1.sha256)(combined);
|
|
167
|
+
return "0x" + bytesToHex(hash);
|
|
133
168
|
}
|
|
169
|
+
// ========== Merkle Tree 工具 ==========
|
|
170
|
+
/**
|
|
171
|
+
* 计算两个哈希的父节点哈希
|
|
172
|
+
*/
|
|
134
173
|
function merkleHash(left, right) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
174
|
+
const leftBytes = hexToBytes(left.replace(/^0x/, ""));
|
|
175
|
+
const rightBytes = hexToBytes(right.replace(/^0x/, ""));
|
|
176
|
+
const combined = new Uint8Array(leftBytes.length + rightBytes.length);
|
|
177
|
+
combined.set(leftBytes);
|
|
178
|
+
combined.set(rightBytes, leftBytes.length);
|
|
179
|
+
return "0x" + bytesToHex((0, sha256_1.sha256)(combined));
|
|
141
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* 计算新的 Merkle Root(与服务器保持一致)
|
|
183
|
+
*
|
|
184
|
+
* 服务器算法:
|
|
185
|
+
* new_root = SHA256(prev_root + leaf_hash + leaf_index_le_bytes)
|
|
186
|
+
*
|
|
187
|
+
* @param prevRoot 前一个 Root(hex 格式,带或不带 0x 前缀)
|
|
188
|
+
* @param leafHash 叶子节点哈希(hex 格式,带或不带 0x 前缀)
|
|
189
|
+
* @param leafIndex 叶子节点索引
|
|
190
|
+
* @returns 新的 Root(带 0x 前缀的 hex)
|
|
191
|
+
*/
|
|
142
192
|
function computeNewRoot(prevRoot, leafHash, leafIndex) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
193
|
+
// 与服务器端一致:直接对 hex 字符串编码(而不是解码 hex)
|
|
194
|
+
const prevRootBytes = new TextEncoder().encode(prevRoot);
|
|
195
|
+
const leafHashBytes = new TextEncoder().encode(leafHash);
|
|
196
|
+
// leaf_index 使用小端字节序 (u32)
|
|
197
|
+
const leafIndexBuffer = new ArrayBuffer(4);
|
|
198
|
+
const leafIndexView = new DataView(leafIndexBuffer);
|
|
199
|
+
leafIndexView.setUint32(0, leafIndex, true); // true = little endian
|
|
200
|
+
const leafIndexBytes = new Uint8Array(leafIndexBuffer);
|
|
201
|
+
// 组合:prev_root + leaf_hash + leaf_index
|
|
202
|
+
const combined = new Uint8Array(prevRootBytes.length + leafHashBytes.length + leafIndexBytes.length);
|
|
203
|
+
combined.set(prevRootBytes);
|
|
204
|
+
combined.set(leafHashBytes, prevRootBytes.length);
|
|
205
|
+
combined.set(leafIndexBytes, prevRootBytes.length + leafHashBytes.length);
|
|
206
|
+
return "0x" + bytesToHex((0, sha256_1.sha256)(combined));
|
|
156
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* 验证 Merkle Proof
|
|
210
|
+
*/
|
|
157
211
|
function verifyMerkleProof(leafHash, proof) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
212
|
+
let current = leafHash;
|
|
213
|
+
for (let i = 0; i < proof.siblings.length; i++) {
|
|
214
|
+
if (proof.indices[i] === 0) {
|
|
215
|
+
// 当前是左子节点
|
|
216
|
+
current = merkleHash(current, proof.siblings[i]);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
// 当前是右子节点
|
|
220
|
+
current = merkleHash(proof.siblings[i], current);
|
|
221
|
+
}
|
|
164
222
|
}
|
|
165
|
-
|
|
166
|
-
return current === proof.root;
|
|
223
|
+
return current === proof.root;
|
|
167
224
|
}
|
|
225
|
+
/**
|
|
226
|
+
* 验证 Merkle Root 链的完整性和时序性
|
|
227
|
+
*
|
|
228
|
+
* 客户端使用此函数独立校验消息链的完整性,通过相同的算法核对 Merkle Tree root 的前后关系
|
|
229
|
+
*
|
|
230
|
+
* @param messages 按顺序排列的消息列表(按 leafIndex 排序)
|
|
231
|
+
* @param initialRoot 初始 Root(可选,默认为全0)
|
|
232
|
+
* @returns 验证结果
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```typescript
|
|
236
|
+
* const messages = [
|
|
237
|
+
* { leafIndex: 0, prevRoot: "0x00...", newRoot: "0xabc...", plaintextHash: "0x123..." },
|
|
238
|
+
* { leafIndex: 1, prevRoot: "0xabc...", newRoot: "0xdef...", plaintextHash: "0x456..." },
|
|
239
|
+
* ];
|
|
240
|
+
* const result = verifyMerkleChain(messages);
|
|
241
|
+
* if (result.valid) {
|
|
242
|
+
* console.log("Merkle 链验证通过");
|
|
243
|
+
* } else {
|
|
244
|
+
* console.error("验证失败:", result.error);
|
|
245
|
+
* }
|
|
246
|
+
* ```
|
|
247
|
+
*/
|
|
168
248
|
function verifyMerkleChain(messages, initialRoot) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
const sortedMessages = [...messages].sort(
|
|
173
|
-
(a, b) => a.leafIndex - b.leafIndex
|
|
174
|
-
);
|
|
175
|
-
const zeroRoot = initialRoot || "0x" + "0".repeat(64);
|
|
176
|
-
let expectedPrevRoot = zeroRoot;
|
|
177
|
-
for (const msg of sortedMessages) {
|
|
178
|
-
if (msg.prevRoot.toLowerCase() !== expectedPrevRoot.toLowerCase()) {
|
|
179
|
-
return {
|
|
180
|
-
valid: false,
|
|
181
|
-
error: `Root chain broken at leafIndex ${msg.leafIndex}: expected prevRoot ${expectedPrevRoot}, got ${msg.prevRoot}`,
|
|
182
|
-
expectedRoot: expectedPrevRoot,
|
|
183
|
-
actualRoot: msg.prevRoot
|
|
184
|
-
};
|
|
249
|
+
if (messages.length === 0) {
|
|
250
|
+
return { valid: true };
|
|
185
251
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
252
|
+
// 按 leafIndex 排序
|
|
253
|
+
const sortedMessages = [...messages].sort((a, b) => a.leafIndex - b.leafIndex);
|
|
254
|
+
// 初始 Root
|
|
255
|
+
const zeroRoot = initialRoot || "0x" + "0".repeat(64);
|
|
256
|
+
let expectedPrevRoot = zeroRoot;
|
|
257
|
+
for (const msg of sortedMessages) {
|
|
258
|
+
// 1. 验证 prevRoot 是否匹配预期(链式连续性检查)
|
|
259
|
+
if (msg.prevRoot.toLowerCase() !== expectedPrevRoot.toLowerCase()) {
|
|
260
|
+
return {
|
|
261
|
+
valid: false,
|
|
262
|
+
error: `Root chain broken at leafIndex ${msg.leafIndex}: expected prevRoot ${expectedPrevRoot}, got ${msg.prevRoot}`,
|
|
263
|
+
expectedRoot: expectedPrevRoot,
|
|
264
|
+
actualRoot: msg.prevRoot,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
// 2. 复用 verifySingleMerkleRoot 验证单个消息的 Root 计算
|
|
268
|
+
const result = verifySingleMerkleRoot(msg.prevRoot, msg.newRoot, msg.plaintextHash, msg.serverTimestamp, msg.leafIndex);
|
|
269
|
+
if (!result.valid) {
|
|
270
|
+
// 添加 leafIndex 上下文到错误信息
|
|
271
|
+
return {
|
|
272
|
+
valid: false,
|
|
273
|
+
error: `${result.error} at leafIndex ${msg.leafIndex}`,
|
|
274
|
+
expectedRoot: result.expectedRoot,
|
|
275
|
+
actualRoot: result.actualRoot,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
// 3. 更新预期的 prevRoot 为当前的 newRoot
|
|
279
|
+
expectedPrevRoot = msg.newRoot;
|
|
200
280
|
}
|
|
201
|
-
|
|
202
|
-
}
|
|
203
|
-
return { valid: true };
|
|
281
|
+
return { valid: true };
|
|
204
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* 验证单个消息的 Merkle Root 计算
|
|
285
|
+
*
|
|
286
|
+
* 用于验证服务器返回的 Merkle 数据是否正确
|
|
287
|
+
*
|
|
288
|
+
* @param prevRoot 前一个 Root
|
|
289
|
+
* @param newRoot 新的 Root(服务器返回)
|
|
290
|
+
* @param plaintextHash 明文哈希
|
|
291
|
+
* @param serverTimestamp 服务器时间戳
|
|
292
|
+
* @param leafIndex 叶子索引
|
|
293
|
+
* @returns 验证结果
|
|
294
|
+
*/
|
|
205
295
|
function verifySingleMerkleRoot(prevRoot, newRoot, plaintextHash, serverTimestamp, leafIndex) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
296
|
+
// 计算正确的 leafHash
|
|
297
|
+
const leafHash = calculateMerkleLeafHash(plaintextHash, serverTimestamp);
|
|
298
|
+
const computedRoot = computeNewRoot(prevRoot, leafHash, leafIndex);
|
|
299
|
+
if (computedRoot.toLowerCase() !== newRoot.toLowerCase()) {
|
|
300
|
+
return {
|
|
301
|
+
valid: false,
|
|
302
|
+
error: `Root computation mismatch: expected ${computedRoot}, got ${newRoot}`,
|
|
303
|
+
expectedRoot: computedRoot,
|
|
304
|
+
actualRoot: newRoot,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
return { valid: true };
|
|
217
308
|
}
|
|
309
|
+
/**
|
|
310
|
+
* 通用消息验证函数
|
|
311
|
+
*
|
|
312
|
+
* 基于 Message 结构中保存的数据验证消息的完整性和 Merkle 证明
|
|
313
|
+
*
|
|
314
|
+
* @param params 验证参数
|
|
315
|
+
* @returns 验证结果
|
|
316
|
+
*
|
|
317
|
+
* @example
|
|
318
|
+
* ```typescript
|
|
319
|
+
* const result = verifyMessage({
|
|
320
|
+
* messageId: "msg-123",
|
|
321
|
+
* plaintext: "Hello",
|
|
322
|
+
* plaintextHash: "0xabc...",
|
|
323
|
+
* createdAt: 1234567890,
|
|
324
|
+
* guardAddress: "0x...",
|
|
325
|
+
* passportAddress: "0x...",
|
|
326
|
+
* merkleMetadata: { ... }
|
|
327
|
+
* });
|
|
328
|
+
*
|
|
329
|
+
* if (!result.valid) {
|
|
330
|
+
* throw new Error(result.error);
|
|
331
|
+
* }
|
|
332
|
+
* ```
|
|
333
|
+
*/
|
|
218
334
|
function verifyMessage(params) {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
lastReceivedLeafIndex,
|
|
227
|
-
serverSignature,
|
|
228
|
-
serverPublicKey,
|
|
229
|
-
merkleMetadata
|
|
230
|
-
} = params;
|
|
231
|
-
const computedPlaintextHash = hashPlaintext(
|
|
232
|
-
plaintext,
|
|
233
|
-
createdAt,
|
|
234
|
-
guardAddress,
|
|
235
|
-
passportAddress,
|
|
236
|
-
lastReceivedLeafIndex
|
|
237
|
-
);
|
|
238
|
-
const normalizeHash = (hash) => {
|
|
239
|
-
return hash.toLowerCase().replace(/^0x/, "");
|
|
240
|
-
};
|
|
241
|
-
if (normalizeHash(computedPlaintextHash) !== normalizeHash(plaintextHash)) {
|
|
242
|
-
return {
|
|
243
|
-
valid: false,
|
|
244
|
-
error: `Plaintext hash mismatch for message ${messageId}: expected ${plaintextHash}, got ${computedPlaintextHash}`,
|
|
245
|
-
failedCheck: "plaintext"
|
|
335
|
+
const { messageId, plaintext, plaintextHash, createdAt, guardAddress, passportAddress, lastReceivedLeafIndex, serverSignature, serverPublicKey, merkleMetadata, } = params;
|
|
336
|
+
// 1. 验证 plaintextHash(本地验证)
|
|
337
|
+
// 【更新】包含 lastReceivedLeafIndex 在哈希计算中
|
|
338
|
+
const computedPlaintextHash = hashPlaintext(plaintext, createdAt, guardAddress, passportAddress, lastReceivedLeafIndex);
|
|
339
|
+
// 标准化哈希值(移除 0x 前缀,转小写)
|
|
340
|
+
const normalizeHash = (hash) => {
|
|
341
|
+
return hash.toLowerCase().replace(/^0x/, "");
|
|
246
342
|
};
|
|
247
|
-
|
|
248
|
-
if (merkleMetadata) {
|
|
249
|
-
if (merkleMetadata.proofSiblings && merkleMetadata.proofIndices) {
|
|
250
|
-
const bodyB64 = bytesToBase64(new TextEncoder().encode(plaintext));
|
|
251
|
-
const leafHash = hashMessage(bodyB64);
|
|
252
|
-
const proofValid = verifyMerkleProof(leafHash, {
|
|
253
|
-
root: merkleMetadata.newRoot,
|
|
254
|
-
siblings: merkleMetadata.proofSiblings,
|
|
255
|
-
indices: merkleMetadata.proofIndices
|
|
256
|
-
});
|
|
257
|
-
if (!proofValid) {
|
|
343
|
+
if (normalizeHash(computedPlaintextHash) !== normalizeHash(plaintextHash)) {
|
|
258
344
|
return {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
345
|
+
valid: false,
|
|
346
|
+
error: `Plaintext hash mismatch for message ${messageId}: expected ${plaintextHash}, got ${computedPlaintextHash}`,
|
|
347
|
+
failedCheck: "plaintext",
|
|
262
348
|
};
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
const serverTimestamp = merkleMetadata.serverTimestamp;
|
|
266
|
-
if (!serverTimestamp) {
|
|
267
|
-
return {
|
|
268
|
-
valid: false,
|
|
269
|
-
error: `Missing server timestamp for Merkle root verification in message ${messageId}`,
|
|
270
|
-
failedCheck: "merkle"
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
if (!merkleMetadata.prevRoot) {
|
|
274
|
-
return {
|
|
275
|
-
valid: false,
|
|
276
|
-
error: `Missing prevRoot for Merkle root verification in message ${messageId}`,
|
|
277
|
-
failedCheck: "merkle"
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
const rootValid = verifySingleMerkleRoot(
|
|
281
|
-
merkleMetadata.prevRoot,
|
|
282
|
-
merkleMetadata.newRoot,
|
|
283
|
-
plaintextHash,
|
|
284
|
-
serverTimestamp,
|
|
285
|
-
merkleMetadata.leafIndex
|
|
286
|
-
);
|
|
287
|
-
if (!rootValid.valid) {
|
|
288
|
-
return {
|
|
289
|
-
valid: false,
|
|
290
|
-
error: `Merkle root verification failed for message ${messageId}: ${rootValid.error}`,
|
|
291
|
-
failedCheck: "merkle"
|
|
292
|
-
};
|
|
293
349
|
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
350
|
+
// 2. 如果提供了 Merkle 元数据,验证 Merkle
|
|
351
|
+
if (merkleMetadata) {
|
|
352
|
+
// 2.1 验证 Merkle Proof(消息是否在树中)
|
|
353
|
+
// 注意:服务器拉取消息时不返回 proofSiblings 和 proofIndices
|
|
354
|
+
// 只有在发送消息时返回的 merkleMetadata 才包含这些字段
|
|
355
|
+
if (merkleMetadata.proofSiblings && merkleMetadata.proofIndices) {
|
|
356
|
+
const bodyB64 = bytesToBase64(new TextEncoder().encode(plaintext));
|
|
357
|
+
const leafHash = hashMessage(bodyB64);
|
|
358
|
+
const proofValid = verifyMerkleProof(leafHash, {
|
|
359
|
+
root: merkleMetadata.newRoot,
|
|
360
|
+
siblings: merkleMetadata.proofSiblings,
|
|
361
|
+
indices: merkleMetadata.proofIndices,
|
|
362
|
+
});
|
|
363
|
+
if (!proofValid) {
|
|
364
|
+
return {
|
|
365
|
+
valid: false,
|
|
366
|
+
error: `Merkle proof verification failed for message ${messageId}`,
|
|
367
|
+
failedCheck: "merkle",
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
// 2.2 验证 Root 计算是否正确
|
|
372
|
+
// 必须使用服务器时间戳进行验证
|
|
373
|
+
const serverTimestamp = merkleMetadata.serverTimestamp;
|
|
374
|
+
if (!serverTimestamp) {
|
|
375
|
+
return {
|
|
376
|
+
valid: false,
|
|
377
|
+
error: `Missing server timestamp for Merkle root verification in message ${messageId}`,
|
|
378
|
+
failedCheck: "merkle",
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
if (!merkleMetadata.prevRoot) {
|
|
382
|
+
return {
|
|
383
|
+
valid: false,
|
|
384
|
+
error: `Missing prevRoot for Merkle root verification in message ${messageId}`,
|
|
385
|
+
failedCheck: "merkle",
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
const rootValid = verifySingleMerkleRoot(merkleMetadata.prevRoot, merkleMetadata.newRoot, plaintextHash, serverTimestamp, merkleMetadata.leafIndex);
|
|
389
|
+
if (!rootValid.valid) {
|
|
390
|
+
return {
|
|
391
|
+
valid: false,
|
|
392
|
+
error: `Merkle root verification failed for message ${messageId}: ${rootValid.error}`,
|
|
393
|
+
failedCheck: "merkle",
|
|
394
|
+
};
|
|
395
|
+
}
|
|
303
396
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
397
|
+
// 3. 验证服务器签名(如果提供了签名和公钥)
|
|
398
|
+
if (serverSignature && serverPublicKey) {
|
|
399
|
+
// 必须使用服务器时间戳进行验证,不能使用客户端时间
|
|
400
|
+
const timestamp = merkleMetadata?.serverTimestamp;
|
|
401
|
+
if (!timestamp) {
|
|
402
|
+
return {
|
|
403
|
+
valid: false,
|
|
404
|
+
error: `Missing server timestamp for signature verification in message ${messageId}`,
|
|
405
|
+
failedCheck: "merkle",
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
// 验证必需的字段
|
|
409
|
+
if (!merkleMetadata?.newRoot) {
|
|
410
|
+
return {
|
|
411
|
+
valid: false,
|
|
412
|
+
error: `Missing newRoot for signature verification in message ${messageId}`,
|
|
413
|
+
failedCheck: "merkle",
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
if (!merkleMetadata?.prevRoot) {
|
|
417
|
+
return {
|
|
418
|
+
valid: false,
|
|
419
|
+
error: `Missing prevRoot for signature verification in message ${messageId}`,
|
|
420
|
+
failedCheck: "merkle",
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
const signData = `${merkleMetadata.prevRoot}:${merkleMetadata.newRoot}:${timestamp}:${serverPublicKey}`;
|
|
424
|
+
const signatureValid = verifyEd25519Signature(serverPublicKey, signData, serverSignature);
|
|
425
|
+
if (!signatureValid) {
|
|
426
|
+
return {
|
|
427
|
+
valid: false,
|
|
428
|
+
error: `Server signature verification failed for message ${messageId}`,
|
|
429
|
+
failedCheck: "merkle",
|
|
430
|
+
};
|
|
431
|
+
}
|
|
310
432
|
}
|
|
311
|
-
|
|
312
|
-
return {
|
|
313
|
-
valid: false,
|
|
314
|
-
error: `Missing prevRoot for signature verification in message ${messageId}`,
|
|
315
|
-
failedCheck: "merkle"
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
const signData = `${merkleMetadata.prevRoot}:${merkleMetadata.newRoot}:${timestamp}:${serverPublicKey}`;
|
|
319
|
-
const signatureValid = verifyEd25519Signature(
|
|
320
|
-
serverPublicKey,
|
|
321
|
-
signData,
|
|
322
|
-
serverSignature
|
|
323
|
-
);
|
|
324
|
-
if (!signatureValid) {
|
|
325
|
-
return {
|
|
326
|
-
valid: false,
|
|
327
|
-
error: `Server signature verification failed for message ${messageId}`,
|
|
328
|
-
failedCheck: "merkle"
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
return { valid: true };
|
|
433
|
+
return { valid: true };
|
|
333
434
|
}
|
|
435
|
+
/**
|
|
436
|
+
* 验证 Ed25519 签名(十六进制格式)
|
|
437
|
+
*
|
|
438
|
+
* @param publicKeyHex 公钥(十六进制字符串)
|
|
439
|
+
* @param message 消息内容
|
|
440
|
+
* @param signatureHex 签名(十六进制字符串)
|
|
441
|
+
* @returns 验证结果
|
|
442
|
+
*/
|
|
334
443
|
function verifyEd25519Signature(publicKeyHex, message, signatureHex) {
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
444
|
+
try {
|
|
445
|
+
const publicKey = hexToBytes(publicKeyHex.replace("0x", ""));
|
|
446
|
+
const signature = hexToBytes(signatureHex.replace("0x", ""));
|
|
447
|
+
const messageBytes = new TextEncoder().encode(message);
|
|
448
|
+
return verifyEd25519(publicKey, messageBytes, signature);
|
|
449
|
+
}
|
|
450
|
+
catch {
|
|
451
|
+
return false;
|
|
452
|
+
}
|
|
343
453
|
}
|
|
454
|
+
/**
|
|
455
|
+
* 验证 WTS 文件中的消息
|
|
456
|
+
*
|
|
457
|
+
* @param messages WTS 消息列表(按 leafIndex 排序)
|
|
458
|
+
* @returns 验证结果
|
|
459
|
+
*/
|
|
344
460
|
function verifyWtsMessages(messages) {
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
}
|
|
348
|
-
const sortedMessages = [...messages].sort(
|
|
349
|
-
(a, b) => a.leafIndex - b.leafIndex
|
|
350
|
-
);
|
|
351
|
-
for (let i = 0; i < sortedMessages.length; i++) {
|
|
352
|
-
const msg = sortedMessages[i];
|
|
353
|
-
if (msg.plaintext != null) {
|
|
354
|
-
const computedHash = hashPlaintext(
|
|
355
|
-
msg.plaintext || "",
|
|
356
|
-
msg.clientTimestamp,
|
|
357
|
-
msg.guardAddress,
|
|
358
|
-
msg.passportAddress,
|
|
359
|
-
msg.lastReceivedLeafIndex
|
|
360
|
-
);
|
|
361
|
-
if (computedHash.toLowerCase() !== msg.plaintextHash.toLowerCase()) {
|
|
362
|
-
return {
|
|
363
|
-
valid: false,
|
|
364
|
-
error: `Plaintext hash mismatch for message ${msg.id} at index ${i}`,
|
|
365
|
-
failedMessageIndex: i,
|
|
366
|
-
failedCheck: "plaintext"
|
|
367
|
-
};
|
|
368
|
-
}
|
|
461
|
+
if (messages.length === 0) {
|
|
462
|
+
return { valid: true };
|
|
369
463
|
}
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
}
|
|
387
|
-
|
|
464
|
+
// 按 leafIndex 排序
|
|
465
|
+
const sortedMessages = [...messages].sort((a, b) => a.leafIndex - b.leafIndex);
|
|
466
|
+
// 验证每条消息
|
|
467
|
+
for (let i = 0; i < sortedMessages.length; i++) {
|
|
468
|
+
const msg = sortedMessages[i];
|
|
469
|
+
// 1. 如果提供了明文,验证 plaintextHash
|
|
470
|
+
if (msg.plaintext != null) {
|
|
471
|
+
const computedHash = hashPlaintext(msg.plaintext || "", msg.clientTimestamp, msg.guardAddress, msg.passportAddress, msg.lastReceivedLeafIndex);
|
|
472
|
+
if (computedHash.toLowerCase() !== msg.plaintextHash.toLowerCase()) {
|
|
473
|
+
return {
|
|
474
|
+
valid: false,
|
|
475
|
+
error: `Plaintext hash mismatch for message ${msg.id} at index ${i}`,
|
|
476
|
+
failedMessageIndex: i,
|
|
477
|
+
failedCheck: "plaintext",
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
// 2. 如果提供了 Merkle Proof,验证 Merkle
|
|
482
|
+
if (msg.merkleProof) {
|
|
483
|
+
const bodyB64 = bytesToBase64(new TextEncoder().encode(msg.plaintext || ""));
|
|
484
|
+
const leafHash = hashMessage(bodyB64);
|
|
485
|
+
const proofValid = verifyMerkleProof(leafHash, {
|
|
486
|
+
root: msg.merkleRoot,
|
|
487
|
+
siblings: msg.merkleProof.siblings,
|
|
488
|
+
indices: msg.merkleProof.indices,
|
|
489
|
+
});
|
|
490
|
+
if (!proofValid) {
|
|
491
|
+
return {
|
|
492
|
+
valid: false,
|
|
493
|
+
error: `Merkle proof verification failed for message ${msg.id} at index ${i}`,
|
|
494
|
+
failedMessageIndex: i,
|
|
495
|
+
failedCheck: "merkle",
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
// 3. 验证服务器签名(如果提供了签名和公钥)
|
|
500
|
+
if (msg.serverSignature && msg.serverPublicKey) {
|
|
501
|
+
// 验证必需的字段
|
|
502
|
+
if (!msg.merkleRoot) {
|
|
503
|
+
return {
|
|
504
|
+
valid: false,
|
|
505
|
+
error: `Missing merkleRoot for message ${msg.id} at index ${i}`,
|
|
506
|
+
failedMessageIndex: i,
|
|
507
|
+
failedCheck: "merkle",
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
if (!msg.timestamp) {
|
|
511
|
+
return {
|
|
512
|
+
valid: false,
|
|
513
|
+
error: `Missing timestamp for message ${msg.id} at index ${i}`,
|
|
514
|
+
failedMessageIndex: i,
|
|
515
|
+
failedCheck: "merkle",
|
|
516
|
+
};
|
|
517
|
+
}
|
|
518
|
+
if (!msg.prevRoot) {
|
|
519
|
+
return {
|
|
520
|
+
valid: false,
|
|
521
|
+
error: `Missing prevRoot for message ${msg.id} at index ${i}`,
|
|
522
|
+
failedMessageIndex: i,
|
|
523
|
+
failedCheck: "merkle",
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
const signData = `${msg.prevRoot}:${msg.merkleRoot}:${msg.timestamp}:${msg.serverPublicKey}`;
|
|
527
|
+
const signatureValid = verifyEd25519Signature(msg.serverPublicKey, signData, msg.serverSignature);
|
|
528
|
+
if (!signatureValid) {
|
|
529
|
+
return {
|
|
530
|
+
valid: false,
|
|
531
|
+
error: `Server signature verification failed for message ${msg.id} at index ${i}`,
|
|
532
|
+
failedMessageIndex: i,
|
|
533
|
+
failedCheck: "merkle",
|
|
534
|
+
};
|
|
535
|
+
}
|
|
536
|
+
}
|
|
388
537
|
}
|
|
389
|
-
|
|
390
|
-
|
|
538
|
+
// 4. 验证 Merkle 链的连续性
|
|
539
|
+
const chainResult = verifyMerkleChain(sortedMessages.map((msg) => ({
|
|
540
|
+
leafIndex: msg.leafIndex,
|
|
541
|
+
prevRoot: msg.merkleRoot, // WTS 中只保存了最终的 merkleRoot
|
|
542
|
+
newRoot: msg.merkleRoot,
|
|
543
|
+
plaintextHash: msg.plaintextHash,
|
|
544
|
+
serverTimestamp: msg.timestamp,
|
|
545
|
+
})));
|
|
546
|
+
if (!chainResult.valid) {
|
|
391
547
|
return {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
failedCheck: "merkle"
|
|
548
|
+
valid: false,
|
|
549
|
+
error: chainResult.error,
|
|
550
|
+
failedCheck: "chain",
|
|
396
551
|
};
|
|
397
|
-
}
|
|
398
|
-
if (!msg.timestamp) {
|
|
399
|
-
return {
|
|
400
|
-
valid: false,
|
|
401
|
-
error: `Missing timestamp for message ${msg.id} at index ${i}`,
|
|
402
|
-
failedMessageIndex: i,
|
|
403
|
-
failedCheck: "merkle"
|
|
404
|
-
};
|
|
405
|
-
}
|
|
406
|
-
if (!msg.prevRoot) {
|
|
407
|
-
return {
|
|
408
|
-
valid: false,
|
|
409
|
-
error: `Missing prevRoot for message ${msg.id} at index ${i}`,
|
|
410
|
-
failedMessageIndex: i,
|
|
411
|
-
failedCheck: "merkle"
|
|
412
|
-
};
|
|
413
|
-
}
|
|
414
|
-
const signData = `${msg.prevRoot}:${msg.merkleRoot}:${msg.timestamp}:${msg.serverPublicKey}`;
|
|
415
|
-
const signatureValid = verifyEd25519Signature(
|
|
416
|
-
msg.serverPublicKey,
|
|
417
|
-
signData,
|
|
418
|
-
msg.serverSignature
|
|
419
|
-
);
|
|
420
|
-
if (!signatureValid) {
|
|
421
|
-
return {
|
|
422
|
-
valid: false,
|
|
423
|
-
error: `Server signature verification failed for message ${msg.id} at index ${i}`,
|
|
424
|
-
failedMessageIndex: i,
|
|
425
|
-
failedCheck: "merkle"
|
|
426
|
-
};
|
|
427
|
-
}
|
|
428
552
|
}
|
|
429
|
-
|
|
430
|
-
const chainResult = verifyMerkleChain(
|
|
431
|
-
sortedMessages.map((msg) => ({
|
|
432
|
-
leafIndex: msg.leafIndex,
|
|
433
|
-
prevRoot: msg.merkleRoot,
|
|
434
|
-
// WTS 中只保存了最终的 merkleRoot
|
|
435
|
-
newRoot: msg.merkleRoot,
|
|
436
|
-
plaintextHash: msg.plaintextHash,
|
|
437
|
-
serverTimestamp: msg.timestamp
|
|
438
|
-
}))
|
|
439
|
-
);
|
|
440
|
-
if (!chainResult.valid) {
|
|
441
|
-
return {
|
|
442
|
-
valid: false,
|
|
443
|
-
error: chainResult.error,
|
|
444
|
-
failedCheck: "chain"
|
|
445
|
-
};
|
|
446
|
-
}
|
|
447
|
-
return { valid: true };
|
|
553
|
+
return { valid: true };
|
|
448
554
|
}
|
|
555
|
+
//# sourceMappingURL=crypto.js.map
|