@effectstream/sm 0.100.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.
Files changed (60) hide show
  1. package/Stm.ts +88 -0
  2. package/delegate-wallet.ts +431 -0
  3. package/mod.ts +4 -0
  4. package/package.json +27 -0
  5. package/primitives/Primitive.ts +80 -0
  6. package/primitives/PrimitiveRegistry.ts +59 -0
  7. package/primitives/mod.ts +5 -0
  8. package/primitives/processing.ts +72 -0
  9. package/primitives/src/README.md +3 -0
  10. package/primitives/src/avail-generic/avail-generic-grammar.ts +5 -0
  11. package/primitives/src/avail-generic/avail-primitive.ts +103 -0
  12. package/primitives/src/bitcoin-address/bitcoin-grammar.ts +16 -0
  13. package/primitives/src/bitcoin-address/bitcoin-primitive.ts +113 -0
  14. package/primitives/src/builtin.ts +47 -0
  15. package/primitives/src/celestia-generic/celestia-generic-grammar.ts +5 -0
  16. package/primitives/src/celestia-generic/celestia-primitive.ts +97 -0
  17. package/primitives/src/evm-effectstream-l2/effectstream-l2-abi.ts +1 -0
  18. package/primitives/src/evm-effectstream-l2/effectstream-l2-primitive.ts +484 -0
  19. package/primitives/src/evm-erc1155/erc1155-abi.ts +1 -0
  20. package/primitives/src/evm-erc1155/erc1155-grammar.ts +13 -0
  21. package/primitives/src/evm-erc1155/erc1155-ivm.ts +104 -0
  22. package/primitives/src/evm-erc1155/erc1155-primitive.ts +242 -0
  23. package/primitives/src/evm-erc20/erc20-abi.ts +1 -0
  24. package/primitives/src/evm-erc20/erc20-grammar.ts +7 -0
  25. package/primitives/src/evm-erc20/erc20-ivm.ts +93 -0
  26. package/primitives/src/evm-erc20/erc20-primitive.test.ts +123 -0
  27. package/primitives/src/evm-erc20/erc20-primitive.ts +152 -0
  28. package/primitives/src/evm-erc721/erc721-abi.ts +1 -0
  29. package/primitives/src/evm-erc721/erc721-grammar.ts +9 -0
  30. package/primitives/src/evm-erc721/erc721-ivm.ts +85 -0
  31. package/primitives/src/evm-erc721/erc721-primitive.ts +149 -0
  32. package/primitives/src/evm-generic/evm-generic-primitive.ts +124 -0
  33. package/primitives/src/grammar.ts +34 -0
  34. package/primitives/src/midnight-generic/midnight-genetic-grammar.ts +8 -0
  35. package/primitives/src/midnight-generic/midnight-genetic.ts +271 -0
  36. package/primitives/src/midnight-nullifier/midnight-nullifier-grammar.ts +8 -0
  37. package/primitives/src/midnight-nullifier/midnight-nullifier.ts +114 -0
  38. package/primitives/src/mod.ts +81 -0
  39. package/primitives/src/near-account-watch/near-account-watch-grammar.ts +10 -0
  40. package/primitives/src/near-account-watch/near-account-watch-primitive.ts +106 -0
  41. package/primitives/src/near-generic/near-generic-grammar.ts +5 -0
  42. package/primitives/src/near-generic/near-generic-primitive.ts +105 -0
  43. package/primitives/src/near-intent/near-intent-grammar.ts +10 -0
  44. package/primitives/src/near-intent/near-intent-ivm.ts +71 -0
  45. package/primitives/src/near-intent/near-intent-primitive.ts +149 -0
  46. package/primitives/src/near-intent/near-intent-token-id-parser.ts +47 -0
  47. package/primitives/src/near-nep141/nep141-grammar.ts +7 -0
  48. package/primitives/src/near-nep141/nep141-ivm.ts +70 -0
  49. package/primitives/src/near-nep141/nep141-primitive.ts +117 -0
  50. package/primitives/src/near-nep171/nep171-grammar.ts +8 -0
  51. package/primitives/src/near-nep171/nep171-ivm.ts +71 -0
  52. package/primitives/src/near-nep171/nep171-primitive.ts +138 -0
  53. package/primitives/src/near-nep245/nep245-grammar.ts +11 -0
  54. package/primitives/src/near-nep245/nep245-ivm.ts +84 -0
  55. package/primitives/src/near-nep245/nep245-primitive.ts +147 -0
  56. package/primitives/src/utxorpc-generic/utxorpc-generic-grammar.ts +6 -0
  57. package/primitives/src/utxorpc-generic/utxorpc-generic.ts +88 -0
  58. package/primitives/types.ts +14 -0
  59. package/types.ts +28 -0
  60. package/verify-signature.ts +51 -0
package/types.ts ADDED
@@ -0,0 +1,28 @@
1
+ //import type { AppEvents } from "@effectstream/events";
2
+
3
+ import type { PreparedQuery } from "@pgtyped/runtime";
4
+ import type {
5
+ AddressType,
6
+ EffectstreamBlockNumber,
7
+ TimestampMs,
8
+ WalletAddress,
9
+ } from "@effectstream/utils";
10
+ import type { Prando } from "@effectstream/crypto";
11
+
12
+ // TODO What is AppEvent type?
13
+ export type AppEvents = any;
14
+
15
+ // TODO: replace any
16
+ export type BaseStfInput = {
17
+ blockHeight: EffectstreamBlockNumber;
18
+ blockTimestamp: TimestampMs;
19
+ conciseInput: string;
20
+ accountId?: number;
21
+ signerAddress?: WalletAddress;
22
+ signerAddressType?: AddressType;
23
+ randomGenerator: Prando;
24
+ };
25
+ export type BaseStfOutput<Events extends AppEvents> = {
26
+ stateTransitions: [PreparedQuery<any, any>, any][];
27
+ events: Events[];
28
+ };
@@ -0,0 +1,51 @@
1
+ import { CryptoManager } from "@effectstream/crypto";
2
+ import { AddressType, Signature, WalletAddress } from "@effectstream/utils";
3
+ import { type SyncStateUpdateStream, World } from "@effectstream/coroutine";
4
+
5
+ /**
6
+ * Verify a signature for a given wallet address and message.
7
+ * This function tries all the supported crypto managers, and returns true if any of them
8
+ * verifies the signature.
9
+ *
10
+ * This function can only be used in the Paima Engine process-blocks,
11
+ * as it yields the promise back to the generator caller.
12
+ *
13
+ * @param walletAddress - The wallet address to verify the signature for.
14
+ * @param message - The message to verify the signature for.
15
+ * @param signature - The signature to verify.
16
+ * @returns True if the signature is valid, false otherwise.
17
+ */
18
+ export function* verifySignature(
19
+ addressType: AddressType,
20
+ walletAddress: WalletAddress,
21
+ message: string,
22
+ signature: Signature
23
+ ): SyncStateUpdateStream<boolean> {
24
+ if (!walletAddress || !signature) throw new Error("No Signature");
25
+ const cryptoManager = CryptoManager.getCryptoManager(addressType);
26
+
27
+ try {
28
+ if (!cryptoManager.verifyAddress(walletAddress)) {
29
+ console.error(`Invalid Address for ${walletAddress} : ${message}`);
30
+ throw new Error(`Invalid Address for ${walletAddress} : ${message}`);
31
+ }
32
+
33
+ const validSignature = yield* World.promise(
34
+ cryptoManager.verifySignature(walletAddress, message, signature)
35
+ );
36
+ if (validSignature) {
37
+ console.log(`Valid Signature for ${walletAddress} : ${message}`);
38
+ return true;
39
+ } else {
40
+ throw new Error(`Invalid Signature for ${walletAddress} : ${message}`);
41
+ }
42
+ } catch (error) {
43
+ console.log(
44
+ `Error verifying signature for ${walletAddress} : ${message} : ${String(
45
+ error
46
+ )}`
47
+ );
48
+ return false;
49
+ }
50
+ }
51
+