@wormhole-foundation/sdk-solana-core 0.5.0-beta.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/dist/cjs/anchor-idl/wormhole.json +611 -0
- package/dist/cjs/core.d.ts +26 -0
- package/dist/cjs/core.d.ts.map +1 -0
- package/dist/cjs/core.js +181 -0
- package/dist/cjs/core.js.map +1 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +37 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types.d.ts +612 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils/accounts/claim.d.ts +5 -0
- package/dist/cjs/utils/accounts/claim.d.ts.map +1 -0
- package/dist/cjs/utils/accounts/claim.js +31 -0
- package/dist/cjs/utils/accounts/claim.js.map +1 -0
- package/dist/cjs/utils/accounts/config.d.ts +18 -0
- package/dist/cjs/utils/accounts/config.d.ts.map +1 -0
- package/dist/cjs/utils/accounts/config.js +52 -0
- package/dist/cjs/utils/accounts/config.js.map +1 -0
- package/dist/cjs/utils/accounts/emitter.d.ts +10 -0
- package/dist/cjs/utils/accounts/emitter.d.ts.map +1 -0
- package/dist/cjs/utils/accounts/emitter.js +22 -0
- package/dist/cjs/utils/accounts/emitter.js.map +1 -0
- package/dist/cjs/utils/accounts/feeCollector.d.ts +3 -0
- package/dist/cjs/utils/accounts/feeCollector.d.ts.map +1 -0
- package/dist/cjs/utils/accounts/feeCollector.js +9 -0
- package/dist/cjs/utils/accounts/feeCollector.js.map +1 -0
- package/dist/cjs/utils/accounts/guardianSet.d.ts +13 -0
- package/dist/cjs/utils/accounts/guardianSet.d.ts.map +1 -0
- package/dist/cjs/utils/accounts/guardianSet.js +49 -0
- package/dist/cjs/utils/accounts/guardianSet.js.map +1 -0
- package/dist/cjs/utils/accounts/index.d.ts +10 -0
- package/dist/cjs/utils/accounts/index.d.ts.map +1 -0
- package/dist/cjs/utils/accounts/index.js +26 -0
- package/dist/cjs/utils/accounts/index.js.map +1 -0
- package/dist/cjs/utils/accounts/postedVaa.d.ts +4 -0
- package/dist/cjs/utils/accounts/postedVaa.d.ts.map +1 -0
- package/dist/cjs/utils/accounts/postedVaa.js +9 -0
- package/dist/cjs/utils/accounts/postedVaa.js.map +1 -0
- package/dist/cjs/utils/accounts/sequence.d.ts +13 -0
- package/dist/cjs/utils/accounts/sequence.d.ts.map +1 -0
- package/dist/cjs/utils/accounts/sequence.js +42 -0
- package/dist/cjs/utils/accounts/sequence.js.map +1 -0
- package/dist/cjs/utils/accounts/signatureSet.d.ts +11 -0
- package/dist/cjs/utils/accounts/signatureSet.d.ts.map +1 -0
- package/dist/cjs/utils/accounts/signatureSet.js +31 -0
- package/dist/cjs/utils/accounts/signatureSet.js.map +1 -0
- package/dist/cjs/utils/accounts/upgrade.d.ts +3 -0
- package/dist/cjs/utils/accounts/upgrade.d.ts.map +1 -0
- package/dist/cjs/utils/accounts/upgrade.js +9 -0
- package/dist/cjs/utils/accounts/upgrade.js.map +1 -0
- package/dist/cjs/utils/coder/accounts.d.ts +26 -0
- package/dist/cjs/utils/coder/accounts.d.ts.map +1 -0
- package/dist/cjs/utils/coder/accounts.js +64 -0
- package/dist/cjs/utils/coder/accounts.js.map +1 -0
- package/dist/cjs/utils/coder/events.d.ts +7 -0
- package/dist/cjs/utils/coder/events.d.ts.map +1 -0
- package/dist/cjs/utils/coder/events.js +11 -0
- package/dist/cjs/utils/coder/events.js.map +1 -0
- package/dist/cjs/utils/coder/idl.d.ts +8 -0
- package/dist/cjs/utils/coder/idl.d.ts.map +1 -0
- package/dist/cjs/utils/coder/idl.js +114 -0
- package/dist/cjs/utils/coder/idl.js.map +1 -0
- package/dist/cjs/utils/coder/index.d.ts +16 -0
- package/dist/cjs/utils/coder/index.d.ts.map +1 -0
- package/dist/cjs/utils/coder/index.js +26 -0
- package/dist/cjs/utils/coder/index.js.map +1 -0
- package/dist/cjs/utils/coder/instruction.d.ts +26 -0
- package/dist/cjs/utils/coder/instruction.d.ts.map +1 -0
- package/dist/cjs/utils/coder/instruction.js +110 -0
- package/dist/cjs/utils/coder/instruction.js.map +1 -0
- package/dist/cjs/utils/coder/state.d.ts +8 -0
- package/dist/cjs/utils/coder/state.d.ts.map +1 -0
- package/dist/cjs/utils/coder/state.js +14 -0
- package/dist/cjs/utils/coder/state.js.map +1 -0
- package/dist/cjs/utils/coder/types.d.ts +8 -0
- package/dist/cjs/utils/coder/types.d.ts.map +1 -0
- package/dist/cjs/utils/coder/types.js +14 -0
- package/dist/cjs/utils/coder/types.js.map +1 -0
- package/dist/cjs/utils/cpi.d.ts +52 -0
- package/dist/cjs/utils/cpi.d.ts.map +1 -0
- package/dist/cjs/utils/cpi.js +48 -0
- package/dist/cjs/utils/cpi.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +5 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +21 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/instructions/bpfLoaderUpgradeable.d.ts +6 -0
- package/dist/cjs/utils/instructions/bpfLoaderUpgradeable.d.ts.map +1 -0
- package/dist/cjs/utils/instructions/bpfLoaderUpgradeable.js +14 -0
- package/dist/cjs/utils/instructions/bpfLoaderUpgradeable.js.map +1 -0
- package/dist/cjs/utils/instructions/feeTransfer.d.ts +3 -0
- package/dist/cjs/utils/instructions/feeTransfer.d.ts.map +1 -0
- package/dist/cjs/utils/instructions/feeTransfer.js +14 -0
- package/dist/cjs/utils/instructions/feeTransfer.js.map +1 -0
- package/dist/cjs/utils/instructions/governance.d.ts +52 -0
- package/dist/cjs/utils/instructions/governance.d.ts.map +1 -0
- package/dist/cjs/utils/instructions/governance.js +111 -0
- package/dist/cjs/utils/instructions/governance.js.map +1 -0
- package/dist/cjs/utils/instructions/index.d.ts +7 -0
- package/dist/cjs/utils/instructions/index.d.ts.map +1 -0
- package/dist/cjs/utils/instructions/index.js +23 -0
- package/dist/cjs/utils/instructions/index.js.map +1 -0
- package/dist/cjs/utils/instructions/initialize.d.ts +14 -0
- package/dist/cjs/utils/instructions/initialize.d.ts.map +1 -0
- package/dist/cjs/utils/instructions/initialize.js +37 -0
- package/dist/cjs/utils/instructions/initialize.js.map +1 -0
- package/dist/cjs/utils/instructions/postMessage.d.ts +16 -0
- package/dist/cjs/utils/instructions/postMessage.d.ts.map +1 -0
- package/dist/cjs/utils/instructions/postMessage.js +41 -0
- package/dist/cjs/utils/instructions/postMessage.js.map +1 -0
- package/dist/cjs/utils/instructions/postVaa.d.ts +28 -0
- package/dist/cjs/utils/instructions/postVaa.d.ts.map +1 -0
- package/dist/cjs/utils/instructions/postVaa.js +53 -0
- package/dist/cjs/utils/instructions/postVaa.js.map +1 -0
- package/dist/cjs/utils/instructions/secp256k1.d.ts +30 -0
- package/dist/cjs/utils/instructions/secp256k1.d.ts.map +1 -0
- package/dist/cjs/utils/instructions/secp256k1.js +111 -0
- package/dist/cjs/utils/instructions/secp256k1.js.map +1 -0
- package/dist/cjs/utils/instructions/verifySignature.d.ts +32 -0
- package/dist/cjs/utils/instructions/verifySignature.d.ts.map +1 -0
- package/dist/cjs/utils/instructions/verifySignature.js +94 -0
- package/dist/cjs/utils/instructions/verifySignature.js.map +1 -0
- package/dist/cjs/utils/program.d.ts +8 -0
- package/dist/cjs/utils/program.d.ts.map +1 -0
- package/dist/cjs/utils/program.js +24 -0
- package/dist/cjs/utils/program.js.map +1 -0
- package/dist/esm/anchor-idl/wormhole.json +611 -0
- package/dist/esm/core.d.ts +26 -0
- package/dist/esm/core.d.ts.map +1 -0
- package/dist/esm/core.js +177 -0
- package/dist/esm/core.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types.d.ts +612 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/accounts/claim.d.ts +5 -0
- package/dist/esm/utils/accounts/claim.d.ts.map +1 -0
- package/dist/esm/utils/accounts/claim.js +26 -0
- package/dist/esm/utils/accounts/claim.js.map +1 -0
- package/dist/esm/utils/accounts/config.d.ts +18 -0
- package/dist/esm/utils/accounts/config.d.ts.map +1 -0
- package/dist/esm/utils/accounts/config.js +45 -0
- package/dist/esm/utils/accounts/config.js.map +1 -0
- package/dist/esm/utils/accounts/emitter.d.ts +10 -0
- package/dist/esm/utils/accounts/emitter.d.ts.map +1 -0
- package/dist/esm/utils/accounts/emitter.js +16 -0
- package/dist/esm/utils/accounts/emitter.js.map +1 -0
- package/dist/esm/utils/accounts/feeCollector.d.ts +3 -0
- package/dist/esm/utils/accounts/feeCollector.d.ts.map +1 -0
- package/dist/esm/utils/accounts/feeCollector.js +5 -0
- package/dist/esm/utils/accounts/feeCollector.js.map +1 -0
- package/dist/esm/utils/accounts/guardianSet.d.ts +13 -0
- package/dist/esm/utils/accounts/guardianSet.d.ts.map +1 -0
- package/dist/esm/utils/accounts/guardianSet.js +43 -0
- package/dist/esm/utils/accounts/guardianSet.js.map +1 -0
- package/dist/esm/utils/accounts/index.d.ts +10 -0
- package/dist/esm/utils/accounts/index.d.ts.map +1 -0
- package/dist/esm/utils/accounts/index.js +10 -0
- package/dist/esm/utils/accounts/index.js.map +1 -0
- package/dist/esm/utils/accounts/postedVaa.d.ts +4 -0
- package/dist/esm/utils/accounts/postedVaa.d.ts.map +1 -0
- package/dist/esm/utils/accounts/postedVaa.js +5 -0
- package/dist/esm/utils/accounts/postedVaa.js.map +1 -0
- package/dist/esm/utils/accounts/sequence.d.ts +13 -0
- package/dist/esm/utils/accounts/sequence.d.ts.map +1 -0
- package/dist/esm/utils/accounts/sequence.js +36 -0
- package/dist/esm/utils/accounts/sequence.js.map +1 -0
- package/dist/esm/utils/accounts/signatureSet.d.ts +11 -0
- package/dist/esm/utils/accounts/signatureSet.d.ts.map +1 -0
- package/dist/esm/utils/accounts/signatureSet.js +26 -0
- package/dist/esm/utils/accounts/signatureSet.js.map +1 -0
- package/dist/esm/utils/accounts/upgrade.d.ts +3 -0
- package/dist/esm/utils/accounts/upgrade.d.ts.map +1 -0
- package/dist/esm/utils/accounts/upgrade.js +5 -0
- package/dist/esm/utils/accounts/upgrade.js.map +1 -0
- package/dist/esm/utils/coder/accounts.d.ts +26 -0
- package/dist/esm/utils/coder/accounts.d.ts.map +1 -0
- package/dist/esm/utils/coder/accounts.js +58 -0
- package/dist/esm/utils/coder/accounts.js.map +1 -0
- package/dist/esm/utils/coder/events.d.ts +7 -0
- package/dist/esm/utils/coder/events.d.ts.map +1 -0
- package/dist/esm/utils/coder/events.js +7 -0
- package/dist/esm/utils/coder/events.js.map +1 -0
- package/dist/esm/utils/coder/idl.d.ts +8 -0
- package/dist/esm/utils/coder/idl.d.ts.map +1 -0
- package/dist/esm/utils/coder/idl.js +87 -0
- package/dist/esm/utils/coder/idl.js.map +1 -0
- package/dist/esm/utils/coder/index.d.ts +16 -0
- package/dist/esm/utils/coder/index.d.ts.map +1 -0
- package/dist/esm/utils/coder/index.js +21 -0
- package/dist/esm/utils/coder/index.js.map +1 -0
- package/dist/esm/utils/coder/instruction.d.ts +26 -0
- package/dist/esm/utils/coder/instruction.d.ts.map +1 -0
- package/dist/esm/utils/coder/instruction.js +83 -0
- package/dist/esm/utils/coder/instruction.js.map +1 -0
- package/dist/esm/utils/coder/state.d.ts +8 -0
- package/dist/esm/utils/coder/state.d.ts.map +1 -0
- package/dist/esm/utils/coder/state.js +10 -0
- package/dist/esm/utils/coder/state.js.map +1 -0
- package/dist/esm/utils/coder/types.d.ts +8 -0
- package/dist/esm/utils/coder/types.d.ts.map +1 -0
- package/dist/esm/utils/coder/types.js +10 -0
- package/dist/esm/utils/coder/types.js.map +1 -0
- package/dist/esm/utils/cpi.d.ts +52 -0
- package/dist/esm/utils/cpi.d.ts.map +1 -0
- package/dist/esm/utils/cpi.js +43 -0
- package/dist/esm/utils/cpi.js.map +1 -0
- package/dist/esm/utils/index.d.ts +5 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +5 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/instructions/bpfLoaderUpgradeable.d.ts +6 -0
- package/dist/esm/utils/instructions/bpfLoaderUpgradeable.d.ts.map +1 -0
- package/dist/esm/utils/instructions/bpfLoaderUpgradeable.js +9 -0
- package/dist/esm/utils/instructions/bpfLoaderUpgradeable.js.map +1 -0
- package/dist/esm/utils/instructions/feeTransfer.d.ts +3 -0
- package/dist/esm/utils/instructions/feeTransfer.d.ts.map +1 -0
- package/dist/esm/utils/instructions/feeTransfer.js +10 -0
- package/dist/esm/utils/instructions/feeTransfer.js.map +1 -0
- package/dist/esm/utils/instructions/governance.d.ts +52 -0
- package/dist/esm/utils/instructions/governance.d.ts.map +1 -0
- package/dist/esm/utils/instructions/governance.js +100 -0
- package/dist/esm/utils/instructions/governance.js.map +1 -0
- package/dist/esm/utils/instructions/index.d.ts +7 -0
- package/dist/esm/utils/instructions/index.d.ts.map +1 -0
- package/dist/esm/utils/instructions/index.js +7 -0
- package/dist/esm/utils/instructions/index.js.map +1 -0
- package/dist/esm/utils/instructions/initialize.d.ts +14 -0
- package/dist/esm/utils/instructions/initialize.d.ts.map +1 -0
- package/dist/esm/utils/instructions/initialize.js +29 -0
- package/dist/esm/utils/instructions/initialize.js.map +1 -0
- package/dist/esm/utils/instructions/postMessage.d.ts +16 -0
- package/dist/esm/utils/instructions/postMessage.d.ts.map +1 -0
- package/dist/esm/utils/instructions/postMessage.js +36 -0
- package/dist/esm/utils/instructions/postMessage.js.map +1 -0
- package/dist/esm/utils/instructions/postVaa.d.ts +28 -0
- package/dist/esm/utils/instructions/postVaa.d.ts.map +1 -0
- package/dist/esm/utils/instructions/postVaa.js +45 -0
- package/dist/esm/utils/instructions/postVaa.js.map +1 -0
- package/dist/esm/utils/instructions/secp256k1.d.ts +30 -0
- package/dist/esm/utils/instructions/secp256k1.d.ts.map +1 -0
- package/dist/esm/utils/instructions/secp256k1.js +106 -0
- package/dist/esm/utils/instructions/secp256k1.js.map +1 -0
- package/dist/esm/utils/instructions/verifySignature.d.ts +32 -0
- package/dist/esm/utils/instructions/verifySignature.d.ts.map +1 -0
- package/dist/esm/utils/instructions/verifySignature.js +89 -0
- package/dist/esm/utils/instructions/verifySignature.js.map +1 -0
- package/dist/esm/utils/program.d.ts +8 -0
- package/dist/esm/utils/program.d.ts.map +1 -0
- package/dist/esm/utils/program.js +15 -0
- package/dist/esm/utils/program.js.map +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../../../src/utils/instructions/initialize.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,iBAAiB,EAIjB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AASzB,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,iBAAiB,EACxB,yBAAyB,EAAE,MAAM,EACjC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,EAAE,GACzB,sBAAsB,CAgBxB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,SAAS,CAAC;IACvB,YAAY,EAAE,SAAS,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,SAAS,CAAC;CAC1B;AAED,wBAAgB,qBAAqB,CACnC,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,iBAAiB,GACvB,kBAAkB,CAUpB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { PublicKey, SystemProgram, SYSVAR_CLOCK_PUBKEY, SYSVAR_RENT_PUBKEY, } from '@solana/web3.js';
|
|
2
|
+
import { createReadOnlyWormholeProgramInterface } from '../program';
|
|
3
|
+
import { deriveFeeCollectorKey, deriveGuardianSetKey, deriveWormholeBridgeDataKey, } from '../accounts';
|
|
4
|
+
import BN from 'bn.js';
|
|
5
|
+
export function createInitializeInstruction(connection, wormholeProgramId, payer, guardianSetExpirationTime, fee, initialGuardians) {
|
|
6
|
+
const methods = createReadOnlyWormholeProgramInterface(wormholeProgramId, connection).methods.initialize(guardianSetExpirationTime, new BN(fee.toString()), [
|
|
7
|
+
...initialGuardians,
|
|
8
|
+
]);
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
return methods._ixFn(...methods._args, {
|
|
11
|
+
accounts: getInitializeAccounts(wormholeProgramId, payer),
|
|
12
|
+
signers: undefined,
|
|
13
|
+
remainingAccounts: undefined,
|
|
14
|
+
preInstructions: undefined,
|
|
15
|
+
postInstructions: undefined,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export function getInitializeAccounts(wormholeProgramId, payer) {
|
|
19
|
+
return {
|
|
20
|
+
bridge: deriveWormholeBridgeDataKey(wormholeProgramId),
|
|
21
|
+
guardianSet: deriveGuardianSetKey(wormholeProgramId, 0),
|
|
22
|
+
feeCollector: deriveFeeCollectorKey(wormholeProgramId),
|
|
23
|
+
payer: new PublicKey(payer),
|
|
24
|
+
clock: SYSVAR_CLOCK_PUBKEY,
|
|
25
|
+
rent: SYSVAR_RENT_PUBKEY,
|
|
26
|
+
systemProgram: SystemProgram.programId,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=initialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../src/utils/instructions/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,aAAa,EACb,mBAAmB,EACnB,kBAAkB,GAEnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sCAAsC,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB,MAAM,UAAU,2BAA2B,CACzC,UAAsB,EACtB,iBAAoC,EACpC,KAAwB,EACxB,yBAAiC,EACjC,GAAW,EACX,gBAA0B;IAE1B,MAAM,OAAO,GAAG,sCAAsC,CACpD,iBAAiB,EACjB,UAAU,CACX,CAAC,OAAO,CAAC,UAAU,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE;QACtE,GAAG,gBAAgB;KACpB,CAAC,CAAC;IAEH,aAAa;IACb,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE;QACrC,QAAQ,EAAE,qBAAqB,CAAC,iBAAiB,EAAE,KAAK,CAAQ;QAChE,OAAO,EAAE,SAAS;QAClB,iBAAiB,EAAE,SAAS;QAC5B,eAAe,EAAE,SAAS;QAC1B,gBAAgB,EAAE,SAAS;KAC5B,CAAC,CAAC;AACL,CAAC;AAYD,MAAM,UAAU,qBAAqB,CACnC,iBAAoC,EACpC,KAAwB;IAExB,OAAO;QACL,MAAM,EAAE,2BAA2B,CAAC,iBAAiB,CAAC;QACtD,WAAW,EAAE,oBAAoB,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACvD,YAAY,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;QACtD,KAAK,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC;QAC3B,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,kBAAkB;QACxB,aAAa,EAAE,aAAa,CAAC,SAAS;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Connection, PublicKey, PublicKeyInitData, TransactionInstruction } from '@solana/web3.js';
|
|
2
|
+
/** All accounts required to make a cross-program invocation with the Core Bridge program */
|
|
3
|
+
export interface PostMessageAccounts {
|
|
4
|
+
bridge: PublicKey;
|
|
5
|
+
message: PublicKey;
|
|
6
|
+
emitter: PublicKey;
|
|
7
|
+
sequence: PublicKey;
|
|
8
|
+
payer: PublicKey;
|
|
9
|
+
feeCollector: PublicKey;
|
|
10
|
+
clock: PublicKey;
|
|
11
|
+
rent: PublicKey;
|
|
12
|
+
systemProgram: PublicKey;
|
|
13
|
+
}
|
|
14
|
+
export declare function createPostMessageInstruction(connection: Connection, wormholeProgramId: PublicKeyInitData, payer: PublicKeyInitData, messageAccount: PublicKeyInitData, payload: Uint8Array, nonce: number, consistencyLevel: number): TransactionInstruction;
|
|
15
|
+
export declare function getPostMessageAccounts(wormholeProgramId: PublicKeyInitData, payer: PublicKeyInitData, message: PublicKeyInitData, emitter?: PublicKeyInitData): PostMessageAccounts;
|
|
16
|
+
//# sourceMappingURL=postMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postMessage.d.ts","sourceRoot":"","sources":["../../../../src/utils/instructions/postMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,iBAAiB,EAIjB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AASzB,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,EAAE,SAAS,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,SAAS,CAAC;CAC1B;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,iBAAiB,EACxB,cAAc,EAAE,iBAAiB,EACjC,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,GACvB,sBAAsB,CAcxB;AAED,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,mBAAmB,CAmBrB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { PublicKey, SYSVAR_CLOCK_PUBKEY, SYSVAR_RENT_PUBKEY, SystemProgram, } from '@solana/web3.js';
|
|
2
|
+
import { deriveWormholeBridgeDataKey, deriveFeeCollectorKey, deriveEmitterSequenceKey, getEmitterKeys, } from '../accounts';
|
|
3
|
+
import { createReadOnlyWormholeProgramInterface } from '../program';
|
|
4
|
+
export function createPostMessageInstruction(connection, wormholeProgramId, payer, messageAccount, payload, nonce, consistencyLevel) {
|
|
5
|
+
const methods = createReadOnlyWormholeProgramInterface(wormholeProgramId, connection).methods.postMessage(nonce, Buffer.from(payload), consistencyLevel);
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
return methods._ixFn(...methods._args, {
|
|
8
|
+
accounts: getPostMessageAccounts(wormholeProgramId, payer, messageAccount),
|
|
9
|
+
signers: undefined,
|
|
10
|
+
remainingAccounts: undefined,
|
|
11
|
+
preInstructions: undefined,
|
|
12
|
+
postInstructions: undefined,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
export function getPostMessageAccounts(wormholeProgramId, payer, message, emitter) {
|
|
16
|
+
let sequence;
|
|
17
|
+
if (emitter) {
|
|
18
|
+
({ emitter, sequence } = getEmitterKeys(emitter, wormholeProgramId));
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
emitter = payer;
|
|
22
|
+
sequence = deriveEmitterSequenceKey(emitter, wormholeProgramId);
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
bridge: deriveWormholeBridgeDataKey(wormholeProgramId),
|
|
26
|
+
message: new PublicKey(message),
|
|
27
|
+
emitter: new PublicKey(emitter),
|
|
28
|
+
sequence,
|
|
29
|
+
payer: new PublicKey(payer),
|
|
30
|
+
feeCollector: deriveFeeCollectorKey(wormholeProgramId),
|
|
31
|
+
clock: SYSVAR_CLOCK_PUBKEY,
|
|
32
|
+
rent: SYSVAR_RENT_PUBKEY,
|
|
33
|
+
systemProgram: SystemProgram.programId,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=postMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postMessage.js","sourceRoot":"","sources":["../../../../src/utils/instructions/postMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,GAEd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,wBAAwB,EACxB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sCAAsC,EAAE,MAAM,YAAY,CAAC;AAepE,MAAM,UAAU,4BAA4B,CAC1C,UAAsB,EACtB,iBAAoC,EACpC,KAAwB,EACxB,cAAiC,EACjC,OAAmB,EACnB,KAAa,EACb,gBAAwB;IAExB,MAAM,OAAO,GAAG,sCAAsC,CACpD,iBAAiB,EACjB,UAAU,CACX,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAErE,aAAa;IACb,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE;QACrC,QAAQ,EAAE,sBAAsB,CAAC,iBAAiB,EAAE,KAAK,EAAE,cAAc,CAAC;QAC1E,OAAO,EAAE,SAAS;QAClB,iBAAiB,EAAE,SAAS;QAC5B,eAAe,EAAE,SAAS;QAC1B,gBAAgB,EAAE,SAAS;KAC5B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,iBAAoC,EACpC,KAAwB,EACxB,OAA0B,EAC1B,OAA2B;IAE3B,IAAI,QAAQ,CAAC;IACb,IAAI,OAAO,EAAE;QACX,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;KACtE;SAAM;QACL,OAAO,GAAG,KAAK,CAAC;QAChB,QAAQ,GAAG,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;KACjE;IACD,OAAO;QACL,MAAM,EAAE,2BAA2B,CAAC,iBAAiB,CAAC;QACtD,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC;QAC/B,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC;QAC/B,QAAQ;QACR,KAAK,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC;QAC3B,YAAY,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;QACtD,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,kBAAkB;QACxB,aAAa,EAAE,aAAa,CAAC,SAAS;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { PublicKey, PublicKeyInitData, TransactionInstruction, Connection } from '@solana/web3.js';
|
|
2
|
+
import { VAA } from '@wormhole-foundation/sdk-connect';
|
|
3
|
+
/**
|
|
4
|
+
* Make {@link TransactionInstruction} for `post_vaa` instruction.
|
|
5
|
+
*
|
|
6
|
+
* `signatureSet` is a {@link @solana/web3.Keypair} generated outside of this method, which was used
|
|
7
|
+
* to write signatures and the message hash to.
|
|
8
|
+
*
|
|
9
|
+
* https://github.com/certusone/wormhole/blob/main/solana/bridge/program/src/api/post_vaa.rs
|
|
10
|
+
*
|
|
11
|
+
* @param {PublicKeyInitData} wormholeProgramId - wormhole program address
|
|
12
|
+
* @param {PublicKeyInitData} payer - transaction signer address
|
|
13
|
+
* @param {SignedVaa | ParsedVaa} vaa - either signed VAA bytes or parsed VAA
|
|
14
|
+
* @param {PublicKeyInitData} signatureSet - key for signature set account
|
|
15
|
+
*/
|
|
16
|
+
export declare function createPostVaaInstruction(connection: Connection, wormholeProgramId: PublicKeyInitData, payer: PublicKeyInitData, vaa: VAA, signatureSet: PublicKeyInitData): TransactionInstruction;
|
|
17
|
+
export interface PostVaaAccounts {
|
|
18
|
+
guardianSet: PublicKey;
|
|
19
|
+
bridge: PublicKey;
|
|
20
|
+
signatureSet: PublicKey;
|
|
21
|
+
vaa: PublicKey;
|
|
22
|
+
payer: PublicKey;
|
|
23
|
+
clock: PublicKey;
|
|
24
|
+
rent: PublicKey;
|
|
25
|
+
systemProgram: PublicKey;
|
|
26
|
+
}
|
|
27
|
+
export declare function getPostVaaAccounts(wormholeProgramId: PublicKeyInitData, payer: PublicKeyInitData, signatureSet: PublicKeyInitData, vaa: VAA): PostVaaAccounts;
|
|
28
|
+
//# sourceMappingURL=postVaa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postVaa.d.ts","sourceRoot":"","sources":["../../../../src/utils/instructions/postVaa.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,sBAAsB,EAItB,UAAU,EACX,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EACL,GAAG,EAGJ,MAAM,kCAAkC,CAAC;AAG1C;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,iBAAiB,GAC9B,sBAAsB,CAyBxB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,SAAS,CAAC;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,SAAS,CAAC;IACxB,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,SAAS,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAChC,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,iBAAiB,EACxB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE,GAAG,GACP,eAAe,CAWjB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { PublicKey, SYSVAR_CLOCK_PUBKEY, SYSVAR_RENT_PUBKEY, SystemProgram, } from '@solana/web3.js';
|
|
2
|
+
import { createReadOnlyWormholeProgramInterface } from '../program';
|
|
3
|
+
import { deriveWormholeBridgeDataKey, deriveGuardianSetKey, derivePostedVaaKey, } from '../accounts';
|
|
4
|
+
import { serializePayload, toChainId, } from '@wormhole-foundation/sdk-connect';
|
|
5
|
+
import BN from 'bn.js';
|
|
6
|
+
/**
|
|
7
|
+
* Make {@link TransactionInstruction} for `post_vaa` instruction.
|
|
8
|
+
*
|
|
9
|
+
* `signatureSet` is a {@link @solana/web3.Keypair} generated outside of this method, which was used
|
|
10
|
+
* to write signatures and the message hash to.
|
|
11
|
+
*
|
|
12
|
+
* https://github.com/certusone/wormhole/blob/main/solana/bridge/program/src/api/post_vaa.rs
|
|
13
|
+
*
|
|
14
|
+
* @param {PublicKeyInitData} wormholeProgramId - wormhole program address
|
|
15
|
+
* @param {PublicKeyInitData} payer - transaction signer address
|
|
16
|
+
* @param {SignedVaa | ParsedVaa} vaa - either signed VAA bytes or parsed VAA
|
|
17
|
+
* @param {PublicKeyInitData} signatureSet - key for signature set account
|
|
18
|
+
*/
|
|
19
|
+
export function createPostVaaInstruction(connection, wormholeProgramId, payer, vaa, signatureSet) {
|
|
20
|
+
const methods = createReadOnlyWormholeProgramInterface(wormholeProgramId, connection).methods.postVaa(1, // TODO: hardcoded VAA version
|
|
21
|
+
vaa.guardianSet, vaa.timestamp, vaa.nonce, toChainId(vaa.emitterChain), [...vaa.emitterAddress.toUint8Array()], new BN(vaa.sequence.toString()), vaa.consistencyLevel,
|
|
22
|
+
// Note: This _must_ be a Buffer, a Uint8Array does not work
|
|
23
|
+
Buffer.from(serializePayload(vaa.payloadLiteral, vaa.payload)));
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
return methods._ixFn(...methods._args, {
|
|
26
|
+
accounts: getPostVaaAccounts(wormholeProgramId, payer, signatureSet, vaa),
|
|
27
|
+
signers: undefined,
|
|
28
|
+
remainingAccounts: undefined,
|
|
29
|
+
preInstructions: undefined,
|
|
30
|
+
postInstructions: undefined,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export function getPostVaaAccounts(wormholeProgramId, payer, signatureSet, vaa) {
|
|
34
|
+
return {
|
|
35
|
+
guardianSet: deriveGuardianSetKey(wormholeProgramId, vaa.guardianSet),
|
|
36
|
+
bridge: deriveWormholeBridgeDataKey(wormholeProgramId),
|
|
37
|
+
signatureSet: new PublicKey(signatureSet),
|
|
38
|
+
vaa: derivePostedVaaKey(wormholeProgramId, Buffer.from(vaa.hash)),
|
|
39
|
+
payer: new PublicKey(payer),
|
|
40
|
+
clock: SYSVAR_CLOCK_PUBKEY,
|
|
41
|
+
rent: SYSVAR_RENT_PUBKEY,
|
|
42
|
+
systemProgram: SystemProgram.programId,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=postVaa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postVaa.js","sourceRoot":"","sources":["../../../../src/utils/instructions/postVaa.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAGT,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,GAEd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sCAAsC,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,gBAAgB,EAChB,SAAS,GACV,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAsB,EACtB,iBAAoC,EACpC,KAAwB,EACxB,GAAQ,EACR,YAA+B;IAE/B,MAAM,OAAO,GAAG,sCAAsC,CACpD,iBAAiB,EACjB,UAAU,CACX,CAAC,OAAO,CAAC,OAAO,CACf,CAAC,EAAE,8BAA8B;IACjC,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,KAAK,EACT,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAC3B,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,EACtC,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAC/B,GAAG,CAAC,gBAAgB;IACpB,4DAA4D;IAC5D,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAC/D,CAAC;IAEF,aAAa;IACb,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE;QACrC,QAAQ,EAAE,kBAAkB,CAAC,iBAAiB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC;QACzE,OAAO,EAAE,SAAS;QAClB,iBAAiB,EAAE,SAAS;QAC5B,eAAe,EAAE,SAAS;QAC1B,gBAAgB,EAAE,SAAS;KAC5B,CAAC,CAAC;AACL,CAAC;AAaD,MAAM,UAAU,kBAAkB,CAChC,iBAAoC,EACpC,KAAwB,EACxB,YAA+B,EAC/B,GAAQ;IAER,OAAO;QACL,WAAW,EAAE,oBAAoB,CAAC,iBAAiB,EAAE,GAAG,CAAC,WAAW,CAAC;QACrE,MAAM,EAAE,2BAA2B,CAAC,iBAAiB,CAAC;QACtD,YAAY,EAAE,IAAI,SAAS,CAAC,YAAY,CAAC;QACzC,GAAG,EAAE,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjE,KAAK,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC;QAC3B,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,kBAAkB;QACxB,aAAa,EAAE,aAAa,CAAC,SAAS;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { TransactionInstruction } from '@solana/web3.js';
|
|
3
|
+
export declare const SIGNATURE_LENGTH = 65;
|
|
4
|
+
export declare const ETHEREUM_KEY_LENGTH = 20;
|
|
5
|
+
/**
|
|
6
|
+
* Create {@link TransactionInstruction} for {@link Secp256k1Program}.
|
|
7
|
+
*
|
|
8
|
+
* @param {Buffer[]} signatures - 65-byte signatures (64 bytes + 1 byte recovery id)
|
|
9
|
+
* @param {Buffer[]} keys - 20-byte ethereum public keys
|
|
10
|
+
* @param {Buffer} message - 32-byte hash
|
|
11
|
+
* @returns Solana instruction for Secp256k1 program
|
|
12
|
+
*/
|
|
13
|
+
export declare function createSecp256k1Instruction(signatures: Buffer[], keys: Buffer[], message: Buffer): TransactionInstruction;
|
|
14
|
+
/**
|
|
15
|
+
* Secp256k1SignatureOffsets serializer
|
|
16
|
+
*
|
|
17
|
+
* See {@link https://docs.solana.com/developing/runtime-facilities/programs#secp256k1-program} for more info.
|
|
18
|
+
*/
|
|
19
|
+
export declare class Secp256k1SignatureOffsets {
|
|
20
|
+
/**
|
|
21
|
+
* Serialize multiple signatures, ethereum public keys and message as Secp256k1 instruction data.
|
|
22
|
+
*
|
|
23
|
+
* @param {Buffer[]} signatures - 65-byte signatures (64 + 1 recovery id)
|
|
24
|
+
* @param {Buffer[]} keys - ethereum public keys
|
|
25
|
+
* @param {Buffer} message - 32-byte hash
|
|
26
|
+
* @returns serialized Secp256k1 instruction data
|
|
27
|
+
*/
|
|
28
|
+
static serialize(signatures: Buffer[], keys: Buffer[], message: Buffer): Buffer;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=secp256k1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secp256k1.d.ts","sourceRoot":"","sources":["../../../../src/utils/instructions/secp256k1.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,sBAAsB,EAAoB,MAAM,iBAAiB,CAAC;AAE3E,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAAE,EACpB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,MAAM,GACd,sBAAsB,CAMxB;AAED;;;;GAIG;AACH,qBAAa,yBAAyB;IAgCpC;;;;;;;OAOG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM;CAqDvE"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { TransactionInstruction, Secp256k1Program } from '@solana/web3.js';
|
|
2
|
+
export const SIGNATURE_LENGTH = 65;
|
|
3
|
+
export const ETHEREUM_KEY_LENGTH = 20;
|
|
4
|
+
/**
|
|
5
|
+
* Create {@link TransactionInstruction} for {@link Secp256k1Program}.
|
|
6
|
+
*
|
|
7
|
+
* @param {Buffer[]} signatures - 65-byte signatures (64 bytes + 1 byte recovery id)
|
|
8
|
+
* @param {Buffer[]} keys - 20-byte ethereum public keys
|
|
9
|
+
* @param {Buffer} message - 32-byte hash
|
|
10
|
+
* @returns Solana instruction for Secp256k1 program
|
|
11
|
+
*/
|
|
12
|
+
export function createSecp256k1Instruction(signatures, keys, message) {
|
|
13
|
+
return new TransactionInstruction({
|
|
14
|
+
keys: [],
|
|
15
|
+
programId: Secp256k1Program.programId,
|
|
16
|
+
data: Secp256k1SignatureOffsets.serialize(signatures, keys, message),
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Secp256k1SignatureOffsets serializer
|
|
21
|
+
*
|
|
22
|
+
* See {@link https://docs.solana.com/developing/runtime-facilities/programs#secp256k1-program} for more info.
|
|
23
|
+
*/
|
|
24
|
+
export class Secp256k1SignatureOffsets {
|
|
25
|
+
// https://docs.solana.com/developing/runtime-facilities/programs#secp256k1-program
|
|
26
|
+
//
|
|
27
|
+
// struct Secp256k1SignatureOffsets {
|
|
28
|
+
// secp_signature_key_offset: u16, // offset to [signature,recovery_id,etherum_address] of 64+1+20 bytes
|
|
29
|
+
// secp_signature_instruction_index: u8, // instruction index to find data
|
|
30
|
+
// secp_pubkey_offset: u16, // offset to [signature,recovery_id] of 64+1 bytes
|
|
31
|
+
// secp_signature_instruction_index: u8, // instruction index to find data
|
|
32
|
+
// secp_message_data_offset: u16, // offset to start of message data
|
|
33
|
+
// secp_message_data_size: u16, // size of message data
|
|
34
|
+
// secp_message_instruction_index: u8, // index of instruction data to get message data
|
|
35
|
+
// }
|
|
36
|
+
//
|
|
37
|
+
// Pseudo code of the operation:
|
|
38
|
+
//
|
|
39
|
+
// process_instruction() {
|
|
40
|
+
// for i in 0..count {
|
|
41
|
+
// // i'th index values referenced:
|
|
42
|
+
// instructions = &transaction.message().instructions
|
|
43
|
+
// signature = instructions[secp_signature_instruction_index].data[secp_signature_offset..secp_signature_offset + 64]
|
|
44
|
+
// recovery_id = instructions[secp_signature_instruction_index].data[secp_signature_offset + 64]
|
|
45
|
+
// ref_eth_pubkey = instructions[secp_pubkey_instruction_index].data[secp_pubkey_offset..secp_pubkey_offset + 32]
|
|
46
|
+
// message_hash = keccak256(instructions[secp_message_instruction_index].data[secp_message_data_offset..secp_message_data_offset + secp_message_data_size])
|
|
47
|
+
// pubkey = ecrecover(signature, recovery_id, message_hash)
|
|
48
|
+
// eth_pubkey = keccak256(pubkey[1..])[12..]
|
|
49
|
+
// if eth_pubkey != ref_eth_pubkey {
|
|
50
|
+
// return Error
|
|
51
|
+
// }
|
|
52
|
+
// }
|
|
53
|
+
// return Success
|
|
54
|
+
// }
|
|
55
|
+
/**
|
|
56
|
+
* Serialize multiple signatures, ethereum public keys and message as Secp256k1 instruction data.
|
|
57
|
+
*
|
|
58
|
+
* @param {Buffer[]} signatures - 65-byte signatures (64 + 1 recovery id)
|
|
59
|
+
* @param {Buffer[]} keys - ethereum public keys
|
|
60
|
+
* @param {Buffer} message - 32-byte hash
|
|
61
|
+
* @returns serialized Secp256k1 instruction data
|
|
62
|
+
*/
|
|
63
|
+
static serialize(signatures, keys, message) {
|
|
64
|
+
if (signatures.length == 0) {
|
|
65
|
+
throw Error('signatures.length == 0');
|
|
66
|
+
}
|
|
67
|
+
if (signatures.length != keys.length) {
|
|
68
|
+
throw Error('signatures.length != keys.length');
|
|
69
|
+
}
|
|
70
|
+
if (message.length != 32) {
|
|
71
|
+
throw Error('message.length != 32');
|
|
72
|
+
}
|
|
73
|
+
const numSignatures = signatures.length;
|
|
74
|
+
const offsetSpan = 11;
|
|
75
|
+
const dataLoc = 1 + numSignatures * offsetSpan;
|
|
76
|
+
const dataLen = SIGNATURE_LENGTH + ETHEREUM_KEY_LENGTH; // 65 signature size + 20 eth pubkey size
|
|
77
|
+
const messageDataOffset = dataLoc + numSignatures * dataLen;
|
|
78
|
+
const messageDataSize = 32;
|
|
79
|
+
const serialized = Buffer.alloc(messageDataOffset + messageDataSize);
|
|
80
|
+
serialized.writeUInt8(numSignatures, 0);
|
|
81
|
+
serialized.write(message.toString('hex'), messageDataOffset, 'hex');
|
|
82
|
+
for (let i = 0; i < numSignatures; ++i) {
|
|
83
|
+
const signature = signatures.at(i);
|
|
84
|
+
if (signature?.length != SIGNATURE_LENGTH) {
|
|
85
|
+
throw Error(`signatures[${i}].length != 65`);
|
|
86
|
+
}
|
|
87
|
+
const key = keys.at(i);
|
|
88
|
+
if (key?.length != ETHEREUM_KEY_LENGTH) {
|
|
89
|
+
throw Error(`keys[${i}].length != 20`);
|
|
90
|
+
}
|
|
91
|
+
const signatureOffset = dataLoc + dataLen * i;
|
|
92
|
+
const ethAddressOffset = signatureOffset + 65;
|
|
93
|
+
serialized.writeUInt16LE(signatureOffset, 1 + i * offsetSpan);
|
|
94
|
+
serialized.writeUInt8(0, 3 + i * offsetSpan);
|
|
95
|
+
serialized.writeUInt16LE(ethAddressOffset, 4 + i * offsetSpan);
|
|
96
|
+
serialized.writeUInt8(0, 6 + i * offsetSpan);
|
|
97
|
+
serialized.writeUInt16LE(messageDataOffset, 7 + i * offsetSpan);
|
|
98
|
+
serialized.writeUInt16LE(messageDataSize, 9 + i * offsetSpan);
|
|
99
|
+
serialized.writeUInt8(0, 10 + i * offsetSpan);
|
|
100
|
+
serialized.write(signature.toString('hex'), signatureOffset, 'hex');
|
|
101
|
+
serialized.write(key.toString('hex'), ethAddressOffset, 'hex');
|
|
102
|
+
}
|
|
103
|
+
return serialized;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=secp256k1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["../../../../src/utils/instructions/secp256k1.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Commitment, Connection, PublicKey, PublicKeyInitData, TransactionInstruction } from '@solana/web3.js';
|
|
2
|
+
import { VAA } from '@wormhole-foundation/sdk-connect';
|
|
3
|
+
/**
|
|
4
|
+
* Signatures are batched in groups of 7 due to instruction
|
|
5
|
+
* data limits. These signatures are passed through to the Secp256k1
|
|
6
|
+
* program to verify that the guardian public keys can be recovered.
|
|
7
|
+
* This instruction is paired with `verify_signatures` to validate the
|
|
8
|
+
* pubkey recovery.
|
|
9
|
+
*
|
|
10
|
+
* There are at most three pairs of instructions created.
|
|
11
|
+
*
|
|
12
|
+
* https://github.com/certusone/wormhole/blob/main/solana/bridge/program/src/api/verify_signature.rs
|
|
13
|
+
*
|
|
14
|
+
*
|
|
15
|
+
* @param {Connection} connection - Solana web3 connection
|
|
16
|
+
* @param {PublicKeyInitData} wormholeProgramId - wormhole program address
|
|
17
|
+
* @param {PublicKeyInitData} payer - transaction signer address
|
|
18
|
+
* @param {SignedVaa | ParsedVaa} vaa - either signed VAA bytes or parsed VAA
|
|
19
|
+
* @param {PublicKeyInitData} signatureSet - address to account of verified signatures
|
|
20
|
+
* @param {web3.ConfirmOptions} [options] - Solana confirmation options
|
|
21
|
+
*/
|
|
22
|
+
export declare function createVerifySignaturesInstructions(connection: Connection, wormholeProgramId: PublicKeyInitData, payer: PublicKeyInitData, vaa: VAA<any>, signatureSet: PublicKeyInitData, commitment?: Commitment): Promise<TransactionInstruction[]>;
|
|
23
|
+
export interface VerifySignatureAccounts {
|
|
24
|
+
payer: PublicKey;
|
|
25
|
+
guardianSet: PublicKey;
|
|
26
|
+
signatureSet: PublicKey;
|
|
27
|
+
instructions: PublicKey;
|
|
28
|
+
rent: PublicKey;
|
|
29
|
+
systemProgram: PublicKey;
|
|
30
|
+
}
|
|
31
|
+
export declare function getVerifySignatureAccounts(wormholeProgramId: PublicKeyInitData, payer: PublicKeyInitData, signatureSet: PublicKeyInitData, vaa: VAA): VerifySignatureAccounts;
|
|
32
|
+
//# sourceMappingURL=verifySignature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifySignature.d.ts","sourceRoot":"","sources":["../../../../src/utils/instructions/verifySignature.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,EACV,SAAS,EACT,iBAAiB,EAIjB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAKvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,kCAAkC,CACtD,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EACb,YAAY,EAAE,iBAAiB,EAC/B,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAmDnC;AA8CD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,SAAS,CAAC;IACvB,YAAY,EAAE,SAAS,CAAC;IACxB,YAAY,EAAE,SAAS,CAAC;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,SAAS,CAAC;CAC1B;AAED,wBAAgB,0BAA0B,CACxC,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,iBAAiB,EACxB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE,GAAG,GACP,uBAAuB,CASzB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { PublicKey, SystemProgram, SYSVAR_INSTRUCTIONS_PUBKEY, SYSVAR_RENT_PUBKEY, } from '@solana/web3.js';
|
|
2
|
+
import { getGuardianSet, deriveGuardianSetKey, getWormholeBridgeData, } from '../accounts';
|
|
3
|
+
import { createReadOnlyWormholeProgramInterface } from '../program';
|
|
4
|
+
import { createSecp256k1Instruction } from './secp256k1';
|
|
5
|
+
const MAX_LEN_GUARDIAN_KEYS = 19;
|
|
6
|
+
/**
|
|
7
|
+
* Signatures are batched in groups of 7 due to instruction
|
|
8
|
+
* data limits. These signatures are passed through to the Secp256k1
|
|
9
|
+
* program to verify that the guardian public keys can be recovered.
|
|
10
|
+
* This instruction is paired with `verify_signatures` to validate the
|
|
11
|
+
* pubkey recovery.
|
|
12
|
+
*
|
|
13
|
+
* There are at most three pairs of instructions created.
|
|
14
|
+
*
|
|
15
|
+
* https://github.com/certusone/wormhole/blob/main/solana/bridge/program/src/api/verify_signature.rs
|
|
16
|
+
*
|
|
17
|
+
*
|
|
18
|
+
* @param {Connection} connection - Solana web3 connection
|
|
19
|
+
* @param {PublicKeyInitData} wormholeProgramId - wormhole program address
|
|
20
|
+
* @param {PublicKeyInitData} payer - transaction signer address
|
|
21
|
+
* @param {SignedVaa | ParsedVaa} vaa - either signed VAA bytes or parsed VAA
|
|
22
|
+
* @param {PublicKeyInitData} signatureSet - address to account of verified signatures
|
|
23
|
+
* @param {web3.ConfirmOptions} [options] - Solana confirmation options
|
|
24
|
+
*/
|
|
25
|
+
export async function createVerifySignaturesInstructions(connection, wormholeProgramId, payer, vaa, signatureSet, commitment) {
|
|
26
|
+
const guardianSetIndex = vaa.guardianSet;
|
|
27
|
+
const info = await getWormholeBridgeData(connection, wormholeProgramId);
|
|
28
|
+
if (guardianSetIndex != info.guardianSetIndex)
|
|
29
|
+
throw new Error('guardianSetIndex != config.guardianSetIndex');
|
|
30
|
+
const guardianSetData = await getGuardianSet(connection, wormholeProgramId, guardianSetIndex, commitment);
|
|
31
|
+
const guardianSignatures = vaa.signatures;
|
|
32
|
+
const guardianKeys = guardianSetData.keys;
|
|
33
|
+
const batchSize = 7;
|
|
34
|
+
const instructions = [];
|
|
35
|
+
for (let i = 0; i < Math.ceil(guardianSignatures.length / batchSize); ++i) {
|
|
36
|
+
const start = i * batchSize;
|
|
37
|
+
const end = Math.min(guardianSignatures.length, (i + 1) * batchSize);
|
|
38
|
+
const signatureStatus = new Array(MAX_LEN_GUARDIAN_KEYS).fill(-1);
|
|
39
|
+
const signatures = [];
|
|
40
|
+
const keys = [];
|
|
41
|
+
for (let j = 0; j < end - start; ++j) {
|
|
42
|
+
const item = guardianSignatures.at(j + start);
|
|
43
|
+
signatures.push(Buffer.from(item.signature.encode()));
|
|
44
|
+
keys.push(guardianKeys.at(item.guardianIndex));
|
|
45
|
+
signatureStatus[item.guardianIndex] = j;
|
|
46
|
+
}
|
|
47
|
+
instructions.push(createSecp256k1Instruction(signatures, keys, Buffer.from(vaa.hash)));
|
|
48
|
+
instructions.push(createVerifySignaturesInstruction(connection, wormholeProgramId, payer, vaa, signatureSet, signatureStatus));
|
|
49
|
+
}
|
|
50
|
+
return instructions;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Make {@link TransactionInstruction} for `verify_signatures` instruction.
|
|
54
|
+
*
|
|
55
|
+
* This is used in {@link createVerifySignaturesInstructions} for each batch of signatures being verified.
|
|
56
|
+
* `signatureSet` is a {@link @solana/web3.Keypair} generated outside of this method, used
|
|
57
|
+
* for writing signatures and the message hash to.
|
|
58
|
+
*
|
|
59
|
+
* https://github.com/certusone/wormhole/blob/main/solana/bridge/program/src/api/verify_signature.rs
|
|
60
|
+
*
|
|
61
|
+
* @param {PublicKeyInitData} wormholeProgramId - wormhole program address
|
|
62
|
+
* @param {PublicKeyInitData} payer - transaction signer address
|
|
63
|
+
* @param {SignedVaa | ParsedVaa} vaa - either signed VAA (Buffer) or parsed VAA
|
|
64
|
+
* @param {PublicKeyInitData} signatureSet - key for signature set account
|
|
65
|
+
* @param {Buffer} signatureStatus - array of guardian indices
|
|
66
|
+
*
|
|
67
|
+
*/
|
|
68
|
+
function createVerifySignaturesInstruction(connection, wormholeProgramId, payer, vaa, signatureSet, signatureStatus) {
|
|
69
|
+
const methods = createReadOnlyWormholeProgramInterface(wormholeProgramId, connection).methods.verifySignatures(signatureStatus);
|
|
70
|
+
// @ts-ignore
|
|
71
|
+
return methods._ixFn(...methods._args, {
|
|
72
|
+
accounts: getVerifySignatureAccounts(wormholeProgramId, payer, signatureSet, vaa),
|
|
73
|
+
signers: undefined,
|
|
74
|
+
remainingAccounts: undefined,
|
|
75
|
+
preInstructions: undefined,
|
|
76
|
+
postInstructions: undefined,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
export function getVerifySignatureAccounts(wormholeProgramId, payer, signatureSet, vaa) {
|
|
80
|
+
return {
|
|
81
|
+
payer: new PublicKey(payer),
|
|
82
|
+
guardianSet: deriveGuardianSetKey(wormholeProgramId, vaa.guardianSet),
|
|
83
|
+
signatureSet: new PublicKey(signatureSet),
|
|
84
|
+
instructions: SYSVAR_INSTRUCTIONS_PUBKEY,
|
|
85
|
+
rent: SYSVAR_RENT_PUBKEY,
|
|
86
|
+
systemProgram: SystemProgram.programId,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=verifySignature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifySignature.js","sourceRoot":"","sources":["../../../../src/utils/instructions/verifySignature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Connection, PublicKeyInitData } from '@solana/web3.js';
|
|
2
|
+
import { Program, Provider } from '@project-serum/anchor';
|
|
3
|
+
import { WormholeCoder } from './coder';
|
|
4
|
+
import { Wormhole } from '../types';
|
|
5
|
+
export declare function createWormholeProgramInterface(programId: PublicKeyInitData, provider?: Provider): Program<Wormhole>;
|
|
6
|
+
export declare function createReadOnlyWormholeProgramInterface(programId: PublicKeyInitData, connection?: Connection): Program<Wormhole>;
|
|
7
|
+
export declare function coder(): WormholeCoder;
|
|
8
|
+
//# sourceMappingURL=program.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../../src/utils/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIpC,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,QAAQ,CAAC,CAOnB;AAED,wBAAgB,sCAAsC,CACpD,SAAS,EAAE,iBAAiB,EAC5B,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAAC,QAAQ,CAAC,CAKnB;AAED,wBAAgB,KAAK,IAAI,aAAa,CAErC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
import { Program } from '@project-serum/anchor';
|
|
3
|
+
import { utils } from '@wormhole-foundation/sdk-solana';
|
|
4
|
+
import { WormholeCoder } from './coder';
|
|
5
|
+
import IDL from '../anchor-idl/wormhole.json';
|
|
6
|
+
export function createWormholeProgramInterface(programId, provider) {
|
|
7
|
+
return new Program(IDL, new PublicKey(programId), provider === undefined ? { connection: null } : provider, coder());
|
|
8
|
+
}
|
|
9
|
+
export function createReadOnlyWormholeProgramInterface(programId, connection) {
|
|
10
|
+
return createWormholeProgramInterface(programId, utils.createReadOnlyProvider(connection));
|
|
11
|
+
}
|
|
12
|
+
export function coder() {
|
|
13
|
+
return new WormholeCoder(IDL);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=program.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/utils/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAqB,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAY,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,GAAG,MAAM,6BAA6B,CAAC;AAE9C,MAAM,UAAU,8BAA8B,CAC5C,SAA4B,EAC5B,QAAmB;IAEnB,OAAO,IAAI,OAAO,CAChB,GAAe,EACf,IAAI,SAAS,CAAC,SAAS,CAAC,EACxB,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAE,EAAE,UAAU,EAAE,IAAI,EAAU,CAAC,CAAC,CAAC,QAAQ,EACjE,KAAK,EAAE,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,SAA4B,EAC5B,UAAuB;IAEvB,OAAO,8BAA8B,CACnC,SAAS,EACT,KAAK,CAAC,sBAAsB,CAAC,UAAU,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,KAAK;IACnB,OAAO,IAAI,aAAa,CAAC,GAAe,CAAC,CAAC;AAC5C,CAAC"}
|