quantumcoin 7.0.15 → 8.0.1
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/README-SDK.md +79 -0
- package/README.md +48 -1
- package/generate-sdk.js +8 -6
- package/package.json +26 -6
- package/src/abi/interface.d.ts +133 -128
- package/src/abi/js-abi-coder.d.ts +8 -8
- package/src/constants.d.ts +61 -61
- package/src/contract/contract-factory.d.ts +28 -28
- package/src/contract/contract.d.ts +121 -113
- package/src/contract/index.d.ts +1 -0
- package/src/errors/index.d.ts +10 -2
- package/src/errors/index.js +1 -1
- package/src/generator/index.d.ts +109 -81
- package/src/index.d.ts +128 -123
- package/src/internal/event-emitter.d.ts +76 -0
- package/src/internal/event-emitter.js +144 -0
- package/src/internal/hex.d.ts +27 -4
- package/src/internal/hex.js +7 -3
- package/src/providers/extra-providers.d.ts +141 -139
- package/src/providers/extra-providers.js +15 -1
- package/src/providers/index.d.ts +18 -18
- package/src/providers/json-rpc-provider.d.ts +1 -0
- package/src/providers/provider.d.ts +233 -222
- package/src/providers/provider.js +1 -1
- package/src/utils/encoding.js +16 -4
- package/src/utils/fixednumber.d.ts +57 -57
- package/src/utils/hashing.d.ts +97 -76
- package/src/utils/hashing.js +95 -177
- package/src/utils/index.d.ts +2 -1
- package/src/utils/rlp.js +1 -1
- package/src/wallet/index.d.ts +1 -0
- package/src/wallet/wallet.d.ts +85 -29
- package/src/wallet/wallet.js +114 -4
- package/.github/workflows/publish-npmjs.yaml +0 -22
- package/.gitignore +0 -15
- package/examples/AllSolidityTypes.sol +0 -184
- package/examples/SimpleIERC20.sol +0 -74
- package/examples/events.js +0 -41
- package/examples/events.ts +0 -35
- package/examples/example-generated-sdk-js/README.md +0 -65
- package/examples/example-generated-sdk-js/examples/_test-wallet.js +0 -17
- package/examples/example-generated-sdk-js/examples/deploy.js +0 -41
- package/examples/example-generated-sdk-js/examples/events.js +0 -36
- package/examples/example-generated-sdk-js/examples/read-operations.js +0 -46
- package/examples/example-generated-sdk-js/examples/write-operations.js +0 -44
- package/examples/example-generated-sdk-js/index.d.ts +0 -1
- package/examples/example-generated-sdk-js/index.js +0 -15
- package/examples/example-generated-sdk-js/package-lock.json +0 -59
- package/examples/example-generated-sdk-js/package.json +0 -22
- package/examples/example-generated-sdk-js/src/SimpleERC20.d.ts +0 -19
- package/examples/example-generated-sdk-js/src/SimpleERC20.js +0 -353
- package/examples/example-generated-sdk-js/src/SimpleERC20__factory.d.ts +0 -10
- package/examples/example-generated-sdk-js/src/SimpleERC20__factory.js +0 -29
- package/examples/example-generated-sdk-js/src/index.d.ts +0 -4
- package/examples/example-generated-sdk-js/src/index.js +0 -5
- package/examples/example-generated-sdk-js/src/quantumcoin-shims.d.ts +0 -23
- package/examples/example-generated-sdk-js/src/types.d.ts +0 -3
- package/examples/example-generated-sdk-js/src/types.js +0 -3
- package/examples/example-generated-sdk-js/test/e2e/SimpleERC20.e2e.test.js +0 -78
- package/examples/example-generated-sdk-ts/README.md +0 -65
- package/examples/example-generated-sdk-ts/examples/_test-wallet.js +0 -17
- package/examples/example-generated-sdk-ts/examples/deploy.js +0 -41
- package/examples/example-generated-sdk-ts/examples/events.js +0 -36
- package/examples/example-generated-sdk-ts/examples/read-operations.js +0 -46
- package/examples/example-generated-sdk-ts/examples/write-operations.js +0 -44
- package/examples/example-generated-sdk-ts/index.d.ts +0 -1
- package/examples/example-generated-sdk-ts/index.js +0 -15
- package/examples/example-generated-sdk-ts/package-lock.json +0 -59
- package/examples/example-generated-sdk-ts/package.json +0 -23
- package/examples/example-generated-sdk-ts/src/SimpleERC20.ts +0 -334
- package/examples/example-generated-sdk-ts/src/SimpleERC20__factory.ts +0 -28
- package/examples/example-generated-sdk-ts/src/index.ts +0 -4
- package/examples/example-generated-sdk-ts/src/quantumcoin-shims.d.ts +0 -23
- package/examples/example-generated-sdk-ts/src/types.ts +0 -4
- package/examples/example-generated-sdk-ts/test/e2e/SimpleERC20.e2e.test.js +0 -78
- package/examples/example-generated-sdk-ts/tsconfig.json +0 -14
- package/examples/example-generator-sdk-js.js +0 -100
- package/examples/example-generator-sdk-js.ts +0 -77
- package/examples/example-generator-sdk-ts.js +0 -100
- package/examples/example-generator-sdk-ts.ts +0 -77
- package/examples/example.js +0 -67
- package/examples/example.ts +0 -56
- package/examples/node_modules/.bin/esbuild +0 -16
- package/examples/node_modules/.bin/esbuild.cmd +0 -17
- package/examples/node_modules/.bin/esbuild.ps1 +0 -28
- package/examples/node_modules/.bin/sdkgen +0 -16
- package/examples/node_modules/.bin/sdkgen.cmd +0 -17
- package/examples/node_modules/.bin/sdkgen.ps1 +0 -28
- package/examples/node_modules/.bin/tsx +0 -16
- package/examples/node_modules/.bin/tsx.cmd +0 -17
- package/examples/node_modules/.bin/tsx.ps1 +0 -28
- package/examples/node_modules/.package-lock.json +0 -144
- package/examples/node_modules/@esbuild/win32-x64/README.md +0 -3
- package/examples/node_modules/@esbuild/win32-x64/esbuild.exe +0 -0
- package/examples/node_modules/@esbuild/win32-x64/package.json +0 -20
- package/examples/node_modules/esbuild/LICENSE.md +0 -21
- package/examples/node_modules/esbuild/README.md +0 -3
- package/examples/node_modules/esbuild/bin/esbuild +0 -223
- package/examples/node_modules/esbuild/install.js +0 -289
- package/examples/node_modules/esbuild/lib/main.d.ts +0 -716
- package/examples/node_modules/esbuild/lib/main.js +0 -2532
- package/examples/node_modules/esbuild/package.json +0 -49
- package/examples/node_modules/get-tsconfig/LICENSE +0 -21
- package/examples/node_modules/get-tsconfig/README.md +0 -235
- package/examples/node_modules/get-tsconfig/dist/index.cjs +0 -7
- package/examples/node_modules/get-tsconfig/dist/index.d.cts +0 -2088
- package/examples/node_modules/get-tsconfig/dist/index.d.mts +0 -2088
- package/examples/node_modules/get-tsconfig/dist/index.mjs +0 -7
- package/examples/node_modules/get-tsconfig/package.json +0 -46
- package/examples/node_modules/quantum-coin-js-sdk/LICENSE +0 -21
- package/examples/node_modules/quantum-coin-js-sdk/LICENSE-wasm_exec.js.txt +0 -30
- package/examples/node_modules/quantum-coin-js-sdk/README.md +0 -1689
- package/examples/node_modules/quantum-coin-js-sdk/example/README.md +0 -14
- package/examples/node_modules/quantum-coin-js-sdk/example/conversion-example.js +0 -19
- package/examples/node_modules/quantum-coin-js-sdk/example/example-create-contract.js +0 -396
- package/examples/node_modules/quantum-coin-js-sdk/example/example-encode-decode-rlp.js +0 -225
- package/examples/node_modules/quantum-coin-js-sdk/example/example-event-pack-unpack.js +0 -391
- package/examples/node_modules/quantum-coin-js-sdk/example/example-misc.js +0 -100
- package/examples/node_modules/quantum-coin-js-sdk/example/example-rpc-send-signRawTransaction.js +0 -318
- package/examples/node_modules/quantum-coin-js-sdk/example/example-rpc-send.js +0 -115
- package/examples/node_modules/quantum-coin-js-sdk/example/example-send.js +0 -69
- package/examples/node_modules/quantum-coin-js-sdk/example/example-token-pack-unpack.js +0 -960
- package/examples/node_modules/quantum-coin-js-sdk/example/example-wallet-version4.js +0 -34
- package/examples/node_modules/quantum-coin-js-sdk/example/example-wallet.js +0 -43
- package/examples/node_modules/quantum-coin-js-sdk/example/example.js +0 -405
- package/examples/node_modules/quantum-coin-js-sdk/example/package-lock.json +0 -56
- package/examples/node_modules/quantum-coin-js-sdk/example/package.json +0 -15
- package/examples/node_modules/quantum-coin-js-sdk/index.d.ts +0 -1047
- package/examples/node_modules/quantum-coin-js-sdk/index.js +0 -3182
- package/examples/node_modules/quantum-coin-js-sdk/package.json +0 -34
- package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-32.json +0 -1
- package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-36.json +0 -1
- package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-48.json +0 -1
- package/examples/node_modules/quantum-coin-js-sdk/tests/generate-verify-vectors.js +0 -91
- package/examples/node_modules/quantum-coin-js-sdk/tests/get-gas-price.test.js +0 -59
- package/examples/node_modules/quantum-coin-js-sdk/tests/non-transactional.preinit.test.js +0 -41
- package/examples/node_modules/quantum-coin-js-sdk/tests/non-transactional.test.js +0 -1389
- package/examples/node_modules/quantum-coin-js-sdk/tests/sign-raw-keytype5-context-null.test.js +0 -107
- package/examples/node_modules/quantum-coin-js-sdk/tests/sign-raw-transaction.test.js +0 -196
- package/examples/node_modules/quantum-coin-js-sdk/tests/sign-verify.test.js +0 -311
- package/examples/node_modules/quantum-coin-js-sdk/tests/transactional.relay.test.js +0 -131
- package/examples/node_modules/quantum-coin-js-sdk/tests/transactional.rpc.test.js +0 -103
- package/examples/node_modules/quantum-coin-js-sdk/tests/verify-vectors.json +0 -95035
- package/examples/node_modules/quantum-coin-js-sdk/wasmBase64.d.ts +0 -9
- package/examples/node_modules/quantum-coin-js-sdk/wasmBase64.js +0 -16
- package/examples/node_modules/quantum-coin-js-sdk/wasm_exec.d.ts +0 -0
- package/examples/node_modules/quantum-coin-js-sdk/wasm_exec.js +0 -587
- package/examples/node_modules/resolve-pkg-maps/LICENSE +0 -21
- package/examples/node_modules/resolve-pkg-maps/README.md +0 -216
- package/examples/node_modules/resolve-pkg-maps/dist/index.cjs +0 -1
- package/examples/node_modules/resolve-pkg-maps/dist/index.d.cts +0 -11
- package/examples/node_modules/resolve-pkg-maps/dist/index.d.mts +0 -11
- package/examples/node_modules/resolve-pkg-maps/dist/index.mjs +0 -1
- package/examples/node_modules/resolve-pkg-maps/package.json +0 -42
- package/examples/node_modules/seed-words/.github/workflows/publish-npmjs.yaml +0 -22
- package/examples/node_modules/seed-words/BUILD.md +0 -7
- package/examples/node_modules/seed-words/LICENSE +0 -121
- package/examples/node_modules/seed-words/README.md +0 -67
- package/examples/node_modules/seed-words/dist/seedwords.d.ts +0 -39
- package/examples/node_modules/seed-words/package.json +0 -27
- package/examples/node_modules/seed-words/seedwords.js +0 -315
- package/examples/node_modules/seed-words/seedwords.txt +0 -65536
- package/examples/node_modules/seed-words/tsconfig.json +0 -21
- package/examples/node_modules/tsx/LICENSE +0 -21
- package/examples/node_modules/tsx/README.md +0 -32
- package/examples/node_modules/tsx/dist/cjs/api/index.cjs +0 -1
- package/examples/node_modules/tsx/dist/cjs/api/index.d.cts +0 -35
- package/examples/node_modules/tsx/dist/cjs/api/index.d.mts +0 -35
- package/examples/node_modules/tsx/dist/cjs/api/index.mjs +0 -1
- package/examples/node_modules/tsx/dist/cjs/index.cjs +0 -1
- package/examples/node_modules/tsx/dist/cjs/index.mjs +0 -1
- package/examples/node_modules/tsx/dist/cli.cjs +0 -54
- package/examples/node_modules/tsx/dist/cli.mjs +0 -55
- package/examples/node_modules/tsx/dist/client-BQVF1NaW.mjs +0 -1
- package/examples/node_modules/tsx/dist/client-D6NvIMSC.cjs +0 -1
- package/examples/node_modules/tsx/dist/esm/api/index.cjs +0 -1
- package/examples/node_modules/tsx/dist/esm/api/index.d.cts +0 -35
- package/examples/node_modules/tsx/dist/esm/api/index.d.mts +0 -35
- package/examples/node_modules/tsx/dist/esm/api/index.mjs +0 -1
- package/examples/node_modules/tsx/dist/esm/index.cjs +0 -2
- package/examples/node_modules/tsx/dist/esm/index.mjs +0 -2
- package/examples/node_modules/tsx/dist/get-pipe-path-BHW2eJdv.mjs +0 -1
- package/examples/node_modules/tsx/dist/get-pipe-path-BoR10qr8.cjs +0 -1
- package/examples/node_modules/tsx/dist/index-7AaEi15b.mjs +0 -14
- package/examples/node_modules/tsx/dist/index-BWFBUo6r.cjs +0 -1
- package/examples/node_modules/tsx/dist/index-gbaejti9.mjs +0 -1
- package/examples/node_modules/tsx/dist/index-gckBtVBf.cjs +0 -14
- package/examples/node_modules/tsx/dist/lexer-DQCqS3nf.mjs +0 -3
- package/examples/node_modules/tsx/dist/lexer-DgIbo0BU.cjs +0 -3
- package/examples/node_modules/tsx/dist/loader.cjs +0 -1
- package/examples/node_modules/tsx/dist/loader.mjs +0 -1
- package/examples/node_modules/tsx/dist/node-features-_8ZFwP_x.mjs +0 -1
- package/examples/node_modules/tsx/dist/node-features-roYmp9jK.cjs +0 -1
- package/examples/node_modules/tsx/dist/package-CeBgXWuR.mjs +0 -1
- package/examples/node_modules/tsx/dist/package-Dxt5kIHw.cjs +0 -1
- package/examples/node_modules/tsx/dist/patch-repl.cjs +0 -1
- package/examples/node_modules/tsx/dist/patch-repl.mjs +0 -1
- package/examples/node_modules/tsx/dist/preflight.cjs +0 -1
- package/examples/node_modules/tsx/dist/preflight.mjs +0 -1
- package/examples/node_modules/tsx/dist/register-2sWVXuRQ.cjs +0 -1
- package/examples/node_modules/tsx/dist/register-B7jrtLTO.mjs +0 -1
- package/examples/node_modules/tsx/dist/register-CFH5oNdT.mjs +0 -4
- package/examples/node_modules/tsx/dist/register-D46fvsV_.cjs +0 -4
- package/examples/node_modules/tsx/dist/repl.cjs +0 -3
- package/examples/node_modules/tsx/dist/repl.mjs +0 -3
- package/examples/node_modules/tsx/dist/require-D4F1Lv60.cjs +0 -1
- package/examples/node_modules/tsx/dist/require-DQxpCAr4.mjs +0 -1
- package/examples/node_modules/tsx/dist/suppress-warnings.cjs +0 -1
- package/examples/node_modules/tsx/dist/suppress-warnings.mjs +0 -1
- package/examples/node_modules/tsx/dist/temporary-directory-B83uKxJF.cjs +0 -1
- package/examples/node_modules/tsx/dist/temporary-directory-CwHp0_NW.mjs +0 -1
- package/examples/node_modules/tsx/dist/types-Cxp8y2TL.d.ts +0 -5
- package/examples/node_modules/tsx/package.json +0 -68
- package/examples/offline-signing.js +0 -77
- package/examples/offline-signing.ts +0 -65
- package/examples/package-lock.json +0 -596
- package/examples/package.json +0 -32
- package/examples/read-operations.js +0 -32
- package/examples/read-operations.ts +0 -31
- package/examples/sdk-generator-erc20.inline.json +0 -251
- package/examples/solidity-types.ts +0 -43
- package/examples/wallet-offline.js +0 -36
- package/examples/wallet-offline.ts +0 -26
- package/scripts/copy-declarations.js +0 -31
- package/scripts/run-all-one-by-one.js +0 -151
- package/test/e2e/all-solidity-types.dynamic.test.js +0 -207
- package/test/e2e/all-solidity-types.dynamic.test.ts +0 -191
- package/test/e2e/all-solidity-types.fixtures.js +0 -231
- package/test/e2e/all-solidity-types.generated-sdks.e2e.test.js +0 -387
- package/test/e2e/all-solidity-types.generated-sdks.e2e.test.ts +0 -350
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/README.md +0 -83
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/artifacts/AllSolidityTypes.abi.json +0 -12544
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/artifacts/AllSolidityTypes.bin +0 -1
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/_test-wallet.js +0 -17
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/_test-wallet.ts +0 -10
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/deploy.js +0 -41
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/deploy.ts +0 -41
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/events.js +0 -36
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/events.ts +0 -36
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/offline-signing.js +0 -82
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/offline-signing.ts +0 -80
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/read-operations.js +0 -46
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/read-operations.ts +0 -44
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/write-operations.js +0 -44
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/write-operations.ts +0 -44
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/index.d.ts +0 -1
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/index.js +0 -21
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/package-lock.json +0 -597
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/package.json +0 -25
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes.d.ts +0 -1280
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes.js +0 -14021
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes__factory.d.ts +0 -11
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes__factory.js +0 -31
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/index.d.ts +0 -4
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/index.js +0 -5
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/quantumcoin-shims.d.ts +0 -25
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/types.d.ts +0 -3
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/types.js +0 -3
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/test/e2e/AllSolidityTypes.e2e.test.js +0 -77
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/test/e2e/AllSolidityTypes.extra.test.js +0 -195
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/README.md +0 -83
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/artifacts/AllSolidityTypes.abi.json +0 -12544
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/artifacts/AllSolidityTypes.bin +0 -1
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/_test-wallet.js +0 -17
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/_test-wallet.ts +0 -10
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/deploy.js +0 -41
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/deploy.ts +0 -41
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/events.js +0 -36
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/events.ts +0 -36
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/offline-signing.js +0 -82
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/offline-signing.ts +0 -80
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/read-operations.js +0 -46
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/read-operations.ts +0 -44
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/write-operations.js +0 -44
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/write-operations.ts +0 -44
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/index.d.ts +0 -1
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/index.js +0 -21
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/package-lock.json +0 -597
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/package.json +0 -26
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/AllSolidityTypes.ts +0 -13940
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/AllSolidityTypes__factory.ts +0 -31
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/index.ts +0 -4
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/quantumcoin-shims.d.ts +0 -25
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/types.ts +0 -4
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/test/e2e/AllSolidityTypes.e2e.test.js +0 -77
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/test/e2e/AllSolidityTypes.extra.test.js +0 -195
- package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/tsconfig.json +0 -18
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/README.md +0 -74
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/artifacts/SimpleERC20.abi.json +0 -245
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/artifacts/SimpleERC20.bin +0 -1
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/_test-wallet.js +0 -17
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/_test-wallet.ts +0 -10
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/deploy.js +0 -41
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/deploy.ts +0 -41
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/events.js +0 -36
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/events.ts +0 -36
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/offline-signing.js +0 -82
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/offline-signing.ts +0 -80
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/read-operations.js +0 -46
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/read-operations.ts +0 -44
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/write-operations.js +0 -44
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/write-operations.ts +0 -44
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/index.d.ts +0 -1
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/index.js +0 -16
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/package-lock.json +0 -597
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/package.json +0 -25
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20.d.ts +0 -24
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20.js +0 -378
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20__factory.d.ts +0 -10
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20__factory.js +0 -31
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/index.d.ts +0 -4
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/index.js +0 -5
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/quantumcoin-shims.d.ts +0 -25
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/types.d.ts +0 -3
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/types.js +0 -3
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/test/e2e/SimpleERC20.e2e.test.js +0 -90
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/README.md +0 -74
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/artifacts/SimpleERC20.abi.json +0 -245
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/artifacts/SimpleERC20.bin +0 -1
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/_test-wallet.js +0 -17
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/_test-wallet.ts +0 -10
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/deploy.js +0 -41
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/deploy.ts +0 -41
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/events.js +0 -36
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/events.ts +0 -36
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/offline-signing.js +0 -82
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/offline-signing.ts +0 -80
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/read-operations.js +0 -46
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/read-operations.ts +0 -44
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/write-operations.js +0 -44
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/write-operations.ts +0 -44
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/index.d.ts +0 -1
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/index.js +0 -16
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/package-lock.json +0 -597
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/package.json +0 -26
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/SimpleERC20.ts +0 -361
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/SimpleERC20__factory.ts +0 -30
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/index.ts +0 -4
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/quantumcoin-shims.d.ts +0 -25
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/types.ts +0 -4
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/test/e2e/SimpleERC20.e2e.test.js +0 -90
- package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/tsconfig.json +0 -18
- package/test/e2e/generator-interface.e2e.test.js +0 -165
- package/test/e2e/generator-interface.e2e.test.ts +0 -160
- package/test/e2e/helpers.js +0 -59
- package/test/e2e/signing-context-and-fee.e2e.test.js +0 -141
- package/test/e2e/signing-context-and-fee.e2e.test.ts +0 -128
- package/test/e2e/simple-erc20.generated-sdks.e2e.test.js +0 -168
- package/test/e2e/simple-erc20.generated-sdks.e2e.test.ts +0 -141
- package/test/e2e/transactional.test.js +0 -245
- package/test/e2e/transactional.test.ts +0 -208
- package/test/e2e/typed-generator.e2e.test.js +0 -407
- package/test/e2e/typed-generator.e2e.test.ts +0 -337
- package/test/fixtures/ConstructorParam.sol +0 -23
- package/test/fixtures/MultiContracts.sol +0 -37
- package/test/fixtures/SimpleStorage.sol +0 -18
- package/test/fixtures/StakingContract.abi.json +0 -1
- package/test/integration/ipc-provider.test.js +0 -49
- package/test/integration/ipc-provider.test.ts +0 -44
- package/test/integration/provider.test.js +0 -88
- package/test/integration/provider.test.ts +0 -85
- package/test/integration/ws-provider.test.js +0 -41
- package/test/integration/ws-provider.test.ts +0 -38
- package/test/security/abi-decoder-bounds.test.js +0 -122
- package/test/security/contract-overrides.test.js +0 -112
- package/test/security/generator-injection.test.js +0 -195
- package/test/security/malformed-input.test.js +0 -330
- package/test/security/malformed-input.test.ts +0 -35
- package/test/security/rpc-numeric-bounds.test.js +0 -81
- package/test/security/rpc-trust.test.js +0 -202
- package/test/unit/_encrypted-output.txt +0 -6
- package/test/unit/_log-encrypted-jsons.js +0 -45
- package/test/unit/_write-keystore-fixture.js +0 -16
- package/test/unit/abi-interface.test.js +0 -110
- package/test/unit/abi-interface.test.ts +0 -109
- package/test/unit/address-wallet.test.js +0 -945
- package/test/unit/address-wallet.test.ts +0 -899
- package/test/unit/browser-provider.test.js +0 -85
- package/test/unit/browser-provider.test.ts +0 -79
- package/test/unit/contract.test.js +0 -85
- package/test/unit/contract.test.ts +0 -83
- package/test/unit/encoding-units-rlp.test.js +0 -127
- package/test/unit/encoding-units-rlp.test.ts +0 -91
- package/test/unit/errors.test.js +0 -77
- package/test/unit/errors.test.ts +0 -76
- package/test/unit/filter-by-blockhash.test.js +0 -55
- package/test/unit/filter-by-blockhash.test.ts +0 -54
- package/test/unit/fixednumber.test.js +0 -656
- package/test/unit/fixednumber.test.ts +0 -660
- package/test/unit/fixtures/encrypted-keystores-48-32-36.js +0 -9
- package/test/unit/generate-contract-cli.test.js +0 -42
- package/test/unit/generate-contract-cli.test.ts +0 -41
- package/test/unit/generate-sdk-artifacts-json.test.js +0 -113
- package/test/unit/generate-sdk-artifacts-json.test.ts +0 -110
- package/test/unit/generator.test.js +0 -149
- package/test/unit/generator.test.ts +0 -148
- package/test/unit/hashing.test.js +0 -64
- package/test/unit/hashing.test.ts +0 -63
- package/test/unit/init.test.js +0 -39
- package/test/unit/init.test.ts +0 -38
- package/test/unit/interface.test.js +0 -56
- package/test/unit/interface.test.ts +0 -54
- package/test/unit/internal-hex.test.js +0 -81
- package/test/unit/internal-hex.test.ts +0 -80
- package/test/unit/populate-transaction.test.js +0 -98
- package/test/unit/populate-transaction.test.ts +0 -64
- package/test/unit/providers.test.js +0 -305
- package/test/unit/providers.test.ts +0 -304
- package/test/unit/result.test.js +0 -80
- package/test/unit/result.test.ts +0 -79
- package/test/unit/solidity-types.test.js +0 -49
- package/test/unit/solidity-types.test.ts +0 -39
- package/test/unit/utils.test.js +0 -57
- package/test/unit/utils.test.ts +0 -56
- package/test/verbose-logger.js +0 -74
- package/tsconfig.build.json +0 -14
package/src/utils/hashing.d.ts
CHANGED
|
@@ -1,76 +1,97 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* keccak256 hash of BytesLike.
|
|
3
|
-
* @param {string|Uint8Array} data
|
|
4
|
-
* @returns {string}
|
|
5
|
-
*/
|
|
6
|
-
export function keccak256(data: string | Uint8Array): string;
|
|
7
|
-
/**
|
|
8
|
-
* sha256 hash of BytesLike.
|
|
9
|
-
* @param {string|Uint8Array} data
|
|
10
|
-
* @returns {string}
|
|
11
|
-
*/
|
|
12
|
-
export function sha256(data: string | Uint8Array): string;
|
|
13
|
-
/**
|
|
14
|
-
* sha512 hash of BytesLike.
|
|
15
|
-
* @param {string|Uint8Array} data
|
|
16
|
-
* @returns {string}
|
|
17
|
-
*/
|
|
18
|
-
export function sha512(data: string | Uint8Array): string;
|
|
19
|
-
/**
|
|
20
|
-
* ripemd160 hash of BytesLike.
|
|
21
|
-
* @param {string|Uint8Array} data
|
|
22
|
-
* @returns {string}
|
|
23
|
-
*/
|
|
24
|
-
export function ripemd160(data: string | Uint8Array): string;
|
|
25
|
-
/**
|
|
26
|
-
* ethers-style id(text) => keccak256(utf8Bytes(text))
|
|
27
|
-
* @param {string} text
|
|
28
|
-
* @returns {string}
|
|
29
|
-
*/
|
|
30
|
-
export function id(text: string): string;
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
*
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
*
|
|
60
|
-
* @param {
|
|
61
|
-
* @param {
|
|
62
|
-
* @param {
|
|
63
|
-
* @returns {
|
|
64
|
-
*/
|
|
65
|
-
export function
|
|
66
|
-
/**
|
|
67
|
-
*
|
|
68
|
-
* @param {string|Uint8Array} password
|
|
69
|
-
* @param {string|Uint8Array} salt
|
|
70
|
-
* @param {number}
|
|
71
|
-
* @param {number}
|
|
72
|
-
* @param {
|
|
73
|
-
* @
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
1
|
+
/**
|
|
2
|
+
* keccak256 hash of BytesLike.
|
|
3
|
+
* @param {string|Uint8Array} data
|
|
4
|
+
* @returns {string}
|
|
5
|
+
*/
|
|
6
|
+
export function keccak256(data: string | Uint8Array): string;
|
|
7
|
+
/**
|
|
8
|
+
* sha256 hash of BytesLike.
|
|
9
|
+
* @param {string|Uint8Array} data
|
|
10
|
+
* @returns {string}
|
|
11
|
+
*/
|
|
12
|
+
export function sha256(data: string | Uint8Array): string;
|
|
13
|
+
/**
|
|
14
|
+
* sha512 hash of BytesLike.
|
|
15
|
+
* @param {string|Uint8Array} data
|
|
16
|
+
* @returns {string}
|
|
17
|
+
*/
|
|
18
|
+
export function sha512(data: string | Uint8Array): string;
|
|
19
|
+
/**
|
|
20
|
+
* ripemd160 hash of BytesLike.
|
|
21
|
+
* @param {string|Uint8Array} data
|
|
22
|
+
* @returns {string}
|
|
23
|
+
*/
|
|
24
|
+
export function ripemd160(data: string | Uint8Array): string;
|
|
25
|
+
/**
|
|
26
|
+
* ethers-style id(text) => keccak256(utf8Bytes(text))
|
|
27
|
+
* @param {string} text
|
|
28
|
+
* @returns {string}
|
|
29
|
+
*/
|
|
30
|
+
export function id(text: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Compute the EIP-191 "personal message" digest for a message.
|
|
33
|
+
*
|
|
34
|
+
* QuantumCoin uses the exact same prefix as Ethereum, so this is byte-for-byte
|
|
35
|
+
* compatible with `personal_sign` in `quantum-coin-go`:
|
|
36
|
+
*
|
|
37
|
+
* keccak256("\x19Ethereum Signed Message:\n" + message.length + message)
|
|
38
|
+
*
|
|
39
|
+
* The resulting 32-byte hash is the digest passed to `Wallet.signMessage` /
|
|
40
|
+
* `Wallet.signMessageSync` and re-derived by `verifyMessage`. The decimal length
|
|
41
|
+
* prefix counts message BYTES, not characters. A string message is UTF-8
|
|
42
|
+
* encoded; a Uint8Array (or 0x hex string coerced via `arrayify`) is treated as
|
|
43
|
+
* raw bytes.
|
|
44
|
+
*
|
|
45
|
+
* @param {string|Uint8Array} message The message to hash. Strings are UTF-8 encoded.
|
|
46
|
+
* @returns {string} 0x-prefixed, 32-byte keccak256 digest.
|
|
47
|
+
*/
|
|
48
|
+
export function hashMessage(message: string | Uint8Array): string;
|
|
49
|
+
/**
|
|
50
|
+
* Generate cryptographically strong random bytes.
|
|
51
|
+
*
|
|
52
|
+
* Uses the platform Web Crypto API (`globalThis.crypto`), which is available in
|
|
53
|
+
* modern browsers and Node.js 20+.
|
|
54
|
+
* @param {number} length
|
|
55
|
+
* @returns {Uint8Array}
|
|
56
|
+
*/
|
|
57
|
+
export function randomBytes(length: number): Uint8Array;
|
|
58
|
+
/**
|
|
59
|
+
* Compute HMAC over data.
|
|
60
|
+
* @param {string} algorithm "sha256" or "sha512"
|
|
61
|
+
* @param {string|Uint8Array} key
|
|
62
|
+
* @param {string|Uint8Array} data
|
|
63
|
+
* @returns {string}
|
|
64
|
+
*/
|
|
65
|
+
export function computeHmac(algorithm: string, key: string | Uint8Array, data: string | Uint8Array): string;
|
|
66
|
+
/**
|
|
67
|
+
* PBKDF2 (sync) helper returning hex string.
|
|
68
|
+
* @param {string|Uint8Array} password
|
|
69
|
+
* @param {string|Uint8Array} salt
|
|
70
|
+
* @param {number} iterations
|
|
71
|
+
* @param {number} keylen
|
|
72
|
+
* @param {string=} algorithm "sha256" (default) or "sha512"
|
|
73
|
+
* @returns {string}
|
|
74
|
+
*/
|
|
75
|
+
export function pbkdf2(password: string | Uint8Array, salt: string | Uint8Array, iterations: number, keylen: number, algorithm?: string | undefined): string;
|
|
76
|
+
/**
|
|
77
|
+
* scrypt (async) helper returning hex string.
|
|
78
|
+
* @param {string|Uint8Array} password
|
|
79
|
+
* @param {string|Uint8Array} salt
|
|
80
|
+
* @param {number} N
|
|
81
|
+
* @param {number} r
|
|
82
|
+
* @param {number} p
|
|
83
|
+
* @param {number} dkLen
|
|
84
|
+
* @returns {Promise<string>}
|
|
85
|
+
*/
|
|
86
|
+
export function scrypt(password: string | Uint8Array, salt: string | Uint8Array, N: number, r: number, p: number, dkLen: number): Promise<string>;
|
|
87
|
+
/**
|
|
88
|
+
* scrypt (sync) helper returning hex string.
|
|
89
|
+
* @param {string|Uint8Array} password
|
|
90
|
+
* @param {string|Uint8Array} salt
|
|
91
|
+
* @param {number} N
|
|
92
|
+
* @param {number} r
|
|
93
|
+
* @param {number} p
|
|
94
|
+
* @param {number} dkLen
|
|
95
|
+
* @returns {string}
|
|
96
|
+
*/
|
|
97
|
+
export function scryptSync(password: string | Uint8Array, salt: string | Uint8Array, N: number, r: number, p: number, dkLen: number): string;
|
package/src/utils/hashing.js
CHANGED
|
@@ -1,145 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Hash utilities (ethers.js v6 compatible names).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* All cryptographic primitives are provided by `quantum-coin-js-sdk`, which
|
|
5
|
+
* runs in both Node.js and modern browsers (WebAssembly + Web Crypto). This
|
|
6
|
+
* keeps the SDK platform agnostic and free of Node's built-in `crypto` module.
|
|
7
|
+
*
|
|
8
|
+
* NOTE: The underlying primitives require the SDK to be initialized. Call
|
|
9
|
+
* `Initialize()` (see the `quantumcoin/config` module) before using these
|
|
10
|
+
* helpers, otherwise a `NOT_INITIALIZED` error is thrown.
|
|
7
11
|
*/
|
|
8
12
|
|
|
9
|
-
const
|
|
13
|
+
const qcsdk = require("quantum-coin-js-sdk");
|
|
10
14
|
const { arrayify, bytesToHex, utf8ToBytes } = require("../internal/hex");
|
|
15
|
+
const { makeError } = require("../errors");
|
|
11
16
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const nn = BigInt(n);
|
|
16
|
-
return ((x << nn) | (x >> (64n - nn))) & _MASK64;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function _readU64LE(bytes, off) {
|
|
20
|
-
let x = 0n;
|
|
21
|
-
for (let i = 0; i < 8; i++) {
|
|
22
|
-
x |= BigInt(bytes[off + i]) << (8n * BigInt(i));
|
|
23
|
-
}
|
|
24
|
-
return x;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function _writeU64LE(out, off, x) {
|
|
28
|
-
let v = x & _MASK64;
|
|
29
|
-
for (let i = 0; i < 8; i++) {
|
|
30
|
-
out[off + i] = Number((v >> (8n * BigInt(i))) & 0xffn);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Keccak-f[1600] round constants
|
|
35
|
-
const _RC = [
|
|
36
|
-
0x0000000000000001n, 0x0000000000008082n, 0x800000000000808an, 0x8000000080008000n,
|
|
37
|
-
0x000000000000808bn, 0x0000000080000001n, 0x8000000080008081n, 0x8000000000008009n,
|
|
38
|
-
0x000000000000008an, 0x0000000000000088n, 0x0000000080008009n, 0x000000008000000an,
|
|
39
|
-
0x000000008000808bn, 0x800000000000008bn, 0x8000000000008089n, 0x8000000000008003n,
|
|
40
|
-
0x8000000000008002n, 0x8000000000000080n, 0x000000000000800an, 0x800000008000000an,
|
|
41
|
-
0x8000000080008081n, 0x8000000000008080n, 0x0000000080000001n, 0x8000000080008008n,
|
|
42
|
-
];
|
|
43
|
-
|
|
44
|
-
// Rotation offsets (rho step)
|
|
45
|
-
const _R = [
|
|
46
|
-
// Indexed by lane index (x + 5*y) where x,y in [0..4]
|
|
47
|
-
// (This is the standard Keccak rho offsets table, flattened in y-major order.)
|
|
48
|
-
0, 1, 62, 28, 27,
|
|
49
|
-
36, 44, 6, 55, 20,
|
|
50
|
-
3, 10, 43, 25, 39,
|
|
51
|
-
41, 45, 15, 21, 8,
|
|
52
|
-
18, 2, 61, 56, 14,
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
// Pi step mapping: index -> newIndex
|
|
56
|
-
const _PI = [
|
|
57
|
-
0, 10, 20, 5, 15,
|
|
58
|
-
16, 1, 11, 21, 6,
|
|
59
|
-
7, 17, 2, 12, 22,
|
|
60
|
-
23, 8, 18, 3, 13,
|
|
61
|
-
14, 24, 9, 19, 4,
|
|
62
|
-
];
|
|
63
|
-
|
|
64
|
-
function _keccakF1600(state) {
|
|
65
|
-
const b = new Array(25);
|
|
66
|
-
const c = new Array(5);
|
|
67
|
-
const d = new Array(5);
|
|
68
|
-
|
|
69
|
-
for (let round = 0; round < 24; round++) {
|
|
70
|
-
// Theta
|
|
71
|
-
for (let x = 0; x < 5; x++) {
|
|
72
|
-
c[x] = state[x] ^ state[x + 5] ^ state[x + 10] ^ state[x + 15] ^ state[x + 20];
|
|
73
|
-
}
|
|
74
|
-
for (let x = 0; x < 5; x++) {
|
|
75
|
-
d[x] = c[(x + 4) % 5] ^ _rotl64(c[(x + 1) % 5], 1);
|
|
76
|
-
}
|
|
77
|
-
for (let i = 0; i < 25; i++) {
|
|
78
|
-
state[i] = (state[i] ^ d[i % 5]) & _MASK64;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// Rho + Pi
|
|
82
|
-
for (let i = 0; i < 25; i++) {
|
|
83
|
-
b[_PI[i]] = _rotl64(state[i], _R[i]);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Chi
|
|
87
|
-
for (let y = 0; y < 5; y++) {
|
|
88
|
-
const row = y * 5;
|
|
89
|
-
for (let x = 0; x < 5; x++) {
|
|
90
|
-
state[row + x] = (b[row + x] ^ ((~b[row + ((x + 1) % 5)]) & b[row + ((x + 2) % 5)])) & _MASK64;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// Iota
|
|
95
|
-
state[0] = (state[0] ^ _RC[round]) & _MASK64;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function _keccak256Bytes(bytes) {
|
|
100
|
-
// Keccak-256: rate=1088 bits => 136 bytes
|
|
101
|
-
const rate = 136;
|
|
102
|
-
const outLen = 32;
|
|
103
|
-
const state = new Array(25).fill(0n);
|
|
104
|
-
|
|
105
|
-
let offset = 0;
|
|
106
|
-
while (offset + rate <= bytes.length) {
|
|
107
|
-
for (let i = 0; i < rate / 8; i++) {
|
|
108
|
-
state[i] = (state[i] ^ _readU64LE(bytes, offset + i * 8)) & _MASK64;
|
|
109
|
-
}
|
|
110
|
-
_keccakF1600(state);
|
|
111
|
-
offset += rate;
|
|
112
|
-
}
|
|
17
|
+
// quantum-coin-js-sdk returns -1000 from crypto helpers when the SDK has not
|
|
18
|
+
// been initialized yet, and null when the input is invalid.
|
|
19
|
+
const _NOT_INITIALIZED = -1000;
|
|
113
20
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Convert a byte array returned by a quantum-coin-js-sdk crypto helper into a
|
|
23
|
+
* normalized hex string, throwing a clear error when the SDK is not
|
|
24
|
+
* initialized or the operation failed.
|
|
25
|
+
* @param {number[]|Uint8Array|number|null} result
|
|
26
|
+
* @param {string} operation
|
|
27
|
+
* @returns {string}
|
|
28
|
+
*/
|
|
29
|
+
function _hexFromQcsdk(result, operation) {
|
|
30
|
+
if (result === _NOT_INITIALIZED) {
|
|
31
|
+
throw makeError(
|
|
32
|
+
"quantum-coin-js-sdk not initialized; call Initialize() first",
|
|
33
|
+
"NOT_INITIALIZED",
|
|
34
|
+
{ operation },
|
|
35
|
+
);
|
|
123
36
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const out = new Uint8Array(outLen);
|
|
127
|
-
let outOff = 0;
|
|
128
|
-
let lane = 0;
|
|
129
|
-
while (outOff < outLen) {
|
|
130
|
-
const tmp = new Uint8Array(8);
|
|
131
|
-
_writeU64LE(tmp, 0, state[lane]);
|
|
132
|
-
const take = Math.min(8, outLen - outOff);
|
|
133
|
-
out.set(tmp.slice(0, take), outOff);
|
|
134
|
-
outOff += take;
|
|
135
|
-
lane++;
|
|
37
|
+
if (result == null || typeof result === "number") {
|
|
38
|
+
throw makeError(`${operation} failed`, "UNKNOWN_ERROR", { operation });
|
|
136
39
|
}
|
|
137
|
-
return
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
function _hash(alg, data) {
|
|
141
|
-
const bytes = arrayify(data);
|
|
142
|
-
return bytesToHex(crypto.createHash(alg).update(Buffer.from(bytes)).digest());
|
|
40
|
+
return bytesToHex(result instanceof Uint8Array ? result : Uint8Array.from(result));
|
|
143
41
|
}
|
|
144
42
|
|
|
145
43
|
/**
|
|
@@ -149,18 +47,7 @@ function _hash(alg, data) {
|
|
|
149
47
|
*/
|
|
150
48
|
function keccak256(data) {
|
|
151
49
|
const bytes = arrayify(data);
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
// Prefer native keccak if available (varies by Node/OpenSSL build).
|
|
155
|
-
if (hashes.includes("keccak256")) {
|
|
156
|
-
return bytesToHex(crypto.createHash("keccak256").update(Buffer.from(bytes)).digest());
|
|
157
|
-
}
|
|
158
|
-
if (hashes.includes("keccak-256")) {
|
|
159
|
-
return bytesToHex(crypto.createHash("keccak-256").update(Buffer.from(bytes)).digest());
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
// Fallback: pure JS Keccak-256
|
|
163
|
-
return bytesToHex(_keccak256Bytes(bytes));
|
|
50
|
+
return _hexFromQcsdk(qcsdk.keccak256(bytes), "keccak256");
|
|
164
51
|
}
|
|
165
52
|
|
|
166
53
|
/**
|
|
@@ -169,7 +56,8 @@ function keccak256(data) {
|
|
|
169
56
|
* @returns {string}
|
|
170
57
|
*/
|
|
171
58
|
function sha256(data) {
|
|
172
|
-
|
|
59
|
+
const bytes = arrayify(data);
|
|
60
|
+
return _hexFromQcsdk(qcsdk.sha256(bytes), "sha256");
|
|
173
61
|
}
|
|
174
62
|
|
|
175
63
|
/**
|
|
@@ -178,7 +66,8 @@ function sha256(data) {
|
|
|
178
66
|
* @returns {string}
|
|
179
67
|
*/
|
|
180
68
|
function sha512(data) {
|
|
181
|
-
|
|
69
|
+
const bytes = arrayify(data);
|
|
70
|
+
return _hexFromQcsdk(qcsdk.sha512(bytes), "sha512");
|
|
182
71
|
}
|
|
183
72
|
|
|
184
73
|
/**
|
|
@@ -187,7 +76,8 @@ function sha512(data) {
|
|
|
187
76
|
* @returns {string}
|
|
188
77
|
*/
|
|
189
78
|
function ripemd160(data) {
|
|
190
|
-
|
|
79
|
+
const bytes = arrayify(data);
|
|
80
|
+
return _hexFromQcsdk(qcsdk.ripemd160(bytes), "ripemd160");
|
|
191
81
|
}
|
|
192
82
|
|
|
193
83
|
/**
|
|
@@ -199,18 +89,62 @@ function id(text) {
|
|
|
199
89
|
return keccak256(utf8ToBytes(text));
|
|
200
90
|
}
|
|
201
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Compute the EIP-191 "personal message" digest for a message.
|
|
94
|
+
*
|
|
95
|
+
* QuantumCoin uses the exact same prefix as Ethereum, so this is byte-for-byte
|
|
96
|
+
* compatible with `personal_sign` in `quantum-coin-go`:
|
|
97
|
+
*
|
|
98
|
+
* keccak256("\x19Ethereum Signed Message:\n" + message.length + message)
|
|
99
|
+
*
|
|
100
|
+
* The resulting 32-byte hash is the digest passed to `Wallet.signMessage` /
|
|
101
|
+
* `Wallet.signMessageSync` and re-derived by `verifyMessage`. The decimal length
|
|
102
|
+
* prefix counts message BYTES, not characters. A string message is UTF-8
|
|
103
|
+
* encoded; a Uint8Array (or 0x hex string coerced via `arrayify`) is treated as
|
|
104
|
+
* raw bytes.
|
|
105
|
+
*
|
|
106
|
+
* @param {string|Uint8Array} message The message to hash. Strings are UTF-8 encoded.
|
|
107
|
+
* @returns {string} 0x-prefixed, 32-byte keccak256 digest.
|
|
108
|
+
*/
|
|
109
|
+
function hashMessage(message) {
|
|
110
|
+
const msgBytes = typeof message === "string" ? utf8ToBytes(message) : arrayify(message);
|
|
111
|
+
const prefix = utf8ToBytes(`\x19Ethereum Signed Message:\n${msgBytes.length}`);
|
|
112
|
+
const composed = new Uint8Array(prefix.length + msgBytes.length);
|
|
113
|
+
composed.set(prefix, 0);
|
|
114
|
+
composed.set(msgBytes, prefix.length);
|
|
115
|
+
return keccak256(composed);
|
|
116
|
+
}
|
|
117
|
+
|
|
202
118
|
/**
|
|
203
119
|
* Generate cryptographically strong random bytes.
|
|
120
|
+
*
|
|
121
|
+
* Uses the platform Web Crypto API (`globalThis.crypto`), which is available in
|
|
122
|
+
* modern browsers and Node.js 20+.
|
|
204
123
|
* @param {number} length
|
|
205
124
|
* @returns {Uint8Array}
|
|
206
125
|
*/
|
|
207
126
|
function randomBytes(length) {
|
|
208
|
-
|
|
127
|
+
const webcrypto = typeof globalThis !== "undefined" ? globalThis.crypto : undefined;
|
|
128
|
+
if (!webcrypto || typeof webcrypto.getRandomValues !== "function") {
|
|
129
|
+
throw makeError(
|
|
130
|
+
"secure random source (globalThis.crypto.getRandomValues) not available in this environment",
|
|
131
|
+
"UNKNOWN_ERROR",
|
|
132
|
+
{ operation: "randomBytes" },
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
const out = new Uint8Array(length);
|
|
136
|
+
// getRandomValues rejects requests larger than 65536 bytes; fill in chunks.
|
|
137
|
+
const MAX_CHUNK = 65536;
|
|
138
|
+
for (let offset = 0; offset < length; offset += MAX_CHUNK) {
|
|
139
|
+
const chunk = out.subarray(offset, Math.min(offset + MAX_CHUNK, length));
|
|
140
|
+
webcrypto.getRandomValues(chunk);
|
|
141
|
+
}
|
|
142
|
+
return out;
|
|
209
143
|
}
|
|
210
144
|
|
|
211
145
|
/**
|
|
212
146
|
* Compute HMAC over data.
|
|
213
|
-
* @param {string} algorithm
|
|
147
|
+
* @param {string} algorithm "sha256" or "sha512"
|
|
214
148
|
* @param {string|Uint8Array} key
|
|
215
149
|
* @param {string|Uint8Array} data
|
|
216
150
|
* @returns {string}
|
|
@@ -218,8 +152,7 @@ function randomBytes(length) {
|
|
|
218
152
|
function computeHmac(algorithm, key, data) {
|
|
219
153
|
const k = typeof key === "string" ? utf8ToBytes(key) : arrayify(key);
|
|
220
154
|
const d = typeof data === "string" ? utf8ToBytes(data) : arrayify(data);
|
|
221
|
-
|
|
222
|
-
return bytesToHex(new Uint8Array(h));
|
|
155
|
+
return _hexFromQcsdk(qcsdk.computeHmac(algorithm, k, d), "computeHmac");
|
|
223
156
|
}
|
|
224
157
|
|
|
225
158
|
/**
|
|
@@ -228,59 +161,44 @@ function computeHmac(algorithm, key, data) {
|
|
|
228
161
|
* @param {string|Uint8Array} salt
|
|
229
162
|
* @param {number} iterations
|
|
230
163
|
* @param {number} keylen
|
|
231
|
-
* @param {string=} algorithm
|
|
164
|
+
* @param {string=} algorithm "sha256" (default) or "sha512"
|
|
232
165
|
* @returns {string}
|
|
233
166
|
*/
|
|
234
167
|
function pbkdf2(password, salt, iterations, keylen, algorithm) {
|
|
235
168
|
const p = typeof password === "string" ? utf8ToBytes(password) : arrayify(password);
|
|
236
169
|
const s = typeof salt === "string" ? utf8ToBytes(salt) : arrayify(salt);
|
|
237
170
|
const a = algorithm || "sha256";
|
|
238
|
-
|
|
239
|
-
return bytesToHex(new Uint8Array(out));
|
|
171
|
+
return _hexFromQcsdk(qcsdk.pbkdf2(p, s, iterations, keylen, a), "pbkdf2");
|
|
240
172
|
}
|
|
241
173
|
|
|
242
174
|
/**
|
|
243
|
-
* scrypt (
|
|
175
|
+
* scrypt (sync) helper returning hex string.
|
|
244
176
|
* @param {string|Uint8Array} password
|
|
245
177
|
* @param {string|Uint8Array} salt
|
|
246
178
|
* @param {number} N
|
|
247
179
|
* @param {number} r
|
|
248
180
|
* @param {number} p
|
|
249
181
|
* @param {number} dkLen
|
|
250
|
-
* @returns {
|
|
182
|
+
* @returns {string}
|
|
251
183
|
*/
|
|
252
|
-
function
|
|
184
|
+
function scryptSync(password, salt, N, r, p, dkLen) {
|
|
253
185
|
const pw = typeof password === "string" ? utf8ToBytes(password) : arrayify(password);
|
|
254
186
|
const sa = typeof salt === "string" ? utf8ToBytes(salt) : arrayify(salt);
|
|
255
|
-
return
|
|
256
|
-
crypto.scrypt(
|
|
257
|
-
Buffer.from(pw),
|
|
258
|
-
Buffer.from(sa),
|
|
259
|
-
dkLen,
|
|
260
|
-
{ N, r, p, maxmem: 128 * 1024 * 1024 },
|
|
261
|
-
(err, derived) => {
|
|
262
|
-
if (err) return reject(err);
|
|
263
|
-
resolve(bytesToHex(new Uint8Array(derived)));
|
|
264
|
-
},
|
|
265
|
-
);
|
|
266
|
-
});
|
|
187
|
+
return _hexFromQcsdk(qcsdk.scryptDeriveKey(pw, sa, N, r, p, dkLen), "scrypt");
|
|
267
188
|
}
|
|
268
189
|
|
|
269
190
|
/**
|
|
270
|
-
* scrypt (
|
|
191
|
+
* scrypt (async) helper returning hex string.
|
|
271
192
|
* @param {string|Uint8Array} password
|
|
272
193
|
* @param {string|Uint8Array} salt
|
|
273
194
|
* @param {number} N
|
|
274
195
|
* @param {number} r
|
|
275
196
|
* @param {number} p
|
|
276
197
|
* @param {number} dkLen
|
|
277
|
-
* @returns {string}
|
|
198
|
+
* @returns {Promise<string>}
|
|
278
199
|
*/
|
|
279
|
-
function
|
|
280
|
-
|
|
281
|
-
const sa = typeof salt === "string" ? utf8ToBytes(salt) : arrayify(salt);
|
|
282
|
-
const out = crypto.scryptSync(Buffer.from(pw), Buffer.from(sa), dkLen, { N, r, p, maxmem: 257 * 1024 * 1024 }); //257 instead of 256 for buffer for compat for N=262144, r=8, p=1
|
|
283
|
-
return bytesToHex(new Uint8Array(out));
|
|
200
|
+
function scrypt(password, salt, N, r, p, dkLen) {
|
|
201
|
+
return Promise.resolve().then(() => scryptSync(password, salt, N, r, p, dkLen));
|
|
284
202
|
}
|
|
285
203
|
|
|
286
204
|
module.exports = {
|
|
@@ -289,10 +207,10 @@ module.exports = {
|
|
|
289
207
|
sha512,
|
|
290
208
|
ripemd160,
|
|
291
209
|
id,
|
|
210
|
+
hashMessage,
|
|
292
211
|
randomBytes,
|
|
293
212
|
computeHmac,
|
|
294
213
|
pbkdf2,
|
|
295
214
|
scrypt,
|
|
296
215
|
scryptSync,
|
|
297
216
|
};
|
|
298
|
-
|
package/src/utils/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
declare const _exports: {
|
|
2
|
+
FixedNumber: typeof import("./fixednumber").FixedNumber;
|
|
2
3
|
formatUnits(value: import("./units").BigNumberish, decimals?: number | undefined): string;
|
|
3
4
|
parseUnits(value: string, decimals?: number | undefined): bigint;
|
|
4
5
|
formatEther(value: import("./units").BigNumberish): string;
|
|
@@ -16,6 +17,7 @@ declare const _exports: {
|
|
|
16
17
|
sha512(data: string | Uint8Array): string;
|
|
17
18
|
ripemd160(data: string | Uint8Array): string;
|
|
18
19
|
id(text: string): string;
|
|
20
|
+
hashMessage(message: string | Uint8Array): string;
|
|
19
21
|
randomBytes(length: number): Uint8Array;
|
|
20
22
|
computeHmac(algorithm: string, key: string | Uint8Array, data: string | Uint8Array): string;
|
|
21
23
|
pbkdf2(password: string | Uint8Array, salt: string | Uint8Array, iterations: number, keylen: number, algorithm?: string | undefined): string;
|
|
@@ -58,6 +60,5 @@ declare const _exports: {
|
|
|
58
60
|
}): string;
|
|
59
61
|
getCreate2Address(from: string, salt: string, initCodeHash: string): string;
|
|
60
62
|
computeAddress(key: string | Uint8Array): string;
|
|
61
|
-
FixedNumber: typeof import("./fixednumber").FixedNumber;
|
|
62
63
|
};
|
|
63
64
|
export = _exports;
|
package/src/utils/rlp.js
CHANGED
|
@@ -11,8 +11,8 @@ const { arrayify, bytesToHex, hexToBytes, isHexString, normalizeHex, utf8ToBytes
|
|
|
11
11
|
function _toBytes(value) {
|
|
12
12
|
if (value == null) return new Uint8Array([]);
|
|
13
13
|
|
|
14
|
+
// Node Buffers are Uint8Array subclasses, so this covers both.
|
|
14
15
|
if (value instanceof Uint8Array) return new Uint8Array(value);
|
|
15
|
-
if (Buffer.isBuffer(value)) return new Uint8Array(value);
|
|
16
16
|
|
|
17
17
|
if (Array.isArray(value)) {
|
|
18
18
|
// List gets handled elsewhere; here we accept array-of-bytes as a BytesLike.
|
package/src/wallet/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
declare const _exports: {
|
|
2
|
+
verifyMessage(message: string | Uint8Array, signature: string | Uint8Array): string;
|
|
2
3
|
SigningKey: typeof import("./wallet").SigningKey;
|
|
3
4
|
AbstractSigner: typeof import("./wallet").AbstractSigner;
|
|
4
5
|
BaseWallet: typeof import("./wallet").BaseWallet;
|