fix: catchup to upstream loader changes
This commit is contained in:
parent
00fd0fc435
commit
757cf3ec16
|
@ -69,6 +69,7 @@ declare module '@solana/web3.js' {
|
|||
): Transaction;
|
||||
static move(from: PublicKey, to: PublicKey, amount: number): Transaction;
|
||||
static assign(from: PublicKey, programId: PublicKey): Transaction;
|
||||
static spawn(programId: PublicKey): Transaction;
|
||||
}
|
||||
|
||||
// === src/transaction.js ===
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import * as BufferLayout from 'buffer-layout';
|
||||
|
||||
import {PublicKey, Transaction} from '.';
|
||||
import {PublicKey, SystemProgram, Transaction} from '.';
|
||||
import {sendAndConfirmTransaction} from './util/send-and-confirm-transaction';
|
||||
import type {Account, Connection} from '.';
|
||||
|
||||
|
@ -85,12 +85,15 @@ export class Loader {
|
|||
userdata,
|
||||
);
|
||||
|
||||
const transaction = new Transaction({
|
||||
let transaction = new Transaction({
|
||||
fee: 0,
|
||||
keys: [program.publicKey],
|
||||
programId: this.programId,
|
||||
userdata,
|
||||
});
|
||||
await sendAndConfirmTransaction(this.connection, program, transaction);
|
||||
|
||||
transaction = SystemProgram.spawn(program.publicKey);
|
||||
await sendAndConfirmTransaction(this.connection, program, transaction);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -105,4 +105,28 @@ export class SystemProgram {
|
|||
userdata,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Spawn a new program from an account
|
||||
*/
|
||||
static spawn(programId: PublicKey): Transaction {
|
||||
const userdataLayout = BufferLayout.struct([
|
||||
BufferLayout.u32('instruction'),
|
||||
]);
|
||||
|
||||
const userdata = Buffer.alloc(userdataLayout.span);
|
||||
userdataLayout.encode(
|
||||
{
|
||||
instruction: 3, // Spawn instruction
|
||||
},
|
||||
userdata,
|
||||
);
|
||||
|
||||
return new Transaction({
|
||||
fee: 0,
|
||||
keys: [programId],
|
||||
programId: SystemProgram.programId,
|
||||
userdata,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ import {mockRpcEnabled} from './__mocks__/node-fetch';
|
|||
import {url} from './url';
|
||||
import {newAccountWithTokens} from './new-account-with-tokens';
|
||||
|
||||
test('unstable - load', async () => {
|
||||
test('load noop program', async () => {
|
||||
if (mockRpcEnabled) {
|
||||
console.log('non-live test skipped');
|
||||
return;
|
||||
|
@ -25,6 +25,6 @@ test('unstable - load', async () => {
|
|||
programId: noopProgramId,
|
||||
});
|
||||
const signature = await connection.sendTransaction(from, noopTransaction);
|
||||
expect(connection.confirmTransaction(signature)).resolves.toBe(true);
|
||||
await expect(connection.confirmTransaction(signature)).resolves.toBe(true);
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue