@wormhole-foundation/sdk-algorand-core 4.23.0 → 5.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wormhole-foundation/sdk-algorand-core",
3
- "version": "4.23.0",
3
+ "version": "5.0.0-beta.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/wormhole-foundation/wormhole-sdk-ts.git"
@@ -13,13 +13,12 @@
13
13
  "test": "tests"
14
14
  },
15
15
  "license": "Apache-2.0",
16
- "main": "./dist/cjs/index.js",
17
- "types": "./dist/cjs/index.d.ts",
16
+ "main": "./dist/esm/index.js",
17
+ "types": "./dist/esm/index.d.ts",
18
18
  "module": "./dist/esm/index.js",
19
19
  "description": "SDK for Algorand, used in conjunction with @wormhole-foundation/sdk",
20
20
  "files": [
21
- "dist/esm",
22
- "dist/cjs"
21
+ "dist/esm"
23
22
  ],
24
23
  "keywords": [
25
24
  "wormhole",
@@ -29,46 +28,29 @@
29
28
  "algorand"
30
29
  ],
31
30
  "engines": {
32
- "node": ">=16"
31
+ "node": ">=20.19"
33
32
  },
34
33
  "sideEffects": [
35
- "./dist/cjs/index.js",
36
34
  "./dist/esm/index.js"
37
35
  ],
38
36
  "scripts": {
39
- "build:cjs": "tsc -p ./tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
40
37
  "build:esm": "tsc -p ./tsconfig.esm.json",
41
- "build": "npm run build:esm && npm run build:cjs",
38
+ "build": "npm run build:esm",
42
39
  "rebuild": "npm run clean && npm run build",
43
40
  "clean": "rm -rf ./dist && rm -rf ./.turbo",
44
41
  "lint": "npm run prettier && eslint --fix ./src --ext .ts",
45
42
  "prettier": "prettier --write ./src"
46
43
  },
47
44
  "dependencies": {
48
- "@wormhole-foundation/sdk-connect": "4.23.0",
49
- "@wormhole-foundation/sdk-algorand": "4.23.0"
45
+ "@wormhole-foundation/sdk-connect": "5.0.0-beta.1",
46
+ "@wormhole-foundation/sdk-algorand": "5.0.0-beta.1"
50
47
  },
51
48
  "type": "module",
52
49
  "exports": {
53
50
  ".": {
54
- "react-native": {
55
- "import": "./dist/esm/index.js",
56
- "require": "./dist/cjs/index.js",
57
- "types": "./dist/cjs/index.d.ts",
58
- "default": "./dist/cjs/index.js"
59
- },
60
- "import": {
61
- "types": "./dist/esm/index.d.ts",
62
- "default": "./dist/esm/index.js"
63
- },
64
- "require": {
65
- "types": "./dist/cjs/index.d.ts",
66
- "default": "./dist/cjs/index.js"
67
- },
68
- "default": {
69
- "types": "./dist/cjs/index.d.ts",
70
- "default": "./dist/cjs/index.js"
71
- }
51
+ "types": "./dist/esm/index.d.ts",
52
+ "import": "./dist/esm/index.js",
53
+ "default": "./dist/esm/index.js"
72
54
  }
73
55
  }
74
56
  }
@@ -1,60 +0,0 @@
1
- import type { ChainId, ChainsConfig, Contracts, Network, VAA, WormholeCore, WormholeMessageId } from "@wormhole-foundation/sdk-connect";
2
- import type { AlgorandChains, AnyAlgorandAddress, TransactionSet } from "@wormhole-foundation/sdk-algorand";
3
- import { AlgorandUnsignedTransaction } from "@wormhole-foundation/sdk-algorand";
4
- import type { Algodv2, SuggestedParams } from "algosdk";
5
- import { LogicSigAccount } from "algosdk";
6
- export declare class AlgorandWormholeCore<N extends Network, C extends AlgorandChains> implements WormholeCore<N, C> {
7
- readonly network: N;
8
- readonly chain: C;
9
- readonly connection: Algodv2;
10
- readonly contracts: Contracts;
11
- readonly chainId: ChainId;
12
- readonly coreAppId: bigint;
13
- readonly coreAppAddress: string;
14
- readonly tokenBridgeAppId: bigint;
15
- readonly tokenBridgeAppAddress: string;
16
- static MAX_SIGS_PER_TXN: number;
17
- static ALGO_VERIFY_HASH: string;
18
- static ALGO_VERIFY: Uint8Array;
19
- static feeKey: string;
20
- static verifyVaa: Uint8Array;
21
- static verifySigs: Uint8Array;
22
- static publishMessage: Uint8Array;
23
- constructor(network: N, chain: C, connection: Algodv2, contracts: Contracts);
24
- getGuardianSet(index: number): Promise<WormholeCore.GuardianSet>;
25
- verifyMessage(sender: AnyAlgorandAddress, vaa: VAA, appId?: bigint): AsyncGenerator<AlgorandUnsignedTransaction<N, C>, void, unknown>;
26
- static fromRpc<N extends Network>(connection: Algodv2, config: ChainsConfig<N, "Algorand">): Promise<AlgorandWormholeCore<N, AlgorandChains>>;
27
- publishMessage(sender: AnyAlgorandAddress, message: Uint8Array): AsyncGenerator<AlgorandUnsignedTransaction<N, C>, void, unknown>;
28
- /**
29
- * Return the message fee for the core bridge
30
- * @param client An Algodv2 client
31
- * @param bridgeId The application ID of the core bridge
32
- * @returns Promise with the message fee for the core bridge
33
- */
34
- getMessageFee(): Promise<bigint>;
35
- getGuardianSetIndex(): Promise<number>;
36
- parseTransaction(txId: string): Promise<WormholeMessageId[]>;
37
- parseMessages(txId: string): Promise<VAA<"Uint8Array">[]>;
38
- private parseTx;
39
- /**
40
- * Constructs opt in transactions
41
- * @param client An Algodv2 client
42
- * @param senderAddr Sender address
43
- * @param appId Application ID
44
- * @param storage StorageLogicSig
45
- * @returns Address and array of TransactionSignerPairs
46
- */
47
- static maybeCreateStorageTx(client: Algodv2, senderAddr: string, appId: bigint, storage: LogicSigAccount, suggestedParams?: SuggestedParams): Promise<TransactionSet>;
48
- /**
49
- * Submits just the header of the VAA
50
- * @param client AlgodV2 client
51
- * @param bridgeId Application ID of the core bridge
52
- * @param vaa The VAA (just the header is used)
53
- * @param senderAddr Sending account address
54
- * @param appid Application ID
55
- * @returns Promise with current VAA state
56
- */
57
- static submitVAAHeader(client: Algodv2, coreId: bigint, appid: bigint, vaa: VAA, senderAddr: string, suggestedParams?: SuggestedParams): Promise<TransactionSet>;
58
- private createUnsignedTx;
59
- }
60
- //# sourceMappingURL=core.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,SAAS,EACT,OAAO,EACP,GAAG,EACH,YAAY,EACZ,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EAEf,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAGL,2BAA2B,EAE5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAe,MAAM,SAAS,CAAC;AACrE,OAAO,EACL,eAAe,EAQhB,MAAM,SAAS,CAAC;AAIjB,qBAAa,oBAAoB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,cAAc,CAC3E,YAAW,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IA6B3B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,UAAU,EAAE,OAAO;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS;IA9B/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEvC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAK;IACpC,MAAM,CAAC,gBAAgB,SAAgE;IACvF,MAAM,CAAC,WAAW,aAOf;IAGH,MAAM,CAAC,MAAM,SAAqC;IAElD,MAAM,CAAC,SAAS,aAAsC;IAEtD,MAAM,CAAC,UAAU,aAAuC;IAExD,MAAM,CAAC,cAAc,aAA2C;gBAGrD,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,SAAS;IAkB/B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;IAIzD,aAAa,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM;WAe5D,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAQ5C,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,UAAU;IAgCrE;;;;;OAKG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAShC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAItC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAY5D,aAAa,CAAC,IAAI,EAAE,MAAM;IAMhC,OAAO,CAAC,OAAO;IA2Cf;;;;;;;OAOG;WACU,oBAAoB,CAC/B,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,eAAe,EACxB,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,cAAc,CAAC;IA4C1B;;;;;;;;OAQG;WACU,eAAe,CAC1B,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,cAAc,CAAC;IAmH1B,OAAO,CAAC,gBAAgB;CAazB"}
package/dist/cjs/core.js DELETED
@@ -1,295 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AlgorandWormholeCore = void 0;
4
- const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
5
- const sdk_algorand_1 = require("@wormhole-foundation/sdk-algorand");
6
- const algosdk_1 = require("algosdk");
7
- const storage_js_1 = require("./storage.js");
8
- class AlgorandWormholeCore {
9
- network;
10
- chain;
11
- connection;
12
- contracts;
13
- chainId;
14
- coreAppId;
15
- coreAppAddress;
16
- tokenBridgeAppId;
17
- tokenBridgeAppAddress;
18
- static MAX_SIGS_PER_TXN = 6;
19
- static ALGO_VERIFY_HASH = "EZATROXX2HISIRZDRGXW4LRQ46Z6IUJYYIHU3PJGP7P5IQDPKVX42N767A";
20
- static ALGO_VERIFY = new Uint8Array([
21
- 6, 32, 4, 1, 0, 32, 20, 38, 1, 0, 49, 32, 50, 3, 18, 68, 49, 1, 35, 18, 68, 49, 16, 129, 6, 18,
22
- 68, 54, 26, 1, 54, 26, 3, 54, 26, 2, 136, 0, 3, 68, 34, 67, 53, 2, 53, 1, 53, 0, 40, 53, 240,
23
- 40, 53, 241, 52, 0, 21, 53, 5, 35, 53, 3, 35, 53, 4, 52, 3, 52, 5, 12, 65, 0, 68, 52, 1, 52, 0,
24
- 52, 3, 129, 65, 8, 34, 88, 23, 52, 0, 52, 3, 34, 8, 36, 88, 52, 0, 52, 3, 129, 33, 8, 36, 88, 7,
25
- 0, 53, 241, 53, 240, 52, 2, 52, 4, 37, 88, 52, 240, 52, 241, 80, 2, 87, 12, 20, 18, 68, 52, 3,
26
- 129, 66, 8, 53, 3, 52, 4, 37, 8, 53, 4, 66, 255, 180, 34, 137,
27
- ]);
28
- // global state key for message fee
29
- static feeKey = sdk_connect_1.encoding.b64.encode("MessageFee");
30
- // method selector for verifying a VAA
31
- static verifyVaa = sdk_connect_1.encoding.bytes.encode("verifyVAA");
32
- // method selector for verifying signatures of a VAA
33
- static verifySigs = sdk_connect_1.encoding.bytes.encode("verifySigs");
34
- // method selector string for publishing a message
35
- static publishMessage = sdk_connect_1.encoding.bytes.encode("publishMessage");
36
- constructor(network, chain, connection, contracts) {
37
- this.network = network;
38
- this.chain = chain;
39
- this.connection = connection;
40
- this.contracts = contracts;
41
- this.chainId = (0, sdk_connect_1.toChainId)(chain);
42
- if (!contracts.coreBridge) {
43
- throw new Error(`Core contract address for chain ${chain} not found`);
44
- }
45
- const core = BigInt(contracts.coreBridge);
46
- this.coreAppId = core;
47
- this.coreAppAddress = (0, algosdk_1.getApplicationAddress)(core);
48
- if (!contracts.tokenBridge) {
49
- throw new Error(`TokenBridge contract address for chain ${chain} not found`);
50
- }
51
- const tokenBridge = BigInt(contracts.tokenBridge);
52
- this.tokenBridgeAppId = tokenBridge;
53
- this.tokenBridgeAppAddress = (0, algosdk_1.getApplicationAddress)(tokenBridge);
54
- }
55
- getGuardianSet(index) {
56
- throw new Error("Method not implemented.");
57
- }
58
- async *verifyMessage(sender, vaa, appId) {
59
- const address = new sdk_algorand_1.AlgorandAddress(sender).toString();
60
- const txset = await AlgorandWormholeCore.submitVAAHeader(this.connection, this.coreAppId, appId ?? this.coreAppId, vaa, address);
61
- for (const tx of txset.txs) {
62
- yield this.createUnsignedTx(tx, "Core.verifyMessage");
63
- }
64
- }
65
- static async fromRpc(connection, config) {
66
- const [network, chain] = await sdk_algorand_1.AlgorandPlatform.chainFromRpc(connection);
67
- const conf = config[chain];
68
- if (conf.network !== network)
69
- throw new Error(`Network mismatch: ${conf.network} !== ${network}`);
70
- return new AlgorandWormholeCore(network, chain, connection, conf.contracts);
71
- }
72
- async *publishMessage(sender, message) {
73
- // Call core bridge to publish message
74
- const _sender = new sdk_algorand_1.AlgorandAddress(sender);
75
- const address = _sender.toString();
76
- const suggestedParams = await this.connection.getTransactionParams().do();
77
- const storage = storage_js_1.StorageLogicSig.forEmitter(this.coreAppId, _sender.toUint8Array());
78
- const { accounts, txs } = await AlgorandWormholeCore.maybeCreateStorageTx(this.connection, address, this.coreAppId, storage, suggestedParams);
79
- for (const tx of txs) {
80
- yield this.createUnsignedTx(tx, "Core.publishMessage", true);
81
- }
82
- const act = (0, algosdk_1.makeApplicationCallTxnFromObject)({
83
- from: address,
84
- appIndex: (0, sdk_algorand_1.safeBigIntToNumber)(this.coreAppId),
85
- appArgs: [AlgorandWormholeCore.publishMessage, message, sdk_connect_1.encoding.bignum.toBytes(0n, 8)],
86
- accounts: accounts,
87
- onComplete: algosdk_1.OnApplicationComplete.NoOpOC,
88
- suggestedParams,
89
- });
90
- yield this.createUnsignedTx({ tx: act }, "Core.publishMessage", true);
91
- }
92
- /**
93
- * Return the message fee for the core bridge
94
- * @param client An Algodv2 client
95
- * @param bridgeId The application ID of the core bridge
96
- * @returns Promise with the message fee for the core bridge
97
- */
98
- async getMessageFee() {
99
- const applInfoResp = await this.connection
100
- .getApplicationByID((0, sdk_algorand_1.safeBigIntToNumber)(this.coreAppId))
101
- .do();
102
- const appInfo = algosdk_1.modelsv2.Application.from_obj_for_encoding(applInfoResp);
103
- const val = appInfo.params.globalState?.find((kv) => kv.key === AlgorandWormholeCore.feeKey);
104
- return val ? BigInt(val.value.uint) : 0n;
105
- }
106
- async getGuardianSetIndex() {
107
- throw new Error("Not implemented");
108
- }
109
- async parseTransaction(txId) {
110
- const result = await this.connection.pendingTransactionInformation(txId).do();
111
- const ptr = algosdk_1.modelsv2.PendingTransactionResponse.from_obj_for_encoding(result);
112
- return this.parseTx(ptr).map((v) => {
113
- return {
114
- chain: v.emitterChain,
115
- emitter: v.emitterAddress,
116
- sequence: v.sequence,
117
- };
118
- });
119
- }
120
- async parseMessages(txId) {
121
- const result = await this.connection.pendingTransactionInformation(txId).do();
122
- const ptr = algosdk_1.modelsv2.PendingTransactionResponse.from_obj_for_encoding(result);
123
- return this.parseTx(ptr);
124
- }
125
- parseTx(ptr) {
126
- const msgs = [];
127
- if (ptr.innerTxns && ptr.innerTxns.length > 0) {
128
- msgs.push(...ptr.innerTxns.flatMap((tx) => this.parseTx(tx)));
129
- }
130
- // Expect target is core app
131
- if (BigInt(ptr.txn.txn.apid ?? 0) !== this.coreAppId)
132
- return msgs;
133
- // Expect logs
134
- if (!ptr.logs || ptr.logs.length === 0)
135
- return msgs;
136
- // Expect publish messeage as first arg
137
- const args = ptr.txn.txn.apaa ?? [];
138
- if (args.length !== 3 ||
139
- !sdk_connect_1.encoding.bytes.equals(new Uint8Array(args[0]), AlgorandWormholeCore.publishMessage))
140
- return msgs;
141
- const sequence = sdk_connect_1.encoding.bignum.decode(ptr.logs[0]);
142
- const emitter = new sdk_algorand_1.AlgorandAddress(ptr.txn.txn.snd).toUniversalAddress();
143
- const payload = new Uint8Array(args[1]);
144
- const nonce = sdk_connect_1.encoding.bignum.decode(args[2]);
145
- msgs.push((0, sdk_connect_1.createVAA)("Uint8Array", {
146
- emitterChain: this.chain,
147
- emitterAddress: emitter,
148
- sequence,
149
- guardianSet: 0, // TODO: should we get this from the contract on init?
150
- timestamp: 0, // TODO: Would need to get the full block to get the timestamp
151
- consistencyLevel: 0,
152
- nonce: Number(nonce),
153
- payload,
154
- signatures: [],
155
- }));
156
- return msgs;
157
- }
158
- /**
159
- * Constructs opt in transactions
160
- * @param client An Algodv2 client
161
- * @param senderAddr Sender address
162
- * @param appId Application ID
163
- * @param storage StorageLogicSig
164
- * @returns Address and array of TransactionSignerPairs
165
- */
166
- static async maybeCreateStorageTx(client, senderAddr, appId, storage, suggestedParams) {
167
- const appAddr = (0, algosdk_1.getApplicationAddress)(appId);
168
- const storageAddress = storage.address();
169
- const txs = [];
170
- if (await storage_js_1.StorageLogicSig.storageAccountExists(client, storageAddress, appId))
171
- return { accounts: [storageAddress], txs };
172
- suggestedParams = suggestedParams ?? (await client.getTransactionParams().do());
173
- // Pay the storage account some ALGO to min balance requirements
174
- const seedTxn = (0, algosdk_1.makePaymentTxnWithSuggestedParamsFromObject)({
175
- from: senderAddr,
176
- to: storageAddress,
177
- amount: storage_js_1.SEED_AMT,
178
- suggestedParams,
179
- });
180
- seedTxn.fee = seedTxn.fee * 2;
181
- txs.push({ tx: seedTxn });
182
- // Opt in to the app and rekey to the app address that is using
183
- // this as storage
184
- const optinTxn = (0, algosdk_1.makeApplicationOptInTxnFromObject)({
185
- from: storageAddress,
186
- appIndex: (0, sdk_algorand_1.safeBigIntToNumber)(appId),
187
- rekeyTo: appAddr,
188
- suggestedParams,
189
- });
190
- optinTxn.fee = 0;
191
- txs.push({
192
- tx: optinTxn,
193
- signer: {
194
- address: storage.address(),
195
- signTxn: (txn) => Promise.resolve((0, algosdk_1.signLogicSigTransaction)(txn, storage).blob),
196
- },
197
- });
198
- return {
199
- accounts: [storageAddress],
200
- txs,
201
- };
202
- }
203
- /**
204
- * Submits just the header of the VAA
205
- * @param client AlgodV2 client
206
- * @param bridgeId Application ID of the core bridge
207
- * @param vaa The VAA (just the header is used)
208
- * @param senderAddr Sending account address
209
- * @param appid Application ID
210
- * @returns Promise with current VAA state
211
- */
212
- static async submitVAAHeader(client, coreId, appid, vaa, senderAddr, suggestedParams) {
213
- suggestedParams = suggestedParams ?? (await client.getTransactionParams().do());
214
- let txs = [];
215
- // Get storage acct for message ID
216
- const msgStorage = storage_js_1.StorageLogicSig.forMessageId(appid, {
217
- chain: vaa.emitterChain,
218
- sequence: vaa.sequence,
219
- emitter: vaa.emitterAddress,
220
- });
221
- const { accounts: seqAddr, txs: seqOptInTxs } = await AlgorandWormholeCore.maybeCreateStorageTx(client, senderAddr, appid, msgStorage, suggestedParams);
222
- txs.push(...seqOptInTxs);
223
- // Get storage account for Guardian set
224
- const gsStorage = storage_js_1.StorageLogicSig.forGuardianSet(coreId, vaa.guardianSet);
225
- const { accounts: [storageAddr], txs: guardianOptInTxs, } = await AlgorandWormholeCore.maybeCreateStorageTx(client, senderAddr, coreId, gsStorage, suggestedParams);
226
- txs.push(...guardianOptInTxs);
227
- let accts = [...seqAddr, storageAddr];
228
- // Get the Guardian keys
229
- const keys = await storage_js_1.StorageLogicSig.decodeLocalState(client, coreId, storageAddr);
230
- // We don't pass the entire payload in but instead just pass it pre-digested. This gets around size
231
- // limitations with lsigs AND reduces the cost of the entire operation on a congested network by reducing the
232
- // bytes passed into the transaction
233
- // This is a 2 pass digest
234
- const digest = (0, sdk_connect_1.keccak256)(vaa.hash);
235
- // How many signatures can we process in a single txn... we can do 6!
236
- // There are likely upwards of 19 signatures. So, we ned to split things up
237
- const numSigs = vaa.signatures.length;
238
- const numTxns = Math.ceil(numSigs / AlgorandWormholeCore.MAX_SIGS_PER_TXN);
239
- const GuardianKeyLen = 20;
240
- const lsa = new algosdk_1.LogicSigAccount(AlgorandWormholeCore.ALGO_VERIFY);
241
- for (let nt = 0; nt < numTxns; nt++) {
242
- const step = nt * AlgorandWormholeCore.MAX_SIGS_PER_TXN;
243
- const sigs = vaa.signatures.slice(step, step + AlgorandWormholeCore.MAX_SIGS_PER_TXN);
244
- // The keyset is the set of Guardians that correspond
245
- // to the current set of signatures in this loop.
246
- // Each signature in 20 bytes and comes from decodeLocalState()
247
- const arraySize = sigs.length * GuardianKeyLen;
248
- const keySet = new Uint8Array(arraySize);
249
- for (let i = 0; i < sigs.length; i++) {
250
- // The first byte of the sig is the relative index of that signature in the signatures array
251
- // Use that index to get the appropriate Guardian key
252
- const sig = sigs[i];
253
- const key = keys.slice(sig.guardianIndex * GuardianKeyLen + 1, (sig.guardianIndex + 1) * GuardianKeyLen + 1);
254
- keySet.set(key, i * 20);
255
- }
256
- const appTxn = (0, algosdk_1.makeApplicationCallTxnFromObject)({
257
- appArgs: [
258
- AlgorandWormholeCore.verifySigs,
259
- sdk_connect_1.encoding.bytes.concat(...sigs.map((s) => sdk_connect_1.encoding.bytes.concat(new Uint8Array([s.guardianIndex]), s.signature.encode()))),
260
- keySet,
261
- digest,
262
- ],
263
- accounts: accts,
264
- appIndex: (0, sdk_algorand_1.safeBigIntToNumber)(coreId),
265
- from: AlgorandWormholeCore.ALGO_VERIFY_HASH,
266
- onComplete: algosdk_1.OnApplicationComplete.NoOpOC,
267
- suggestedParams,
268
- });
269
- appTxn.fee = 0;
270
- txs.push({
271
- tx: appTxn,
272
- signer: {
273
- address: lsa.address(),
274
- signTxn: (txn) => Promise.resolve((0, algosdk_1.signLogicSigTransaction)(txn, lsa).blob),
275
- },
276
- });
277
- }
278
- const appTxn = (0, algosdk_1.makeApplicationCallTxnFromObject)({
279
- appArgs: [AlgorandWormholeCore.verifyVaa, (0, sdk_connect_1.serialize)(vaa)],
280
- accounts: accts,
281
- appIndex: (0, sdk_algorand_1.safeBigIntToNumber)(coreId),
282
- from: senderAddr,
283
- onComplete: algosdk_1.OnApplicationComplete.NoOpOC,
284
- suggestedParams,
285
- });
286
- appTxn.fee = appTxn.fee * (2 + numTxns);
287
- txs.push({ tx: appTxn });
288
- return { accounts: accts, txs };
289
- }
290
- createUnsignedTx(txReq, description, parallelizable = true) {
291
- return new sdk_algorand_1.AlgorandUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
292
- }
293
- }
294
- exports.AlgorandWormholeCore = AlgorandWormholeCore;
295
- //# sourceMappingURL=core.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export * from "./core.js";
2
- export * from "./storage.js";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
package/dist/cjs/index.js DELETED
@@ -1,22 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
18
- const core_js_1 = require("./core.js");
19
- (0, sdk_connect_1.registerProtocol)("Algorand", "WormholeCore", core_js_1.AlgorandWormholeCore);
20
- __exportStar(require("./core.js"), exports);
21
- __exportStar(require("./storage.js"), exports);
22
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAoE;AACpE,uCAAiD;AAEjD,IAAA,8BAAgB,EAAC,UAAU,EAAE,cAAc,EAAE,8BAAoB,CAAC,CAAC;AAEnE,4CAA0B;AAC1B,+CAA6B"}
@@ -1 +0,0 @@
1
- {"type":"commonjs"}
@@ -1,57 +0,0 @@
1
- import type { Chain, TokenId, WormholeMessageId } from "@wormhole-foundation/sdk-connect";
2
- import type { Algodv2 } from "algosdk";
3
- import { LogicSigAccount } from "algosdk";
4
- export declare const SEED_AMT: number;
5
- export declare const MAX_KEYS: number;
6
- export declare const MAX_BYTES_PER_KEY: number;
7
- export declare const BITS_PER_BYTE: number;
8
- export declare const BITS_PER_KEY: number;
9
- export declare const MAX_BYTES: number;
10
- export declare const MAX_BITS: number;
11
- export interface PopulateData {
12
- appId: bigint;
13
- appAddress: Uint8Array;
14
- address: Uint8Array;
15
- idx: bigint;
16
- }
17
- export declare const varint: {
18
- _limit: number;
19
- encodingLength: (value: number) => number;
20
- encode: (i: bigint | number, buffer?: ArrayBuffer, byteOffset?: number) => Uint8Array;
21
- decode: (data: Uint8Array, offset?: number) => number;
22
- };
23
- export declare const StorageLogicSig: {
24
- forMessageId: (appId: bigint, whm: WormholeMessageId) => LogicSigAccount;
25
- forWrappedAsset: (appId: bigint, token: TokenId<Chain>) => LogicSigAccount;
26
- forNativeAsset: (appId: bigint, tokenId: bigint) => LogicSigAccount;
27
- forGuardianSet: (appId: bigint, idx: bigint | number) => LogicSigAccount;
28
- forEmitter: (appId: bigint, emitter: Uint8Array) => LogicSigAccount;
29
- _encode: (data: bigint | Uint8Array) => string[];
30
- fromData: (data: PopulateData) => LogicSigAccount;
31
- /**
32
- * Returns the local data for an application ID
33
- * @param client Algodv2 client
34
- * @param appId Application ID of interest
35
- * @param address Address of the account
36
- * @returns Promise with Uint8Array of data squirreled away
37
- */
38
- decodeLocalState: (client: Algodv2, appId: bigint, address: string) => Promise<Uint8Array>;
39
- /**
40
- * This function is used to check if a VAA has been redeemed by looking at a specific bit
41
- * @param client AlgodV2 client
42
- * @param appId Application Id
43
- * @param addr Wallet address. Someone has to pay for this
44
- * @param seq The sequence number of the redemption
45
- * @returns True, if the bit was set and VAA was redeemed, False otherwise
46
- */
47
- checkBitsSet: (client: Algodv2, appId: bigint, addr: string, seq: bigint) => Promise<boolean>;
48
- /**
49
- * Checks to see if the account exists for the application
50
- * @param client An Algodv2 client
51
- * @param appId Application ID
52
- * @param acctAddr Account address to check
53
- * @returns True, if account exists for application, False otherwise
54
- */
55
- storageAccountExists: (client: Algodv2, address: string, appId: bigint) => Promise<boolean>;
56
- };
57
- //# sourceMappingURL=storage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAkD,MAAM,SAAS,CAAC;AAG1F,eAAO,MAAM,QAAQ,EAAE,MAAgB,CAAC;AACxC,eAAO,MAAM,QAAQ,EAAE,MAAW,CAAC;AACnC,eAAO,MAAM,iBAAiB,EAAE,MAAY,CAAC;AAC7C,eAAO,MAAM,aAAa,EAAE,MAAU,CAAC;AACvC,eAAO,MAAM,YAAY,EAAE,MAA0C,CAAC;AACtE,eAAO,MAAM,SAAS,EAAE,MAAqC,CAAC;AAC9D,eAAO,MAAM,QAAQ,EAAE,MAAkC,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAGD,eAAO,MAAM,MAAM;;4BAGO,MAAM;gBAKlB,MAAM,GAAG,MAAM,WAAW,WAAW,eAAe,MAAM;mBAsBvD,UAAU;CAa1B,CAAC;AAEF,eAAO,MAAM,eAAe;0BAEJ,MAAM,OAAO,iBAAiB;6BAc3B,MAAM,SAAS,QAAQ,KAAK,CAAC;4BAW9B,MAAM,WAAW,MAAM;4BAUvB,MAAM,OAAO,MAAM,GAAG,MAAM;wBAShC,MAAM,WAAW,UAAU;oBAS/B,MAAM,GAAG,UAAU;qBAIlB,YAAY;IAoB7B;;;;;;OAMG;+BAC8B,OAAO,SAAS,MAAM,WAAW,MAAM;IAqCxE;;;;;;;OAOG;2BAC0B,OAAO,SAAS,MAAM,QAAQ,MAAM,OAAO,MAAM;IAuC9E;;;;;;OAMG;mCACkC,OAAO,WAAW,MAAM,SAAS,MAAM;CAS7E,CAAC"}
@@ -1,237 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StorageLogicSig = exports.varint = exports.MAX_BITS = exports.MAX_BYTES = exports.BITS_PER_KEY = exports.BITS_PER_BYTE = exports.MAX_BYTES_PER_KEY = exports.MAX_KEYS = exports.SEED_AMT = void 0;
4
- const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
5
- const algosdk_1 = require("algosdk");
6
- const sdk_algorand_1 = require("@wormhole-foundation/sdk-algorand");
7
- exports.SEED_AMT = 1002000;
8
- exports.MAX_KEYS = 15;
9
- exports.MAX_BYTES_PER_KEY = 127;
10
- exports.BITS_PER_BYTE = 8;
11
- exports.BITS_PER_KEY = exports.MAX_BYTES_PER_KEY * exports.BITS_PER_BYTE;
12
- exports.MAX_BYTES = exports.MAX_BYTES_PER_KEY * exports.MAX_KEYS;
13
- exports.MAX_BITS = exports.BITS_PER_BYTE * exports.MAX_BYTES;
14
- // Useful for encoding numbers as varints to patch TEAL binary
15
- exports.varint = {
16
- // Forever grateful to https://github.com/joeltg/big-varint/blob/main/src/unsigned.ts
17
- _limit: 0x7f,
18
- encodingLength: (value) => {
19
- let i = 0;
20
- for (; value >= 0x80; i++)
21
- value >>= 7;
22
- return i + 1;
23
- },
24
- encode: (i, buffer, byteOffset) => {
25
- if (typeof i === "bigint")
26
- i = (0, sdk_algorand_1.safeBigIntToNumber)(i);
27
- if (i < 0)
28
- throw new RangeError("value must be unsigned");
29
- const byteLength = exports.varint.encodingLength(i);
30
- buffer = buffer || new ArrayBuffer(byteLength);
31
- byteOffset = byteOffset || 0;
32
- if (buffer.byteLength < byteOffset + byteLength)
33
- throw new RangeError("the buffer is too small to encode the number at the offset");
34
- const array = new Uint8Array(buffer, byteOffset);
35
- let offset = 0;
36
- while (exports.varint._limit < i) {
37
- array[offset++] = (i & exports.varint._limit) | 0x80;
38
- i >>= 7;
39
- }
40
- array[offset] = Number(i);
41
- return array;
42
- },
43
- decode: (data, offset = 0) => {
44
- let i = 0;
45
- let n = 0;
46
- let b;
47
- do {
48
- b = data[offset + n];
49
- if (b === undefined)
50
- throw new RangeError("offset out of range");
51
- i += (b & exports.varint._limit) << (n * 7);
52
- n++;
53
- } while (0x80 <= b);
54
- return i;
55
- },
56
- };
57
- exports.StorageLogicSig = {
58
- // Get the storage lsig for a Wormhole message ID
59
- forMessageId: (appId, whm) => {
60
- const appAddress = (0, algosdk_1.decodeAddress)((0, algosdk_1.getApplicationAddress)(appId)).publicKey;
61
- const emitterAddr = whm.emitter.toUniversalAddress().toUint8Array();
62
- const chainIdBytes = sdk_connect_1.encoding.bignum.toBytes(BigInt((0, sdk_connect_1.toChainId)(whm.chain)), 2);
63
- const address = sdk_connect_1.encoding.bytes.concat(chainIdBytes, emitterAddr);
64
- return exports.StorageLogicSig.fromData({
65
- appId,
66
- appAddress,
67
- idx: whm.sequence / BigInt(exports.MAX_BITS),
68
- address,
69
- });
70
- },
71
- // Get the storage lsig for a wrapped asset
72
- forWrappedAsset: (appId, token) => {
73
- if ((0, sdk_connect_1.isNative)(token.address))
74
- throw new Error("native asset cannot be a wrapped asset");
75
- const appAddress = (0, algosdk_1.decodeAddress)((0, algosdk_1.getApplicationAddress)(appId)).publicKey;
76
- return exports.StorageLogicSig.fromData({
77
- appId,
78
- appAddress,
79
- idx: BigInt((0, sdk_connect_1.toChainId)(token.chain)),
80
- address: token.address.toUniversalAddress().toUint8Array(),
81
- });
82
- },
83
- // Get the storage lsig for a native asset
84
- forNativeAsset: (appId, tokenId) => {
85
- const appAddress = (0, algosdk_1.decodeAddress)((0, algosdk_1.getApplicationAddress)(appId)).publicKey;
86
- return exports.StorageLogicSig.fromData({
87
- appId,
88
- appAddress,
89
- idx: tokenId,
90
- address: sdk_connect_1.encoding.bytes.encode("native"),
91
- });
92
- },
93
- // Get the storage lsig for the guardian set
94
- forGuardianSet: (appId, idx) => {
95
- const appAddress = (0, algosdk_1.decodeAddress)((0, algosdk_1.getApplicationAddress)(appId)).publicKey;
96
- return exports.StorageLogicSig.fromData({
97
- appId,
98
- appAddress,
99
- idx: BigInt(idx),
100
- address: sdk_connect_1.encoding.bytes.encode("guardian"),
101
- });
102
- },
103
- forEmitter: (appId, emitter) => {
104
- const appAddress = (0, algosdk_1.decodeAddress)((0, algosdk_1.getApplicationAddress)(appId)).publicKey;
105
- return exports.StorageLogicSig.fromData({
106
- appId,
107
- appAddress,
108
- idx: 0n,
109
- address: emitter,
110
- });
111
- },
112
- _encode: (data) => {
113
- if (typeof data === "bigint")
114
- return [sdk_connect_1.encoding.hex.encode(exports.varint.encode(data))];
115
- return [sdk_connect_1.encoding.hex.encode(exports.varint.encode(data.length)), sdk_connect_1.encoding.hex.encode(data)];
116
- },
117
- fromData: (data) => {
118
- // This patches the binary of the TEAL program used to store data
119
- // to produce a logic sig that can be used to sign transactions
120
- // to store data in the its account local state for a given app
121
- const byteStrings = [
122
- "0620010181",
123
- ...exports.StorageLogicSig._encode(data.idx),
124
- "4880",
125
- ...exports.StorageLogicSig._encode(data.address),
126
- "483110810612443119221244311881",
127
- ...exports.StorageLogicSig._encode(data.appId),
128
- "1244312080",
129
- ...exports.StorageLogicSig._encode(data.appAddress),
130
- "124431018100124431093203124431153203124422",
131
- ];
132
- const bytecode = sdk_connect_1.encoding.hex.decode(byteStrings.join(""));
133
- return new algosdk_1.LogicSigAccount(bytecode);
134
- },
135
- /**
136
- * Returns the local data for an application ID
137
- * @param client Algodv2 client
138
- * @param appId Application ID of interest
139
- * @param address Address of the account
140
- * @returns Promise with Uint8Array of data squirreled away
141
- */
142
- decodeLocalState: async (client, appId, address) => {
143
- let appState;
144
- try {
145
- const ai = await client
146
- .accountApplicationInformation(address, (0, sdk_algorand_1.safeBigIntToNumber)(appId))
147
- .do();
148
- const acctAppInfo = algosdk_1.modelsv2.AccountApplicationResponse.from_obj_for_encoding(ai);
149
- appState = acctAppInfo.appLocalState;
150
- }
151
- catch (e) {
152
- return new Uint8Array();
153
- }
154
- const metaKey = sdk_connect_1.encoding.b64.encode("meta");
155
- // We don't want the data in the `meta` key
156
- // and we want to make sure the sequences come back in order
157
- // so first put them in a map by numeric key
158
- // then iterate over keys to concat them in the right order
159
- let vals = new Map();
160
- for (const kv of appState.keyValue) {
161
- if (kv.key === metaKey)
162
- continue;
163
- // Take the first byte off the key to be the
164
- // numeric index
165
- const key = sdk_connect_1.encoding.b64.decode(kv.key)[0];
166
- const value = sdk_connect_1.encoding.b64.decode(kv.value.bytes);
167
- vals.set(key, value);
168
- }
169
- const byteArrays = [];
170
- for (let i = 0; i < exports.MAX_KEYS; i++) {
171
- if (vals.has(i))
172
- byteArrays.push(vals.get(i));
173
- }
174
- return sdk_connect_1.encoding.bytes.concat(...byteArrays);
175
- },
176
- /**
177
- * This function is used to check if a VAA has been redeemed by looking at a specific bit
178
- * @param client AlgodV2 client
179
- * @param appId Application Id
180
- * @param addr Wallet address. Someone has to pay for this
181
- * @param seq The sequence number of the redemption
182
- * @returns True, if the bit was set and VAA was redeemed, False otherwise
183
- */
184
- checkBitsSet: async (client, appId, addr, seq) => {
185
- let retval = false;
186
- let appState;
187
- const acctInfoResp = await client.accountInformation(addr).do();
188
- const acctInfo = algosdk_1.modelsv2.Account.from_obj_for_encoding(acctInfoResp);
189
- const als = acctInfo.appsLocalState;
190
- als &&
191
- als.forEach((app) => {
192
- if (BigInt(app.id) === appId) {
193
- appState = app.keyValue;
194
- }
195
- });
196
- if (appState?.length === 0) {
197
- return retval;
198
- }
199
- const BIG_MAX_BITS = BigInt(exports.MAX_BITS);
200
- const BIG_EIGHT = BigInt(8);
201
- // Start on a MAX_BITS boundary
202
- const start = (seq / BIG_MAX_BITS) * BIG_MAX_BITS;
203
- // beg should be in the range [0..MAX_BITS]
204
- const beg = (0, sdk_algorand_1.safeBigIntToNumber)(seq - start);
205
- // s should be in the range [0..15]
206
- const s = Math.floor(beg / exports.BITS_PER_KEY);
207
- const b = Math.floor((beg - s * exports.BITS_PER_KEY) / 8);
208
- const key = sdk_connect_1.encoding.b64.encode(sdk_connect_1.encoding.bignum.toBytes(s, 1));
209
- appState?.forEach((kv) => {
210
- if (kv.key === key) {
211
- const v = Buffer.from(kv.value.bytes, "base64");
212
- const bt = 1 << (0, sdk_algorand_1.safeBigIntToNumber)(seq % BIG_EIGHT);
213
- retval = (v[b] & bt) != 0; // Added non-null assertion
214
- return;
215
- }
216
- });
217
- return retval;
218
- },
219
- /**
220
- * Checks to see if the account exists for the application
221
- * @param client An Algodv2 client
222
- * @param appId Application ID
223
- * @param acctAddr Account address to check
224
- * @returns True, if account exists for application, False otherwise
225
- */
226
- storageAccountExists: async (client, address, appId) => {
227
- try {
228
- const acctAppInfo = await client
229
- .accountApplicationInformation(address, (0, sdk_algorand_1.safeBigIntToNumber)(appId))
230
- .do();
231
- return Object.keys(acctAppInfo).length > 0;
232
- }
233
- catch { }
234
- return false;
235
- },
236
- };
237
- //# sourceMappingURL=storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}