fix: catchup to upstream loader changes

This commit is contained in:
Michael Vines
2018-10-18 14:29:57 -07:00
parent 00fd0fc435
commit 757cf3ec16
4 changed files with 32 additions and 4 deletions

View File

@ -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);
}
}

View File

@ -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,
});
}
}