diff --git a/web3.js/src/publickey.ts b/web3.js/src/publickey.ts index cc8b2f8ef..e8be3de80 100644 --- a/web3.js/src/publickey.ts +++ b/web3.js/src/publickey.ts @@ -143,10 +143,10 @@ export class PublicKey extends Struct { * Derive a program address from seeds and a program ID. */ /* eslint-disable require-await */ - static async createProgramAddress( + static createProgramAddressSync( seeds: Array, programId: PublicKey, - ): Promise { + ): PublicKey { let buffer = Buffer.alloc(0); seeds.forEach(function (seed) { if (seed.length > MAX_SEED_LENGTH) { @@ -167,6 +167,18 @@ export class PublicKey extends Struct { return new PublicKey(publicKeyBytes); } + /** + * Async version of createProgramAddressSync + * For backwards compatibility + */ + /* eslint-disable require-await */ + static async createProgramAddress( + seeds: Array, + programId: PublicKey, + ): Promise { + return this.createProgramAddressSync(seeds, programId); + } + /** * Find a valid program address * @@ -174,16 +186,16 @@ export class PublicKey extends Struct { * iterates a nonce until it finds one that when combined with the seeds * results in a valid program address. */ - static async findProgramAddress( + static findProgramAddressSync( seeds: Array, programId: PublicKey, - ): Promise<[PublicKey, number]> { + ): [PublicKey, number] { let nonce = 255; let address; while (nonce != 0) { try { const seedsWithNonce = seeds.concat(Buffer.from([nonce])); - address = await this.createProgramAddress(seedsWithNonce, programId); + address = this.createProgramAddressSync(seedsWithNonce, programId); } catch (err) { if (err instanceof TypeError) { throw err; @@ -196,6 +208,17 @@ export class PublicKey extends Struct { throw new Error(`Unable to find a viable program address nonce`); } + /** + * Async version of findProgramAddressSync + * For backwards compatibility + */ + static async findProgramAddress( + seeds: Array, + programId: PublicKey, + ): Promise<[PublicKey, number]> { + return this.findProgramAddressSync(seeds, programId); + } + /** * Check that a pubkey is on the ed25519 curve. */ diff --git a/web3.js/test/publickey.test.ts b/web3.js/test/publickey.test.ts index d6a725c4f..b6766b846 100644 --- a/web3.js/test/publickey.test.ts +++ b/web3.js/test/publickey.test.ts @@ -200,6 +200,12 @@ describe('PublicKey', function () { ), ).to.be.true; } + + // Should work in promise mode, for backwards compatibility + PublicKey.createProgramAddress( + [Buffer.from('', 'utf8'), Buffer.from([1])], + programId, + ).then(); }); it('findProgramAddress', async () => { @@ -218,6 +224,9 @@ describe('PublicKey', function () { ), ), ).to.be.true; + + // Should work in promise mode, for backwards compatibility + PublicKey.findProgramAddress([Buffer.from('', 'utf8')], programId).then(); }); it('isOnCurve', () => {