From 0ddfab815bdb972489f7d525581a89e0115c789e Mon Sep 17 00:00:00 2001 From: Todd Fleming Date: Wed, 22 Aug 2018 11:00:08 -0400 Subject: [PATCH 1/3] Use get_raw_abi --- src/eosjs2-api.ts | 7 ++++--- src/eosjs2-jsonrpc.ts | 7 +++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/eosjs2-api.ts b/src/eosjs2-api.ts index e2820ab..4481281 100644 --- a/src/eosjs2-api.ts +++ b/src/eosjs2-api.ts @@ -34,6 +34,7 @@ export interface SignatureProvider { export interface CachedAbi { rawAbi: Uint8Array; abi: Abi; + codeHash: string; } export class Api { @@ -72,11 +73,11 @@ export class Api { return this.cachedAbis.get(accountName); let cachedAbi: CachedAbi; try { - // todo: use get_raw_abi when it becomes available - let rawAbi = base64ToBinary((await this.rpc.get_raw_code_and_abi(accountName)).abi); + let rawResult = await this.rpc.get_raw_abi(accountName); + let rawAbi = base64ToBinary(rawResult.abi); const buffer = new ser.SerialBuffer({ textEncoder: this.textEncoder, textDecoder: this.textDecoder, array: rawAbi }); let 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 0c8ceaf..107054c 100644 --- a/src/eosjs2-jsonrpc.ts +++ b/src/eosjs2-jsonrpc.ts @@ -76,6 +76,12 @@ export interface GetRawCodeAndAbiResult { abi: string; } +export interface GetRawAbiResult { + account_name: string; + code_hash: string; + abi: string; +} + export interface TransactionConfig { broadcast?: boolean; blocksBehind?: number; @@ -137,6 +143,7 @@ export class JsonRpc implements AuthorityProvider { async get_producer_schedule(): Promise { return await this.fetch('/v1/chain/get_producer_schedule', {}); } async get_producers(json = true, lower_bound = '', limit = 50): Promise { return await this.fetch('/v1/chain/get_producers', { json, lower_bound, limit }); } async get_raw_code_and_abi(account_name: string): Promise { return await this.fetch('/v1/chain/get_raw_code_and_abi', { account_name }); } + async get_raw_abi(account_name: string): Promise { return await this.fetch('/v1/chain/get_raw_abi', { account_name }); } async get_table_rows({ json = true, From 0a457d8f5c923be46828baef55a2270c4b195e88 Mon Sep 17 00:00:00 2001 From: Todd Fleming Date: Thu, 13 Sep 2018 17:32:48 -0400 Subject: [PATCH 2/3] Use get_raw_abi --- src/eosjs2-api.test.ts | 2 +- src/eosjs2-jsonrpc.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) 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-jsonrpc.ts b/src/eosjs2-jsonrpc.ts index c6ce03f..565d691 100644 --- a/src/eosjs2-jsonrpc.ts +++ b/src/eosjs2-jsonrpc.ts @@ -73,6 +73,7 @@ export interface GetRawCodeAndAbiResult { abi: string; } +/** Return value of `/v1/chain/get_raw_abi` */ export interface GetRawAbiResult { account_name: string; code_hash: string; @@ -209,8 +210,8 @@ export class JsonRpc implements AuthorityProvider { /** Raw call to `/v1/chain/get_raw_abi` */ // tslint:disable-next-line:variable-name - public async get_raw_abi(account_name: string): Promise { - return await this.fetch("/v1/chain/get_raw_abi", { account_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` */ From 7b107f705ae2c0a4f6bcc0bc23133a48b82be2c6 Mon Sep 17 00:00:00 2001 From: Todd Fleming Date: Thu, 13 Sep 2018 17:43:43 -0400 Subject: [PATCH 3/3] Use get_raw_abi --- src/eosjs2-api.ts | 2 ++ src/eosjs2-jsonrpc.ts | 6 ------ 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/eosjs2-api.ts b/src/eosjs2-api.ts index 0e89902..87be837 100644 --- a/src/eosjs2-api.ts +++ b/src/eosjs2-api.ts @@ -65,6 +65,8 @@ export interface CachedAbi { /** abi in structured form */ abi: Abi; + + /** code hash */ codeHash: string; } diff --git a/src/eosjs2-jsonrpc.ts b/src/eosjs2-jsonrpc.ts index 565d691..634bca6 100644 --- a/src/eosjs2-jsonrpc.ts +++ b/src/eosjs2-jsonrpc.ts @@ -80,12 +80,6 @@ export interface GetRawAbiResult { abi: string; } -export interface TransactionConfig { - broadcast?: boolean; - blocksBehind?: number; - expireSeconds?: number; -} - /** Arguments for `push_transaction` */ export interface PushTransactionArgs { signatures: string[];