diff --git a/src/eosjs2-api.test.ts b/src/eosjs2-api.test.ts index 758a77e..dd57730 100644 --- a/src/eosjs2-api.test.ts +++ b/src/eosjs2-api.test.ts @@ -130,7 +130,7 @@ describe("eosjs2-api", () => { const fetch = async (input: any, init: any): Promise => ({ ok: true, json: async () => { - if (input === "/v1/chain/get_raw_code_and_abi") { + if (input === "/v1/chain/get_raw_abi") { return { account_name: "testeostoken", abi: "DmVvc2lvOjphYmkvMS4wAQxhY2NvdW50X25hbWUEbmFtZQUIdHJhbnNmZXIABARmcm9tDGFjY291bnRfbmFtZQJ0bwxhY2NvdW50X25hbWUIcXVhbnRpdHkFYXNzZXQEbWVtbwZzdHJpbmcGY3JlYXRlAAIGaXNzdWVyDGFjY291bnRfbmFtZQ5tYXhpbXVtX3N1cHBseQVhc3NldAVpc3N1ZQADAnRvDGFjY291bnRfbmFtZQhxdWFudGl0eQVhc3NldARtZW1vBnN0cmluZwdhY2NvdW50AAEHYmFsYW5jZQVhc3NldA5jdXJyZW5jeV9zdGF0cwADBnN1cHBseQVhc3NldAptYXhfc3VwcGx5BWFzc2V0Bmlzc3VlcgxhY2NvdW50X25hbWUDAAAAVy08zc0IdHJhbnNmZXLnBSMjIFRyYW5zZmVyIFRlcm1zICYgQ29uZGl0aW9ucwoKSSwge3tmcm9tfX0sIGNlcnRpZnkgdGhlIGZvbGxvd2luZyB0byBiZSB0cnVlIHRvIHRoZSBiZXN0IG9mIG15IGtub3dsZWRnZToKCjEuIEkgY2VydGlmeSB0aGF0IHt7cXVhbnRpdHl9fSBpcyBub3QgdGhlIHByb2NlZWRzIG9mIGZyYXVkdWxlbnQgb3IgdmlvbGVudCBhY3Rpdml0aWVzLgoyLiBJIGNlcnRpZnkgdGhhdCwgdG8gdGhlIGJlc3Qgb2YgbXkga25vd2xlZGdlLCB7e3RvfX0gaXMgbm90IHN1cHBvcnRpbmcgaW5pdGlhdGlvbiBvZiB2aW9sZW5jZSBhZ2FpbnN0IG90aGVycy4KMy4gSSBoYXZlIGRpc2Nsb3NlZCBhbnkgY29udHJhY3R1YWwgdGVybXMgJiBjb25kaXRpb25zIHdpdGggcmVzcGVjdCB0byB7e3F1YW50aXR5fX0gdG8ge3t0b319LgoKSSB1bmRlcnN0YW5kIHRoYXQgZnVuZHMgdHJhbnNmZXJzIGFyZSBub3QgcmV2ZXJzaWJsZSBhZnRlciB0aGUge3t0cmFuc2FjdGlvbi5kZWxheX19IHNlY29uZHMgb3Igb3RoZXIgZGVsYXkgYXMgY29uZmlndXJlZCBieSB7e2Zyb219fSdzIHBlcm1pc3Npb25zLgoKSWYgdGhpcyBhY3Rpb24gZmFpbHMgdG8gYmUgaXJyZXZlcnNpYmx5IGNvbmZpcm1lZCBhZnRlciByZWNlaXZpbmcgZ29vZHMgb3Igc2VydmljZXMgZnJvbSAne3t0b319JywgSSBhZ3JlZSB0byBlaXRoZXIgcmV0dXJuIHRoZSBnb29kcyBvciBzZXJ2aWNlcyBvciByZXNlbmQge3txdWFudGl0eX19IGluIGEgdGltZWx5IG1hbm5lci4KAAAAAAClMXYFaXNzdWUAAAAAAKhs1EUGY3JlYXRlAAIAAAA4T00RMgNpNjQBCGN1cnJlbmN5AQZ1aW50NjQHYWNjb3VudAAAAAAAkE3GA2k2NAEIY3VycmVuY3kBBnVpbnQ2NA5jdXJyZW5jeV9zdGF0cwAAAA===", // tslint:disable-line diff --git a/src/eosjs2-api.ts b/src/eosjs2-api.ts index 037137f..87be837 100644 --- a/src/eosjs2-api.ts +++ b/src/eosjs2-api.ts @@ -65,6 +65,9 @@ export interface CachedAbi { /** abi in structured form */ abi: Abi; + + /** code hash */ + codeHash: string; } export class Api { @@ -131,14 +134,15 @@ export class Api { let cachedAbi: CachedAbi; try { // todo: use get_raw_abi when it becomes available - const rawAbi = base64ToBinary((await this.rpc.get_raw_code_and_abi(accountName)).abi); + const rawResult = await this.rpc.get_raw_abi(accountName); + const rawAbi = base64ToBinary(rawResult.abi); const buffer = new ser.SerialBuffer({ textEncoder: this.textEncoder, textDecoder: this.textDecoder, array: rawAbi, }); const abi = this.abiTypes.get("abi_def").deserialize(buffer); - cachedAbi = { rawAbi, abi }; + cachedAbi = { rawAbi, abi, codeHash: rawResult.code_hash }; } catch (e) { e.message = `fetching abi for ${accountName}: ${e.message}`; throw e; diff --git a/src/eosjs2-jsonrpc.ts b/src/eosjs2-jsonrpc.ts index 36a12b2..634bca6 100644 --- a/src/eosjs2-jsonrpc.ts +++ b/src/eosjs2-jsonrpc.ts @@ -73,6 +73,13 @@ export interface GetRawCodeAndAbiResult { abi: string; } +/** Return value of `/v1/chain/get_raw_abi` */ +export interface GetRawAbiResult { + account_name: string; + code_hash: string; + abi: string; +} + /** Arguments for `push_transaction` */ export interface PushTransactionArgs { signatures: string[]; @@ -195,6 +202,12 @@ export class JsonRpc implements AuthorityProvider { return await this.fetch("/v1/chain/get_raw_code_and_abi", { account_name }); } + /** Raw call to `/v1/chain/get_raw_abi` */ + // tslint:disable-next-line:variable-name + public async get_raw_abi(account_name: string, abi_hash?: string): Promise { + return await this.fetch("/v1/chain/get_raw_abi", { account_name, abi_hash }); + } + /** Raw call to `/v1/chain/get_table_rows` */ public async get_table_rows({ json = true,