diff --git a/lib/src/ckb_rpc/ckb_api_client.dart b/lib/src/ckb_rpc/ckb_api_client.dart index 69b0042..5fa5397 100644 --- a/lib/src/ckb_rpc/ckb_api_client.dart +++ b/lib/src/ckb_rpc/ckb_api_client.dart @@ -74,6 +74,16 @@ class CKBApiClient { return result == null ? null : CellbaseOutputCapacity.fromJson(result); } + Future
getHeader(String blockHash) async { + final result = await _request.requestRpc(ServiceUrl.getHeader, [blockHash]); + return result == null ? null : Header.fromJson(result); + } + + Future
getHeaderByNumber(String blockNumber) async { + final result = await _request.requestRpc(ServiceUrl.getHeaderByNumber, [blockNumber]); + return result == null ? null : Header.fromJson(result); + } + //==========================Experiment RPC Methods================================== Future computeTransactionHash(Transaction transaction) async { diff --git a/lib/src/ckb_rpc/service_url.dart b/lib/src/ckb_rpc/service_url.dart index da9cff1..55feed8 100644 --- a/lib/src/ckb_rpc/service_url.dart +++ b/lib/src/ckb_rpc/service_url.dart @@ -13,6 +13,8 @@ class ServiceUrl { static final tipHeader = "get_tip_header"; static final transaction = "get_transaction"; static final cellbaseOutputCapacity = "get_cellbase_output_capacity_details"; + static final getHeader = "get_header"; + static final getHeaderByNumber = "get_header_by_number"; //Experiment static final computeTransactionHash = '_compute_transaction_hash'; diff --git a/lib/src/ckb_types/header.dart b/lib/src/ckb_types/header.dart index bbe8d40..d6616f6 100644 --- a/lib/src/ckb_types/header.dart +++ b/lib/src/ckb_types/header.dart @@ -1,6 +1,7 @@ part of 'package:ckb_sdk/ckb_types.dart'; class Header { + String dao; String difficulty; String hash; String number; diff --git a/test/api/chain_rpc_test.dart b/test/api/chain_rpc_test.dart index 43e82bb..66657b0 100644 --- a/test/api/chain_rpc_test.dart +++ b/test/api/chain_rpc_test.dart @@ -152,6 +152,27 @@ main() { } }); + test("get header", () async { + try { + Header header = await apiClient + .getHeader("0xac1766e14aa988b41d6ac3fe8216a1ab83f10359ca34478a8c0902069cbb0296"); + expect(header != null, true); + } catch (error) { + print(error.toString()); + expect(true, true); + } + }); + + test("get header by blockNumber", () async { + try { + Header header = await apiClient.getHeaderByNumber("1"); + expect(header != null, true); + } catch (error) { + print(error.toString()); + expect(true, true); + } + }); + group("get transaction", () { test("with right params", () async { try {