@waku/rln 0.0.1 → 0.0.2-ce9a6ae.0
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.md +12 -108
- package/bundle/_virtual/__node-resolve_empty.js +6 -0
- package/bundle/_virtual/_assert.js +3 -0
- package/bundle/_virtual/_commonjs-dynamic-modules.js +5 -0
- package/bundle/_virtual/_commonjsHelpers.js +32 -0
- package/bundle/_virtual/_node-resolve_empty.js +3 -0
- package/bundle/_virtual/_sha2.js +3 -0
- package/bundle/_virtual/_u64.js +3 -0
- package/bundle/_virtual/aes.js +3 -0
- package/bundle/_virtual/bn.js +3 -0
- package/bundle/_virtual/browser.js +3 -0
- package/bundle/_virtual/checksum.js +3 -0
- package/bundle/_virtual/cipher.js +3 -0
- package/bundle/_virtual/class.js +3 -0
- package/bundle/_virtual/common.js +3 -0
- package/bundle/_virtual/common2.js +3 -0
- package/bundle/_virtual/cryptoBrowser.js +3 -0
- package/bundle/_virtual/functional.js +3 -0
- package/bundle/_virtual/hash.js +3 -0
- package/bundle/_virtual/hmac.js +3 -0
- package/bundle/_virtual/index.js +3 -0
- package/bundle/_virtual/index2.js +6 -0
- package/bundle/_virtual/inherits_browser.js +3 -0
- package/bundle/_virtual/kdf.js +3 -0
- package/bundle/_virtual/lodash.js +3 -0
- package/bundle/_virtual/password.js +3 -0
- package/bundle/_virtual/pbkdf2.js +3 -0
- package/bundle/_virtual/pbkdf22.js +3 -0
- package/bundle/_virtual/random.js +3 -0
- package/bundle/_virtual/ripemd.js +3 -0
- package/bundle/_virtual/schema-validation-generated.js +3 -0
- package/bundle/_virtual/schema-validation.js +3 -0
- package/bundle/_virtual/scrypt.js +3 -0
- package/bundle/_virtual/scrypt2.js +3 -0
- package/bundle/_virtual/sha.js +3 -0
- package/bundle/_virtual/sha256.js +3 -0
- package/bundle/_virtual/sha2562.js +3 -0
- package/bundle/_virtual/sha3.js +3 -0
- package/bundle/_virtual/sha512.js +3 -0
- package/bundle/_virtual/types.js +3 -0
- package/bundle/_virtual/utils.js +3 -0
- package/bundle/_virtual/utils2.js +3 -0
- package/bundle/_virtual/utils3.js +3 -0
- package/bundle/index.js +12 -10
- package/bundle/node_modules/@ethersproject/abi/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/abi-coder.js +96 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/abstract-coder.js +148 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/address.js +26 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/anonymous.js +20 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/array.js +210 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/boolean.js +18 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/bytes.js +30 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/fixed-bytes.js +26 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/null.js +22 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/number.js +43 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/string.js +19 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/tuple.js +58 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/fragments.js +854 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/interface.js +609 -0
- package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/index.js +66 -0
- package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/index.js +302 -0
- package/bundle/node_modules/@ethersproject/address/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/address/lib.esm/index.js +110 -0
- package/bundle/node_modules/@ethersproject/base64/lib.esm/base64.js +20 -0
- package/bundle/node_modules/@ethersproject/basex/lib.esm/index.js +120 -0
- package/bundle/node_modules/@ethersproject/bignumber/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/bignumber/lib.esm/bignumber.js +287 -0
- package/bundle/node_modules/@ethersproject/bytes/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/bytes/lib.esm/index.js +402 -0
- package/bundle/node_modules/@ethersproject/constants/lib.esm/addresses.js +3 -0
- package/bundle/node_modules/@ethersproject/constants/lib.esm/bignumbers.js +8 -0
- package/bundle/node_modules/@ethersproject/constants/lib.esm/hashes.js +3 -0
- package/bundle/node_modules/@ethersproject/contracts/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/contracts/lib.esm/index.js +893 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js +256 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js +36 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js +135 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/id.js +8 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/namehash.js +64 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/typed-data.js +443 -0
- package/bundle/node_modules/@ethersproject/keccak256/lib.esm/index.js +8 -0
- package/bundle/node_modules/@ethersproject/keccak256/node_modules/js-sha3/src/sha3.js +660 -0
- package/bundle/node_modules/@ethersproject/logger/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/logger/lib.esm/index.js +352 -0
- package/bundle/node_modules/@ethersproject/networks/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/networks/lib.esm/index.js +248 -0
- package/bundle/node_modules/@ethersproject/properties/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/properties/lib.esm/index.js +127 -0
- package/bundle/node_modules/@ethersproject/providers/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/providers/lib.esm/base-provider.js +2007 -0
- package/bundle/node_modules/@ethersproject/providers/lib.esm/formatter.js +422 -0
- package/bundle/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js +674 -0
- package/bundle/node_modules/@ethersproject/providers/lib.esm/web3-provider.js +132 -0
- package/bundle/node_modules/@ethersproject/rlp/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/rlp/lib.esm/index.js +120 -0
- package/bundle/node_modules/@ethersproject/sha2/lib.esm/sha2.js +8 -0
- package/bundle/node_modules/@ethersproject/signing-key/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/signing-key/lib.esm/elliptic.js +2430 -0
- package/bundle/node_modules/@ethersproject/signing-key/lib.esm/index.js +76 -0
- package/bundle/node_modules/@ethersproject/strings/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/strings/lib.esm/utf8.js +219 -0
- package/bundle/node_modules/@ethersproject/transactions/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/transactions/lib.esm/index.js +279 -0
- package/bundle/node_modules/@ethersproject/web/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/web/lib.esm/geturl.js +69 -0
- package/bundle/node_modules/@ethersproject/web/lib.esm/index.js +404 -0
- package/bundle/node_modules/@iden3/js-crypto/dist/browser/esm/index.js +7 -0
- package/bundle/node_modules/@multiformats/multiaddr/dist/src/convert.js +15 -0
- package/bundle/node_modules/@multiformats/multiaddr/dist/src/multiaddr.js +20 -0
- package/bundle/node_modules/@multiformats/multiaddr/dist/src/protocols-table.js +92 -0
- package/bundle/node_modules/@noble/hashes/esm/_assert.js +37 -0
- package/bundle/node_modules/@noble/hashes/esm/_md.js +132 -0
- package/bundle/node_modules/@noble/hashes/esm/_u64.js +29 -0
- package/bundle/node_modules/@noble/hashes/esm/sha256.js +113 -0
- package/bundle/node_modules/@noble/hashes/esm/sha3.js +210 -0
- package/bundle/node_modules/@noble/hashes/esm/utils.js +144 -0
- package/bundle/node_modules/@stablelib/binary/lib/binary.js +22 -0
- package/bundle/node_modules/@stablelib/chacha/lib/chacha.js +245 -0
- package/bundle/node_modules/@stablelib/wipe/lib/wipe.js +26 -0
- package/bundle/node_modules/@waku/zerokit-rln-wasm/rln_wasm.js +756 -0
- package/bundle/node_modules/bech32/index.js +187 -0
- package/bundle/node_modules/bn.js/lib/bn.js +3361 -0
- package/bundle/node_modules/debug/src/browser.js +283 -0
- package/bundle/node_modules/debug/src/common.js +295 -0
- package/bundle/node_modules/ethereum-cryptography/esm/keccak.js +10 -0
- package/bundle/node_modules/ethereum-cryptography/esm/sha256.js +6 -0
- package/bundle/node_modules/ethereum-cryptography/esm/utils.js +24 -0
- package/bundle/node_modules/hash.js/lib/hash/common.js +97 -0
- package/bundle/node_modules/hash.js/lib/hash/hmac.js +51 -0
- package/bundle/node_modules/hash.js/lib/hash/ripemd.js +152 -0
- package/bundle/node_modules/hash.js/lib/hash/sha/1.js +81 -0
- package/bundle/node_modules/hash.js/lib/hash/sha/224.js +33 -0
- package/bundle/node_modules/hash.js/lib/hash/sha/256.js +113 -0
- package/bundle/node_modules/hash.js/lib/hash/sha/384.js +39 -0
- package/bundle/node_modules/hash.js/lib/hash/sha/512.js +336 -0
- package/bundle/node_modules/hash.js/lib/hash/sha/common.js +53 -0
- package/bundle/node_modules/hash.js/lib/hash/sha.js +14 -0
- package/bundle/node_modules/hash.js/lib/hash/utils.js +282 -0
- package/bundle/node_modules/hash.js/lib/hash.js +33 -0
- package/bundle/node_modules/inherits/inherits_browser.js +33 -0
- package/bundle/node_modules/it-length-prefixed/dist/src/decode.js +6 -0
- package/bundle/node_modules/lodash/lodash.js +17207 -0
- package/bundle/node_modules/minimalistic-assert/index.js +13 -0
- package/bundle/node_modules/ms/index.js +172 -0
- package/bundle/node_modules/multiformats/dist/src/bases/base.js +205 -0
- package/bundle/node_modules/multiformats/dist/src/bases/base10.js +9 -0
- package/bundle/node_modules/multiformats/dist/src/bases/base16.js +16 -0
- package/bundle/node_modules/multiformats/dist/src/bases/base2.js +10 -0
- package/bundle/node_modules/multiformats/dist/src/bases/base256emoji.js +41 -0
- package/bundle/node_modules/multiformats/dist/src/bases/base32.js +58 -0
- package/bundle/node_modules/multiformats/dist/src/bases/base36.js +14 -0
- package/bundle/node_modules/multiformats/dist/src/bases/base58.js +14 -0
- package/bundle/node_modules/multiformats/dist/src/bases/base64.js +28 -0
- package/bundle/node_modules/multiformats/dist/src/bases/base8.js +10 -0
- package/bundle/node_modules/multiformats/dist/src/bases/identity.js +11 -0
- package/bundle/node_modules/multiformats/dist/src/basics.js +15 -0
- package/bundle/node_modules/multiformats/dist/src/bytes.js +18 -0
- package/bundle/node_modules/multiformats/dist/src/codecs/json.js +2 -0
- package/bundle/node_modules/multiformats/dist/src/vendor/base-x.js +170 -0
- package/bundle/node_modules/protons-runtime/dist/src/codec.js +20 -0
- package/bundle/node_modules/protons-runtime/dist/src/codecs/enum.js +24 -0
- package/bundle/node_modules/protons-runtime/dist/src/codecs/message.js +7 -0
- package/bundle/node_modules/protons-runtime/dist/src/decode.js +8 -0
- package/bundle/node_modules/protons-runtime/dist/src/encode.js +11 -0
- package/bundle/node_modules/protons-runtime/dist/src/index.js +30 -0
- package/bundle/node_modules/protons-runtime/dist/src/utils/float.js +54 -0
- package/bundle/node_modules/protons-runtime/dist/src/utils/longbits.js +175 -0
- package/bundle/node_modules/protons-runtime/dist/src/utils/pool.js +28 -0
- package/bundle/node_modules/protons-runtime/dist/src/utils/reader.js +367 -0
- package/bundle/node_modules/protons-runtime/dist/src/utils/utf8.js +99 -0
- package/bundle/node_modules/protons-runtime/dist/src/utils/writer.js +438 -0
- package/bundle/node_modules/uint8-varint/dist/src/index.js +124 -0
- package/bundle/node_modules/uint8arrays/dist/src/alloc.js +17 -0
- package/bundle/node_modules/uint8arrays/dist/src/from-string.js +19 -0
- package/bundle/node_modules/uint8arrays/dist/src/util/bases.js +49 -0
- package/bundle/packages/core/dist/lib/connection_manager/connection_manager.js +21 -0
- package/bundle/packages/core/dist/lib/connection_manager/keep_alive_manager.js +18 -0
- package/bundle/packages/core/dist/lib/filter/filter.js +27 -0
- package/bundle/packages/core/dist/lib/light_push/light_push.js +27 -0
- package/bundle/packages/core/dist/lib/message/version_0.js +154 -0
- package/bundle/packages/core/dist/lib/metadata/metadata.js +27 -0
- package/bundle/packages/core/dist/lib/store/store.js +27 -0
- package/bundle/packages/interfaces/dist/connection_manager.js +19 -0
- package/bundle/packages/interfaces/dist/constants.js +6 -0
- package/bundle/packages/interfaces/dist/health_indicator.js +12 -0
- package/bundle/packages/interfaces/dist/protocols.js +97 -0
- package/bundle/packages/proto/dist/generated/filter.js +445 -0
- package/bundle/packages/proto/dist/generated/filter_v2.js +424 -0
- package/bundle/packages/proto/dist/generated/light_push.js +389 -0
- package/bundle/packages/proto/dist/generated/message.js +213 -0
- package/bundle/packages/proto/dist/generated/metadata.js +130 -0
- package/bundle/packages/proto/dist/generated/peer_exchange.js +209 -0
- package/bundle/packages/proto/dist/generated/sds_message.js +105 -0
- package/bundle/packages/proto/dist/generated/store_v3.js +490 -0
- package/bundle/packages/proto/dist/generated/topic_only_message.js +61 -0
- package/bundle/packages/rln/dist/codec.js +93 -0
- package/bundle/packages/rln/dist/contract/abi/rlnv2.js +394 -0
- package/bundle/packages/rln/dist/contract/constants.js +33 -0
- package/bundle/packages/rln/dist/contract/rln_contract.js +427 -0
- package/bundle/packages/rln/dist/create.js +9 -0
- package/bundle/packages/rln/dist/identity.js +76 -0
- package/bundle/packages/rln/dist/keystore/cipher.js +31 -0
- package/bundle/packages/rln/dist/keystore/credential_validation_generated.js +119 -0
- package/bundle/packages/rln/dist/keystore/keystore.js +223 -0
- package/bundle/packages/rln/dist/keystore/keystore_validation_generated.js +74 -0
- package/bundle/packages/rln/dist/keystore/schema_validator.js +20 -0
- package/bundle/packages/rln/dist/message.js +51 -0
- package/bundle/packages/rln/dist/proof.js +54 -0
- package/bundle/packages/rln/dist/resources/verification_key.js +112 -0
- package/bundle/packages/rln/dist/resources/witness_calculator.js +330 -0
- package/bundle/packages/rln/dist/rln.js +204 -0
- package/bundle/packages/rln/dist/root_tracker.js +76 -0
- package/bundle/packages/rln/dist/utils/bytes.js +65 -0
- package/bundle/packages/rln/dist/utils/epoch.js +39 -0
- package/bundle/packages/rln/dist/utils/hash.js +10 -0
- package/bundle/packages/rln/dist/utils/metamask.js +14 -0
- package/bundle/packages/rln/dist/zerokit.js +122 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/checksum.js +52 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/cipher.js +65 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/class.js +99 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/functional.js +103 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/index.js +28 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/kdf.js +78 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/password.js +17 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/schema-validation-generated.js +1253 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/schema-validation.js +40 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/types.js +5 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/aes.js +103 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/pbkdf2.js +41 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/random.js +17 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/scrypt.js +23 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/sha256.js +12 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/utils.js +77 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/index.js +9 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/md5.js +215 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/nil.js +3 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/parse.js +35 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/regex.js +3 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/rng.js +21 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/sha1.js +96 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/stringify.js +31 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v1.js +96 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v3.js +6 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v35.js +66 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v4.js +24 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v5.js +6 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/validate.js +7 -0
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/version.js +11 -0
- package/bundle/packages/rln/node_modules/@noble/hashes/_assert.js +52 -0
- package/bundle/packages/rln/node_modules/@noble/hashes/_sha2.js +124 -0
- package/bundle/packages/rln/node_modules/@noble/hashes/_u64.js +71 -0
- package/bundle/packages/rln/node_modules/@noble/hashes/cryptoBrowser.js +10 -0
- package/bundle/packages/rln/node_modules/@noble/hashes/hmac.js +88 -0
- package/bundle/packages/rln/node_modules/@noble/hashes/pbkdf2.js +99 -0
- package/bundle/packages/rln/node_modules/@noble/hashes/scrypt.js +233 -0
- package/bundle/packages/rln/node_modules/@noble/hashes/sha256.js +133 -0
- package/bundle/packages/rln/node_modules/@noble/hashes/sha512.js +243 -0
- package/bundle/packages/rln/node_modules/@noble/hashes/utils.js +167 -0
- package/bundle/packages/rln/node_modules/uuid/dist/esm-browser/native.js +4 -0
- package/bundle/packages/rln/node_modules/uuid/dist/esm-browser/rng.js +13 -0
- package/bundle/packages/rln/node_modules/uuid/dist/esm-browser/stringify.js +28 -0
- package/bundle/packages/rln/node_modules/uuid/dist/esm-browser/v4.js +19 -0
- package/bundle/packages/utils/dist/bytes/index.js +44 -0
- package/bundle/packages/utils/dist/common/sharding/index.js +91 -0
- package/bundle/packages/utils/dist/logger/index.js +31 -0
- package/bundle/resources/rln.wasm +0 -0
- package/bundle/resources/rln_final.zkey +0 -0
- package/bundle/resources/verification_key.d.ts +13 -0
- package/bundle/resources/verification_key.js +112 -0
- package/bundle/resources/witness_calculator.d.ts +11 -0
- package/bundle/resources/witness_calculator.js +328 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/identity.test.d.ts +1 -0
- package/dist/__tests__/identity.test.js +40 -0
- package/dist/__tests__/identity.test.js.map +1 -0
- package/dist/codec.d.ts +39 -0
- package/dist/codec.js +77 -0
- package/dist/codec.js.map +1 -0
- package/dist/contract/abi/rlnv2.d.ts +42 -0
- package/dist/contract/abi/rlnv2.js +393 -0
- package/dist/contract/abi/rlnv2.js.map +1 -0
- package/dist/contract/constants.d.ts +68 -0
- package/dist/contract/constants.js +31 -0
- package/dist/contract/constants.js.map +1 -0
- package/dist/contract/index.d.ts +2 -0
- package/dist/contract/index.js +3 -0
- package/dist/contract/index.js.map +1 -0
- package/dist/contract/rln_contract.d.ts +119 -0
- package/dist/contract/rln_contract.js +421 -0
- package/dist/contract/rln_contract.js.map +1 -0
- package/dist/create.d.ts +2 -0
- package/dist/create.js +8 -0
- package/dist/create.js.map +1 -0
- package/dist/identity.d.ts +16 -0
- package/dist/identity.js +73 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +11 -2
- package/dist/index.js +11 -8
- package/dist/index.js.map +1 -1
- package/dist/keystore/cipher.d.ts +4 -0
- package/dist/keystore/cipher.js +28 -0
- package/dist/keystore/cipher.js.map +1 -0
- package/dist/keystore/credential_validation_generated.d.ts +8 -0
- package/dist/keystore/credential_validation_generated.js +121 -0
- package/dist/keystore/credential_validation_generated.js.map +1 -0
- package/dist/keystore/index.d.ts +4 -0
- package/dist/keystore/index.js +3 -0
- package/dist/keystore/index.js.map +1 -0
- package/dist/keystore/keystore.d.ts +50 -0
- package/dist/keystore/keystore.js +205 -0
- package/dist/keystore/keystore.js.map +1 -0
- package/dist/keystore/keystore_validation_generated.d.ts +8 -0
- package/dist/keystore/keystore_validation_generated.js +75 -0
- package/dist/keystore/keystore_validation_generated.js.map +1 -0
- package/dist/keystore/schema_validator.d.ts +2 -0
- package/dist/keystore/schema_validator.js +18 -0
- package/dist/keystore/schema_validator.js.map +1 -0
- package/dist/keystore/types.d.ts +29 -0
- package/dist/keystore/types.js +2 -0
- package/dist/keystore/types.js.map +1 -0
- package/dist/message.d.ts +18 -0
- package/dist/message.js +49 -0
- package/dist/message.js.map +1 -0
- package/dist/proof.d.ts +21 -0
- package/dist/proof.js +50 -0
- package/dist/proof.js.map +1 -0
- package/dist/resources/rln.wasm +0 -0
- package/dist/resources/rln_final.zkey +0 -0
- package/dist/resources/verification_key.d.ts +13 -0
- package/dist/resources/verification_key.js +112 -0
- package/dist/resources/witness_calculator.d.ts +11 -0
- package/dist/resources/witness_calculator.js +328 -0
- package/dist/rln.d.ts +59 -13
- package/dist/rln.js +164 -81
- package/dist/rln.js.map +1 -1
- package/dist/root_tracker.d.ts +10 -0
- package/dist/root_tracker.js +75 -0
- package/dist/root_tracker.js.map +1 -0
- package/dist/utils/bytes.d.ts +20 -0
- package/dist/utils/bytes.js +64 -0
- package/dist/utils/bytes.js.map +1 -0
- package/dist/utils/epoch.d.ts +3 -0
- package/dist/utils/epoch.js +23 -0
- package/dist/utils/epoch.js.map +1 -0
- package/dist/utils/hash.d.ts +2 -0
- package/dist/utils/hash.js +13 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/metamask.d.ts +2 -0
- package/dist/utils/metamask.js +12 -0
- package/dist/utils/metamask.js.map +1 -0
- package/dist/zerokit.d.ts +19 -0
- package/dist/zerokit.js +119 -0
- package/dist/zerokit.js.map +1 -0
- package/package.json +1 -126
- package/src/__tests__/identity.test.ts +50 -0
- package/src/codec.ts +134 -0
- package/src/contract/abi/rlnv2.ts +392 -0
- package/src/contract/constants.ts +35 -0
- package/src/contract/index.ts +2 -0
- package/src/contract/rln_contract.ts +673 -0
- package/src/create.ts +9 -0
- package/src/identity.ts +101 -0
- package/src/index.ts +24 -10
- package/src/keystore/cipher.ts +54 -0
- package/src/keystore/credential_validation_generated.ts +7 -0
- package/src/keystore/index.ts +5 -0
- package/src/keystore/keystore.ts +330 -0
- package/src/keystore/keystore_validation_generated.ts +7 -0
- package/src/keystore/schema_validator.ts +34 -0
- package/src/keystore/types.ts +36 -0
- package/src/message.ts +70 -0
- package/src/proof.ts +69 -0
- package/src/resources/verification_key.d.ts +13 -0
- package/src/resources/witness_calculator.d.ts +11 -0
- package/src/rln.ts +270 -106
- package/src/root_tracker.ts +92 -0
- package/src/utils/bytes.ts +84 -0
- package/src/utils/epoch.ts +30 -0
- package/src/utils/hash.ts +15 -0
- package/src/utils/index.ts +9 -0
- package/src/utils/metamask.ts +17 -0
- package/src/zerokit.ts +214 -0
- package/bundle/02bce7e5f3bcf834.wasm +0 -0
- package/bundle/rln-f87f6dbe.js +0 -563
- package/dist/resources.d.ts +0 -4
- package/dist/resources.js +0 -5
- package/dist/resources.js.map +0 -1
- package/dist/witness_calculator.d.ts +0 -16
- package/dist/witness_calculator.js +0 -291
- package/dist/witness_calculator.js.map +0 -1
- package/dist/zerokit/rln_wasm.d.ts +0 -1
- package/dist/zerokit/rln_wasm.js +0 -2
- package/dist/zerokit/rln_wasm.js.map +0 -1
- package/dist/zerokit/rln_wasm_bg.d.ts +0 -108
- package/dist/zerokit/rln_wasm_bg.js +0 -592
- package/dist/zerokit/rln_wasm_bg.js.map +0 -1
- package/dist/zerokit/rln_wasm_bg.wasm +0 -0
- package/src/resources.ts +0 -10
- package/src/witness_calculator.d.ts +0 -4
package/dist/zerokit.js
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
import * as zerokitRLN from "@waku/zerokit-rln-wasm";
|
2
|
+
import { DEFAULT_RATE_LIMIT, RATE_LIMIT_PARAMS } from "./contract/constants.js";
|
3
|
+
import { IdentityCredential } from "./identity.js";
|
4
|
+
import { Proof, proofToBytes } from "./proof.js";
|
5
|
+
import { concatenate, dateToEpoch, epochIntToBytes, writeUIntLE } from "./utils/index.js";
|
6
|
+
export class Zerokit {
|
7
|
+
zkRLN;
|
8
|
+
witnessCalculator;
|
9
|
+
constructor(zkRLN, witnessCalculator) {
|
10
|
+
this.zkRLN = zkRLN;
|
11
|
+
this.witnessCalculator = witnessCalculator;
|
12
|
+
}
|
13
|
+
generateIdentityCredentials() {
|
14
|
+
const memKeys = zerokitRLN.generateExtendedMembershipKey(this.zkRLN); // TODO: rename this function in zerokit rln-wasm
|
15
|
+
return IdentityCredential.fromBytes(memKeys);
|
16
|
+
}
|
17
|
+
generateSeededIdentityCredential(seed) {
|
18
|
+
const stringEncoder = new TextEncoder();
|
19
|
+
const seedBytes = stringEncoder.encode(seed);
|
20
|
+
// TODO: rename this function in zerokit rln-wasm
|
21
|
+
const memKeys = zerokitRLN.generateSeededExtendedMembershipKey(this.zkRLN, seedBytes);
|
22
|
+
return IdentityCredential.fromBytes(memKeys);
|
23
|
+
}
|
24
|
+
insertMember(idCommitment) {
|
25
|
+
zerokitRLN.insertMember(this.zkRLN, idCommitment);
|
26
|
+
}
|
27
|
+
insertMembers(index, ...idCommitments) {
|
28
|
+
// serializes a seq of IDCommitments to a byte seq
|
29
|
+
// the order of serialization is |id_commitment_len<8>|id_commitment<var>|
|
30
|
+
const idCommitmentLen = writeUIntLE(new Uint8Array(8), idCommitments.length, 0, 8);
|
31
|
+
const idCommitmentBytes = concatenate(idCommitmentLen, ...idCommitments);
|
32
|
+
zerokitRLN.setLeavesFrom(this.zkRLN, index, idCommitmentBytes);
|
33
|
+
}
|
34
|
+
deleteMember(index) {
|
35
|
+
zerokitRLN.deleteLeaf(this.zkRLN, index);
|
36
|
+
}
|
37
|
+
getMerkleRoot() {
|
38
|
+
return zerokitRLN.getRoot(this.zkRLN);
|
39
|
+
}
|
40
|
+
serializeMessage(uint8Msg, memIndex, epoch, idKey, rateLimit = DEFAULT_RATE_LIMIT) {
|
41
|
+
// calculate message length
|
42
|
+
const msgLen = writeUIntLE(new Uint8Array(8), uint8Msg.length, 0, 8);
|
43
|
+
const memIndexBytes = writeUIntLE(new Uint8Array(8), memIndex, 0, 8);
|
44
|
+
const rateLimitBytes = writeUIntLE(new Uint8Array(8), rateLimit, 0, 8);
|
45
|
+
// [ id_key<32> | id_index<8> | epoch<32> | signal_len<8> | signal<var> | rate_limit<8> ]
|
46
|
+
return concatenate(idKey, memIndexBytes, epoch, msgLen, uint8Msg, rateLimitBytes);
|
47
|
+
}
|
48
|
+
async generateRLNProof(msg, index, epoch, idSecretHash, rateLimit = DEFAULT_RATE_LIMIT) {
|
49
|
+
if (epoch === undefined) {
|
50
|
+
epoch = epochIntToBytes(dateToEpoch(new Date()));
|
51
|
+
}
|
52
|
+
else if (epoch instanceof Date) {
|
53
|
+
epoch = epochIntToBytes(dateToEpoch(epoch));
|
54
|
+
}
|
55
|
+
if (epoch.length !== 32)
|
56
|
+
throw new Error("invalid epoch");
|
57
|
+
if (idSecretHash.length !== 32)
|
58
|
+
throw new Error("invalid id secret hash");
|
59
|
+
if (index < 0)
|
60
|
+
throw new Error("index must be >= 0");
|
61
|
+
if (rateLimit < RATE_LIMIT_PARAMS.MIN_RATE ||
|
62
|
+
rateLimit > RATE_LIMIT_PARAMS.MAX_RATE) {
|
63
|
+
throw new Error(`Rate limit must be between ${RATE_LIMIT_PARAMS.MIN_RATE} and ${RATE_LIMIT_PARAMS.MAX_RATE}`);
|
64
|
+
}
|
65
|
+
const serialized_msg = this.serializeMessage(msg, index, epoch, idSecretHash, rateLimit);
|
66
|
+
const rlnWitness = zerokitRLN.getSerializedRLNWitness(this.zkRLN, serialized_msg);
|
67
|
+
const inputs = zerokitRLN.RLNWitnessToJson(this.zkRLN, rlnWitness);
|
68
|
+
const calculatedWitness = await this.witnessCalculator.calculateWitness(inputs, false);
|
69
|
+
const proofBytes = zerokitRLN.generate_rln_proof_with_witness(this.zkRLN, calculatedWitness, rlnWitness);
|
70
|
+
return new Proof(proofBytes);
|
71
|
+
}
|
72
|
+
verifyRLNProof(proof, msg, rateLimit) {
|
73
|
+
let pBytes;
|
74
|
+
if (proof instanceof Uint8Array) {
|
75
|
+
pBytes = proof;
|
76
|
+
}
|
77
|
+
else {
|
78
|
+
pBytes = proofToBytes(proof);
|
79
|
+
}
|
80
|
+
// calculate message length
|
81
|
+
const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
|
82
|
+
const rateLimitBytes = rateLimit
|
83
|
+
? writeUIntLE(new Uint8Array(8), rateLimit, 0, 8)
|
84
|
+
: new Uint8Array(8); // Zero if not specified
|
85
|
+
return zerokitRLN.verifyRLNProof(this.zkRLN, concatenate(pBytes, msgLen, msg, rateLimitBytes));
|
86
|
+
}
|
87
|
+
verifyWithRoots(proof, msg, roots, rateLimit) {
|
88
|
+
let pBytes;
|
89
|
+
if (proof instanceof Uint8Array) {
|
90
|
+
pBytes = proof;
|
91
|
+
}
|
92
|
+
else {
|
93
|
+
pBytes = proofToBytes(proof);
|
94
|
+
}
|
95
|
+
// calculate message length
|
96
|
+
const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
|
97
|
+
const rateLimitBytes = rateLimit
|
98
|
+
? writeUIntLE(new Uint8Array(8), rateLimit, 0, 8)
|
99
|
+
: new Uint8Array(8); // Zero if not specified
|
100
|
+
const rootsBytes = concatenate(...roots);
|
101
|
+
return zerokitRLN.verifyWithRoots(this.zkRLN, concatenate(pBytes, msgLen, msg, rateLimitBytes), rootsBytes);
|
102
|
+
}
|
103
|
+
verifyWithNoRoot(proof, msg, rateLimit) {
|
104
|
+
let pBytes;
|
105
|
+
if (proof instanceof Uint8Array) {
|
106
|
+
pBytes = proof;
|
107
|
+
}
|
108
|
+
else {
|
109
|
+
pBytes = proofToBytes(proof);
|
110
|
+
}
|
111
|
+
// calculate message length
|
112
|
+
const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
|
113
|
+
const rateLimitBytes = rateLimit
|
114
|
+
? writeUIntLE(new Uint8Array(8), rateLimit, 0, 8)
|
115
|
+
: new Uint8Array(8); // Zero if not specified
|
116
|
+
return zerokitRLN.verifyWithRoots(this.zkRLN, concatenate(pBytes, msgLen, msg, rateLimitBytes), new Uint8Array());
|
117
|
+
}
|
118
|
+
}
|
119
|
+
//# sourceMappingURL=zerokit.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"zerokit.js","sourceRoot":"","sources":["../src/zerokit.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,126 +1 @@
|
|
1
|
-
{
|
2
|
-
"name": "@waku/rln",
|
3
|
-
"version": "0.0.1",
|
4
|
-
"description": "Rate Limit Nullifier for js-waku",
|
5
|
-
"types": "./dist/index.d.ts",
|
6
|
-
"module": "./dist/index.js",
|
7
|
-
"exports": {
|
8
|
-
".": {
|
9
|
-
"types": "./dist/index.d.ts",
|
10
|
-
"import": "./dist/index.js"
|
11
|
-
}
|
12
|
-
},
|
13
|
-
"type": "module",
|
14
|
-
"repository": "https://github.com/waku-org/js-rln",
|
15
|
-
"license": "MIT OR Apache-2.0",
|
16
|
-
"keywords": [
|
17
|
-
"waku",
|
18
|
-
"decentralised",
|
19
|
-
"communication",
|
20
|
-
"web3",
|
21
|
-
"ethereum",
|
22
|
-
"dapps"
|
23
|
-
],
|
24
|
-
"scripts": {
|
25
|
-
"prepare": "husky install",
|
26
|
-
"build": "run-s build:**",
|
27
|
-
"build:tsc": "tsc",
|
28
|
-
"build:bundle": "rollup --config rollup.config.js",
|
29
|
-
"size": "npm run build && size-limit",
|
30
|
-
"fix": "run-s fix:*",
|
31
|
-
"fix:prettier": "prettier \"src/**/*.ts\" \"./*.json\" \"*.*js\" \".github/**/*.yml\" --write",
|
32
|
-
"fix:lint": "eslint src --ext .ts --ext .cjs --fix",
|
33
|
-
"test": "run-s test:*",
|
34
|
-
"test:lint": "eslint src --ext .ts",
|
35
|
-
"test:prettier": "prettier \"src/**/*.ts\" \"./*.json\" \"*.*js\" \".github/**/*.yml\" --list-different",
|
36
|
-
"test:spelling": "cspell \"{*.md,.github/*.md,src/**/*.ts}\"",
|
37
|
-
"test:tsc": "tsc -p tsconfig.dev.json",
|
38
|
-
"test:node": "TS_NODE_PROJECT=./tsconfig.dev.json mocha",
|
39
|
-
"test:browser": "karma start karma.conf.cjs",
|
40
|
-
"watch:build": "tsc -p tsconfig.json -w",
|
41
|
-
"watch:test": "mocha --watch",
|
42
|
-
"prepublish": "npm run build",
|
43
|
-
"reset-hard": "git clean -dfx && git reset --hard && npm i && npm run build"
|
44
|
-
},
|
45
|
-
"browser": {
|
46
|
-
"crypto": false
|
47
|
-
},
|
48
|
-
"engines": {
|
49
|
-
"node": ">=16"
|
50
|
-
},
|
51
|
-
"publishConfig": {
|
52
|
-
"access": "public",
|
53
|
-
"registry": "https://registry.npmjs.org/"
|
54
|
-
},
|
55
|
-
"devDependencies": {
|
56
|
-
"@rollup/plugin-commonjs": "^22.0.2",
|
57
|
-
"@rollup/plugin-json": "^4.1.0",
|
58
|
-
"@rollup/plugin-node-resolve": "^13.3.0",
|
59
|
-
"@rollup/plugin-wasm": "^5.2.0",
|
60
|
-
"@size-limit/preset-big-lib": "^8.0.0",
|
61
|
-
"@types/app-root-path": "^1.2.4",
|
62
|
-
"@types/chai": "^4.2.15",
|
63
|
-
"@types/debug": "^4.1.7",
|
64
|
-
"@types/mocha": "^9.1.0",
|
65
|
-
"@types/node": "^17.0.6",
|
66
|
-
"@types/tail": "^2.0.0",
|
67
|
-
"@types/uuid": "^8.3.0",
|
68
|
-
"@typescript-eslint/eslint-plugin": "^5.8.1",
|
69
|
-
"@typescript-eslint/parser": "^5.8.1",
|
70
|
-
"app-root-path": "^3.0.0",
|
71
|
-
"chai": "^4.3.4",
|
72
|
-
"cspell": "^5.14.0",
|
73
|
-
"eslint": "^8.6.0",
|
74
|
-
"eslint-config-prettier": "^8.3.0",
|
75
|
-
"eslint-plugin-eslint-comments": "^3.2.0",
|
76
|
-
"eslint-plugin-functional": "^4.0.2",
|
77
|
-
"eslint-plugin-import": "^2.25.3",
|
78
|
-
"eslint-plugin-prettier": "^4.0.0",
|
79
|
-
"fast-check": "^2.14.0",
|
80
|
-
"gh-pages": "^3.2.3",
|
81
|
-
"husky": "^7.0.4",
|
82
|
-
"ignore-loader": "^0.1.2",
|
83
|
-
"isomorphic-fetch": "^3.0.0",
|
84
|
-
"jsdom": "^19.0.0",
|
85
|
-
"jsdom-global": "^3.0.2",
|
86
|
-
"karma": "^6.3.12",
|
87
|
-
"karma-chrome-launcher": "^3.1.0",
|
88
|
-
"karma-mocha": "^2.0.1",
|
89
|
-
"karma-webpack": "^5.0.0",
|
90
|
-
"lint-staged": "^13.0.3",
|
91
|
-
"mocha": "^9.1.3",
|
92
|
-
"npm-run-all": "^4.1.5",
|
93
|
-
"p-timeout": "^4.1.0",
|
94
|
-
"prettier": "^2.1.1",
|
95
|
-
"process": "^0.11.10",
|
96
|
-
"puppeteer": "^13.0.1",
|
97
|
-
"rollup": "^2.75.0",
|
98
|
-
"rollup-plugin-copy": "^3.4.0",
|
99
|
-
"size-limit": "^8.0.0",
|
100
|
-
"tail": "^2.2.0",
|
101
|
-
"ts-loader": "^9.3.1",
|
102
|
-
"ts-node": "^10.9.1",
|
103
|
-
"typedoc": "^0.23.10",
|
104
|
-
"typescript": "^4.5.5"
|
105
|
-
},
|
106
|
-
"files": [
|
107
|
-
"dist",
|
108
|
-
"bundle",
|
109
|
-
"src/*.ts",
|
110
|
-
"src/lib/**/*.ts",
|
111
|
-
"src/proto/**/*.ts",
|
112
|
-
"!**/*.spec.*",
|
113
|
-
"!**/*.json",
|
114
|
-
"CHANGELOG.md",
|
115
|
-
"LICENSE",
|
116
|
-
"README.md"
|
117
|
-
],
|
118
|
-
"lint-staged": {
|
119
|
-
"*.ts": [
|
120
|
-
"eslint --fix"
|
121
|
-
],
|
122
|
-
"*.{ts,md,json,conf*.*js}": [
|
123
|
-
"prettier --write"
|
124
|
-
]
|
125
|
-
}
|
126
|
-
}
|
1
|
+
{"name":"@waku/rln","version":"0.0.2-ce9a6ae.0","description":"RLN (Rate Limiting Nullifier) implementation for Waku","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"type":"module","homepage":"https://github.com/waku-org/js-waku/tree/master/packages/rln#readme","repository":{"type":"git","url":"https://github.com/waku-org/js-waku.git"},"bugs":{"url":"https://github.com/waku-org/js-waku/issues"},"license":"MIT OR Apache-2.0","keywords":["waku","rln","rate-limiting","privacy","web3"],"scripts":{"build":"run-s build:**","build:copy":"mkdir -p dist/resources && cp -r src/resources/* dist/resources/","build:esm":"tsc","build:bundle":"rollup --config rollup.config.js","fix":"run-s fix:*","fix:lint":"eslint src *.js --fix","check":"run-s check:*","check:tsc":"tsc -p tsconfig.dev.json","check:lint":"eslint \"src/!(resources)/**/*.{ts,js}\" *.js","check:spelling":"cspell \"{README.md,src/**/*.ts}\"","test":"NODE_ENV=test run-s test:*","test:browser":"karma start karma.conf.cjs","watch:build":"tsc -p tsconfig.json -w","watch:test":"mocha --watch","prepublish":"npm run build","reset-hard":"git clean -dfx -e .idea && git reset --hard && npm i && npm run build"},"engines":{"node":">=20"},"devDependencies":{"@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-json":"^6.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/chai":"^5.0.1","@types/chai-spies":"^1.0.6","@types/deep-equal-in-any-order":"^1.0.4","@types/lodash":"^4.17.15","@types/sinon":"^17.0.3","@waku/build-utils":"^1.0.0","@waku/message-encryption":"0.0.32-ce9a6ae.0","chai":"^5.1.2","chai-as-promised":"^8.0.1","chai-spies":"^1.1.0","chai-subset":"^1.6.0","deep-equal-in-any-order":"^2.0.6","fast-check":"^3.23.2","rollup-plugin-copy":"^3.5.0","sinon":"^19.0.2"},"files":["dist","bundle","src/**/*.ts","!**/*.spec.*","!**/*.json","CHANGELOG.md","LICENSE","README.md"],"dependencies":{"@chainsafe/bls-keystore":"3.0.0","@ethersproject/bytes":"^5.7.0","@ethersproject/keccak256":"^5.7.0","@iden3/js-crypto":"^1.3.0","@stablelib/chacha":"^2.0.1","@waku/core":"0.0.34-ce9a6ae.0","@waku/utils":"0.0.22-ce9a6ae.0","@waku/zerokit-rln-wasm":"^0.0.13","ethereum-cryptography":"^3.1.0","ethers":"^5.7.2","lodash":"^4.17.21","uuid":"^11.0.5"}}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import { expect } from "chai";
|
2
|
+
|
3
|
+
import { IdentityCredential } from "../identity.js";
|
4
|
+
|
5
|
+
describe("IdentityCredential", () => {
|
6
|
+
describe("generateSeeded", () => {
|
7
|
+
it("should generate an identity credential from a signature", () => {
|
8
|
+
// Normal signature case
|
9
|
+
const signature = new Uint8Array(32).fill(1);
|
10
|
+
const identity = IdentityCredential.generateSeeded(signature);
|
11
|
+
|
12
|
+
expect(identity).to.not.be.undefined;
|
13
|
+
expect(identity.IDTrapdoor).to.have.length(32);
|
14
|
+
expect(identity.IDNullifier).to.have.length(32);
|
15
|
+
expect(identity.IDSecretHash).to.have.length(32);
|
16
|
+
expect(identity.IDCommitment).to.have.length(32);
|
17
|
+
expect(typeof identity.IDCommitmentBigInt).to.equal("bigint");
|
18
|
+
});
|
19
|
+
|
20
|
+
it("should handle large signature values that exceed field size", () => {
|
21
|
+
// Create a signature that would produce a value larger than the BN254 field size
|
22
|
+
const largeSignature = new Uint8Array(64);
|
23
|
+
// Fill with large values that would exceed field size when converted to bigint
|
24
|
+
for (let i = 0; i < largeSignature.length; i++) {
|
25
|
+
largeSignature[i] = 255; // Maximum byte value
|
26
|
+
}
|
27
|
+
|
28
|
+
// This should now succeed with our normalization fix
|
29
|
+
const identity = IdentityCredential.generateSeeded(largeSignature);
|
30
|
+
|
31
|
+
expect(identity).to.not.be.undefined;
|
32
|
+
expect(identity.IDTrapdoor).to.have.length(32);
|
33
|
+
expect(identity.IDNullifier).to.have.length(32);
|
34
|
+
expect(identity.IDSecretHash).to.have.length(32);
|
35
|
+
expect(identity.IDCommitment).to.have.length(32);
|
36
|
+
expect(typeof identity.IDCommitmentBigInt).to.equal("bigint");
|
37
|
+
});
|
38
|
+
|
39
|
+
it("should produce deterministic results for the same signature", () => {
|
40
|
+
const signature = new Uint8Array(32).fill(42);
|
41
|
+
|
42
|
+
const identity1 = IdentityCredential.generateSeeded(signature);
|
43
|
+
const identity2 = IdentityCredential.generateSeeded(signature);
|
44
|
+
|
45
|
+
expect(identity1.IDCommitmentBigInt.toString()).to.equal(
|
46
|
+
identity2.IDCommitmentBigInt.toString()
|
47
|
+
);
|
48
|
+
});
|
49
|
+
});
|
50
|
+
});
|
package/src/codec.ts
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
import type {
|
2
|
+
IDecodedMessage,
|
3
|
+
IDecoder,
|
4
|
+
IEncoder,
|
5
|
+
IMessage,
|
6
|
+
IProtoMessage,
|
7
|
+
IRateLimitProof
|
8
|
+
} from "@waku/interfaces";
|
9
|
+
import { Logger } from "@waku/utils";
|
10
|
+
|
11
|
+
import type { IdentityCredential } from "./identity.js";
|
12
|
+
import { RlnMessage, toRLNSignal } from "./message.js";
|
13
|
+
import { RLNInstance } from "./rln.js";
|
14
|
+
|
15
|
+
const log = new Logger("waku:rln:encoder");
|
16
|
+
|
17
|
+
export class RLNEncoder implements IEncoder {
|
18
|
+
private readonly idSecretHash: Uint8Array;
|
19
|
+
|
20
|
+
public constructor(
|
21
|
+
private readonly encoder: IEncoder,
|
22
|
+
private readonly rlnInstance: RLNInstance,
|
23
|
+
private readonly index: number,
|
24
|
+
identityCredential: IdentityCredential
|
25
|
+
) {
|
26
|
+
if (index < 0) throw new Error("Invalid membership index");
|
27
|
+
this.idSecretHash = identityCredential.IDSecretHash;
|
28
|
+
}
|
29
|
+
|
30
|
+
public async toWire(message: IMessage): Promise<Uint8Array | undefined> {
|
31
|
+
message.rateLimitProof = await this.generateProof(message);
|
32
|
+
log.info("Proof generated", message.rateLimitProof);
|
33
|
+
return this.encoder.toWire(message);
|
34
|
+
}
|
35
|
+
|
36
|
+
public async toProtoObj(
|
37
|
+
message: IMessage
|
38
|
+
): Promise<IProtoMessage | undefined> {
|
39
|
+
const protoMessage = await this.encoder.toProtoObj(message);
|
40
|
+
if (!protoMessage) return;
|
41
|
+
|
42
|
+
protoMessage.contentTopic = this.contentTopic;
|
43
|
+
protoMessage.rateLimitProof = await this.generateProof(message);
|
44
|
+
log.info("Proof generated", protoMessage.rateLimitProof);
|
45
|
+
return protoMessage;
|
46
|
+
}
|
47
|
+
|
48
|
+
private async generateProof(message: IMessage): Promise<IRateLimitProof> {
|
49
|
+
const signal = toRLNSignal(this.contentTopic, message);
|
50
|
+
const proof = await this.rlnInstance.zerokit.generateRLNProof(
|
51
|
+
signal,
|
52
|
+
this.index,
|
53
|
+
message.timestamp,
|
54
|
+
this.idSecretHash
|
55
|
+
);
|
56
|
+
return proof;
|
57
|
+
}
|
58
|
+
|
59
|
+
public get pubsubTopic(): string {
|
60
|
+
return this.encoder.pubsubTopic;
|
61
|
+
}
|
62
|
+
|
63
|
+
public get contentTopic(): string {
|
64
|
+
return this.encoder.contentTopic;
|
65
|
+
}
|
66
|
+
|
67
|
+
public get ephemeral(): boolean {
|
68
|
+
return this.encoder.ephemeral;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
type RLNEncoderOptions = {
|
73
|
+
encoder: IEncoder;
|
74
|
+
rlnInstance: RLNInstance;
|
75
|
+
index: number;
|
76
|
+
credential: IdentityCredential;
|
77
|
+
};
|
78
|
+
|
79
|
+
export const createRLNEncoder = (options: RLNEncoderOptions): RLNEncoder => {
|
80
|
+
return new RLNEncoder(
|
81
|
+
options.encoder,
|
82
|
+
options.rlnInstance,
|
83
|
+
options.index,
|
84
|
+
options.credential
|
85
|
+
);
|
86
|
+
};
|
87
|
+
|
88
|
+
export class RLNDecoder<T extends IDecodedMessage>
|
89
|
+
implements IDecoder<RlnMessage<T>>
|
90
|
+
{
|
91
|
+
public constructor(
|
92
|
+
private readonly rlnInstance: RLNInstance,
|
93
|
+
private readonly decoder: IDecoder<T>
|
94
|
+
) {}
|
95
|
+
|
96
|
+
public get pubsubTopic(): string {
|
97
|
+
return this.decoder.pubsubTopic;
|
98
|
+
}
|
99
|
+
|
100
|
+
public get contentTopic(): string {
|
101
|
+
return this.decoder.contentTopic;
|
102
|
+
}
|
103
|
+
|
104
|
+
public fromWireToProtoObj(
|
105
|
+
bytes: Uint8Array
|
106
|
+
): Promise<IProtoMessage | undefined> {
|
107
|
+
const protoMessage = this.decoder.fromWireToProtoObj(bytes);
|
108
|
+
log.info("Message decoded", protoMessage);
|
109
|
+
return Promise.resolve(protoMessage);
|
110
|
+
}
|
111
|
+
|
112
|
+
public async fromProtoObj(
|
113
|
+
pubsubTopic: string,
|
114
|
+
proto: IProtoMessage
|
115
|
+
): Promise<RlnMessage<T> | undefined> {
|
116
|
+
const msg: T | undefined = await this.decoder.fromProtoObj(
|
117
|
+
pubsubTopic,
|
118
|
+
proto
|
119
|
+
);
|
120
|
+
if (!msg) return;
|
121
|
+
return new RlnMessage(this.rlnInstance, msg, proto.rateLimitProof);
|
122
|
+
}
|
123
|
+
}
|
124
|
+
|
125
|
+
type RLNDecoderOptions<T extends IDecodedMessage> = {
|
126
|
+
decoder: IDecoder<T>;
|
127
|
+
rlnInstance: RLNInstance;
|
128
|
+
};
|
129
|
+
|
130
|
+
export const createRLNDecoder = <T extends IDecodedMessage>(
|
131
|
+
options: RLNDecoderOptions<T>
|
132
|
+
): RLNDecoder<T> => {
|
133
|
+
return new RLNDecoder(options.rlnInstance, options.decoder);
|
134
|
+
};
|