diff --git a/web3.js/module.flow.js b/web3.js/module.flow.js index bc705931cf..2bbe84dc67 100644 --- a/web3.js/module.flow.js +++ b/web3.js/module.flow.js @@ -247,10 +247,6 @@ declare module '@solana/web3.js' { newAuthorized: PublicKey, stakeAuthorizationType: StakeAuthorizationType, ): Transaction; - static redeemVoteCredits( - stakeAccount: PublicKey, - votePubkey: PublicKey, - ): Transaction; static split( stakeAccount: PublicKey, authorizedPubkey: PublicKey, diff --git a/web3.js/src/stake-program.js b/web3.js/src/stake-program.js index b22dd2725e..e4fc5ecfe7 100644 --- a/web3.js/src/stake-program.js +++ b/web3.js/src/stake-program.js @@ -123,26 +123,22 @@ export const StakeInstructionLayout = Object.freeze({ index: 2, layout: BufferLayout.struct([BufferLayout.u32('instruction')]), }, - RedeemVoteCredits: { - index: 3, - layout: BufferLayout.struct([BufferLayout.u32('instruction')]), - }, Split: { - index: 4, + index: 3, layout: BufferLayout.struct([ BufferLayout.u32('instruction'), BufferLayout.ns64('lamports'), ]), }, Withdraw: { - index: 5, + index: 4, layout: BufferLayout.struct([ BufferLayout.u32('instruction'), BufferLayout.ns64('lamports'), ]), }, Deactivate: { - index: 6, + index: 5, layout: BufferLayout.struct([BufferLayout.u32('instruction')]), }, }); @@ -202,7 +198,7 @@ export class StakeProgram { * Max space of a Stake account */ static get space(): number { - return 2008; + return 4008; } /** @@ -301,8 +297,9 @@ export class StakeProgram { {pubkey: stakeAccount, isSigner: false, isWritable: true}, {pubkey: votePubkey, isSigner: false, isWritable: false}, {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false}, + {pubkey: SYSVAR_STAKE_HISTORY_PUBKEY, isSigner: false, isWritable: false}, {pubkey: STAKE_CONFIG_ID, isSigner: false, isWritable: false}, - {pubkey: authorizedPubkey, isSigner: true, isWritable: false}, + {pubkey: authorizedPubkey, isSigner: true, isWritable: false} ], programId: this.programId, data, @@ -336,38 +333,6 @@ export class StakeProgram { }); } - /** - * Generate a Transaction that authorizes a new PublicKey as Staker - * or Withdrawer on the Stake account. - */ - static redeemVoteCredits( - stakeAccount: PublicKey, - votePubkey: PublicKey, - ): Transaction { - const type = StakeInstructionLayout.RedeemVoteCredits; - const data = encodeData(type); - - return new Transaction().add({ - keys: [ - {pubkey: stakeAccount, isSigner: false, isWritable: true}, - {pubkey: votePubkey, isSigner: false, isWritable: true}, - { - pubkey: RewardsPoolPublicKey.randomId(), - isSigner: false, - isWritable: true, - }, - {pubkey: SYSVAR_REWARDS_PUBKEY, isSigner: false, isWritable: false}, - { - pubkey: SYSVAR_STAKE_HISTORY_PUBKEY, - isSigner: false, - isWritable: false, - }, - ], - programId: this.programId, - data, - }); - } - /** * Generate a Transaction that splits Stake tokens into another stake account */ diff --git a/web3.js/test/stake-program.test.js b/web3.js/test/stake-program.test.js index 4cef5bebf5..39ce2e8978 100644 --- a/web3.js/test/stake-program.test.js +++ b/web3.js/test/stake-program.test.js @@ -87,7 +87,7 @@ test('delegate', () => { vote.publicKey, ); - expect(transaction.keys).toHaveLength(5); + expect(transaction.keys).toHaveLength(6); expect(transaction.programId).toEqual(StakeProgram.programId); // TODO: Validate transaction contents more }); @@ -111,18 +111,6 @@ test('authorize', () => { // TODO: Validate transaction contents more }); -test('redeemVoteCredits', () => { - const stake = new Account(); - const vote = new Account(); - let transaction; - - transaction = StakeProgram.redeemVoteCredits(stake.publicKey, vote.publicKey); - - expect(transaction.keys).toHaveLength(5); - expect(transaction.programId).toEqual(StakeProgram.programId); - // TODO: Validate transaction contents more -}); - test('split', () => { const stake = new Account(); const authorized = new Account();