ox 0.0.1 → 0.1.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/Abi/package.json +6 -0
- package/Abi.ts +163 -0
- package/AbiConstructor/package.json +6 -0
- package/AbiConstructor.ts +413 -0
- package/AbiError/package.json +6 -0
- package/AbiError.ts +719 -0
- package/AbiEvent/package.json +6 -0
- package/AbiEvent.ts +1284 -0
- package/AbiFunction/package.json +6 -0
- package/AbiFunction.ts +813 -0
- package/AbiItem/package.json +6 -0
- package/AbiItem.ts +779 -0
- package/AbiParameters/package.json +6 -0
- package/AbiParameters.ts +712 -0
- package/AccessList/package.json +6 -0
- package/AccessList.ts +124 -0
- package/AccountProof/package.json +6 -0
- package/AccountProof.ts +35 -0
- package/Address/package.json +6 -0
- package/Address.ts +359 -0
- package/AesGcm/package.json +6 -0
- package/AesGcm.ts +220 -0
- package/Authorization/package.json +6 -0
- package/Authorization.ts +639 -0
- package/Base58/package.json +6 -0
- package/Base58.ts +180 -0
- package/Base64/package.json +6 -0
- package/Base64.ts +333 -0
- package/Blobs/package.json +6 -0
- package/Blobs.ts +982 -0
- package/Block/package.json +6 -0
- package/Block.ts +317 -0
- package/Bloom/package.json +6 -0
- package/Bloom.ts +80 -0
- package/Bls/package.json +6 -0
- package/Bls.ts +496 -0
- package/BlsPoint/package.json +6 -0
- package/BlsPoint.ts +232 -0
- package/Bytes/package.json +6 -0
- package/Bytes.ts +963 -0
- package/CHANGELOG.md +7 -0
- package/Caches/package.json +6 -0
- package/Caches.ts +21 -0
- package/ContractAddress/package.json +6 -0
- package/ContractAddress.ts +181 -0
- package/Ens/package.json +6 -0
- package/Ens.ts +116 -0
- package/Errors/package.json +6 -0
- package/Errors.ts +95 -0
- package/Fee/package.json +6 -0
- package/Fee.ts +57 -0
- package/Filter/package.json +6 -0
- package/Filter.ts +144 -0
- package/Hash/package.json +6 -0
- package/Hash.ts +210 -0
- package/HdKey/package.json +6 -0
- package/HdKey.ts +175 -0
- package/Hex/package.json +6 -0
- package/Hex.ts +1040 -0
- package/Json/package.json +6 -0
- package/Json.ts +84 -0
- package/Kzg/package.json +6 -0
- package/Kzg.ts +51 -0
- package/LICENSE +21 -0
- package/Log/package.json +6 -0
- package/Log.ts +248 -0
- package/Mnemonic/package.json +6 -0
- package/Mnemonic.ts +249 -0
- package/P256/package.json +6 -0
- package/P256.ts +230 -0
- package/PersonalMessage/package.json +6 -0
- package/PersonalMessage.ts +70 -0
- package/Provider/package.json +6 -0
- package/Provider.ts +354 -0
- package/PublicKey/package.json +6 -0
- package/PublicKey.ts +545 -0
- package/README.md +75 -26
- package/Rlp/package.json +6 -0
- package/Rlp.ts +390 -0
- package/RpcRequest/package.json +6 -0
- package/RpcRequest.ts +192 -0
- package/RpcResponse/package.json +6 -0
- package/RpcResponse.ts +389 -0
- package/RpcSchema/package.json +6 -0
- package/RpcSchema.ts +273 -0
- package/RpcTransport/package.json +6 -0
- package/RpcTransport.ts +198 -0
- package/Secp256k1/package.json +6 -0
- package/Secp256k1.ts +304 -0
- package/Signature/package.json +6 -0
- package/Signature.ts +909 -0
- package/Siwe/package.json +6 -0
- package/Siwe.ts +516 -0
- package/Solidity/package.json +6 -0
- package/Solidity.ts +109 -0
- package/Transaction/package.json +6 -0
- package/Transaction.ts +429 -0
- package/TransactionEnvelope/package.json +6 -0
- package/TransactionEnvelope.ts +205 -0
- package/TransactionEnvelopeEip1559/package.json +6 -0
- package/TransactionEnvelopeEip1559.ts +656 -0
- package/TransactionEnvelopeEip2930/package.json +6 -0
- package/TransactionEnvelopeEip2930.ts +624 -0
- package/TransactionEnvelopeEip4844/package.json +6 -0
- package/TransactionEnvelopeEip4844.ts +764 -0
- package/TransactionEnvelopeEip7702/package.json +6 -0
- package/TransactionEnvelopeEip7702.ts +639 -0
- package/TransactionEnvelopeLegacy/package.json +6 -0
- package/TransactionEnvelopeLegacy.ts +674 -0
- package/TransactionReceipt/package.json +6 -0
- package/TransactionReceipt.ts +341 -0
- package/TransactionRequest/package.json +6 -0
- package/TransactionRequest.ts +151 -0
- package/TypedData/package.json +6 -0
- package/TypedData.ts +931 -0
- package/ValidatorData/package.json +6 -0
- package/ValidatorData.ts +87 -0
- package/Value/package.json +6 -0
- package/Value.ts +242 -0
- package/WebAuthnP256/package.json +6 -0
- package/WebAuthnP256.ts +803 -0
- package/WebCryptoP256/package.json +6 -0
- package/WebCryptoP256.ts +190 -0
- package/Withdrawal/package.json +6 -0
- package/Withdrawal.ts +95 -0
- package/_cjs/Abi.js +17 -0
- package/_cjs/Abi.js.map +1 -0
- package/_cjs/AbiConstructor.js +42 -0
- package/_cjs/AbiConstructor.js.map +1 -0
- package/_cjs/AbiError.js +98 -0
- package/_cjs/AbiError.js.map +1 -0
- package/_cjs/AbiEvent.js +338 -0
- package/_cjs/AbiEvent.js.map +1 -0
- package/_cjs/AbiFunction.js +85 -0
- package/_cjs/AbiFunction.js.map +1 -0
- package/_cjs/AbiItem.js +180 -0
- package/_cjs/AbiItem.js.map +1 -0
- package/_cjs/AbiParameters.js +229 -0
- package/_cjs/AbiParameters.js.map +1 -0
- package/_cjs/AccessList.js +51 -0
- package/_cjs/AccessList.js.map +1 -0
- package/_cjs/AccountProof.js +3 -0
- package/_cjs/AccountProof.js.map +1 -0
- package/_cjs/Address.js +121 -0
- package/_cjs/Address.js.map +1 -0
- package/_cjs/AesGcm.js +55 -0
- package/_cjs/AesGcm.js.map +1 -0
- package/_cjs/Authorization.js +99 -0
- package/_cjs/Authorization.js.map +1 -0
- package/_cjs/Base58.js +52 -0
- package/_cjs/Base58.js.map +1 -0
- package/_cjs/Base64.js +76 -0
- package/_cjs/Base64.js.map +1 -0
- package/_cjs/Blobs.js +255 -0
- package/_cjs/Blobs.js.map +1 -0
- package/_cjs/Block.js +87 -0
- package/_cjs/Block.js.map +1 -0
- package/_cjs/Bloom.js +23 -0
- package/_cjs/Bloom.js.map +1 -0
- package/_cjs/Bls.js +79 -0
- package/_cjs/Bls.js.map +1 -0
- package/_cjs/BlsPoint.js +32 -0
- package/_cjs/BlsPoint.js.map +1 -0
- package/_cjs/Bytes.js +279 -0
- package/_cjs/Bytes.js.map +1 -0
- package/_cjs/Caches.js +14 -0
- package/_cjs/Caches.js.map +1 -0
- package/_cjs/ContractAddress.js +39 -0
- package/_cjs/ContractAddress.js.map +1 -0
- package/_cjs/Ens.js +37 -0
- package/_cjs/Ens.js.map +1 -0
- package/_cjs/Errors.js +99 -0
- package/_cjs/Errors.js.map +1 -0
- package/_cjs/Fee.js +3 -0
- package/_cjs/Fee.js.map +1 -0
- package/_cjs/Filter.js +43 -0
- package/_cjs/Filter.js.map +1 -0
- package/_cjs/Hash.js +40 -0
- package/_cjs/Hash.js.map +1 -0
- package/_cjs/HdKey.js +30 -0
- package/_cjs/HdKey.js.map +1 -0
- package/_cjs/Hex.js +324 -0
- package/_cjs/Hex.js.map +1 -0
- package/_cjs/Json.js +25 -0
- package/_cjs/Json.js.map +1 -0
- package/_cjs/Kzg.js +14 -0
- package/_cjs/Kzg.js.map +1 -0
- package/_cjs/Log.js +35 -0
- package/_cjs/Log.js.map +1 -0
- package/_cjs/Mnemonic.js +56 -0
- package/_cjs/Mnemonic.js.map +1 -0
- package/_cjs/P256.js +52 -0
- package/_cjs/P256.js.map +1 -0
- package/_cjs/PersonalMessage.js +16 -0
- package/_cjs/PersonalMessage.js.map +1 -0
- package/_cjs/Provider.js +90 -0
- package/_cjs/Provider.js.map +1 -0
- package/_cjs/PublicKey.js +192 -0
- package/_cjs/PublicKey.js.map +1 -0
- package/_cjs/Rlp.js +179 -0
- package/_cjs/Rlp.js.map +1 -0
- package/_cjs/RpcRequest.js +27 -0
- package/_cjs/RpcRequest.js.map +1 -0
- package/_cjs/RpcResponse.js +368 -0
- package/_cjs/RpcResponse.js.map +1 -0
- package/_cjs/RpcSchema.js +7 -0
- package/_cjs/RpcSchema.js.map +1 -0
- package/_cjs/RpcTransport.js +95 -0
- package/_cjs/RpcTransport.js.map +1 -0
- package/_cjs/Secp256k1.js +57 -0
- package/_cjs/Secp256k1.js.map +1 -0
- package/_cjs/Signature.js +305 -0
- package/_cjs/Signature.js.map +1 -0
- package/_cjs/Siwe.js +231 -0
- package/_cjs/Siwe.js.map +1 -0
- package/_cjs/Solidity.js +104 -0
- package/_cjs/Solidity.js.map +1 -0
- package/_cjs/Transaction.js +106 -0
- package/_cjs/Transaction.js.map +1 -0
- package/_cjs/TransactionEnvelope.js +80 -0
- package/_cjs/TransactionEnvelope.js.map +1 -0
- package/_cjs/TransactionEnvelopeEip1559.js +182 -0
- package/_cjs/TransactionEnvelopeEip1559.js.map +1 -0
- package/_cjs/TransactionEnvelopeEip2930.js +166 -0
- package/_cjs/TransactionEnvelopeEip2930.js.map +1 -0
- package/_cjs/TransactionEnvelopeEip4844.js +224 -0
- package/_cjs/TransactionEnvelopeEip4844.js.map +1 -0
- package/_cjs/TransactionEnvelopeEip7702.js +156 -0
- package/_cjs/TransactionEnvelopeEip7702.js.map +1 -0
- package/_cjs/TransactionEnvelopeLegacy.js +221 -0
- package/_cjs/TransactionEnvelopeLegacy.js.map +1 -0
- package/_cjs/TransactionReceipt.js +76 -0
- package/_cjs/TransactionReceipt.js.map +1 -0
- package/_cjs/TransactionRequest.js +51 -0
- package/_cjs/TransactionRequest.js.map +1 -0
- package/_cjs/TypedData.js +318 -0
- package/_cjs/TypedData.js.map +1 -0
- package/_cjs/ValidatorData.js +16 -0
- package/_cjs/ValidatorData.js.map +1 -0
- package/_cjs/Value.js +96 -0
- package/_cjs/Value.js.map +1 -0
- package/_cjs/WebAuthnP256.js +245 -0
- package/_cjs/WebAuthnP256.js.map +1 -0
- package/_cjs/WebCryptoP256.js +46 -0
- package/_cjs/WebCryptoP256.js.map +1 -0
- package/_cjs/Withdrawal.js +24 -0
- package/_cjs/Withdrawal.js.map +1 -0
- package/_cjs/index.js +66 -0
- package/_cjs/index.js.map +1 -0
- package/_cjs/internal/abi.js +11 -0
- package/_cjs/internal/abi.js.map +1 -0
- package/_cjs/internal/abiConstructor.js +3 -0
- package/_cjs/internal/abiConstructor.js.map +1 -0
- package/_cjs/internal/abiError.js +3 -0
- package/_cjs/internal/abiError.js.map +1 -0
- package/_cjs/internal/abiEvent.js +3 -0
- package/_cjs/internal/abiEvent.js.map +1 -0
- package/_cjs/internal/abiFunction.js +3 -0
- package/_cjs/internal/abiFunction.js.map +1 -0
- package/_cjs/internal/abiItem.js +110 -0
- package/_cjs/internal/abiItem.js.map +1 -0
- package/_cjs/internal/abiParameters.js +376 -0
- package/_cjs/internal/abiParameters.js.map +1 -0
- package/_cjs/internal/base58.js +89 -0
- package/_cjs/internal/base58.js.map +1 -0
- package/_cjs/internal/bytes.js +88 -0
- package/_cjs/internal/bytes.js.map +1 -0
- package/_cjs/internal/cursor.js +210 -0
- package/_cjs/internal/cursor.js.map +1 -0
- package/_cjs/internal/ens.js +43 -0
- package/_cjs/internal/ens.js.map +1 -0
- package/_cjs/internal/errors.js +28 -0
- package/_cjs/internal/errors.js.map +1 -0
- package/_cjs/internal/hdKey.js +19 -0
- package/_cjs/internal/hdKey.js.map +1 -0
- package/_cjs/internal/hex.js +66 -0
- package/_cjs/internal/hex.js.map +1 -0
- package/_cjs/internal/lru.js +34 -0
- package/_cjs/internal/lru.js.map +1 -0
- package/_cjs/internal/mnemonic/wordlists.js +24 -0
- package/_cjs/internal/mnemonic/wordlists.js.map +1 -0
- package/_cjs/internal/promise.js +49 -0
- package/_cjs/internal/promise.js.map +1 -0
- package/_cjs/internal/register.js +3 -0
- package/_cjs/internal/register.js.map +1 -0
- package/_cjs/internal/rpcSchema.js +3 -0
- package/_cjs/internal/rpcSchema.js.map +1 -0
- package/_cjs/internal/rpcSchemas/eth.js +3 -0
- package/_cjs/internal/rpcSchemas/eth.js.map +1 -0
- package/_cjs/internal/rpcSchemas/wallet.js +3 -0
- package/_cjs/internal/rpcSchemas/wallet.js.map +1 -0
- package/_cjs/internal/rpcTransport.js +19 -0
- package/_cjs/internal/rpcTransport.js.map +1 -0
- package/_cjs/internal/types.js +3 -0
- package/_cjs/internal/types.js.map +1 -0
- package/_cjs/internal/uid.js +17 -0
- package/_cjs/internal/uid.js.map +1 -0
- package/_cjs/internal/webauthn.js +28 -0
- package/_cjs/internal/webauthn.js.map +1 -0
- package/_cjs/package.json +1 -0
- package/_cjs/trusted-setups/Paths.js +6 -0
- package/_cjs/trusted-setups/Paths.js.map +1 -0
- package/_cjs/trusted-setups/index.js +5 -0
- package/_cjs/trusted-setups/index.js.map +1 -0
- package/_cjs/trusted-setups/internal/paths.js +11 -0
- package/_cjs/trusted-setups/internal/paths.js.map +1 -0
- package/_cjs/version.js +5 -0
- package/_cjs/version.js.map +1 -0
- package/_cjs/window/index.js +3 -0
- package/_cjs/window/index.js.map +1 -0
- package/_esm/Abi.js +19 -0
- package/_esm/Abi.js.map +1 -0
- package/_esm/AbiConstructor.js +102 -0
- package/_esm/AbiConstructor.js.map +1 -0
- package/_esm/AbiError.js +364 -0
- package/_esm/AbiError.js.map +1 -0
- package/_esm/AbiEvent.js +1038 -0
- package/_esm/AbiEvent.js.map +1 -0
- package/_esm/AbiFunction.js +549 -0
- package/_esm/AbiFunction.js.map +1 -0
- package/_esm/AbiItem.js +574 -0
- package/_esm/AbiItem.js.map +1 -0
- package/_esm/AbiParameters.js +543 -0
- package/_esm/AbiParameters.js.map +1 -0
- package/_esm/AccessList.js +105 -0
- package/_esm/AccessList.js.map +1 -0
- package/_esm/AccountProof.js +2 -0
- package/_esm/AccountProof.js.map +1 -0
- package/_esm/Address.js +268 -0
- package/_esm/Address.js.map +1 -0
- package/_esm/AesGcm.js +124 -0
- package/_esm/AesGcm.js.map +1 -0
- package/_esm/Authorization.js +441 -0
- package/_esm/Authorization.js.map +1 -0
- package/_esm/Base58.js +142 -0
- package/_esm/Base58.js.map +1 -0
- package/_esm/Base64.js +236 -0
- package/_esm/Base64.js.map +1 -0
- package/_esm/Blobs.js +624 -0
- package/_esm/Blobs.js.map +1 -0
- package/_esm/Block.js +177 -0
- package/_esm/Block.js.map +1 -0
- package/_esm/Bloom.js +57 -0
- package/_esm/Bloom.js.map +1 -0
- package/_esm/Bls.js +141 -0
- package/_esm/Bls.js.map +1 -0
- package/_esm/BlsPoint.js +59 -0
- package/_esm/BlsPoint.js.map +1 -0
- package/_esm/Bytes.js +719 -0
- package/_esm/Bytes.js.map +1 -0
- package/_esm/Caches.js +19 -0
- package/_esm/Caches.js.map +1 -0
- package/_esm/ContractAddress.js +110 -0
- package/_esm/ContractAddress.js.map +1 -0
- package/_esm/Ens.js +84 -0
- package/_esm/Ens.js.map +1 -0
- package/_esm/Errors.js +105 -0
- package/_esm/Errors.js.map +1 -0
- package/_esm/Fee.js +2 -0
- package/_esm/Fee.js.map +1 -0
- package/_esm/Filter.js +100 -0
- package/_esm/Filter.js.map +1 -0
- package/_esm/Hash.js +126 -0
- package/_esm/Hash.js.map +1 -0
- package/_esm/HdKey.js +107 -0
- package/_esm/HdKey.js.map +1 -0
- package/_esm/Hex.js +763 -0
- package/_esm/Hex.js.map +1 -0
- package/_esm/Json.js +62 -0
- package/_esm/Json.js.map +1 -0
- package/_esm/Kzg.js +30 -0
- package/_esm/Kzg.js.map +1 -0
- package/_esm/Log.js +181 -0
- package/_esm/Log.js.map +1 -0
- package/_esm/Mnemonic.js +154 -0
- package/_esm/Mnemonic.js.map +1 -0
- package/_esm/P256.js +131 -0
- package/_esm/P256.js.map +1 -0
- package/_esm/PersonalMessage.js +46 -0
- package/_esm/PersonalMessage.js.map +1 -0
- package/_esm/Provider.js +122 -0
- package/_esm/Provider.js.map +1 -0
- package/_esm/PublicKey.js +395 -0
- package/_esm/PublicKey.js.map +1 -0
- package/_esm/Rlp.js +267 -0
- package/_esm/Rlp.js.map +1 -0
- package/_esm/RpcRequest.js +131 -0
- package/_esm/RpcRequest.js.map +1 -0
- package/_esm/RpcResponse.js +457 -0
- package/_esm/RpcResponse.js.map +1 -0
- package/_esm/RpcSchema.js +46 -0
- package/_esm/RpcSchema.js.map +1 -0
- package/_esm/RpcTransport.js +110 -0
- package/_esm/RpcTransport.js.map +1 -0
- package/_esm/Secp256k1.js +173 -0
- package/_esm/Secp256k1.js.map +1 -0
- package/_esm/Signature.js +696 -0
- package/_esm/Signature.js.map +1 -0
- package/_esm/Siwe.js +374 -0
- package/_esm/Siwe.js.map +1 -0
- package/_esm/Solidity.js +104 -0
- package/_esm/Solidity.js.map +1 -0
- package/_esm/Transaction.js +176 -0
- package/_esm/Transaction.js.map +1 -0
- package/_esm/TransactionEnvelope.js +139 -0
- package/_esm/TransactionEnvelope.js.map +1 -0
- package/_esm/TransactionEnvelopeEip1559.js +455 -0
- package/_esm/TransactionEnvelopeEip1559.js.map +1 -0
- package/_esm/TransactionEnvelopeEip2930.js +439 -0
- package/_esm/TransactionEnvelopeEip2930.js.map +1 -0
- package/_esm/TransactionEnvelopeEip4844.js +542 -0
- package/_esm/TransactionEnvelopeEip4844.js.map +1 -0
- package/_esm/TransactionEnvelopeEip7702.js +442 -0
- package/_esm/TransactionEnvelopeEip7702.js.map +1 -0
- package/_esm/TransactionEnvelopeLegacy.js +495 -0
- package/_esm/TransactionEnvelopeLegacy.js.map +1 -0
- package/_esm/TransactionReceipt.js +229 -0
- package/_esm/TransactionReceipt.js.map +1 -0
- package/_esm/TransactionRequest.js +89 -0
- package/_esm/TransactionRequest.js.map +1 -0
- package/_esm/TypedData.js +635 -0
- package/_esm/TypedData.js.map +1 -0
- package/_esm/ValidatorData.js +52 -0
- package/_esm/ValidatorData.js.map +1 -0
- package/_esm/Value.js +196 -0
- package/_esm/Value.js.map +1 -0
- package/_esm/WebAuthnP256.js +471 -0
- package/_esm/WebAuthnP256.js.map +1 -0
- package/_esm/WebCryptoP256.js +116 -0
- package/_esm/WebCryptoP256.js.map +1 -0
- package/_esm/Withdrawal.js +72 -0
- package/_esm/Withdrawal.js.map +1 -0
- package/_esm/index.js +3366 -0
- package/_esm/index.js.map +1 -0
- package/_esm/internal/abi.js +9 -0
- package/_esm/internal/abi.js.map +1 -0
- package/_esm/internal/abiConstructor.js +2 -0
- package/_esm/internal/abiConstructor.js.map +1 -0
- package/_esm/internal/abiError.js +2 -0
- package/_esm/internal/abiError.js.map +1 -0
- package/_esm/internal/abiEvent.js +2 -0
- package/_esm/internal/abiEvent.js.map +1 -0
- package/_esm/internal/abiFunction.js +2 -0
- package/_esm/internal/abiFunction.js.map +1 -0
- package/_esm/internal/abiItem.js +122 -0
- package/_esm/internal/abiItem.js.map +1 -0
- package/_esm/internal/abiParameters.js +419 -0
- package/_esm/internal/abiParameters.js.map +1 -0
- package/_esm/internal/base58.js +91 -0
- package/_esm/internal/base58.js.map +1 -0
- package/_esm/internal/bytes.js +86 -0
- package/_esm/internal/bytes.js.map +1 -0
- package/_esm/internal/cursor.js +207 -0
- package/_esm/internal/cursor.js.map +1 -0
- package/_esm/internal/ens.js +47 -0
- package/_esm/internal/ens.js.map +1 -0
- package/_esm/internal/errors.js +26 -0
- package/_esm/internal/errors.js.map +1 -0
- package/_esm/internal/hdKey.js +17 -0
- package/_esm/internal/hdKey.js.map +1 -0
- package/_esm/internal/hex.js +64 -0
- package/_esm/internal/hex.js.map +1 -0
- package/_esm/internal/lru.js +36 -0
- package/_esm/internal/lru.js.map +1 -0
- package/_esm/internal/mnemonic/wordlists.js +11 -0
- package/_esm/internal/mnemonic/wordlists.js.map +1 -0
- package/_esm/internal/promise.js +52 -0
- package/_esm/internal/promise.js.map +1 -0
- package/_esm/internal/register.js +2 -0
- package/_esm/internal/register.js.map +1 -0
- package/_esm/internal/rpcSchema.js +2 -0
- package/_esm/internal/rpcSchema.js.map +1 -0
- package/_esm/internal/rpcSchemas/eth.js +2 -0
- package/_esm/internal/rpcSchemas/eth.js.map +1 -0
- package/_esm/internal/rpcSchemas/wallet.js +2 -0
- package/_esm/internal/rpcSchemas/wallet.js.map +1 -0
- package/_esm/internal/rpcTransport.js +20 -0
- package/_esm/internal/rpcTransport.js.map +1 -0
- package/_esm/internal/types.js +2 -0
- package/_esm/internal/types.js.map +1 -0
- package/_esm/internal/uid.js +15 -0
- package/_esm/internal/uid.js.map +1 -0
- package/_esm/internal/webauthn.js +35 -0
- package/_esm/internal/webauthn.js.map +1 -0
- package/_esm/package.json +1 -0
- package/_esm/trusted-setups/Paths.js +3 -0
- package/_esm/trusted-setups/Paths.js.map +1 -0
- package/_esm/trusted-setups/index.js +2 -0
- package/_esm/trusted-setups/index.js.map +1 -0
- package/_esm/trusted-setups/internal/paths.js +12 -0
- package/_esm/trusted-setups/internal/paths.js.map +1 -0
- package/_esm/version.js +3 -0
- package/_esm/version.js.map +1 -0
- package/_esm/window/index.js +2 -0
- package/_esm/window/index.js.map +1 -0
- package/_test/Abi.test-d/package.json +6 -0
- package/_test/AbiConstructor.test-d/package.json +6 -0
- package/_test/AbiError.test-d/package.json +6 -0
- package/_test/AbiEvent.snap-d/package.json +6 -0
- package/_test/AbiEvent.snap-d.ts +329 -0
- package/_test/AbiFunction.snap-d/package.json +6 -0
- package/_test/AbiFunction.snap-d.ts +262 -0
- package/_test/AbiItem.snap-d/package.json +6 -0
- package/_test/AbiItem.snap-d.ts +131 -0
- package/_test/AbiParameters.bench/package.json +6 -0
- package/_test/AbiParameters.snap-d/package.json +6 -0
- package/_test/AbiParameters.snap-d.ts +66 -0
- package/_test/Address.bench/package.json +6 -0
- package/_test/Base58.bench/package.json +6 -0
- package/_test/Hex.bench/package.json +6 -0
- package/_test/Hex.test-d/package.json +6 -0
- package/_test/PublicKey.test-d/package.json +6 -0
- package/_test/Rlp.bench/package.json +6 -0
- package/_test/Rlp.test-d/package.json +6 -0
- package/_test/Signature.snap-d/package.json +6 -0
- package/_test/Signature.snap-d.ts +96 -0
- package/_test/TransactionEnvelopeEip1559.test-d/package.json +6 -0
- package/_test/TransactionEnvelopeEip2930.test-d/package.json +6 -0
- package/_test/TransactionEnvelopeEip4844.test-d/package.json +6 -0
- package/_test/TransactionEnvelopeEip7702.test-d/package.json +6 -0
- package/_test/TransactionEnvelopeLegacy.test-d/package.json +6 -0
- package/_test/TypedData.test-d/package.json +6 -0
- package/_types/Abi.d.ts +137 -0
- package/_types/Abi.d.ts.map +1 -0
- package/_types/AbiConstructor.d.ts +305 -0
- package/_types/AbiConstructor.d.ts.map +1 -0
- package/_types/AbiError.d.ts +522 -0
- package/_types/AbiError.d.ts.map +1 -0
- package/_types/AbiEvent.d.ts +892 -0
- package/_types/AbiEvent.d.ts.map +1 -0
- package/_types/AbiFunction.d.ts +602 -0
- package/_types/AbiFunction.d.ts.map +1 -0
- package/_types/AbiItem.d.ts +544 -0
- package/_types/AbiItem.d.ts.map +1 -0
- package/_types/AbiParameters.d.ts +466 -0
- package/_types/AbiParameters.d.ts.map +1 -0
- package/_types/AccessList.d.ts +83 -0
- package/_types/AccessList.d.ts.map +1 -0
- package/_types/AccountProof.d.ts +32 -0
- package/_types/AccountProof.d.ts.map +1 -0
- package/_types/Address.d.ts +244 -0
- package/_types/Address.d.ts.map +1 -0
- package/_types/AesGcm.d.ts +116 -0
- package/_types/AesGcm.d.ts.map +1 -0
- package/_types/Authorization.d.ts +461 -0
- package/_types/Authorization.d.ts.map +1 -0
- package/_types/Base58.d.ts +131 -0
- package/_types/Base58.d.ts.map +1 -0
- package/_types/Base64.d.ts +244 -0
- package/_types/Base64.d.ts.map +1 -0
- package/_types/Blobs.d.ts +556 -0
- package/_types/Blobs.d.ts.map +1 -0
- package/_types/Block.d.ts +190 -0
- package/_types/Block.d.ts.map +1 -0
- package/_types/Bloom.d.ts +54 -0
- package/_types/Bloom.d.ts.map +1 -0
- package/_types/Bls.d.ts +365 -0
- package/_types/Bls.d.ts.map +1 -0
- package/_types/BlsPoint.d.ts +187 -0
- package/_types/BlsPoint.d.ts.map +1 -0
- package/_types/Bytes.d.ts +674 -0
- package/_types/Bytes.d.ts.map +1 -0
- package/_types/Caches.d.ts +13 -0
- package/_types/Caches.d.ts.map +1 -0
- package/_types/ContractAddress.d.ts +115 -0
- package/_types/ContractAddress.d.ts.map +1 -0
- package/_types/Ens.d.ts +72 -0
- package/_types/Ens.d.ts.map +1 -0
- package/_types/Errors.d.ts +33 -0
- package/_types/Errors.d.ts.map +1 -0
- package/_types/Fee.d.ts +41 -0
- package/_types/Fee.d.ts.map +1 -0
- package/_types/Filter.d.ts +100 -0
- package/_types/Filter.d.ts.map +1 -0
- package/_types/Hash.d.ts +135 -0
- package/_types/Hash.d.ts.map +1 -0
- package/_types/HdKey.d.ts +146 -0
- package/_types/HdKey.d.ts.map +1 -0
- package/_types/Hex.d.ts +711 -0
- package/_types/Hex.d.ts.map +1 -0
- package/_types/Json.d.ts +53 -0
- package/_types/Json.d.ts.map +1 -0
- package/_types/Kzg.d.ts +42 -0
- package/_types/Kzg.d.ts.map +1 -0
- package/_types/Log.d.ts +194 -0
- package/_types/Log.d.ts.map +1 -0
- package/_types/Mnemonic.d.ts +176 -0
- package/_types/Mnemonic.d.ts.map +1 -0
- package/_types/P256.d.ts +207 -0
- package/_types/P256.d.ts.map +1 -0
- package/_types/PersonalMessage.d.ts +49 -0
- package/_types/PersonalMessage.d.ts.map +1 -0
- package/_types/Provider.d.ts +268 -0
- package/_types/Provider.d.ts.map +1 -0
- package/_types/PublicKey.d.ts +327 -0
- package/_types/PublicKey.d.ts.map +1 -0
- package/_types/Rlp.d.ts +153 -0
- package/_types/Rlp.d.ts.map +1 -0
- package/_types/RpcRequest.d.ts +144 -0
- package/_types/RpcRequest.d.ts.map +1 -0
- package/_types/RpcResponse.d.ts +266 -0
- package/_types/RpcResponse.d.ts.map +1 -0
- package/_types/RpcSchema.d.ts +248 -0
- package/_types/RpcSchema.d.ts.map +1 -0
- package/_types/RpcTransport.d.ts +65 -0
- package/_types/RpcTransport.d.ts.map +1 -0
- package/_types/Secp256k1.d.ts +277 -0
- package/_types/Secp256k1.d.ts.map +1 -0
- package/_types/Signature.d.ts +601 -0
- package/_types/Signature.d.ts.map +1 -0
- package/_types/Siwe.d.ts +249 -0
- package/_types/Siwe.d.ts.map +1 -0
- package/_types/Solidity.d.ts +100 -0
- package/_types/Solidity.d.ts.map +1 -0
- package/_types/Transaction.d.ts +235 -0
- package/_types/Transaction.d.ts.map +1 -0
- package/_types/TransactionEnvelope.d.ts +141 -0
- package/_types/TransactionEnvelope.d.ts.map +1 -0
- package/_types/TransactionEnvelopeEip1559.d.ts +367 -0
- package/_types/TransactionEnvelopeEip1559.d.ts.map +1 -0
- package/_types/TransactionEnvelopeEip2930.d.ts +364 -0
- package/_types/TransactionEnvelopeEip2930.d.ts.map +1 -0
- package/_types/TransactionEnvelopeEip4844.d.ts +419 -0
- package/_types/TransactionEnvelopeEip4844.d.ts.map +1 -0
- package/_types/TransactionEnvelopeEip7702.d.ts +377 -0
- package/_types/TransactionEnvelopeEip7702.d.ts.map +1 -0
- package/_types/TransactionEnvelopeLegacy.d.ts +358 -0
- package/_types/TransactionEnvelopeLegacy.d.ts.map +1 -0
- package/_types/TransactionReceipt.d.ts +271 -0
- package/_types/TransactionReceipt.d.ts.map +1 -0
- package/_types/TransactionRequest.d.ts +92 -0
- package/_types/TransactionRequest.d.ts.map +1 -0
- package/_types/TypedData.d.ts +496 -0
- package/_types/TypedData.d.ts.map +1 -0
- package/_types/ValidatorData.d.ts +64 -0
- package/_types/ValidatorData.d.ts.map +1 -0
- package/_types/Value.d.ts +159 -0
- package/_types/Value.d.ts.map +1 -0
- package/_types/WebAuthnP256.d.ts +445 -0
- package/_types/WebAuthnP256.d.ts.map +1 -0
- package/_types/WebCryptoP256.d.ts +119 -0
- package/_types/WebCryptoP256.d.ts.map +1 -0
- package/_types/Withdrawal.d.ts +74 -0
- package/_types/Withdrawal.d.ts.map +1 -0
- package/_types/index.d.ts +3367 -0
- package/_types/index.d.ts.map +1 -0
- package/_types/internal/abi.d.ts +4 -0
- package/_types/internal/abi.d.ts.map +1 -0
- package/_types/internal/abiConstructor.d.ts +11 -0
- package/_types/internal/abiConstructor.d.ts.map +1 -0
- package/_types/internal/abiError.d.ts +11 -0
- package/_types/internal/abiError.d.ts.map +1 -0
- package/_types/internal/abiEvent.d.ts +60 -0
- package/_types/internal/abiEvent.d.ts.map +1 -0
- package/_types/internal/abiFunction.d.ts +11 -0
- package/_types/internal/abiFunction.d.ts.map +1 -0
- package/_types/internal/abiItem.d.ts +100 -0
- package/_types/internal/abiItem.d.ts.map +1 -0
- package/_types/internal/abiParameters.d.ts +169 -0
- package/_types/internal/abiParameters.d.ts.map +1 -0
- package/_types/internal/base58.d.ts +17 -0
- package/_types/internal/base58.d.ts.map +1 -0
- package/_types/internal/bytes.d.ts +52 -0
- package/_types/internal/bytes.d.ts.map +1 -0
- package/_types/internal/cursor.d.ts +70 -0
- package/_types/internal/cursor.d.ts.map +1 -0
- package/_types/internal/ens.d.ts +23 -0
- package/_types/internal/ens.d.ts.map +1 -0
- package/_types/internal/errors.d.ts +7 -0
- package/_types/internal/errors.d.ts.map +1 -0
- package/_types/internal/hdKey.d.ts +10 -0
- package/_types/internal/hdKey.d.ts.map +1 -0
- package/_types/internal/hex.d.ts +39 -0
- package/_types/internal/hex.d.ts.map +1 -0
- package/_types/internal/lru.d.ts +13 -0
- package/_types/internal/lru.d.ts.map +1 -0
- package/_types/internal/mnemonic/wordlists.d.ts +11 -0
- package/_types/internal/mnemonic/wordlists.d.ts.map +1 -0
- package/_types/internal/promise.d.ts +27 -0
- package/_types/internal/promise.d.ts.map +1 -0
- package/_types/internal/register.d.ts +13 -0
- package/_types/internal/register.d.ts.map +1 -0
- package/_types/internal/rpcSchema.d.ts +12 -0
- package/_types/internal/rpcSchema.d.ts.map +1 -0
- package/_types/internal/rpcSchemas/eth.d.ts +718 -0
- package/_types/internal/rpcSchemas/eth.d.ts.map +1 -0
- package/_types/internal/rpcSchemas/wallet.d.ts +416 -0
- package/_types/internal/rpcSchemas/wallet.d.ts.map +1 -0
- package/_types/internal/rpcTransport.d.ts +38 -0
- package/_types/internal/rpcTransport.d.ts.map +1 -0
- package/_types/internal/types.d.ts +284 -0
- package/_types/internal/types.d.ts.map +1 -0
- package/_types/internal/uid.d.ts +3 -0
- package/_types/internal/uid.d.ts.map +1 -0
- package/_types/internal/webauthn.d.ts +127 -0
- package/_types/internal/webauthn.d.ts.map +1 -0
- package/_types/trusted-setups/Paths.d.ts +2 -0
- package/_types/trusted-setups/Paths.d.ts.map +1 -0
- package/_types/trusted-setups/index.d.ts +2 -0
- package/_types/trusted-setups/index.d.ts.map +1 -0
- package/_types/trusted-setups/internal/paths.d.ts +3 -0
- package/_types/trusted-setups/internal/paths.d.ts.map +1 -0
- package/_types/version.d.ts +3 -0
- package/_types/version.d.ts.map +1 -0
- package/_types/window/index.d.ts +7 -0
- package/_types/window/index.d.ts.map +1 -0
- package/index.ts +3427 -0
- package/internal/abi.ts +11 -0
- package/internal/abiConstructor.ts +32 -0
- package/internal/abiError.ts +30 -0
- package/internal/abiEvent.ts +154 -0
- package/internal/abiFunction.ts +32 -0
- package/internal/abiItem.ts +593 -0
- package/internal/abiParameters.ts +741 -0
- package/internal/base58.ts +106 -0
- package/internal/bytes.ts +152 -0
- package/internal/cursor.ts +252 -0
- package/internal/ens.ts +64 -0
- package/internal/errors.ts +26 -0
- package/internal/hdKey.ts +25 -0
- package/internal/hex.ts +123 -0
- package/internal/lru.ts +34 -0
- package/internal/mnemonic/wordlists.ts +10 -0
- package/internal/promise.ts +66 -0
- package/internal/register.ts +15 -0
- package/internal/rpcSchema.ts +20 -0
- package/internal/rpcSchemas/eth.ts +727 -0
- package/internal/rpcSchemas/wallet.ts +428 -0
- package/internal/rpcTransport.ts +74 -0
- package/internal/types.ts +414 -0
- package/internal/uid.ts +15 -0
- package/internal/webauthn.ts +198 -0
- package/package.json +500 -20
- package/trusted-setups/Paths/package.json +6 -0
- package/trusted-setups/Paths.ts +3 -0
- package/trusted-setups/index.ts +1 -0
- package/trusted-setups/internal/paths.ts +13 -0
- package/trusted-setups/internal/setups/mainnet.json +8265 -0
- package/trusted-setups/internal/setups/mainnet.txt +4163 -0
- package/trusted-setups/package.json +6 -0
- package/tsdoc.json +4 -0
- package/version/package.json +6 -0
- package/version.ts +2 -0
- package/window/index.ts +7 -0
- package/window/package.json +6 -0
- package/cl/ansiesc.js +0 -25
- package/cl/deps.js +0 -7
- package/cl/editor.js +0 -141
- package/cl/index.html +0 -19
- package/cl/ox.js +0 -44
- package/cl/socket.io.js +0 -1922
- package/cl/style.css +0 -37
- package/srv/deps.js +0 -88
- package/srv/httpSrv.js +0 -82
- package/srv/ox.js +0 -44
- package/srv/remoteXtermReq.js +0 -70
package/PublicKey.ts
ADDED
|
@@ -0,0 +1,545 @@
|
|
|
1
|
+
import * as Bytes from './Bytes.js'
|
|
2
|
+
import * as Errors from './Errors.js'
|
|
3
|
+
import * as Hex from './Hex.js'
|
|
4
|
+
import * as Json from './Json.js'
|
|
5
|
+
import type { Compute, ExactPartial } from './internal/types.js'
|
|
6
|
+
|
|
7
|
+
/** Root type for an ECDSA Public Key. */
|
|
8
|
+
export type PublicKey<
|
|
9
|
+
compressed extends boolean = false,
|
|
10
|
+
bigintType = bigint,
|
|
11
|
+
numberType = number,
|
|
12
|
+
> = Compute<
|
|
13
|
+
compressed extends true
|
|
14
|
+
? {
|
|
15
|
+
prefix: numberType
|
|
16
|
+
x: bigintType
|
|
17
|
+
y?: undefined
|
|
18
|
+
}
|
|
19
|
+
: {
|
|
20
|
+
prefix: numberType
|
|
21
|
+
x: bigintType
|
|
22
|
+
y: bigintType
|
|
23
|
+
}
|
|
24
|
+
>
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Asserts that a {@link ox#PublicKey.PublicKey} is valid.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts twoslash
|
|
31
|
+
* import { PublicKey } from 'ox'
|
|
32
|
+
*
|
|
33
|
+
* PublicKey.assert({
|
|
34
|
+
* prefix: 4,
|
|
35
|
+
* y: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
|
|
36
|
+
* })
|
|
37
|
+
* // @error: PublicKey.InvalidError: Value \`{"y":"1"}\` is not a valid public key.
|
|
38
|
+
* // @error: Public key must contain:
|
|
39
|
+
* // @error: - an `x` and `prefix` value (compressed)
|
|
40
|
+
* // @error: - an `x`, `y`, and `prefix` value (uncompressed)
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @param publicKey - The public key object to assert.
|
|
44
|
+
*/
|
|
45
|
+
export function assert(
|
|
46
|
+
publicKey: ExactPartial<PublicKey>,
|
|
47
|
+
options: assert.Options = {},
|
|
48
|
+
): asserts publicKey is PublicKey {
|
|
49
|
+
const { compressed } = options
|
|
50
|
+
const { prefix, x, y } = publicKey
|
|
51
|
+
|
|
52
|
+
// Uncompressed
|
|
53
|
+
if (
|
|
54
|
+
compressed === false ||
|
|
55
|
+
(typeof x === 'bigint' && typeof y === 'bigint')
|
|
56
|
+
) {
|
|
57
|
+
if (prefix !== 4)
|
|
58
|
+
throw new InvalidPrefixError({
|
|
59
|
+
prefix,
|
|
60
|
+
cause: new InvalidUncompressedPrefixError(),
|
|
61
|
+
})
|
|
62
|
+
return
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Compressed
|
|
66
|
+
if (
|
|
67
|
+
compressed === true ||
|
|
68
|
+
(typeof x === 'bigint' && typeof y === 'undefined')
|
|
69
|
+
) {
|
|
70
|
+
if (prefix !== 3 && prefix !== 2)
|
|
71
|
+
throw new InvalidPrefixError({
|
|
72
|
+
prefix,
|
|
73
|
+
cause: new InvalidCompressedPrefixError(),
|
|
74
|
+
})
|
|
75
|
+
return
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Unknown/invalid
|
|
79
|
+
throw new InvalidError({ publicKey })
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export declare namespace assert {
|
|
83
|
+
type Options = {
|
|
84
|
+
/** Whether or not the public key should be compressed. */
|
|
85
|
+
compressed?: boolean
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
type ErrorType = InvalidError | InvalidPrefixError | Errors.GlobalErrorType
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Compresses a {@link ox#PublicKey.PublicKey}.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts twoslash
|
|
96
|
+
* import { PublicKey } from 'ox'
|
|
97
|
+
*
|
|
98
|
+
* const publicKey = PublicKey.from({
|
|
99
|
+
* prefix: 4,
|
|
100
|
+
* x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
|
|
101
|
+
* y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
|
|
102
|
+
* })
|
|
103
|
+
*
|
|
104
|
+
* const compressed = PublicKey.compress(publicKey) // [!code focus]
|
|
105
|
+
* // @log: {
|
|
106
|
+
* // @log: prefix: 3,
|
|
107
|
+
* // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
|
|
108
|
+
* // @log: }
|
|
109
|
+
* ```
|
|
110
|
+
*
|
|
111
|
+
* @param publicKey - The public key to compress.
|
|
112
|
+
* @returns The compressed public key.
|
|
113
|
+
*/
|
|
114
|
+
export function compress(publicKey: PublicKey<false>): PublicKey<true> {
|
|
115
|
+
const { x, y } = publicKey
|
|
116
|
+
return {
|
|
117
|
+
prefix: y % 2n === 0n ? 2 : 3,
|
|
118
|
+
x,
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export declare namespace compress {
|
|
123
|
+
type ErrorType = Errors.GlobalErrorType
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
compress.parseError = (error: unknown) =>
|
|
127
|
+
/* v8 ignore next */
|
|
128
|
+
error as compress.ErrorType
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Instantiates a typed {@link ox#PublicKey.PublicKey} object from a {@link ox#PublicKey.PublicKey}, {@link ox#Bytes.Bytes}, or {@link ox#Hex.Hex}.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```ts twoslash
|
|
135
|
+
* import { PublicKey } from 'ox'
|
|
136
|
+
*
|
|
137
|
+
* const publicKey = PublicKey.from({
|
|
138
|
+
* prefix: 4,
|
|
139
|
+
* x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
|
|
140
|
+
* y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
|
|
141
|
+
* })
|
|
142
|
+
* // @log: {
|
|
143
|
+
* // @log: prefix: 4,
|
|
144
|
+
* // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
|
|
145
|
+
* // @log: y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
|
|
146
|
+
* // @log: }
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ### From Serialized
|
|
151
|
+
*
|
|
152
|
+
* ```ts twoslash
|
|
153
|
+
* import { PublicKey } from 'ox'
|
|
154
|
+
*
|
|
155
|
+
* const publicKey = PublicKey.from('0x048318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed753547f11ca8696646f2f3acb08e31016afac23e630c5d11f59f61fef57b0d2aa5')
|
|
156
|
+
* // @log: {
|
|
157
|
+
* // @log: prefix: 4,
|
|
158
|
+
* // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
|
|
159
|
+
* // @log: y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
|
|
160
|
+
* // @log: }
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
163
|
+
* @param value - The public key value to instantiate.
|
|
164
|
+
* @returns The instantiated {@link ox#PublicKey.PublicKey}.
|
|
165
|
+
*/
|
|
166
|
+
export function from<
|
|
167
|
+
const publicKey extends
|
|
168
|
+
| CompressedPublicKey
|
|
169
|
+
| UncompressedPublicKey
|
|
170
|
+
| Hex.Hex
|
|
171
|
+
| Bytes.Bytes,
|
|
172
|
+
>(value: from.Value<publicKey>): from.ReturnType<publicKey> {
|
|
173
|
+
const publicKey = (() => {
|
|
174
|
+
if (Hex.validate(value)) return fromHex(value)
|
|
175
|
+
if (Bytes.validate(value)) return fromBytes(value)
|
|
176
|
+
|
|
177
|
+
const { prefix, x, y } = value
|
|
178
|
+
if (typeof x === 'bigint' && typeof y === 'bigint')
|
|
179
|
+
return { prefix: prefix ?? 0x04, x, y }
|
|
180
|
+
return { prefix, x }
|
|
181
|
+
})()
|
|
182
|
+
|
|
183
|
+
assert(publicKey)
|
|
184
|
+
|
|
185
|
+
return publicKey as never
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/** @internal */
|
|
189
|
+
type CompressedPublicKey = PublicKey<true>
|
|
190
|
+
|
|
191
|
+
/** @internal */
|
|
192
|
+
type UncompressedPublicKey = Omit<PublicKey<false>, 'prefix'> & {
|
|
193
|
+
prefix?: PublicKey['prefix'] | undefined
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export declare namespace from {
|
|
197
|
+
type Value<
|
|
198
|
+
publicKey extends
|
|
199
|
+
| CompressedPublicKey
|
|
200
|
+
| UncompressedPublicKey
|
|
201
|
+
| Hex.Hex
|
|
202
|
+
| Bytes.Bytes = PublicKey,
|
|
203
|
+
> = publicKey | CompressedPublicKey | UncompressedPublicKey
|
|
204
|
+
|
|
205
|
+
type ReturnType<
|
|
206
|
+
publicKey extends
|
|
207
|
+
| CompressedPublicKey
|
|
208
|
+
| UncompressedPublicKey
|
|
209
|
+
| Hex.Hex
|
|
210
|
+
| Bytes.Bytes = PublicKey,
|
|
211
|
+
> = publicKey extends CompressedPublicKey | UncompressedPublicKey
|
|
212
|
+
? publicKey extends UncompressedPublicKey
|
|
213
|
+
? Compute<publicKey & { readonly prefix: 0x04 }>
|
|
214
|
+
: publicKey
|
|
215
|
+
: PublicKey
|
|
216
|
+
|
|
217
|
+
type ErrorType = assert.ErrorType | Errors.GlobalErrorType
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
from.parseError = (error: unknown) =>
|
|
221
|
+
/* v8 ignore next */
|
|
222
|
+
error as from.ErrorType
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Deserializes a {@link ox#PublicKey.PublicKey} from a {@link ox#Bytes.Bytes} value.
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```ts twoslash
|
|
229
|
+
* // @noErrors
|
|
230
|
+
* import { PublicKey } from 'ox'
|
|
231
|
+
*
|
|
232
|
+
* const publicKey = PublicKey.fromBytes(new Uint8Array([128, 3, 131, ...]))
|
|
233
|
+
* // @log: {
|
|
234
|
+
* // @log: prefix: 4,
|
|
235
|
+
* // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
|
|
236
|
+
* // @log: y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
|
|
237
|
+
* // @log: }
|
|
238
|
+
* ```
|
|
239
|
+
*
|
|
240
|
+
* @param publicKey - The serialized public key.
|
|
241
|
+
* @returns The deserialized public key.
|
|
242
|
+
*/
|
|
243
|
+
export function fromBytes(publicKey: Bytes.Bytes): PublicKey {
|
|
244
|
+
return fromHex(Hex.fromBytes(publicKey))
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export declare namespace fromBytes {
|
|
248
|
+
type ErrorType =
|
|
249
|
+
| fromHex.ErrorType
|
|
250
|
+
| Hex.fromBytes.ErrorType
|
|
251
|
+
| Errors.GlobalErrorType
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
fromBytes.parseError = (error: unknown) =>
|
|
255
|
+
/* v8 ignore next */
|
|
256
|
+
error as fromBytes.ErrorType
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Deserializes a {@link ox#PublicKey.PublicKey} from a {@link ox#Hex.Hex} value.
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* ```ts twoslash
|
|
263
|
+
* import { PublicKey } from 'ox'
|
|
264
|
+
*
|
|
265
|
+
* const publicKey = PublicKey.fromHex('0x8318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed753547f11ca8696646f2f3acb08e31016afac23e630c5d11f59f61fef57b0d2aa5')
|
|
266
|
+
* // @log: {
|
|
267
|
+
* // @log: prefix: 4,
|
|
268
|
+
* // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
|
|
269
|
+
* // @log: y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
|
|
270
|
+
* // @log: }
|
|
271
|
+
* ```
|
|
272
|
+
*
|
|
273
|
+
* @example
|
|
274
|
+
* ### Deserializing a Compressed Public Key
|
|
275
|
+
*
|
|
276
|
+
* ```ts twoslash
|
|
277
|
+
* import { PublicKey } from 'ox'
|
|
278
|
+
*
|
|
279
|
+
* const publicKey = PublicKey.fromHex('0x038318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed75')
|
|
280
|
+
* // @log: {
|
|
281
|
+
* // @log: prefix: 3,
|
|
282
|
+
* // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
|
|
283
|
+
* // @log: }
|
|
284
|
+
* ```
|
|
285
|
+
*
|
|
286
|
+
* @param publicKey - The serialized public key.
|
|
287
|
+
* @returns The deserialized public key.
|
|
288
|
+
*/
|
|
289
|
+
export function fromHex(publicKey: Hex.Hex): PublicKey {
|
|
290
|
+
if (
|
|
291
|
+
publicKey.length !== 132 &&
|
|
292
|
+
publicKey.length !== 130 &&
|
|
293
|
+
publicKey.length !== 68
|
|
294
|
+
)
|
|
295
|
+
throw new InvalidSerializedSizeError({ publicKey })
|
|
296
|
+
|
|
297
|
+
if (publicKey.length === 130) {
|
|
298
|
+
const x = BigInt(Hex.slice(publicKey, 0, 32))
|
|
299
|
+
const y = BigInt(Hex.slice(publicKey, 32, 64))
|
|
300
|
+
return {
|
|
301
|
+
prefix: 4,
|
|
302
|
+
x,
|
|
303
|
+
y,
|
|
304
|
+
} as never
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
if (publicKey.length === 132) {
|
|
308
|
+
const prefix = Number(Hex.slice(publicKey, 0, 1))
|
|
309
|
+
const x = BigInt(Hex.slice(publicKey, 1, 33))
|
|
310
|
+
const y = BigInt(Hex.slice(publicKey, 33, 65))
|
|
311
|
+
return {
|
|
312
|
+
prefix,
|
|
313
|
+
x,
|
|
314
|
+
y,
|
|
315
|
+
} as never
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
const prefix = Number(Hex.slice(publicKey, 0, 1))
|
|
319
|
+
const x = BigInt(Hex.slice(publicKey, 1, 33))
|
|
320
|
+
return {
|
|
321
|
+
prefix,
|
|
322
|
+
x,
|
|
323
|
+
} as never
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
export declare namespace fromHex {
|
|
327
|
+
type ErrorType = Hex.slice.ErrorType | Errors.GlobalErrorType
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
fromHex.parseError = (error: unknown) =>
|
|
331
|
+
/* v8 ignore next */
|
|
332
|
+
error as fromHex.ErrorType
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Serializes a {@link ox#PublicKey.PublicKey} to {@link ox#Bytes.Bytes}.
|
|
336
|
+
*
|
|
337
|
+
* @example
|
|
338
|
+
* ```ts twoslash
|
|
339
|
+
* import { PublicKey } from 'ox'
|
|
340
|
+
*
|
|
341
|
+
* const publicKey = PublicKey.from({
|
|
342
|
+
* prefix: 4,
|
|
343
|
+
* x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
|
|
344
|
+
* y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
|
|
345
|
+
* })
|
|
346
|
+
*
|
|
347
|
+
* const bytes = PublicKey.toBytes(publicKey) // [!code focus]
|
|
348
|
+
* // @log: Uint8Array [128, 3, 131, ...]
|
|
349
|
+
* ```
|
|
350
|
+
*
|
|
351
|
+
* @param publicKey - The public key to serialize.
|
|
352
|
+
* @returns The serialized public key.
|
|
353
|
+
*/
|
|
354
|
+
export function toBytes(
|
|
355
|
+
publicKey: PublicKey<boolean>,
|
|
356
|
+
options: toBytes.Options = {},
|
|
357
|
+
): Bytes.Bytes {
|
|
358
|
+
return Bytes.fromHex(toHex(publicKey, options))
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
export declare namespace toBytes {
|
|
362
|
+
type Options = {
|
|
363
|
+
/**
|
|
364
|
+
* Whether to include the prefix in the serialized public key.
|
|
365
|
+
* @default true
|
|
366
|
+
*/
|
|
367
|
+
includePrefix?: boolean | undefined
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
type ErrorType =
|
|
371
|
+
| Hex.fromNumber.ErrorType
|
|
372
|
+
| Bytes.fromHex.ErrorType
|
|
373
|
+
| Errors.GlobalErrorType
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
toBytes.parseError = (error: unknown) =>
|
|
377
|
+
/* v8 ignore next */
|
|
378
|
+
error as toBytes.ErrorType
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Serializes a {@link ox#PublicKey.PublicKey} to {@link ox#Hex.Hex}.
|
|
382
|
+
*
|
|
383
|
+
* @example
|
|
384
|
+
* ```ts twoslash
|
|
385
|
+
* import { PublicKey } from 'ox'
|
|
386
|
+
*
|
|
387
|
+
* const publicKey = PublicKey.from({
|
|
388
|
+
* prefix: 4,
|
|
389
|
+
* x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
|
|
390
|
+
* y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
|
|
391
|
+
* })
|
|
392
|
+
*
|
|
393
|
+
* const hex = PublicKey.toHex(publicKey) // [!code focus]
|
|
394
|
+
* // @log: '0x048318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed753547f11ca8696646f2f3acb08e31016afac23e630c5d11f59f61fef57b0d2aa5'
|
|
395
|
+
* ```
|
|
396
|
+
*
|
|
397
|
+
* @param publicKey - The public key to serialize.
|
|
398
|
+
* @returns The serialized public key.
|
|
399
|
+
*/
|
|
400
|
+
export function toHex(
|
|
401
|
+
publicKey: PublicKey<boolean>,
|
|
402
|
+
options: toHex.Options = {},
|
|
403
|
+
): Hex.Hex {
|
|
404
|
+
assert(publicKey)
|
|
405
|
+
|
|
406
|
+
const { prefix, x, y } = publicKey
|
|
407
|
+
const { includePrefix = true } = options
|
|
408
|
+
|
|
409
|
+
const publicKey_ = Hex.concat(
|
|
410
|
+
includePrefix ? Hex.fromNumber(prefix, { size: 1 }) : '0x',
|
|
411
|
+
Hex.fromNumber(x, { size: 32 }),
|
|
412
|
+
// If the public key is not compressed, add the y coordinate.
|
|
413
|
+
typeof y === 'bigint' ? Hex.fromNumber(y, { size: 32 }) : '0x',
|
|
414
|
+
)
|
|
415
|
+
|
|
416
|
+
return publicKey_
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
export declare namespace toHex {
|
|
420
|
+
type Options = {
|
|
421
|
+
/**
|
|
422
|
+
* Whether to include the prefix in the serialized public key.
|
|
423
|
+
* @default true
|
|
424
|
+
*/
|
|
425
|
+
includePrefix?: boolean | undefined
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
type ErrorType = Hex.fromNumber.ErrorType | Errors.GlobalErrorType
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
toHex.parseError = (error: unknown) =>
|
|
432
|
+
/* v8 ignore next */
|
|
433
|
+
error as toHex.ErrorType
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Validates a {@link ox#PublicKey.PublicKey}. Returns `true` if valid, `false` otherwise.
|
|
437
|
+
*
|
|
438
|
+
* @example
|
|
439
|
+
* ```ts twoslash
|
|
440
|
+
* import { PublicKey } from 'ox'
|
|
441
|
+
*
|
|
442
|
+
* const valid = PublicKey.validate({
|
|
443
|
+
* prefix: 4,
|
|
444
|
+
* y: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
|
|
445
|
+
* })
|
|
446
|
+
* // @log: false
|
|
447
|
+
* ```
|
|
448
|
+
*
|
|
449
|
+
* @param publicKey - The public key object to assert.
|
|
450
|
+
*/
|
|
451
|
+
export function validate(
|
|
452
|
+
publicKey: ExactPartial<PublicKey>,
|
|
453
|
+
options: validate.Options = {},
|
|
454
|
+
): boolean {
|
|
455
|
+
try {
|
|
456
|
+
assert(publicKey, options)
|
|
457
|
+
return true
|
|
458
|
+
} catch (error) {
|
|
459
|
+
return false
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
export declare namespace validate {
|
|
464
|
+
type Options = {
|
|
465
|
+
/** Whether or not the public key should be compressed. */
|
|
466
|
+
compressed?: boolean
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
type ErrorType = Errors.GlobalErrorType
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* Thrown when a public key is invalid.
|
|
474
|
+
*
|
|
475
|
+
* @example
|
|
476
|
+
* ```ts twoslash
|
|
477
|
+
* import { PublicKey } from 'ox'
|
|
478
|
+
*
|
|
479
|
+
* PublicKey.assert({ y: 1n })
|
|
480
|
+
* // @error: PublicKey.InvalidError: Value `{"y":1n}` is not a valid public key.
|
|
481
|
+
* // @error: Public key must contain:
|
|
482
|
+
* // @error: - an `x` and `prefix` value (compressed)
|
|
483
|
+
* // @error: - an `x`, `y`, and `prefix` value (uncompressed)
|
|
484
|
+
* ```
|
|
485
|
+
*/
|
|
486
|
+
export class InvalidError extends Errors.BaseError {
|
|
487
|
+
override readonly name = 'PublicKey.InvalidError'
|
|
488
|
+
|
|
489
|
+
constructor({ publicKey }: { publicKey: unknown }) {
|
|
490
|
+
super(`Value \`${Json.stringify(publicKey)}\` is not a valid public key.`, {
|
|
491
|
+
metaMessages: [
|
|
492
|
+
'Public key must contain:',
|
|
493
|
+
'- an `x` and `prefix` value (compressed)',
|
|
494
|
+
'- an `x`, `y`, and `prefix` value (uncompressed)',
|
|
495
|
+
],
|
|
496
|
+
})
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
/** Thrown when a public key has an invalid prefix. */
|
|
501
|
+
export class InvalidPrefixError<
|
|
502
|
+
cause extends InvalidCompressedPrefixError | InvalidUncompressedPrefixError =
|
|
503
|
+
| InvalidCompressedPrefixError
|
|
504
|
+
| InvalidUncompressedPrefixError,
|
|
505
|
+
> extends Errors.BaseError<cause> {
|
|
506
|
+
override readonly name = 'PublicKey.InvalidPrefixError'
|
|
507
|
+
|
|
508
|
+
constructor({ prefix, cause }: { prefix: number | undefined; cause: cause }) {
|
|
509
|
+
super(`Prefix "${prefix}" is invalid.`, {
|
|
510
|
+
cause,
|
|
511
|
+
})
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/** Thrown when the public key has an invalid prefix for a compressed public key. */
|
|
516
|
+
export class InvalidCompressedPrefixError extends Errors.BaseError {
|
|
517
|
+
override readonly name = 'PublicKey.InvalidCompressedPrefixError'
|
|
518
|
+
|
|
519
|
+
constructor() {
|
|
520
|
+
super('Prefix must be 2 or 3 for compressed public keys.')
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
/** Thrown when the public key has an invalid prefix for an uncompressed public key. */
|
|
525
|
+
export class InvalidUncompressedPrefixError extends Errors.BaseError {
|
|
526
|
+
override readonly name = 'PublicKey.InvalidUncompressedPrefixError'
|
|
527
|
+
|
|
528
|
+
constructor() {
|
|
529
|
+
super('Prefix must be 4 for uncompressed public keys.')
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
/** Thrown when the public key has an invalid serialized size. */
|
|
534
|
+
export class InvalidSerializedSizeError extends Errors.BaseError {
|
|
535
|
+
override readonly name = 'PublicKey.InvalidSerializedSizeError'
|
|
536
|
+
|
|
537
|
+
constructor({ publicKey }: { publicKey: Hex.Hex | Bytes.Bytes }) {
|
|
538
|
+
super(`Value \`${publicKey}\` is an invalid public key size.`, {
|
|
539
|
+
metaMessages: [
|
|
540
|
+
'Expected: 33 bytes (compressed + prefix), 64 bytes (uncompressed) or 65 bytes (uncompressed + prefix).',
|
|
541
|
+
`Received ${Hex.size(Hex.from(publicKey))} bytes.`,
|
|
542
|
+
],
|
|
543
|
+
})
|
|
544
|
+
}
|
|
545
|
+
}
|
package/README.md
CHANGED
|
@@ -1,43 +1,92 @@
|
|
|
1
|
-
|
|
1
|
+
<br/>
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<picture>
|
|
5
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/wevm/ox/blob/main/.github/ox-dark.svg">
|
|
6
|
+
<img alt="ox logo" src="https://github.com/wevm/ox/blob/main/.github/ox-light.svg" width="auto" height="200">
|
|
7
|
+
</picture>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<a href="https://www.npmjs.com/package/ox">
|
|
12
|
+
<picture>
|
|
13
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/v/ox?colorA=21262d&colorB=21262d&style=flat">
|
|
14
|
+
<img src="https://img.shields.io/npm/v/ox?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="Version">
|
|
15
|
+
</picture>
|
|
16
|
+
</a>
|
|
17
|
+
<a href="https://github.com/wevm/ox/blob/main/LICENSE">
|
|
18
|
+
<picture>
|
|
19
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/l/ox?colorA=21262d&colorB=21262d&style=flat">
|
|
20
|
+
<img src="https://img.shields.io/npm/l/ox?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="MIT License">
|
|
21
|
+
</picture>
|
|
22
|
+
</a>
|
|
23
|
+
<a href="https://app.codecov.io/gh/wevm/ox">
|
|
24
|
+
<picture>
|
|
25
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/codecov/c/github/wevm/ox?colorA=21262d&colorB=21262d&style=flat">
|
|
26
|
+
<img src="https://img.shields.io/codecov/c/github/wevm/ox?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="Code coverage">
|
|
27
|
+
</picture>
|
|
28
|
+
</a>
|
|
29
|
+
</p>
|
|
2
30
|
|
|
3
31
|
## Overview
|
|
4
32
|
|
|
5
|
-
|
|
6
|
-
machine from anywhere in the cosmos (with internets).
|
|
33
|
+
Ox (⦻) is the foundation of robust Ethereum software written in TypeScript. It is an Ethereum Standard Library that provides a set of lightweight, performant, and type-safe TypeScript modules for Ethereum.
|
|
7
34
|
|
|
8
|
-
|
|
35
|
+
It offers core utilities & types for primitives such as: ABIs, Addresses, Blocks, Bytes, ECDSA, Hex, JSON-RPC, RLP, Signing & Signatures, Transaction Envelopes, and more.
|
|
9
36
|
|
|
10
|
-
|
|
37
|
+
As an unopinionated Standard Library, it is designed to be used by higher-level consumers (such as [Viem](https://viem.sh), [Tevm](https://tevm.sh), or their alternatives) to provide their own opinionated interfaces, and/or when reaching for low-level primitives may be needed without buying into a Client Abstraction stack (Viem, Ethers, Web3.js, etc).
|
|
11
38
|
|
|
12
|
-
|
|
39
|
+
## Documentation
|
|
13
40
|
|
|
14
|
-
|
|
15
|
-
git clone git://github.com/gatapia/nclosure.git
|
|
16
|
-
cd nclosure
|
|
17
|
-
npm link
|
|
41
|
+
[Head to the documentation](https://oxlib.sh) to read and learn more about Ox.
|
|
18
42
|
|
|
19
|
-
|
|
20
|
-
git clone git://github.com/gatapia/ox.git
|
|
43
|
+
## Example Usage
|
|
21
44
|
|
|
22
|
-
|
|
45
|
+
The example below demonstrates how to construct, sign, and broadcast a transaction envelope using Ox:
|
|
23
46
|
|
|
24
|
-
|
|
47
|
+
```ts
|
|
48
|
+
import { Provider, Secp256k1, TransactionEnvelopeEip1559, Value } from 'ox'
|
|
49
|
+
|
|
50
|
+
// 1. Construct a transaction envelope.
|
|
51
|
+
const envelope = TransactionEnvelopeEip1559.from({
|
|
52
|
+
chainId: 1,
|
|
53
|
+
gas: 21000n,
|
|
54
|
+
nonce: 0n,
|
|
55
|
+
maxFeePerGas: Value.fromGwei('10'),
|
|
56
|
+
maxPriorityFeePerGas: Value.fromGwei('1'),
|
|
57
|
+
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
|
58
|
+
value: Value.fromEther('1'),
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
// 2. Get the signing payload for the envelope.
|
|
62
|
+
const payload = TransactionEnvelopeEip1559.getSignPayload(envelope)
|
|
63
|
+
|
|
64
|
+
// 3. Sign the payload with your private key using secp256k1.
|
|
65
|
+
const signature = Secp256k1.sign({ payload, privateKey: '0x...' })
|
|
25
66
|
|
|
26
|
-
|
|
67
|
+
// 4. Serialize the envelope with the signature.
|
|
68
|
+
const serialized = TransactionEnvelopeEip1559.serialize(envelope, { signature })
|
|
27
69
|
|
|
70
|
+
// 5. Broadcast the envelope to the network.
|
|
71
|
+
const provider = Provider.from(window.ethereum)
|
|
72
|
+
const hash = await provider.request({
|
|
73
|
+
method: 'eth_sendRawTransaction',
|
|
74
|
+
params: [serialized],
|
|
75
|
+
})
|
|
76
|
+
```
|
|
28
77
|
|
|
29
|
-
|
|
78
|
+
> [!NOTE]
|
|
79
|
+
> Ox's APIs are purposely stateless, unopinionated, and verbose. The example above can definitely be achieved in a few lines of code in a more concise manner, however, the goal is for higher-level abstractions (Viem, etc) built on top of Ox to handle this for you.
|
|
30
80
|
|
|
31
|
-
|
|
81
|
+
## Community
|
|
32
82
|
|
|
33
|
-
|
|
34
|
-
you may not use this file except in compliance with the License.
|
|
35
|
-
You may obtain a copy of the License at
|
|
83
|
+
Check out the following places for more Ox-related content:
|
|
36
84
|
|
|
37
|
-
|
|
85
|
+
- Follow [@wevm_dev](https://x.com/wevm_dev), [@jxom](https://x.com/_jxom), and [@awkweb](https://x.com/awkweb) on Twitter for project updates
|
|
86
|
+
- Join the [discussions on GitHub](https://github.com/wevm/ox/discussions)
|
|
38
87
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
88
|
+
## Support
|
|
89
|
+
|
|
90
|
+
- [GitHub Sponsors](https://github.com/sponsors/wevm?metadata_campaign=docs_support)
|
|
91
|
+
- [Gitcoin Grant](https://wagmi.sh/gitcoin)
|
|
92
|
+
- [wevm.eth](https://etherscan.io/enslookup-search?search=wevm.eth)
|