Commit a76c14ca authored by tom goriunov's avatar tom goriunov Committed by GitHub

Migrate to the props with consistent full naming in the API for addre… (#2694)

* Migrate to the props with consistent full naming in the API for address hash entity and multiple props for L2-rollups

Fixes #2686

* fix test
parent bb0b5f12
......@@ -124,7 +124,7 @@ export const contract: Address = {
has_validated_blocks: false,
hash: hash,
implementations: [
{ address: '0x2F4F4A52295940C576417d29F22EEb92B440eC89', name: 'HomeBridge' },
{ address_hash: '0x2F4F4A52295940C576417d29F22EEb92B440eC89', name: 'HomeBridge' },
],
is_contract: true,
is_verified: true,
......
export const multiple = [
{ address: '0xA84d24bD8ACE4d349C5f8c5DeeDd8bc071Ce5e2b', name: null },
{ address: '0xc9e91eDeA9DC16604022e4E5b437Df9c64EdB05A', name: 'Diamond' },
{ address: '0x2041832c62C0F89426b48B5868146C0b1fcd23E7', name: null },
{ address: '0x5f7DC6ECcF05594429671F83cc0e42EE18bC0974', name: 'VariablePriceFacet' },
{ address: '0x7abC92E242e88e4B0d6c5Beb4Df80e94D2c8A78c', name: null },
{ address: '0x84178a0c58A860eCCFB7E3aeA64a09543062A356', name: 'MultiSaleFacet' },
{ address: '0x33aD95537e63e9f09d96dE201e10715Ed40D9400', name: 'SVGTemplatesFacet' },
{ address: '0xfd86Aa7f902185a8Df9859c25E4BF52D3DaDd9FA', name: 'ERC721AReceiverFacet' },
{ address: '0x6945a35df18e59Ce09fec4B6cD3C4F9cFE6369de', name: null },
{ address_hash: '0xA84d24bD8ACE4d349C5f8c5DeeDd8bc071Ce5e2b', name: null },
{ address_hash: '0xc9e91eDeA9DC16604022e4E5b437Df9c64EdB05A', name: 'Diamond' },
{ address_hash: '0x2041832c62C0F89426b48B5868146C0b1fcd23E7', name: null },
{ address_hash: '0x5f7DC6ECcF05594429671F83cc0e42EE18bC0974', name: 'VariablePriceFacet' },
{ address_hash: '0x7abC92E242e88e4B0d6c5Beb4Df80e94D2c8A78c', name: null },
{ address_hash: '0x84178a0c58A860eCCFB7E3aeA64a09543062A356', name: 'MultiSaleFacet' },
{ address_hash: '0x33aD95537e63e9f09d96dE201e10715Ed40D9400', name: 'SVGTemplatesFacet' },
{ address_hash: '0xfd86Aa7f902185a8Df9859c25E4BF52D3DaDd9FA', name: 'ERC721AReceiverFacet' },
{ address_hash: '0x6945a35df18e59Ce09fec4B6cD3C4F9cFE6369de', name: null },
];
......@@ -26,7 +26,7 @@ export const baseResponse: AdvancedFilterResponse = {
hash: '0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6',
implementations: [
{
address: '0x31DA64D19Cd31A19CD09F4070366Fe2144792cf7',
address_hash: '0x31DA64D19Cd31A19CD09F4070366Fe2144792cf7',
name: 'SequencerInbox',
},
],
......
......@@ -5,7 +5,7 @@ export const baseResponse: ArbitrumL2MessagesResponse = {
{
completion_transaction_hash: '0x0b7d58c0a6b4695ba28d99df928591fb931c812c0aab6d0093ff5040d2f9bc5e',
id: 181920,
origination_address: '0x2B51Ae4412F79c3c1cB12AA40Ea4ECEb4e80511a',
origination_address_hash: '0x2B51Ae4412F79c3c1cB12AA40Ea4ECEb4e80511a',
origination_transaction_block_number: 123456,
origination_transaction_hash: '0x210d9f70f411de1079e32a98473b04345a5ea6ff2340a8511ebc2df641274436',
origination_timestamp: '2023-06-01T14:46:48.000000Z',
......@@ -14,7 +14,7 @@ export const baseResponse: ArbitrumL2MessagesResponse = {
{
completion_transaction_hash: '0x0b7d58c0a6b4695ba28d99df928591fb931c812c0aab6d0093ff5040d2f9bc5e',
id: 181921,
origination_address: '0x2B51Ae4412F79c3c1cB12AA40Ea4ECEb4e80511a',
origination_address_hash: '0x2B51Ae4412F79c3c1cB12AA40Ea4ECEb4e80511a',
origination_transaction_block_number: 123400,
origination_transaction_hash: '0x210d9f70f411de1079e32a98473b04345a5ea6ff2340a8511ebc2df641274436',
origination_timestamp: '2023-06-01T14:46:48.000000Z',
......
......@@ -5,10 +5,10 @@ import { finalized } from './txnBatches';
export const batchData: ArbitrumL2TxnBatch = {
...finalized,
after_acc: '0xcd064f3409015e8e6407e492e5275a185e492c6b43ccf127f22092d8057a9ffb',
before_acc: '0x2ed7c4985eb778d76ec400a43805e7feecc8c2afcdb492dbe5caf227de6d37bc',
start_block: 1245209,
end_block: 1245490,
after_acc_hash: '0xcd064f3409015e8e6407e492e5275a185e492c6b43ccf127f22092d8057a9ffb',
before_acc_hash: '0x2ed7c4985eb778d76ec400a43805e7feecc8c2afcdb492dbe5caf227de6d37bc',
start_block_number: 1245209,
end_block_number: 1245490,
data_availability: {
batch_data_container: 'in_blob4844',
},
......@@ -16,10 +16,10 @@ export const batchData: ArbitrumL2TxnBatch = {
export const batchDataAnytrust: ArbitrumL2TxnBatch = {
...finalized,
after_acc: '0xcd064f3409015e8e6407e492e5275a185e492c6b43ccf127f22092d8057a9ffb',
before_acc: '0x2ed7c4985eb778d76ec400a43805e7feecc8c2afcdb492dbe5caf227de6d37bc',
start_block: 1245209,
end_block: 1245490,
after_acc_hash: '0xcd064f3409015e8e6407e492e5275a185e492c6b43ccf127f22092d8057a9ffb',
before_acc_hash: '0x2ed7c4985eb778d76ec400a43805e7feecc8c2afcdb492dbe5caf227de6d37bc',
start_block_number: 1245209,
end_block_number: 1245490,
data_availability: {
batch_data_container: 'in_anytrust',
bls_signature: '0x142577943e30b1ad1b4e40a1c08e00c24a68d6c366f953e361048b7127e327b5bdb8f168ba986beae40cfaf79ea2788004d750555684751e361d6f6445e5c521b45ac93a76da24add241a4a5410ca3a09fa82cf0aafd78801cbd0ad99d5be6b3',
......@@ -41,10 +41,10 @@ export const batchDataAnytrust: ArbitrumL2TxnBatch = {
export const batchDataCelestia: ArbitrumL2TxnBatch = {
...finalized,
after_acc: '0xcd064f3409015e8e6407e492e5275a185e492c6b43ccf127f22092d8057a9ffb',
before_acc: '0x2ed7c4985eb778d76ec400a43805e7feecc8c2afcdb492dbe5caf227de6d37bc',
start_block: 1245209,
end_block: 1245490,
after_acc_hash: '0xcd064f3409015e8e6407e492e5275a185e492c6b43ccf127f22092d8057a9ffb',
before_acc_hash: '0x2ed7c4985eb778d76ec400a43805e7feecc8c2afcdb492dbe5caf227de6d37bc',
start_block_number: 1245209,
end_block_number: 1245490,
data_availability: {
batch_data_container: 'in_celestia',
height: 4520041,
......
......@@ -2,11 +2,11 @@ import type { ArbitrumL2TxnWithdrawalsItem } from 'types/api/arbitrumL2';
export const unclaimed: ArbitrumL2TxnWithdrawalsItem = {
arb_block_number: 115114348,
caller: '0x07e1e36fe70cd58a05c00812d573dc39a127ee6d',
caller_address_hash: '0x07e1e36fe70cd58a05c00812d573dc39a127ee6d',
callvalue: '21000000000000000000',
completion_transaction_hash: null,
data: '0x',
destination: '0x07e1e36fe70cd58a05c00812d573dc39a127ee6d',
destination_address_hash: '0x07e1e36fe70cd58a05c00812d573dc39a127ee6d',
eth_block_number: 7503173,
id: 59874,
l2_timestamp: 1737020350,
......@@ -16,21 +16,21 @@ export const unclaimed: ArbitrumL2TxnWithdrawalsItem = {
export const claimed: ArbitrumL2TxnWithdrawalsItem = {
arb_block_number: 115114348,
caller: '0x07e1e36fe70cd58a05c00812d573dc39a127ee6d',
caller_address_hash: '0x07e1e36fe70cd58a05c00812d573dc39a127ee6d',
callvalue: '21000000000000000000',
completion_transaction_hash: '0x215382498438cb6532a5e5fb07d664bbf912187866591470d47c3cfbce2dc4a8',
data: '0x',
destination: '0x07e1e36fe70cd58a05c00812d573dc39a127ee6d',
destination_address_hash: '0x07e1e36fe70cd58a05c00812d573dc39a127ee6d',
eth_block_number: 7503173,
id: 59875,
l2_timestamp: 1737020350,
status: 'relayed',
token: {
address: '0x0000000000000000000000000000000000000000',
address_hash: '0x0000000000000000000000000000000000000000',
symbol: 'USDC',
name: 'USDC Token',
decimals: 6,
amount: '10000000000',
destination: '0x07e1e36fe70cd58a05c00812d573dc39a127ee6d',
destination_address_hash: '0x07e1e36fe70cd58a05c00812d573dc39a127ee6d',
},
};
......@@ -5,7 +5,7 @@ export const baseResponse: ArbitrumL2MessagesResponse = {
{
completion_transaction_hash: '0x0b7d58c0a6b4695ba28d99df928591fb931c812c0aab6d0093ff5040d2f9bc5e',
id: 181920,
origination_address: '0x2B51Ae4412F79c3c1cB12AA40Ea4ECEb4e80511a',
origination_address_hash: '0x2B51Ae4412F79c3c1cB12AA40Ea4ECEb4e80511a',
origination_transaction_block_number: 123456,
origination_transaction_hash: '0x210d9f70f411de1079e32a98473b04345a5ea6ff2340a8511ebc2df641274436',
origination_timestamp: '2023-06-01T14:46:48.000000Z',
......@@ -14,7 +14,7 @@ export const baseResponse: ArbitrumL2MessagesResponse = {
{
completion_transaction_hash: '0x0b7d58c0a6b4695ba28d99df928591fb931c812c0aab6d0093ff5040d2f9bc5e',
id: 181921,
origination_address: '0x2B51Ae4412F79c3c1cB12AA40Ea4ECEb4e80511a',
origination_address_hash: '0x2B51Ae4412F79c3c1cB12AA40Ea4ECEb4e80511a',
origination_transaction_block_number: 123400,
origination_transaction_hash: '0x210d9f70f411de1079e32a98473b04345a5ea6ff2340a8511ebc2df641274436',
origination_timestamp: '2023-06-01T14:46:48.000000Z',
......
......@@ -52,7 +52,7 @@ export const base: Block = {
state_root: 'TODO',
timestamp: '2022-11-11T11:59:35Z',
total_difficulty: '10258276095980170141167591583995189665817672619',
transaction_count: 5,
transactions_count: 5,
transaction_fees: '26853607500000000',
type: 'block',
uncles_hashes: [],
......@@ -89,7 +89,7 @@ export const genesis: Block = {
state_root: 'TODO',
timestamp: '2017-12-16T00:13:24.000000Z',
total_difficulty: '131072',
transaction_count: 0,
transactions_count: 0,
transaction_fees: '0',
type: 'block',
uncles_hashes: [],
......@@ -111,7 +111,7 @@ export const base2: Block = {
ens_domain_name: null,
},
timestamp: '2022-11-11T11:46:05Z',
transaction_count: 253,
transactions_count: 253,
gas_target_percentage: 23.6433,
gas_used: '6333342',
gas_used_percentage: 87.859504,
......
......@@ -18,7 +18,7 @@ export const contract1: VerifiedContract = {
language: 'solidity',
market_cap: null,
optimization_enabled: false,
transaction_count: 7334224,
transactions_count: 7334224,
verified_at: '2022-09-16T18:49:29.605179Z',
license_type: 'mit',
};
......@@ -42,7 +42,7 @@ export const contract2: VerifiedContract = {
language: 'vyper',
market_cap: null,
optimization_enabled: true,
transaction_count: 440,
transactions_count: 440,
verified_at: '2021-09-07T20:01:56.076979Z',
license_type: 'bsd_3_clause',
};
......@@ -68,7 +68,7 @@ export const contract3: VerifiedContract = {
license_type: 'none',
market_cap: null,
optimization_enabled: false,
transaction_count: 0,
transactions_count: 0,
verified_at: '2024-12-03T14:05:42.796224Z',
};
......
......@@ -7,17 +7,17 @@ export const mudWorlds: MudWorldsResponse = {
{
address: withName,
coin_balance: '300000000000000000',
transaction_count: 3938,
transactions_count: 3938,
},
{
address: withoutName,
coin_balance: '0',
transaction_count: 0,
transactions_count: 0,
},
{
address: withoutName,
coin_balance: '0',
transaction_count: 0,
transactions_count: 0,
},
],
next_page_params: {
......
export const data = {
items: [
{
contract_address: '0x5cbe1b88b6357e6a8f0821bea72cc0b88c231f1c',
contract_address_hash: '0x5cbe1b88b6357e6a8f0821bea72cc0b88c231f1c',
created_at: '2022-05-27T01:13:48.000000Z',
game_type: 0,
index: 6662,
......@@ -10,7 +10,7 @@ export const data = {
status: 'In progress',
},
{
contract_address: '0x5cbe1b88b6357e6a8f0821bea72cc0b88c231f1c',
contract_address_hash: '0x5cbe1b88b6357e6a8f0821bea72cc0b88c231f1c',
created_at: '2022-05-27T01:13:48.000000Z',
game_type: 0,
index: 6662,
......
......@@ -9,35 +9,35 @@ export const txnBatchesData: OptimisticL2TxnBatchesResponse = {
items: [
{
batch_data_container: 'in_blob4844',
internal_id: 260998,
number: 260998,
l1_timestamp: '2022-11-10T11:29:11.000000Z',
l1_transaction_hashes: [
'0x9553351f6bd1577f4e782738c087be08697fb11f3b91745138d71ba166d62c3b',
],
l2_block_end: 124882074,
l2_block_start: 124881833,
transaction_count: 4011,
l2_end_block_number: 124882074,
l2_start_block_number: 124881833,
transactions_count: 4011,
},
{
batch_data_container: 'in_calldata',
internal_id: 260997,
number: 260997,
l1_timestamp: '2022-11-03T11:20:59.000000Z',
l1_transaction_hashes: [
'0x80f5fba70d5685bc2b70df836942e892b24afa7bba289a2fac0ca8f4d554cc72',
],
l2_block_end: 124881832,
l2_block_start: 124881613,
transaction_count: 4206,
l2_end_block_number: 124881832,
l2_start_block_number: 124881613,
transactions_count: 4206,
},
{
internal_id: 260996,
number: 260996,
l1_timestamp: '2024-09-03T11:14:23.000000Z',
l1_transaction_hashes: [
'0x39f4c46cae57bae936acb9159e367794f41f021ed3788adb80ad93830edb5f22',
],
l2_block_end: 124881612,
l2_block_start: 124881380,
transaction_count: 4490,
l2_end_block_number: 124881612,
l2_start_block_number: 124881380,
transactions_count: 4490,
},
],
next_page_params: {
......@@ -48,14 +48,14 @@ export const txnBatchesData: OptimisticL2TxnBatchesResponse = {
export const txnBatchTypeCallData: OptimismL2TxnBatchTypeCallData = {
batch_data_container: 'in_calldata',
internal_id: 309123,
number: 309123,
l1_timestamp: '2022-08-10T10:30:24.000000Z',
l1_transaction_hashes: [
'0x478c45f182631ae6f7249d40f31fdac36f41d88caa2e373fba35340a7345ca67',
],
l2_block_end: 10146784,
l2_block_start: 10145379,
transaction_count: 1608,
l2_end_block_number: 10146784,
l2_start_block_number: 10145379,
transactions_count: 1608,
};
export const txnBatchTypeCelestia: OptimismL2TxnBatchTypeCelestia = {
......@@ -69,14 +69,14 @@ export const txnBatchTypeCelestia: OptimismL2TxnBatchTypeCelestia = {
namespace: '0x00000000000000000000000000000000000000000008e5f679bf7116cb',
},
],
internal_id: 309667,
number: 309667,
l1_timestamp: '2022-08-28T16:51:12.000000Z',
l1_transaction_hashes: [
'0x2bb0b96a8ba0f063a243ac3dee0b2f2d87edb2ba9ef44bfcbc8ed191af1c4c24',
],
l2_block_end: 10935879,
l2_block_start: 10934514,
transaction_count: 1574,
l2_end_block_number: 10935879,
l2_start_block_number: 10934514,
transactions_count: 1574,
};
export const txnBatchTypeEip4844: OptimismL2TxnBatchTypeEip4844 = {
......@@ -93,12 +93,12 @@ export const txnBatchTypeEip4844: OptimismL2TxnBatchTypeEip4844 = {
l1_transaction_hash: '0x3870f136497e5501dc20d0974daf379c8636c958794d59a9c90d4f8a9f0ed20a',
},
],
internal_id: 2538459,
number: 2538459,
l1_timestamp: '2022-08-23T03:59:12.000000Z',
l1_transaction_hashes: [
'0x3870f136497e5501dc20d0974daf379c8636c958794d59a9c90d4f8a9f0ed20a',
],
l2_block_end: 16291502,
l2_block_start: 16291373,
transaction_count: 704,
l2_end_block_number: 16291502,
l2_start_block_number: 16291373,
transactions_count: 704,
};
......@@ -15,9 +15,9 @@ export const batchData = {
data_availability: {
batch_data_container: 'in_blob4844' as const,
},
start_block: 456000,
end_block: 789000,
transaction_count: 654,
start_block_number: 456000,
end_block_number: 789000,
transactions_count: 654,
};
export const baseResponse: ScrollL2BatchesResponse = {
......@@ -38,9 +38,9 @@ export const baseResponse: ScrollL2BatchesResponse = {
data_availability: {
batch_data_container: 'in_calldata',
},
start_block: 456000,
end_block: 789000,
transaction_count: 962,
start_block_number: 456000,
end_block_number: 789000,
transactions_count: 962,
},
],
next_page_params: {
......
......@@ -12,7 +12,7 @@ import type {
} from 'types/api/search';
export const token1: SearchResultToken = {
address: '0x377c5F2B300B25a534d4639177873b7fEAA56d4B',
address_hash: '0x377c5F2B300B25a534d4639177873b7fEAA56d4B',
address_url: '/address/0x377c5F2B300B25a534d4639177873b7fEAA56d4B',
name: 'Toms NFT',
symbol: 'TNT',
......@@ -27,7 +27,7 @@ export const token1: SearchResultToken = {
};
export const token2: SearchResultToken = {
address: '0xC35Cc7223B0175245E9964f2E3119c261E8e21F9',
address_hash: '0xC35Cc7223B0175245E9964f2E3119c261E8e21F9',
address_url: '/address/0xC35Cc7223B0175245E9964f2E3119c261E8e21F9',
name: 'TomToken',
symbol: 'pdE1B',
......@@ -68,7 +68,7 @@ export const block3: SearchResultBlock = {
};
export const address1: SearchResultAddressOrContract = {
address: '0xb64a30399f7F6b0C154c2E7Af0a3ec7B0A5b131a',
address_hash: '0xb64a30399f7F6b0C154c2E7Af0a3ec7B0A5b131a',
name: null,
type: 'address' as const,
is_smart_contract_verified: false,
......@@ -76,7 +76,7 @@ export const address1: SearchResultAddressOrContract = {
};
export const address2: SearchResultAddressOrContract = {
address: '0xb64a30399f7F6b0C154c2E7Af0a3ec7B0A5b131b',
address_hash: '0xb64a30399f7F6b0C154c2E7Af0a3ec7B0A5b131b',
name: null,
type: 'address' as const,
is_smart_contract_verified: false,
......@@ -90,7 +90,7 @@ export const address2: SearchResultAddressOrContract = {
};
export const contract1: SearchResultAddressOrContract = {
address: '0xb64a30399f7F6b0C154c2E7Af0a3ec7B0A5b131a',
address_hash: '0xb64a30399f7F6b0C154c2E7Af0a3ec7B0A5b131a',
name: 'Unknown contract in this network',
type: 'contract' as const,
is_smart_contract_verified: true,
......@@ -98,7 +98,7 @@ export const contract1: SearchResultAddressOrContract = {
};
export const contract2: SearchResultAddressOrContract = {
address: '0xb64a30399f7F6b0C154c2E7Af0a3ec7B0A5b131a',
address_hash: '0xb64a30399f7F6b0C154c2E7Af0a3ec7B0A5b131a',
name: 'Super utko',
type: 'contract' as const,
is_smart_contract_verified: true,
......@@ -107,7 +107,7 @@ export const contract2: SearchResultAddressOrContract = {
};
export const label1: SearchResultLabel = {
address: '0xb64a30399f7F6b0C154c2E7Af0a3ec7B0A5b131a',
address_hash: '0xb64a30399f7F6b0C154c2E7Af0a3ec7B0A5b131a',
name: 'utko',
type: 'label' as const,
is_smart_contract_verified: true,
......@@ -135,7 +135,7 @@ export const blob1: SearchResultBlob = {
};
export const domain1: SearchResultDomain = {
address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
address_hash: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
ens_info: {
address_hash: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
expiry_date: '2039-09-01T07:36:18.000Z',
......
......@@ -2,148 +2,148 @@ export const base = {
chart_data: [
{
date: '2022-11-28',
transaction_count: 26815,
transactions_count: 26815,
},
{
date: '2022-11-27',
transaction_count: 34784,
transactions_count: 34784,
},
{
date: '2022-11-26',
transaction_count: 77527,
transactions_count: 77527,
},
{
date: '2022-11-25',
transaction_count: 39687,
transactions_count: 39687,
},
{
date: '2022-11-24',
transaction_count: 40752,
transactions_count: 40752,
},
{
date: '2022-11-23',
transaction_count: 32569,
transactions_count: 32569,
},
{
date: '2022-11-22',
transaction_count: 34449,
transactions_count: 34449,
},
{
date: '2022-11-21',
transaction_count: 106047,
transactions_count: 106047,
},
{
date: '2022-11-20',
transaction_count: 107713,
transactions_count: 107713,
},
{
date: '2022-11-19',
transaction_count: 96311,
transactions_count: 96311,
},
{
date: '2022-11-18',
transaction_count: 30828,
transactions_count: 30828,
},
{
date: '2022-11-17',
transaction_count: 27422,
transactions_count: 27422,
},
{
date: '2022-11-16',
transaction_count: 75898,
transactions_count: 75898,
},
{
date: '2022-11-15',
transaction_count: 84084,
transactions_count: 84084,
},
{
date: '2022-11-14',
transaction_count: 62266,
transactions_count: 62266,
},
{
date: '2022-11-13',
transaction_count: 22338,
transactions_count: 22338,
},
{
date: '2022-11-12',
transaction_count: 86764,
transactions_count: 86764,
},
{
date: '2022-11-11',
transaction_count: 79493,
transactions_count: 79493,
},
{
date: '2022-11-10',
transaction_count: 92887,
transactions_count: 92887,
},
{
date: '2022-11-09',
transaction_count: 43691,
transactions_count: 43691,
},
{
date: '2022-11-08',
transaction_count: 74197,
transactions_count: 74197,
},
{
date: '2022-11-07',
transaction_count: 58131,
transactions_count: 58131,
},
{
date: '2022-11-06',
transaction_count: 62477,
transactions_count: 62477,
},
{
date: '2022-11-05',
transaction_count: 82897,
transactions_count: 82897,
},
{
date: '2022-11-04',
transaction_count: 91725,
transactions_count: 91725,
},
{
date: '2022-11-03',
transaction_count: 83667,
transactions_count: 83667,
},
{
date: '2022-11-02',
transaction_count: 63743,
transactions_count: 63743,
},
{
date: '2022-11-01',
transaction_count: 152059,
transactions_count: 152059,
},
{
date: '2022-10-31',
transaction_count: 62519,
transactions_count: 62519,
},
{
date: '2022-10-30',
transaction_count: 48569,
transactions_count: 48569,
},
{
date: '2022-10-29',
transaction_count: 36789,
transactions_count: 36789,
},
],
};
export const partialData = {
chart_data: [
{ date: '2022-11-28', transaction_count: 26815 },
{ date: '2022-11-27', transaction_count: 34784 },
{ date: '2022-11-26', transaction_count: 77527 },
{ date: '2022-11-25', transaction_count: null },
{ date: '2022-11-24', transaction_count: null },
{ date: '2022-11-23', transaction_count: null },
{ date: '2022-11-22', transaction_count: 63433 },
{ date: '2022-11-21', transaction_count: null },
{ date: '2022-11-28', transactions_count: 26815 },
{ date: '2022-11-27', transactions_count: 34784 },
{ date: '2022-11-26', transactions_count: 77527 },
{ date: '2022-11-25', transactions_count: null },
{ date: '2022-11-24', transactions_count: null },
{ date: '2022-11-23', transactions_count: null },
{ date: '2022-11-22', transactions_count: 63433 },
{ date: '2022-11-21', transactions_count: null },
],
};
export const noData = {
chart_data: [
{ date: '2022-11-25', transaction_count: null },
{ date: '2022-11-24', transaction_count: null },
{ date: '2022-11-23', transaction_count: null },
{ date: '2022-11-25', transactions_count: null },
{ date: '2022-11-24', transactions_count: null },
{ date: '2022-11-23', transactions_count: null },
],
};
import type { TokenCounters, TokenInfo } from 'types/api/token';
export const tokenInfo: TokenInfo = {
address: '0x55d536e4d6c1993d8ef2e2a4ef77f02088419420',
address_hash: '0x55d536e4d6c1993d8ef2e2a4ef77f02088419420',
circulating_market_cap: '117629601.61913824',
decimals: '18',
exchange_rate: '2.0101',
holders: '46554',
holders_count: '46554',
name: 'ARIANEE',
symbol: 'ARIA',
type: 'ERC-20' as const,
......@@ -19,11 +19,11 @@ export const tokenCounters: TokenCounters = {
};
export const tokenInfoERC20a: TokenInfo<'ERC-20'> = {
address: '0xb2a90505dc6680a7a695f7975d0d32EeF610f456',
address_hash: '0xb2a90505dc6680a7a695f7975d0d32EeF610f456',
circulating_market_cap: '117268489.23970924',
decimals: '18',
exchange_rate: null,
holders: '23',
holders_count: '23',
name: 'hyfi.token',
symbol: 'HyFi',
total_supply: '369000000000000000000000000',
......@@ -32,11 +32,11 @@ export const tokenInfoERC20a: TokenInfo<'ERC-20'> = {
};
export const tokenInfoERC20b: TokenInfo<'ERC-20'> = {
address: '0xc1116c98ba622a6218433fF90a2E40DEa482d7A7',
address_hash: '0xc1116c98ba622a6218433fF90a2E40DEa482d7A7',
circulating_market_cap: '115060192.36105014',
decimals: '6',
exchange_rate: '0.982',
holders: '17',
holders_count: '17',
name: 'USD Coin',
symbol: 'USDC',
total_supply: '900000000000000000000000000',
......@@ -45,11 +45,11 @@ export const tokenInfoERC20b: TokenInfo<'ERC-20'> = {
};
export const tokenInfoERC20c: TokenInfo<'ERC-20'> = {
address: '0xc1116c98ba622a6218433fF90a2E40DEa482d7A8',
address_hash: '0xc1116c98ba622a6218433fF90a2E40DEa482d7A8',
circulating_market_cap: null,
decimals: '18',
exchange_rate: '1328.89',
holders: '17',
holders_count: '17',
name: 'Ethereum',
symbol: 'ETH',
total_supply: '1000000000000000000000000',
......@@ -58,11 +58,11 @@ export const tokenInfoERC20c: TokenInfo<'ERC-20'> = {
};
export const tokenInfoERC20d: TokenInfo<'ERC-20'> = {
address: '0xCc7bb2D219A0FC08033E130629C2B854b7bA9196',
address_hash: '0xCc7bb2D219A0FC08033E130629C2B854b7bA9196',
circulating_market_cap: null,
decimals: '18',
exchange_rate: null,
holders: '102625',
holders_count: '102625',
name: 'Zeta',
symbol: 'ZETA',
total_supply: '2100000000000000000000000000',
......@@ -71,11 +71,11 @@ export const tokenInfoERC20d: TokenInfo<'ERC-20'> = {
};
export const tokenInfoERC20LongSymbol: TokenInfo<'ERC-20'> = {
address: '0xCc7bb2D219A0FC08033E130629C2B854b7bA9197',
address_hash: '0xCc7bb2D219A0FC08033E130629C2B854b7bA9197',
circulating_market_cap: '112855875.75888918',
decimals: '18',
exchange_rate: '1328.89',
holders: '102625',
holders_count: '102625',
name: 'Zeta',
symbol: 'ipfs://QmUpFUfVKDCWeZQk5pvDFUxnpQP9N6eLSHhNUy49T1JVtY',
total_supply: '2100000000000000000000000000',
......@@ -84,11 +84,11 @@ export const tokenInfoERC20LongSymbol: TokenInfo<'ERC-20'> = {
};
export const tokenInfoERC721a: TokenInfo<'ERC-721'> = {
address: '0xDe7cAc71E072FCBd4453E5FB3558C2684d1F88A0',
address_hash: '0xDe7cAc71E072FCBd4453E5FB3558C2684d1F88A0',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '7',
holders_count: '7',
name: 'HyFi Athena',
symbol: 'HYFI_ATHENA',
total_supply: '105',
......@@ -97,11 +97,11 @@ export const tokenInfoERC721a: TokenInfo<'ERC-721'> = {
};
export const tokenInfoERC721b: TokenInfo<'ERC-721'> = {
address: '0xA8d5C7beEA8C9bB57f5fBa35fB638BF45550b11F',
address_hash: '0xA8d5C7beEA8C9bB57f5fBa35fB638BF45550b11F',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '2',
holders_count: '2',
name: 'World Of Women Galaxy',
symbol: 'WOWG',
total_supply: null,
......@@ -110,11 +110,11 @@ export const tokenInfoERC721b: TokenInfo<'ERC-721'> = {
};
export const tokenInfoERC721c: TokenInfo<'ERC-721'> = {
address: '0x47646F1d7dc4Dd2Db5a41D092e2Cf966e27A4992',
address_hash: '0x47646F1d7dc4Dd2Db5a41D092e2Cf966e27A4992',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '12',
holders_count: '12',
name: 'Puma',
symbol: 'PUMA',
total_supply: null,
......@@ -123,11 +123,11 @@ export const tokenInfoERC721c: TokenInfo<'ERC-721'> = {
};
export const tokenInfoERC721LongSymbol: TokenInfo<'ERC-721'> = {
address: '0x47646F1d7dc4Dd2Db5a41D092e2Cf966e27A4993',
address_hash: '0x47646F1d7dc4Dd2Db5a41D092e2Cf966e27A4993',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '12',
holders_count: '12',
name: 'Puma',
symbol: 'ipfs://QmUpFUfVKDCWeZQk5pvDFUxnpQP9N6eLSHhNUy49T1JVtY',
total_supply: null,
......@@ -136,11 +136,11 @@ export const tokenInfoERC721LongSymbol: TokenInfo<'ERC-721'> = {
};
export const tokenInfoERC1155a: TokenInfo<'ERC-1155'> = {
address: '0x4b333DEd10c7ca855EA2C8D4D90A0a8b73788c8e',
address_hash: '0x4b333DEd10c7ca855EA2C8D4D90A0a8b73788c8e',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '22',
holders_count: '22',
name: 'HyFi Membership',
symbol: 'HYFI_MEMBERSHIP',
total_supply: '482',
......@@ -149,11 +149,11 @@ export const tokenInfoERC1155a: TokenInfo<'ERC-1155'> = {
};
export const tokenInfoERC1155b: TokenInfo<'ERC-1155'> = {
address: '0xf4b71b179132ad457f6bcae2a55efa9e4b26eefc',
address_hash: '0xf4b71b179132ad457f6bcae2a55efa9e4b26eefc',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '100',
holders_count: '100',
name: 'WinkyVerse Collections',
symbol: 'WVC',
total_supply: '4943',
......@@ -162,11 +162,11 @@ export const tokenInfoERC1155b: TokenInfo<'ERC-1155'> = {
};
export const tokenInfoERC1155WithoutName: TokenInfo<'ERC-1155'> = {
address: '0x4b333DEd10c7ca855EA2C8D4D90A0a8b73788c8a',
address_hash: '0x4b333DEd10c7ca855EA2C8D4D90A0a8b73788c8a',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '22',
holders_count: '22',
name: null,
symbol: null,
total_supply: '482',
......@@ -175,11 +175,11 @@ export const tokenInfoERC1155WithoutName: TokenInfo<'ERC-1155'> = {
};
export const tokenInfoERC404: TokenInfo<'ERC-404'> = {
address: '0xB5C457dDB4cE3312a6C5a2b056a1652bd542a208',
address_hash: '0xB5C457dDB4cE3312a6C5a2b056a1652bd542a208',
circulating_market_cap: '0.0',
decimals: '18',
exchange_rate: '1484.13',
holders: '81',
holders_count: '81',
icon_url: null,
name: 'OMNI404',
symbol: 'O404',
......
......@@ -27,11 +27,11 @@ export const erc20: TokenTransfer = {
ens_domain_name: 'kitty.kitty.cat.eth',
},
token: {
address: '0x55d536e4d6c1993d8ef2e2a4ef77f02088419420',
address_hash: '0x55d536e4d6c1993d8ef2e2a4ef77f02088419420',
circulating_market_cap: '117629601.61913824',
decimals: '18',
exchange_rate: '42',
holders: '46554',
holders_count: '46554',
name: 'ARIANEE',
symbol: 'ARIA',
type: 'ERC-20',
......@@ -75,11 +75,11 @@ export const erc721: TokenTransfer = {
ens_domain_name: null,
},
token: {
address: '0x363574E6C5C71c343d7348093D84320c76d5Dd29',
address_hash: '0x363574E6C5C71c343d7348093D84320c76d5Dd29',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '63090',
holders_count: '63090',
name: 'Arianee Smart-Asset',
symbol: 'AriaSA',
type: 'ERC-721',
......@@ -123,11 +123,11 @@ export const erc1155A: TokenTransfer = {
ens_domain_name: 'kitty.kitty.cat.eth',
},
token: {
address: '0xF56b7693E4212C584de4a83117f805B8E89224CB',
address_hash: '0xF56b7693E4212C584de4a83117f805B8E89224CB',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '1',
holders_count: '1',
name: null,
symbol: 'MY_SYMBOL_IS_VERY_LONG',
type: 'ERC-1155',
......@@ -202,11 +202,11 @@ export const erc404A: TokenTransfer = {
ens_domain_name: 'kitty.kitty.cat.eth',
},
token: {
address: '0xF56b7693E4212C584de4a83117f805B8E89224CB',
address_hash: '0xF56b7693E4212C584de4a83117f805B8E89224CB',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '1',
holders_count: '1',
name: null,
symbol: 'MY_SYMBOL_IS_VERY_LONG',
type: 'ERC-404',
......
......@@ -25,11 +25,11 @@ export const mintToken: TxStateChange = {
],
is_miner: false,
token: {
address: '0x8977EA6C55e878125d1bF3433EBf72138B7a4543',
address_hash: '0x8977EA6C55e878125d1bF3433EBf72138B7a4543',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '9191',
holders_count: '9191',
name: 'ParaSpace Derivative Token MOONBIRD',
symbol: 'nMOONBIRD',
total_supply: '10645',
......@@ -64,11 +64,11 @@ export const receiveMintedToken: TxStateChange = {
],
is_miner: false,
token: {
address: '0x8977EA6C55e878125d1bF3433EBf72138B7a4543',
address_hash: '0x8977EA6C55e878125d1bF3433EBf72138B7a4543',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '9191',
holders_count: '9191',
name: 'ParaSpace Derivative Token MOONBIRD',
symbol: 'nMOONBIRD',
total_supply: '10645',
......@@ -95,11 +95,11 @@ export const transfer1155Token: TxStateChange = {
change: '1',
is_miner: false,
token: {
address: '0x56Cc277717106E528A9FcC2CD342Ff98db758041',
address_hash: '0x56Cc277717106E528A9FcC2CD342Ff98db758041',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '50413',
holders_count: '50413',
icon_url: null,
name: null,
symbol: null,
......@@ -167,11 +167,11 @@ export const sendERC20Token: TxStateChange = {
change: '-3000000000',
is_miner: false,
token: {
address: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
address_hash: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
circulating_market_cap: '82978861367.28714',
decimals: '6',
exchange_rate: '0.992839',
holders: null,
holders_count: null,
icon_url: 'https://gateway.tkn.xyz/ipfs/bafybeihrrubjya5nnwgqdm6mfqisxfnv76tl3yd452lkmgomn5n64gzbxu/',
name: 'Tether USD',
symbol: 'USDT',
......
......@@ -296,11 +296,11 @@ export const stabilityTx: Transaction = {
},
dapp_fee: '34381250000000',
token: {
address: '0xDc2B93f3291030F3F7a6D9363ac37757f7AD5C43',
address_hash: '0xDc2B93f3291030F3F7a6D9363ac37757f7AD5C43',
circulating_market_cap: null,
decimals: '18',
exchange_rate: '123.567',
holders: '92',
holders_count: '92',
icon_url: 'https://example.com/icon.png',
name: 'Stability Gas',
symbol: 'GAS',
......@@ -327,11 +327,11 @@ export const celoTxn: Transaction = {
...base,
celo: {
gas_token: {
address: '0x874069Fa1Eb16D44d622F2e0Ca25eeA172369bC1',
address_hash: '0x874069Fa1Eb16D44d622F2e0Ca25eeA172369bC1',
circulating_market_cap: null,
decimals: '18',
exchange_rate: '0.42',
holders: '205738',
holders_count: '205738',
icon_url: 'https://example.com/icon.png',
name: 'Celo Dollar',
symbol: 'cUSD',
......@@ -359,7 +359,7 @@ export const arbitrumTxn: Transaction = {
gas_used_for_l1: '129773',
gas_used_for_l2: '128313',
message_related_info: {
associated_l1_transaction: null,
associated_l1_transaction_hash: null,
message_status: 'Relayed',
},
network_fee: '1283130000000',
......
......@@ -15,8 +15,8 @@ export const txInterpretation: TxInterpretationResponse = {
name: 'Duck',
type: 'ERC-20',
symbol: 'DUCK',
address: '0x486a3c5f34cDc4EF133f248f1C81168D78da52e8',
holders: '1152',
address_hash: '0x486a3c5f34cDc4EF133f248f1C81168D78da52e8',
holders_count: '1152',
decimals: '18',
icon_url: null,
total_supply: '210000000000000000000000000',
......
......@@ -36,6 +36,6 @@ export const validatorsResponse: ValidatorsBlackfortResponse = {
};
export const validatorsCountersResponse: ValidatorsBlackfortCountersResponse = {
new_validators_counter_24h: '11',
validators_counter: '140',
new_validators_count_24h: '11',
validators_count: '140',
};
......@@ -30,8 +30,8 @@ export const validatorsResponse: ValidatorsStabilityResponse = {
};
export const validatorsCountersResponse: ValidatorsStabilityCountersResponse = {
active_validators_counter: '42',
active_validators_count: '42',
active_validators_percentage: 7.14,
new_validators_counter_24h: '11',
validators_counter: '140',
new_validators_count_24h: '11',
validators_count: '140',
};
......@@ -22,7 +22,7 @@ export const txnBatchesData: ZkEvmL2TxnBatchesResponse = {
verify_transaction_hash: '0x48139721f792d3a68c3781b4cf50e66e8fc7dbb38adff778e09066ea5be9adb8',
sequence_transaction_hash: '0x6aa081e8e33a085e4ec7124fcd8a5f7d36aac0828f176e80d4b70e313a11695b',
number: 5218590,
transaction_count: 9,
transactions_count: 9,
},
{
timestamp: '2023-06-01T14:46:48.000000Z',
......@@ -30,7 +30,7 @@ export const txnBatchesData: ZkEvmL2TxnBatchesResponse = {
verify_transaction_hash: null,
sequence_transaction_hash: null,
number: 5218591,
transaction_count: 9,
transactions_count: 9,
},
],
next_page_params: {
......
......@@ -3,18 +3,18 @@ import type { ZkSyncBatch } from 'types/api/zkSyncL2';
export const base: ZkSyncBatch = {
commit_transaction_hash: '0x7cd80c88977c2b310f79196b0b2136da18012be015ce80d0d9e9fe6cfad52b16',
commit_transaction_timestamp: '2022-03-19T09:37:38.726996Z',
end_block: 1245490,
end_block_number: 1245490,
execute_transaction_hash: '0x110b9a19afbabd5818a996ab2b493a9b23c888d73d95f1ab5272dbae503e103a',
execute_transaction_timestamp: '2022-03-19T10:29:05.358066Z',
l1_gas_price: '4173068062',
l1_transaction_count: 0,
l1_transactions_count: 0,
l2_fair_gas_price: '100000000',
l2_transaction_count: 287,
l2_transactions_count: 287,
number: 8051,
prove_transaction_hash: '0xb424162ba5afe17c710dceb5fc8d15d7d46a66223454dae8c74aa39f6802625b',
prove_transaction_timestamp: '2022-03-19T10:29:05.279179Z',
root_hash: '0x108c635b94f941fcabcb85500daec2f6be4f0747dff649b1cdd9dd7a7a264792',
start_block: 1245209,
start_block_number: 1245209,
status: 'Executed on L1',
timestamp: '2022-03-19T09:05:49.000000Z',
};
......@@ -10,7 +10,7 @@ export const sealed: ZkSyncBatchesItem = {
prove_transaction_timestamp: null,
status: 'Sealed on L2',
timestamp: '2022-03-19T12:53:36.000000Z',
transaction_count: 738,
transactions_count: 738,
};
export const sent: ZkSyncBatchesItem = {
......@@ -23,7 +23,7 @@ export const sent: ZkSyncBatchesItem = {
prove_transaction_timestamp: null,
status: 'Sent to L1',
timestamp: '2022-03-19T11:36:45.000000Z',
transaction_count: 766,
transactions_count: 766,
};
export const executed: ZkSyncBatchesItem = {
......@@ -36,7 +36,7 @@ export const executed: ZkSyncBatchesItem = {
prove_transaction_timestamp: '2022-03-19T13:28:16.603104Z',
status: 'Executed on L1',
timestamp: '2022-03-19T10:01:52.000000Z',
transaction_count: 1071,
transactions_count: 1071,
};
export const baseResponse: ZkSyncBatchesResponse = {
......
......@@ -31,15 +31,15 @@ export const L2_WITHDRAWAL_ITEM: OptimisticL2WithdrawalsItem = {
};
export const L2_TXN_BATCHES_ITEM: OptimisticL2TxnBatchesItem = {
internal_id: 260991,
number: 260991,
batch_data_container: 'in_blob4844',
l1_timestamp: '2023-06-01T14:46:48.000000Z',
l1_transaction_hashes: [
TX_HASH,
],
l2_block_start: 5218590,
l2_block_end: 5218777,
transaction_count: 9,
l2_start_block_number: 5218590,
l2_end_block_number: 5218777,
transactions_count: 9,
};
export const L2_TXN_BATCH: OptimismL2TxnBatch = {
......@@ -64,7 +64,7 @@ export const L2_OUTPUT_ROOTS_ITEM: OptimisticL2OutputRootsItem = {
};
export const L2_DISPUTE_GAMES_ITEM: OptimisticL2DisputeGamesItem = {
contract_address: ADDRESS_HASH,
contract_address_hash: ADDRESS_HASH,
created_at: '2023-06-01T15:26:12.000000Z',
game_type: 0,
index: 6594,
......
......@@ -27,7 +27,7 @@ export const ADDRESS_INFO: Address = {
has_tokens: false,
has_validated_blocks: false,
hash: ADDRESS_HASH,
implementations: [ { address: ADDRESS_HASH, name: 'Transparent Upgradable Proxy' } ],
implementations: [ { address_hash: ADDRESS_HASH, name: 'Transparent Upgradable Proxy' } ],
is_contract: true,
is_verified: true,
name: 'ChainLink Token (goerli)',
......@@ -58,7 +58,7 @@ export const ADDRESS_TABS_COUNTERS: AddressTabsCounters = {
export const TOP_ADDRESS: AddressesItem = {
coin_balance: '11886682377162664596540805',
transaction_count: '1835',
transactions_count: '1835',
hash: '0x4f7A67464B5976d7547c860109e4432d50AfB38e',
implementations: null,
is_contract: false,
......
......@@ -6,7 +6,7 @@ import { TX_HASH } from './tx';
export const ARBITRUM_MESSAGES_ITEM: ArbitrumL2MessagesItem = {
completion_transaction_hash: TX_HASH,
id: 181920,
origination_address: ADDRESS_HASH,
origination_address_hash: ADDRESS_HASH,
origination_transaction_block_number: 123456,
origination_transaction_hash: TX_HASH,
origination_timestamp: '2023-06-01T14:46:48.000000Z',
......@@ -28,10 +28,10 @@ export const ARBITRUM_L2_TXN_BATCHES_ITEM: ArbitrumL2TxnBatchesItem = {
export const ARBITRUM_L2_TXN_BATCH: ArbitrumL2TxnBatch = {
...ARBITRUM_L2_TXN_BATCHES_ITEM,
after_acc: '0xcd064f3409015e8e6407e492e5275a185e492c6b43ccf127f22092d8057a9ffb',
before_acc: '0x2ed7c4985eb778d76ec400a43805e7feecc8c2afcdb492dbe5caf227de6d37bc',
start_block: 1245209,
end_block: 1245490,
after_acc_hash: '0xcd064f3409015e8e6407e492e5275a185e492c6b43ccf127f22092d8057a9ffb',
before_acc_hash: '0x2ed7c4985eb778d76ec400a43805e7feecc8c2afcdb492dbe5caf227de6d37bc',
start_block_number: 1245209,
end_block_number: 1245490,
data_availability: {
batch_data_container: 'in_blob4844',
},
......@@ -39,11 +39,11 @@ export const ARBITRUM_L2_TXN_BATCH: ArbitrumL2TxnBatch = {
export const ARBITRUM_L2_TXN_WITHDRAWALS_ITEM: ArbitrumL2TxnWithdrawalsItem = {
arb_block_number: 70889261,
caller: '0x507f55d716340fc836ba52c1a8daebcfeedeef1a',
caller_address_hash: '0x507f55d716340fc836ba52c1a8daebcfeedeef1a',
completion_transaction_hash: null,
callvalue: '100000000000000',
data: '0x',
destination: '0x507f55d716340fc836ba52c1a8daebcfeedeef1a',
destination_address_hash: '0x507f55d716340fc836ba52c1a8daebcfeedeef1a',
eth_block_number: 6494128,
id: 43685,
l2_timestamp: 1723578569,
......
......@@ -31,7 +31,7 @@ export const BLOCK: Block = {
state_root: 'TODO',
timestamp: '2023-05-12T19:29:12.000000Z',
total_difficulty: '10837812015930321201107455268036056402048391639',
transaction_count: 142,
transactions_count: 142,
transaction_fees: '19241635547777613',
type: 'block',
uncles_hashes: [],
......
......@@ -71,7 +71,7 @@ export const VERIFIED_CONTRACT_INFO: VerifiedContract = {
language: 'solidity',
market_cap: null,
optimization_enabled: false,
transaction_count: 565058,
transactions_count: 565058,
verified_at: '2023-04-10T13:16:33.884921Z',
license_type: 'mit',
};
......@@ -113,7 +113,7 @@ export const MUD_SYSTEMS: SmartContractMudSystemsResponse = {
items: [
{
name: 'sy.AccessManagement',
address: ADDRESS_HASH,
address_hash: ADDRESS_HASH,
},
],
};
......@@ -20,5 +20,5 @@ export const MUD_SCHEMA: MudWorldSchema = {
export const MUD_WORLD: MudWorldItem = {
address: ADDRESS_PARAMS,
coin_balance: '7072643779453701031672',
transaction_count: 442,
transactions_count: 442,
};
......@@ -13,10 +13,10 @@ export const SCROLL_L2_TXN_BATCH: ScrollL2TxnBatch = {
hash: null,
timestamp: null,
},
end_block: 1711,
end_block_number: 1711,
number: 273,
start_block: 1697,
transaction_count: 15,
start_block_number: 1697,
transactions_count: 15,
data_availability: {
batch_data_container: 'in_blob4844',
},
......
......@@ -3,7 +3,7 @@ import type { SearchResult, SearchResultItem } from 'types/api/search';
import { ADDRESS_HASH } from './addressParams';
export const SEARCH_RESULT_ITEM: SearchResultItem = {
address: ADDRESS_HASH,
address_hash: ADDRESS_HASH,
address_url: '/address/0x3714A8C7824B22271550894f7555f0a672f97809',
name: 'USDC',
symbol: 'USDC',
......@@ -20,7 +20,7 @@ export const SEARCH_RESULT_ITEM: SearchResultItem = {
export const SEARCH_RESULT_NEXT_PAGE_PARAMS: SearchResult['next_page_params'] = {
address_hash: ADDRESS_HASH,
block_hash: null,
holder_count: 11,
holders_count: 11,
inserted_at: '2023-05-19T17:21:19.203681Z',
item_type: 'token',
items_count: 50,
......
......@@ -17,11 +17,11 @@ import { generateListStub } from './utils';
export const BLOCK_HASH = '0x8fa7b9e5e5e79deeb62d608db22ba9a5cb45388c7ebb9223ae77331c6080dc70';
export const TOKEN_INFO_ERC_20: TokenInfo<'ERC-20'> = {
address: ADDRESS_HASH,
address_hash: ADDRESS_HASH,
circulating_market_cap: '117629601.61913824',
decimals: '18',
exchange_rate: '0.999997',
holders: '16026',
holders_count: '16026',
name: 'Stub Token (goerli)',
symbol: 'STUB',
total_supply: '60000000000000000000000',
......
......@@ -16,10 +16,10 @@ export const VALIDATOR_STABILITY: ValidatorStability = {
};
export const VALIDATORS_STABILITY_COUNTERS: ValidatorsStabilityCountersResponse = {
active_validators_counter: '42',
active_validators_count: '42',
active_validators_percentage: 7.14,
new_validators_counter_24h: '11',
validators_counter: '140',
new_validators_count_24h: '11',
validators_count: '140',
};
export const VALIDATOR_BLACKFORT: ValidatorBlackfort = {
......@@ -31,8 +31,8 @@ export const VALIDATOR_BLACKFORT: ValidatorBlackfort = {
};
export const VALIDATORS_BLACKFORT_COUNTERS: ValidatorsBlackfortCountersResponse = {
new_validators_counter_24h: '11',
validators_counter: '140',
new_validators_count_24h: '11',
validators_count: '140',
};
export const VALIDATORS_ZILLIQA_ITEM: ValidatorsZilliqaItem = {
......
......@@ -28,7 +28,7 @@ export const ZKEVM_L2_TXN_BATCHES_ITEM: ZkEvmL2TxnBatchesItem = {
verify_transaction_hash: TX_HASH,
sequence_transaction_hash: TX_HASH,
number: 5218590,
transaction_count: 9,
transactions_count: 9,
};
export const ZKEVM_L2_TXN_BATCH: ZkEvmL2TxnBatch = {
......
......@@ -12,16 +12,16 @@ export const ZKSYNC_L2_TXN_BATCHES_ITEM: ZkSyncBatchesItem = {
prove_transaction_timestamp: '2022-03-17T20:49:48.772442Z',
status: 'Executed on L1',
timestamp: '2022-03-17T17:00:11.000000Z',
transaction_count: 1215,
transactions_count: 1215,
};
export const ZKSYNC_L2_TXN_BATCH: ZkSyncBatch = {
...ZKSYNC_L2_TXN_BATCHES_ITEM,
start_block: 1245209,
end_block: 1245490,
start_block_number: 1245209,
end_block_number: 1245490,
l1_gas_price: '4173068062',
l1_transaction_count: 0,
l1_transactions_count: 0,
l2_fair_gas_price: '100000000',
l2_transaction_count: 287,
l2_transactions_count: 287,
root_hash: '0x108c635b94f941fcabcb85500daec2f6be4f0747dff649b1cdd9dd7a7a264792',
};
......@@ -2,7 +2,7 @@ import type { AddressMetadataTagApi } from './addressMetadata';
import type { SmartContractProxyType } from './contract';
export interface AddressImplementation {
address: string;
address_hash: string;
filecoin_robust_address?: string | null;
name?: string | null;
}
......
import type { AddressParam } from './addressParams';
export type AddressesItem = AddressParam & { transaction_count: string; coin_balance: string | null };
export type AddressesItem = AddressParam & { transactions_count: string; coin_balance: string | null };
export type AddressesResponse = {
items: Array<AddressesItem>;
......
......@@ -17,7 +17,7 @@ export type ArbitrumL2MessageStatus = 'initiated' | 'sent' | 'confirmed' | 'rela
export type ArbitrumL2MessagesItem = {
completion_transaction_hash: string | null;
id: number;
origination_address: string;
origination_address_hash: string;
origination_timestamp: string | null;
origination_transaction_block_number: number | null;
origination_transaction_hash: string;
......@@ -87,11 +87,11 @@ export type ArbitrumL2TxnBatchDataAvailability = ArbitrumL2TxnBatchDAAnytrust |
};
export type ArbitrumL2TxnBatch = {
after_acc: string;
before_acc: string;
after_acc_hash: string;
before_acc_hash: string;
commitment_transaction: ArbitrumL2BatchCommitmentTx;
end_block: number;
start_block: number;
end_block_number: number;
start_block_number: number;
number: number;
transactions_count: number;
data_availability: ArbitrumL2TxnBatchDataAvailability;
......@@ -118,19 +118,19 @@ export type ArbitrumL2BatchBlocks = {
export interface ArbitrumL2TxnWithdrawalsItem {
arb_block_number: number;
caller: string;
caller_address_hash: string;
callvalue: string;
completion_transaction_hash: string | null;
data: string;
destination: string;
destination_address_hash: string;
eth_block_number: number;
id: number;
l2_timestamp: number;
status: ArbitrumL2MessageStatus;
token: {
address: string;
address_hash: string;
amount: string | null;
destination: string | null;
destination_address_hash: string | null;
name: string | null;
symbol: string | null;
decimals: number | null;
......@@ -143,7 +143,7 @@ export interface ArbitrumL2TxnWithdrawalsResponse {
export interface ArbitrumL2MessageClaimResponse {
calldata: string;
outbox_address: string;
outbox_address_hash: string;
}
export const ARBITRUM_L2_TX_BATCH_STATUSES = [
......
......@@ -20,7 +20,7 @@ export interface BlockBaseFeeCelo {
export interface Block {
height: number;
timestamp: string;
transaction_count: number;
transactions_count: number;
miner: AddressParam;
size: number;
hash: string;
......@@ -56,7 +56,7 @@ export interface Block {
excess_blob_gas?: string;
blob_transaction_count?: number;
// ZKSYNC FIELDS
zksync?: Omit<ZkSyncBatchesItem, 'number' | 'transaction_count' | 'timestamp'> & {
zksync?: Omit<ZkSyncBatchesItem, 'number' | 'transactions_count' | 'timestamp'> & {
batch_number: number | null;
};
arbitrum?: ArbitrumBlockData;
......@@ -76,7 +76,7 @@ type ArbitrumBlockData = {
commitment_transaction: ArbitrumL2TxData;
confirmation_transaction: ArbitrumL2TxData;
delayed_messages: number;
l1_block_height: number;
l1_block_number: number;
send_count: number;
send_root: string;
status: ArbitrumBatchStatus;
......@@ -84,7 +84,7 @@ type ArbitrumBlockData = {
export interface OptimismBlockData {
batch_data_container: OptimisticL2BatchDataContainer;
internal_id: number;
number: number;
blobs: Array<OptimisticL2BlobTypeEip4844> | Array<OptimisticL2BlobTypeCelestia> | null;
l1_timestamp: string;
l1_transaction_hashes: Array<string>;
......
export interface ChartTransactionItem {
date: string;
transaction_count: number | null;
transactions_count: number | null;
}
export interface ChartMarketItem {
......
......@@ -159,7 +159,7 @@ export interface SmartContractMudSystemsResponse {
}
export interface SmartContractMudSystemItem {
address: string;
address_hash: string;
name: string;
}
......
......@@ -9,7 +9,7 @@ export interface VerifiedContract {
language: 'vyper' | 'yul' | 'solidity' | 'stylus_rust';
has_constructor_args: boolean;
optimization_enabled: boolean;
transaction_count: number | null;
transactions_count: number | null;
verified_at: string;
market_cap: string | null;
license_type: SmartContractLicenseType | null;
......
......@@ -11,7 +11,7 @@ export type MudWorldsResponse = {
export type MudWorldItem = {
address: AddressParam;
coin_balance: string;
transaction_count: number | null;
transactions_count: number | null;
};
export type MudWorldSchema = {
......
......@@ -40,13 +40,13 @@ export type OptimisticL2OutputRootsResponse = {
export type OptimisticL2BatchDataContainer = 'in_blob4844' | 'in_celestia' | 'in_calldata';
export type OptimisticL2TxnBatchesItem = {
internal_id: number;
number: number;
batch_data_container?: OptimisticL2BatchDataContainer;
l1_timestamp: string;
l1_transaction_hashes: Array<string>;
l2_block_start: number;
l2_block_end: number;
transaction_count: number;
l2_start_block_number: number;
l2_end_block_number: number;
transactions_count: number;
};
export type OptimisticL2TxnBatchesResponse = {
......@@ -72,12 +72,12 @@ export interface OptimisticL2BlobTypeCelestia {
}
interface OptimismL2TxnBatchBase {
internal_id: number;
number: number;
l1_timestamp: string;
l1_transaction_hashes: Array<string>;
l2_block_start: number;
l2_block_end: number;
transaction_count: number;
l2_start_block_number: number;
l2_end_block_number: number;
transactions_count: number;
}
export interface OptimismL2TxnBatchTypeCallData extends OptimismL2TxnBatchBase {
......@@ -151,7 +151,7 @@ export type OptimisticL2DisputeGamesResponse = {
};
export type OptimisticL2DisputeGamesItem = {
contract_address: string;
contract_address_hash: string;
created_at: string;
game_type: number;
index: number;
......
......@@ -25,9 +25,9 @@ export type ScrollL2TxnBatch = {
number: number;
commitment_transaction: ScrollL2TxnBatchCommitmentTransaction;
confirmation_transaction: ScrollL2TxnBatchConfirmationTransaction;
start_block: number;
end_block: number;
transaction_count: number;
start_block_number: number;
end_block_number: number;
transactions_count: number;
data_availability: {
batch_data_container: 'in_blob4844' | 'in_calldata';
};
......
......@@ -22,7 +22,7 @@ export interface SearchResultToken {
type: 'token';
name: string;
symbol: string;
address: string;
address_hash: string;
token_url: string;
address_url: string;
icon_url: string | null;
......@@ -44,7 +44,7 @@ type SearchResultEnsInfo = {
interface SearchResultAddressData {
name: string | null;
address: string;
address_hash: string;
is_smart_contract_verified: boolean;
certified?: true;
filecoin_robust_address?: string | null;
......@@ -75,7 +75,7 @@ export interface SearchResultDomain extends SearchResultAddressData {
export interface SearchResultLabel {
type: 'label';
address: string;
address_hash: string;
filecoin_robust_address?: string | null;
name: string;
is_smart_contract_verified: boolean;
......@@ -127,7 +127,7 @@ export interface SearchResult {
next_page_params: {
address_hash: string | null;
block_hash: string | null;
holder_count: number | null;
holders_count: number | null;
inserted_at: string | null;
item_type: SearchResultType;
items_count: number;
......
......@@ -5,12 +5,12 @@ export type NFTTokenType = 'ERC-721' | 'ERC-1155' | 'ERC-404';
export type TokenType = 'ERC-20' | NFTTokenType;
export interface TokenInfo<T extends TokenType = TokenType> {
address: string;
address_hash: string;
type: T;
symbol: string | null;
name: string | null;
decimals: string | null;
holders: string | null;
holders_count: string | null;
exchange_rate: string | null;
total_supply: string | null;
icon_url: string | null;
......
......@@ -4,7 +4,7 @@ import type { TokenTransfer } from './tokenTransfer';
export type TokensResponse = {
items: Array<TokenInfo>;
next_page_params: {
holder_count: number;
holders_count: number;
items_count: number;
name: string;
market_cap: string | null;
......@@ -28,7 +28,7 @@ export interface TokenInstanceTransferPagination {
}
export interface TokensSorting {
sort: 'fiat_value' | 'holder_count' | 'circulating_market_cap';
sort: 'fiat_value' | 'holders_count' | 'circulating_market_cap';
order: 'asc' | 'desc';
}
......
......@@ -89,7 +89,7 @@ export type Transaction = {
zkevm_status?: typeof ZKEVM_L2_TX_STATUSES[number];
zkevm_sequence_hash?: string;
// zkSync FIELDS
zksync?: Omit<ZkSyncBatchesItem, 'number' | 'transaction_count' | 'timestamp'> & {
zksync?: Omit<ZkSyncBatchesItem, 'number' | 'transactions_count' | 'timestamp'> & {
batch_number: number | null;
};
// Zilliqa fields
......@@ -123,7 +123,7 @@ type ArbitrumTransactionData = {
poster_fee: string;
status: ArbitrumBatchStatus;
message_related_info: {
associated_l1_transaction: string | null;
associated_l1_transaction_hash: string | null;
message_status: ArbitrumTransactionMessageStatus;
};
};
......@@ -213,7 +213,7 @@ export type ScrollTransactionData = {
};
export interface TxAuthorization {
address: string;
address_hash: string;
authority: string;
chain_id: number;
nonce: number;
......
......@@ -19,10 +19,10 @@ export interface ValidatorsStabilityResponse {
}
export interface ValidatorsStabilityCountersResponse {
active_validators_counter: string;
active_validators_count: string;
active_validators_percentage: number;
new_validators_counter_24h: string;
validators_counter: string;
new_validators_count_24h: string;
validators_count: string;
}
export interface ValidatorsStabilityFilters {
......@@ -57,8 +57,8 @@ export interface ValidatorsBlackfortResponse {
}
export interface ValidatorsBlackfortCountersResponse {
new_validators_counter_24h: string;
validators_counter: string;
new_validators_count_24h: string;
validators_count: string;
}
export interface ValidatorsBlackfortSorting {
......
......@@ -18,6 +18,6 @@ export type WithdrawalsItem = {
};
export type WithdrawalsCounters = {
withdrawal_count: string;
withdrawal_sum: string;
withdrawals_count: string;
withdrawals_sum: string;
};
......@@ -42,7 +42,7 @@ export type ZkEvmL2TxnBatchesItem = {
sequence_transaction_hash: string | null;
status: string;
timestamp: string | null;
transaction_count: number;
transactions_count: number;
};
export type ZkEvmL2TxnBatchesResponse = {
......
......@@ -20,7 +20,7 @@ export interface ZkSyncBatchesItem {
prove_transaction_timestamp: string | null;
status: ZkSyncBatchStatus;
timestamp: string;
transaction_count: number;
transactions_count: number;
}
export type ZkSyncBatchesResponse = {
......@@ -31,13 +31,13 @@ export type ZkSyncBatchesResponse = {
} | null;
};
export interface ZkSyncBatch extends Omit<ZkSyncBatchesItem, 'transaction_count'> {
start_block: number;
end_block: number;
export interface ZkSyncBatch extends Omit<ZkSyncBatchesItem, 'transactions_count'> {
start_block_number: number;
end_block_number: number;
l1_gas_price: string;
l1_transaction_count: number;
l1_transactions_count: number;
l2_fair_gas_price: string;
l2_transaction_count: number;
l2_transactions_count: number;
root_hash: string;
}
......
......@@ -235,7 +235,7 @@ test.describe('update balances via socket', () => {
value: '9852000000000000',
token: {
...tokensMock.erc20c.token,
address: '0xE2cf36D00C57e01371b94B4206ae2CF841931Adc',
address_hash: '0xE2cf36D00C57e01371b94B4206ae2CF841931Adc',
name: 'Tether USD',
symbol: 'USDT',
},
......
......@@ -41,7 +41,7 @@ const AddressBlocksValidatedListItem = (props: Props) => {
<Flex columnGap={ 2 } w="100%">
<Skeleton loading={ props.isLoading } fontWeight={ 500 } flexShrink={ 0 }>Txn</Skeleton>
<Skeleton loading={ props.isLoading } display="inline-block" color="Skeleton_secondary">
<span>{ props.transaction_count }</span>
<span>{ props.transactions_count }</span>
</Skeleton>
</Flex>
<Flex columnGap={ 2 } w="100%">
......
......@@ -42,7 +42,7 @@ const AddressBlocksValidatedTableItem = (props: Props) => {
</TableCell>
<TableCell>
<Skeleton loading={ props.isLoading } display="inline-block" fontWeight="500">
<span>{ props.transaction_count }</span>
<span>{ props.transactions_count }</span>
</Skeleton>
</TableCell>
<TableCell>
......
......@@ -30,7 +30,11 @@ test.beforeEach(async({ mockApiResponse, page }) => {
test.describe('full view', () => {
test.beforeEach(async({ mockApiResponse }) => {
await mockApiResponse('contract', contractMock.withChangedByteCode, { pathParams: { hash: addressMock.contract.hash } });
await mockApiResponse('contract', contractMock.withChangedByteCode, { pathParams: { hash: addressMock.contract.implementations?.[0].address as string } });
await mockApiResponse(
'contract',
contractMock.withChangedByteCode,
{ pathParams: { hash: addressMock.contract.implementations?.[0].address_hash as string } },
);
});
test('source code +@dark-mode', async({ render, createSocket }) => {
......@@ -87,7 +91,11 @@ test.describe('mobile view', () => {
test('source code', async({ render, createSocket, mockApiResponse }) => {
await mockApiResponse('contract', contractMock.withChangedByteCode, { pathParams: { hash: addressMock.contract.hash } });
await mockApiResponse('contract', contractMock.withChangedByteCode, { pathParams: { hash: addressMock.contract.implementations?.[0].address as string } });
await mockApiResponse(
'contract',
contractMock.withChangedByteCode,
{ pathParams: { hash: addressMock.contract.implementations?.[0].address_hash as string } },
);
const component = await render(<ContractDetails/>, { hooksConfig }, { withSocket: true });
const socket = await createSocket();
await socketServer.joinChannel(socket, `addresses:${ addressMock.contract.hash.toLowerCase() }`);
......
......@@ -40,30 +40,30 @@ const ContractDetails = ({ addressData, channel, mainContractQuery }: Props) =>
const sourceItems: Array<AddressImplementation> = React.useMemo(() => {
const currentAddressDefaultName = addressData?.proxy_type === 'eip7702' ? 'Current address' : 'Current contract';
const currentAddressItem = { address: addressData.hash, name: addressData?.name || currentAddressDefaultName };
const currentAddressItem = { address_hash: addressData.hash, name: addressData?.name || currentAddressDefaultName };
if (!addressData || !addressData.implementations || addressData.implementations.length === 0) {
return [ currentAddressItem ];
}
return [
currentAddressItem,
...(addressData?.implementations.filter((item) => item.address !== addressData.hash && item.name) || []),
...(addressData?.implementations.filter((item) => item.address_hash !== addressData.hash && item.name) || []),
];
}, [ addressData ]);
const [ selectedItem, setSelectedItem ] = React.useState(sourceItems.find((item) => item.address === sourceAddress) || sourceItems[0]);
const [ selectedItem, setSelectedItem ] = React.useState(sourceItems.find((item) => item.address_hash === sourceAddress) || sourceItems[0]);
const contractQuery = useApiQuery('contract', {
pathParams: { hash: selectedItem?.address },
pathParams: { hash: selectedItem?.address_hash },
queryOptions: {
enabled: Boolean(selectedItem?.address && !mainContractQuery.isPlaceholderData),
enabled: Boolean(selectedItem?.address_hash && !mainContractQuery.isPlaceholderData),
refetchOnMount: false,
placeholderData: addressData?.is_verified ? stubs.CONTRACT_CODE_VERIFIED : stubs.CONTRACT_CODE_UNVERIFIED,
},
});
const { data, isPlaceholderData, isError } = contractQuery;
const tabs = useContractDetailsTabs({ data, isLoading: isPlaceholderData, addressData, sourceAddress: selectedItem.address });
const tabs = useContractDetailsTabs({ data, isLoading: isPlaceholderData, addressData, sourceAddress: selectedItem.address_hash });
const handleContractWasVerifiedMessage: SocketMessage.SmartContractWasVerified['handler'] = React.useCallback(() => {
queryClient.refetchQueries({
......
......@@ -10,7 +10,7 @@ import AddressEntity from 'ui/shared/entities/address/AddressEntity';
import LinkNewTab from 'ui/shared/links/LinkNewTab';
export interface Item {
address: string;
address_hash: string;
name?: string | null | undefined;
}
......@@ -26,14 +26,14 @@ interface Props {
const ContractSourceAddressSelector = ({ className, selectedItem, onItemSelect, items, isLoading, label }: Props) => {
const handleItemSelect = React.useCallback(({ value }: { value: Array<string> }) => {
const nextOption = items.find(({ address }) => address === value[0]);
const nextOption = items.find(({ address_hash: addressHash }) => addressHash === value[0]);
if (nextOption) {
onItemSelect(nextOption);
}
}, [ items, onItemSelect ]);
const collection = React.useMemo(() => {
const options = items.map(({ address, name }) => ({ label: name || address, value: address }));
const options = items.map(({ address_hash: addressHash, name }) => ({ label: name || addressHash, value: addressHash }));
return createListCollection({ items: options });
}, [ items ]);
......@@ -50,7 +50,7 @@ const ContractSourceAddressSelector = ({ className, selectedItem, onItemSelect,
<Flex flexWrap="wrap" columnGap={ 3 } rowGap={ 2 } className={ className }>
<chakra.span fontWeight={ 500 } fontSize="sm">{ label }</chakra.span>
<AddressEntity
address={{ hash: items[0].address, is_contract: true, is_verified: true }}
address={{ hash: items[0].address_hash, is_contract: true, is_verified: true }}
/>
</Flex>
);
......@@ -62,17 +62,17 @@ const ContractSourceAddressSelector = ({ className, selectedItem, onItemSelect,
<Select
collection={ collection }
placeholder="Select contract"
defaultValue={ [ selectedItem.address ] }
defaultValue={ [ selectedItem.address_hash ] }
onValueChange={ handleItemSelect }
maxW={{ base: '180px', lg: '400px' }}
w="fit-content"
loading={ isLoading }
/>
<Flex alignItems="center">
<CopyToClipboard text={ selectedItem.address } ml={ 0 }/>
<CopyToClipboard text={ selectedItem.address_hash } ml={ 0 }/>
<LinkNewTab
label="Open contract details page in new tab"
href={ route({ pathname: '/address/[hash]', query: { hash: selectedItem.address, tab: 'contract' } }) }
href={ route({ pathname: '/address/[hash]', query: { hash: selectedItem.address_hash, tab: 'contract' } }) }
/>
</Flex>
</Flex>
......
......@@ -28,12 +28,12 @@ const ContractMethodsMudSystem = ({ items }: Props) => {
const sourceAddress = getQueryParamString(router.query.source_address);
const tab = getQueryParamString(router.query.tab);
const [ selectedItem, setSelectedItem ] = React.useState(items.find((item) => item.address === sourceAddress) || items[0]);
const [ selectedItem, setSelectedItem ] = React.useState(items.find((item) => item.address_hash === sourceAddress) || items[0]);
const systemInfoQuery = useApiQuery('contract_mud_system_info', {
pathParams: { hash: addressHash, system_address: selectedItem.address },
pathParams: { hash: addressHash, system_address: selectedItem.address_hash },
queryOptions: {
enabled: Boolean(selectedItem?.address),
enabled: Boolean(selectedItem?.address_hash),
refetchOnMount: false,
},
});
......@@ -63,7 +63,7 @@ const ContractMethodsMudSystem = ({ items }: Props) => {
/>
</div>
<ContractMethodsContainer
key={ selectedItem.address }
key={ selectedItem.address_hash }
isLoading={ systemInfoQuery.isPending }
isEmpty={ abi.length === 0 }
type={ filters.methodType }
......@@ -74,7 +74,7 @@ const ContractMethodsMudSystem = ({ items }: Props) => {
tab={ tab }
addressHash={ addressHash }
visibleItems={ filters.visibleItems }
sourceAddress={ selectedItem.address }
sourceAddress={ selectedItem.address_hash }
/>
</ContractMethodsContainer>
</Flex>
......
......@@ -16,9 +16,9 @@ test('with one implementation +@mobile', async({ render, mockApiResponse }) => {
},
};
const implementations = [
{ address: '0x2F4F4A52295940C576417d29F22EEb92B440eC89', name: 'HomeBridge' },
{ address_hash: '0x2F4F4A52295940C576417d29F22EEb92B440eC89', name: 'HomeBridge' },
];
await mockApiResponse('contract', { ...contractMock.verified, abi: methodsMock.read }, { pathParams: { hash: implementations[0].address } });
await mockApiResponse('contract', { ...contractMock.verified, abi: methodsMock.read }, { pathParams: { hash: implementations[0].address_hash } });
const component = await render(<ContractMethodsProxy implementations={ implementations }/>, { hooksConfig });
await expect(component).toHaveScreenshot();
......@@ -31,10 +31,10 @@ test('with multiple implementations +@mobile', async({ render, mockApiResponse }
},
};
const implementations = [
{ address: '0x2F4F4A52295940C576417d29F22EEb92B440eC89', name: 'HomeBridge' },
{ address: '0xc9e91eDeA9DC16604022e4E5b437Df9c64EdB05A', name: 'Diamond' },
{ address_hash: '0x2F4F4A52295940C576417d29F22EEb92B440eC89', name: 'HomeBridge' },
{ address_hash: '0xc9e91eDeA9DC16604022e4E5b437Df9c64EdB05A', name: 'Diamond' },
];
await mockApiResponse('contract', { ...contractMock.verified, abi: methodsMock.read }, { pathParams: { hash: implementations[0].address } });
await mockApiResponse('contract', { ...contractMock.verified, abi: methodsMock.read }, { pathParams: { hash: implementations[0].address_hash } });
const component = await render(<ContractMethodsProxy implementations={ implementations }/>, { hooksConfig });
await expect(component).toHaveScreenshot();
......
......@@ -28,12 +28,12 @@ const ContractMethodsProxy = ({ implementations, isLoading: isInitialLoading, pr
const tab = getQueryParamString(router.query.tab);
const addressHash = getQueryParamString(router.query.hash);
const [ selectedItem, setSelectedItem ] = React.useState(implementations.find((item) => item.address === sourceAddress) || implementations[0]);
const [ selectedItem, setSelectedItem ] = React.useState(implementations.find((item) => item.address_hash === sourceAddress) || implementations[0]);
const contractQuery = useApiQuery('contract', {
pathParams: { hash: selectedItem.address },
pathParams: { hash: selectedItem.address_hash },
queryOptions: {
enabled: Boolean(selectedItem.address),
enabled: Boolean(selectedItem.address_hash),
refetchOnMount: false,
},
});
......@@ -61,7 +61,7 @@ const ContractMethodsProxy = ({ implementations, isLoading: isInitialLoading, pr
/>
</div>
<ContractMethodsContainer
key={ selectedItem.address }
key={ selectedItem.address_hash }
isLoading={ isInitialLoading || contractQuery.isPending }
isEmpty={ abi.length === 0 }
type={ filters.methodType }
......@@ -72,7 +72,7 @@ const ContractMethodsProxy = ({ implementations, isLoading: isInitialLoading, pr
tab={ tab }
addressHash={ addressHash }
visibleItems={ filters.visibleItems }
sourceAddress={ selectedItem.address }
sourceAddress={ selectedItem.address_hash }
/>
</ContractMethodsContainer>
</Flex>
......
......@@ -68,7 +68,7 @@ export default function useContractTabs(data: Address | undefined, isPlaceholder
});
const verifiedImplementations = React.useMemo(() => {
return data?.implementations?.filter(({ name, address }) => name && address && address !== data?.hash) || [];
return data?.implementations?.filter(({ name, address_hash: addressHash }) => name && addressHash && addressHash !== data?.hash) || [];
}, [ data?.hash, data?.implementations ]);
return React.useMemo(() => {
......
......@@ -38,9 +38,9 @@ const AddressImplementations = ({ data, isLoading, proxyType }: Props) => {
>
{ data.map((item) => (
<AddressEntity
key={ item.address }
key={ item.address_hash }
address={{
hash: item.address,
hash: item.address_hash,
filecoin: { robust: item.filecoin_robust_address },
name: item.name,
is_contract: true,
......
......@@ -68,7 +68,7 @@ const TokenSelectItem = ({ data }: Props) => {
}
})();
const url = route({ pathname: '/token/[hash]', query: { hash: data.token.address } });
const url = route({ pathname: '/token/[hash]', query: { hash: data.token.address_hash } });
return (
<Link
......
......@@ -78,7 +78,7 @@ const TokenSelectMenu = ({ erc20sort, erc1155sort, erc404sort, filteredData, onI
) }
</Flex>
{ tokenInfo.items.sort(sortingFns[type](sortDirection)).map((data) =>
<TokenSelectItem key={ data.token.address + data.token_id } data={ data }/>) }
<TokenSelectItem key={ data.token.address_hash + data.token_id } data={ data }/>) }
</Box>
);
}) }
......
......@@ -38,7 +38,7 @@ const AddressCollections = ({ collectionsQuery, address, hasActiveFilters }: Pro
const collectionUrl = route({
pathname: '/token/[hash]',
query: {
hash: item.token.address,
hash: item.token.address_hash,
tab: 'inventory',
holder_address_hash: address,
scroll_to_tabs: 'true',
......@@ -46,7 +46,7 @@ const AddressCollections = ({ collectionsQuery, address, hasActiveFilters }: Pro
});
const hasOverload = Number(item.amount) > item.token_instances.length;
return (
<Box key={ item.token.address + index } mb={ 6 }>
<Box key={ item.token.address_hash + index } mb={ 6 }>
<Flex mb={ 3 } flexWrap="wrap" lineHeight="30px">
<TokenEntity
width="auto"
......@@ -71,7 +71,7 @@ const AddressCollections = ({ collectionsQuery, address, hasActiveFilters }: Pro
gridTemplateColumns={{ base: 'repeat(2, calc((100% - 12px)/2))', lg: 'repeat(auto-fill, minmax(210px, 1fr))' }}
>
{ item.token_instances.map((instance, index) => {
const key = item.token.address + '_' + (instance.id && !isPlaceholderData ? `id_${ instance.id }` : `index_${ index }`);
const key = item.token.address_hash + '_' + (instance.id && !isPlaceholderData ? `id_${ instance.id }` : `index_${ index }`);
return (
<NFTItem
......
......@@ -34,7 +34,7 @@ const AddressNFTs = ({ tokensQuery, hasActiveFilters }: Props) => {
gridTemplateColumns={{ base: 'repeat(2, calc((100% - 12px)/2))', lg: 'repeat(auto-fill, minmax(210px, 1fr))' }}
>
{ data.items.map((item, index) => {
const key = item.token.address + '_' + (item.id && !isPlaceholderData ? `id_${ item.id }` : `index_${ index }`);
const key = item.token.address_hash + '_' + (item.id && !isPlaceholderData ? `id_${ item.id }` : `index_${ index }`);
return (
<NFTItem
......
......@@ -30,7 +30,7 @@ const ERC20Tokens = ({ tokensQuery }: Props) => {
<Box hideBelow="lg"><ERC20TokensTable data={ data.items } top={ pagination.isVisible ? 72 : 0 } isLoading={ isPlaceholderData }/></Box>
<Box hideFrom="lg">{ data.items.map((item, index) => (
<ERC20TokensListItem
key={ item.token.address + (isPlaceholderData ? index : '') }
key={ item.token.address_hash + (isPlaceholderData ? index : '') }
{ ...item }
isLoading={ isPlaceholderData }
/>
......
......@@ -32,7 +32,7 @@ const ERC20TokensListItem = ({ token, value, isLoading }: Props) => {
</Flex>
<Flex alignItems="center" pl={ 8 }>
<AddressEntity
address={{ hash: token.address }}
address={{ hash: token.address_hash }}
isLoading={ isLoading }
truncation="constant"
noIcon
......
......@@ -26,7 +26,7 @@ const ERC20TokensTable = ({ data, top, isLoading }: Props) => {
</TableHeaderSticky>
<TableBody>
{ data.map((item, index) => (
<ERC20TokensTableItem key={ item.token.address + (isLoading ? index : '') } { ...item } isLoading={ isLoading }/>
<ERC20TokensTableItem key={ item.token.address_hash + (isLoading ? index : '') } { ...item } isLoading={ isLoading }/>
)) }
</TableBody>
</TableRoot>
......
......@@ -37,7 +37,7 @@ const ERC20TokensTableItem = ({
<TableCell verticalAlign="middle">
<Flex alignItems="center" width="150px" justifyContent="space-between">
<AddressEntity
address={{ hash: token.address }}
address={{ hash: token.address_hash }}
isLoading={ isLoading }
truncation="constant"
noIcon
......
......@@ -21,7 +21,7 @@ type Props = AddressNFT & { isLoading: boolean; withTokenLink?: boolean };
const NFTItem = ({ token, value, isLoading, withTokenLink, ...tokenInstance }: Props) => {
const valueResult = token.decimals && value ? getCurrencyValue({ value, decimals: token.decimals, accuracy: 2 }).valueStr : value;
const tokenInstanceLink = tokenInstance.id ?
route({ pathname: '/token/[hash]/instance/[id]', query: { hash: token.address, id: tokenInstance.id } }) :
route({ pathname: '/token/[hash]/instance/[id]', query: { hash: token.address_hash, id: tokenInstance.id } }) :
undefined;
return (
......@@ -41,7 +41,7 @@ const NFTItem = ({ token, value, isLoading, withTokenLink, ...tokenInstance }: P
<Flex justifyContent="space-between" w="100%" flexWrap="wrap">
<Flex ml={ 1 } overflow="hidden">
<Text whiteSpace="pre" color="text.secondary">ID# </Text>
<NftEntity hash={ token.address } id={ tokenInstance.id } isLoading={ isLoading } noIcon/>
<NftEntity hash={ token.address_hash } id={ tokenInstance.id } isLoading={ isLoading } noIcon/>
</Flex>
<Skeleton loading={ isLoading } overflow="hidden" ml={ 1 }>
{ valueResult && (
......
......@@ -69,7 +69,7 @@ export const sortingFns = {
export const filterTokens = (searchTerm: string) => ({ token }: AddressTokenBalance) => {
if (!token.name) {
return !searchTerm ? true : token.address.toLowerCase().includes(searchTerm);
return !searchTerm ? true : token.address_hash.toLowerCase().includes(searchTerm);
}
return token.name?.toLowerCase().includes(searchTerm);
......
......@@ -16,7 +16,7 @@ interface Props {
}
const tokenBalanceItemIdentityFactory = (match: AddressTokenBalance) => (item: AddressTokenBalance) => ((
match.token.address === item.token.address &&
match.token.address_hash === item.token.address_hash &&
match.token_id === item.token_id &&
match.token_instance?.id === item.token_instance?.id
));
......
......@@ -62,7 +62,7 @@ const AddressesListItem = ({
<HStack gap={ 3 }>
<Skeleton loading={ isLoading } fontSize="sm" fontWeight={ 500 }>Txn count</Skeleton>
<Skeleton loading={ isLoading } fontSize="sm" color="text.secondary">
<span>{ Number(item.transaction_count).toLocaleString() }</span>
<span>{ Number(item.transactions_count).toLocaleString() }</span>
</Skeleton>
</HStack>
</ListItemMobile>
......
......@@ -62,7 +62,7 @@ const AddressesTableItem = ({
) }
<TableCell isNumeric>
<Skeleton loading={ isLoading } display="inline-block" lineHeight="24px">
{ Number(item.transaction_count).toLocaleString() }
{ Number(item.transactions_count).toLocaleString() }
</Skeleton>
</TableCell>
</TableRow>
......
......@@ -39,7 +39,7 @@ const AddressesLabelSearchListItem = ({
<HStack gap={ 3 }>
<Skeleton loading={ isLoading } fontSize="sm" fontWeight={ 500 }>Txn count</Skeleton>
<Skeleton loading={ isLoading } fontSize="sm" color="text.secondary">
<span>{ Number(item.transaction_count).toLocaleString() }</span>
<span>{ Number(item.transactions_count).toLocaleString() }</span>
</Skeleton>
</HStack>
</ListItemMobile>
......
......@@ -40,7 +40,7 @@ const AddressesLabelSearchTableItem = ({
</TableCell>
<TableCell isNumeric>
<Skeleton loading={ isLoading } display="inline-block" lineHeight="24px">
{ Number(item.transaction_count).toLocaleString() }
{ Number(item.transactions_count).toLocaleString() }
</Skeleton>
</TableCell>
</TableRow>
......
......@@ -101,6 +101,6 @@ export const NATIVE_TOKEN = {
name: config.chain.currency.name || '',
icon_url: '',
symbol: config.chain.currency.symbol || '',
address: 'native',
address_hash: 'native',
type: 'ERC-20' as const,
} as TokenInfo;
......@@ -74,16 +74,16 @@ const AssetFilter = ({ value = [], handleFilterChange }: Props) => {
});
const onTokenClick = React.useCallback((token: TokenInfo) => () => {
setCurrentValue(prev => prev.findIndex(i => i.token.address === token.address) > -1 ? prev : [ { token, mode: 'include' }, ...prev ]);
setCurrentValue(prev => prev.findIndex(i => i.token.address_hash === token.address_hash) > -1 ? prev : [ { token, mode: 'include' }, ...prev ]);
}, []);
const onReset = React.useCallback(() => setCurrentValue([]), []);
const onFilter = React.useCallback(() => {
setSearchTerm('');
handleFilterChange(FILTER_PARAM_INCLUDE, currentValue.filter(i => i.mode === 'include').map(i => i.token.address));
handleFilterChange(FILTER_PARAM_INCLUDE, currentValue.filter(i => i.mode === 'include').map(i => i.token.address_hash));
handleFilterChange(NAME_PARAM_INCLUDE, currentValue.filter(i => i.mode === 'include').map(i => i.token.symbol || ''));
handleFilterChange(FILTER_PARAM_EXCLUDE, currentValue.filter(i => i.mode === 'exclude').map(i => i.token.address));
handleFilterChange(FILTER_PARAM_EXCLUDE, currentValue.filter(i => i.mode === 'exclude').map(i => i.token.address_hash));
handleFilterChange(NAME_PARAM_EXCLUDE, currentValue.filter(i => i.mode === 'exclude').map(i => i.token.symbol || ''));
return;
}, [ handleFilterChange, currentValue ]);
......@@ -104,7 +104,7 @@ const AssetFilter = ({ value = [], handleFilterChange }: Props) => {
initialValue={ searchTerm }
/>
{ !searchTerm && currentValue.map((item, index) => (
<Flex key={ item.token.address } alignItems="center">
<Flex key={ item.token.address_hash } alignItems="center">
<Select
size="sm"
value={ [ item.mode ] }
......@@ -126,14 +126,14 @@ const AssetFilter = ({ value = [], handleFilterChange }: Props) => {
<Flex rowGap={ 3 } flexWrap="wrap" gap={ 3 } mb={ 2 }>
{ [ NATIVE_TOKEN, ...tokensQuery.data.items ].map(token => (
<Tag
key={ token.address }
data-id={ token.address }
key={ token.address_hash }
data-id={ token.address_hash }
onClick={ onTokenClick(token) }
variant="select"
>
<Flex flexGrow={ 1 } alignItems="center">
{ token.address === NATIVE_TOKEN.address ? <NativeTokenIcon boxSize={ 5 } mr={ 2 }/> : <TokenEntity.Icon token={ token }/> }
{ token.symbol || token.name || token.address }
{ token.address_hash === NATIVE_TOKEN.address_hash ? <NativeTokenIcon boxSize={ 5 } mr={ 2 }/> : <TokenEntity.Icon token={ token }/> }
{ token.symbol || token.name || token.address_hash }
</Flex>
</Tag>
)) }
......@@ -143,12 +143,12 @@ const AssetFilter = ({ value = [], handleFilterChange }: Props) => {
{ searchTerm && tokensQuery.data && !tokensQuery.data?.items.length && <Text>No tokens found</Text> }
{ searchTerm && tokensQuery.data && Boolean(tokensQuery.data?.items.length) && (
<Flex display="flex" flexDir="column" rowGap={ 3 } maxH="250px" overflowY="scroll" mt={ 3 } ml="-4px">
<CheckboxGroup value={ currentValue.map(i => i.token.address) } orientation="vertical">
<CheckboxGroup value={ currentValue.map(i => i.token.address_hash) } orientation="vertical">
{ tokensQuery.data.items.map(token => (
<Checkbox
key={ token.address }
value={ token.address }
id={ token.address }
key={ token.address_hash }
value={ token.address_hash }
id={ token.address_hash }
onChange={ onTokenClick(token) }
overflow="hidden"
w="100%"
......
......@@ -114,7 +114,7 @@ const BlockDetails = ({ query }: Props) => {
const txsNum = (() => {
const blockTxsNum = (
<Link href={ route({ pathname: '/block/[height_or_hash]', query: { height_or_hash: heightOrHash, tab: 'txs' } }) }>
{ data.transaction_count } txn{ data.transaction_count === 1 ? '' : 's' }
{ data.transactions_count } txn{ data.transactions_count === 1 ? '' : 's' }
</Link>
);
......@@ -179,7 +179,7 @@ const BlockDetails = ({ query }: Props) => {
L1 block height
</DetailedInfo.ItemLabel>
<DetailedInfo.ItemValue>
<BlockEntityL1 isLoading={ isPlaceholderData } number={ data.arbitrum.l1_block_height }/>
<BlockEntityL1 isLoading={ isPlaceholderData } number={ data.arbitrum.l1_block_number }/>
</DetailedInfo.ItemValue>
</>
) }
......@@ -209,8 +209,8 @@ const BlockDetails = ({ query }: Props) => {
Batch
</DetailedInfo.ItemLabel>
<DetailedInfo.ItemValue columnGap={ 3 }>
{ data.optimism.internal_id ?
<BatchEntityL2 isLoading={ isPlaceholderData } number={ data.optimism.internal_id }/> :
{ data.optimism.number ?
<BatchEntityL2 isLoading={ isPlaceholderData } number={ data.optimism.number }/> :
<Skeleton loading={ isPlaceholderData }>Pending</Skeleton> }
{ data.optimism.batch_data_container && (
<OptimisticL2TxnBatchDA
......
......@@ -65,7 +65,7 @@ export default function useBlockQuery({ heightOrHash }: Params): BlockQuery {
return {
height: Number(block.number),
timestamp: dayjs.unix(Number(block.timestamp)).format(),
transaction_count: block.transactions.length,
transactions_count: block.transactions.length,
miner: { ...unknownAddress, hash: block.miner },
size: Number(block.size),
hash: block.hash,
......
......@@ -84,14 +84,14 @@ const BlocksListItem = ({ data, isLoading, enableTimeIncrement, animation }: Pro
) }
<Flex columnGap={ 2 }>
<Text fontWeight={ 500 }>Txn</Text>
{ data.transaction_count > 0 ? (
{ data.transactions_count > 0 ? (
<Skeleton loading={ isLoading } display="inline-block">
<Link href={ route({ pathname: '/block/[height_or_hash]', query: { height_or_hash: String(data.height), tab: 'txs' } }) }>
{ data.transaction_count }
{ data.transactions_count }
</Link>
</Skeleton>
) :
<Text color="text.secondary">{ data.transaction_count }</Text>
<Text color="text.secondary">{ data.transactions_count }</Text>
}
</Flex>
<Box>
......
......@@ -83,16 +83,16 @@ const BlocksTableItem = ({ data, isLoading, enableTimeIncrement, animation }: Pr
</TableCell>
) }
<TableCell isNumeric >
{ data.transaction_count > 0 ? (
{ data.transactions_count > 0 ? (
<Skeleton loading={ isLoading } display="inline-block">
<Link href={ route({
pathname: '/block/[height_or_hash]',
query: { height_or_hash: String(data.height), tab: 'txs' },
}) }>
{ data.transaction_count }
{ data.transactions_count }
</Link>
</Skeleton>
) : data.transaction_count }
) : data.transactions_count }
</TableCell>
<TableCell >
<Skeleton loading={ isLoading } display="inline-block">{ BigNumber(data.gas_used || 0).toFormat() }</Skeleton>
......
......@@ -35,8 +35,8 @@ const OptimisticL2DisputeGamesListItem = ({ item, isLoading }: Props) => {
<ListItemMobileGrid.Label isLoading={ isLoading }>Address</ListItemMobileGrid.Label>
<ListItemMobileGrid.Value color="text">
<Skeleton loading={ isLoading } display="flex" overflow="hidden" w="100%" alignItems="center">
<HashStringShorten hash={ item.contract_address } type="long"/>
<CopyToClipboard text={ item.contract_address } ml={ 2 } isLoading={ isLoading }/>
<HashStringShorten hash={ item.contract_address_hash } type="long"/>
<CopyToClipboard text={ item.contract_address_hash } ml={ 2 } isLoading={ isLoading }/>
</Skeleton>
</ListItemMobileGrid.Value>
......
......@@ -31,9 +31,9 @@ const OptimisticL2DisputeGamesTableItem = ({ item, isLoading }: Props) => {
<TableCell verticalAlign="middle">
<Flex overflow="hidden" w="100%" alignItems="center">
<Skeleton loading={ isLoading }>
<HashStringShorten hash={ item.contract_address } type="long"/>
<HashStringShorten hash={ item.contract_address_hash } type="long"/>
</Skeleton>
<CopyToClipboard text={ item.contract_address } ml={ 2 } isLoading={ isLoading }/>
<CopyToClipboard text={ item.contract_address_hash } ml={ 2 } isLoading={ isLoading }/>
</Flex>
</TableCell>
<TableCell verticalAlign="middle">
......
......@@ -56,7 +56,7 @@ const LatestBlocksItem = ({ block, isLoading, animation }: Props) => {
</Flex>
<Grid gridGap={ 2 } templateColumns="auto minmax(0, 1fr)" textStyle="sm">
<Skeleton loading={ isLoading }>Txn</Skeleton>
<Skeleton loading={ isLoading } color="text.secondary"><span>{ block.transaction_count }</span></Skeleton>
<Skeleton loading={ isLoading } color="text.secondary"><span>{ block.transactions_count }</span></Skeleton>
{ !config.features.rollup.isEnabled && !config.UI.views.block.hiddenFields?.total_reward && (
<>
......
......@@ -70,7 +70,7 @@ export default function useChartDataQuery(indicatorId: ChainIndicatorId): UseFet
queryOptions: {
refetchOnMount: false,
enabled: !isStatsFeatureEnabled && indicatorId === 'daily_txs',
select: (data) => data.chart_data.map((item) => ({ date: new Date(item.date), value: item.transaction_count })),
select: (data) => data.chart_data.map((item) => ({ date: new Date(item.date), value: item.transactions_count })),
},
});
......
......@@ -76,7 +76,7 @@ const LatestZkEvmL2Batches = () => {
<LatestBatchItem
key={ batch.number + (isPlaceholderData ? String(index) : '') }
number={ batch.number }
txCount={ batch.transaction_count }
txCount={ batch.transactions_count }
timestamp={ batch.timestamp }
status={ status }
isLoading={ isPlaceholderData }
......
......@@ -53,7 +53,7 @@ const ArbitrumL2MessagesListItem = ({ item, isLoading, direction }: Props) => {
<ListItemMobileGrid.Label isLoading={ isLoading }>From</ListItemMobileGrid.Label>
<ListItemMobileGrid.Value>
<AddressEntity
address={{ hash: item.origination_address }}
address={{ hash: item.origination_address_hash }}
truncation="constant"
isLoading={ isLoading }
fontWeight={ 600 }
......
......@@ -47,7 +47,7 @@ const ArbitrumL2MessagesTableItem = ({ item, direction, isLoading }: Props) => {
{ direction === 'from-rollup' && (
<TableCell verticalAlign="middle">
<AddressEntity
address={{ hash: item.origination_address }}
address={{ hash: item.origination_address_hash }}
truncation="constant"
isLoading={ isLoading }
fontWeight={ 600 }
......
......@@ -40,7 +40,7 @@ const MudWorldsListItem = ({
<HStack gap={ 3 }>
<Skeleton loading={ isLoading } fontSize="sm" fontWeight={ 500 }>Txn count</Skeleton>
<Skeleton loading={ isLoading } fontSize="sm" color="text.secondary">
<span>{ Number(item.transaction_count).toLocaleString() }</span>
<span>{ Number(item.transactions_count).toLocaleString() }</span>
</Skeleton>
</HStack>
</ListItemMobile>
......
......@@ -28,7 +28,7 @@ const MudWorldsTableItem = ({ item, isLoading }: Props) => {
</TableCell>
<TableCell isNumeric>
<Skeleton loading={ isLoading } display="inline-block" lineHeight="24px">
{ Number(item.transaction_count).toLocaleString() }
{ Number(item.transactions_count).toLocaleString() }
</Skeleton>
</TableCell>
</TableRow>
......
......@@ -11,23 +11,23 @@ const addresses: AddressesResponse = {
items: [
{
...addressMocks.withName,
transaction_count: '1',
transactions_count: '1',
coin_balance: '12345678901234567890000',
},
{
...addressMocks.token,
transaction_count: '109123890123',
transactions_count: '109123890123',
coin_balance: '22222345678901234567890000',
ens_domain_name: null,
},
{
...addressMocks.withoutName,
transaction_count: '11',
transactions_count: '11',
coin_balance: '1000000000000000000',
},
{
...addressMocks.eoa,
transaction_count: '420',
transactions_count: '420',
coin_balance: '123456',
},
],
......
......@@ -11,23 +11,23 @@ const addresses: AddressesMetadataSearchResult = {
items: [
{
...addressMocks.withName,
transaction_count: '1',
transactions_count: '1',
coin_balance: '12345678901234567890000',
},
{
...addressMocks.token,
transaction_count: '109123890123',
transactions_count: '109123890123',
coin_balance: '22222345678901234567890000',
ens_domain_name: null,
},
{
...addressMocks.withoutName,
transaction_count: '11',
transactions_count: '11',
coin_balance: '1000000000000000000',
},
{
...addressMocks.eoa,
transaction_count: '420',
transactions_count: '420',
coin_balance: null,
},
],
......
......@@ -10,7 +10,7 @@ test('base view +@mobile', async({ render, mockEnvs, mockTextAd, mockApiResponse
await mockEnvs(ENVS_MAP.beaconChain);
await mockTextAd();
await mockApiResponse('withdrawals', withdrawalsData);
await mockApiResponse('withdrawals_counters', { withdrawal_count: '111111', withdrawal_sum: '1010101010110101001101010' });
await mockApiResponse('withdrawals_counters', { withdrawals_count: '111111', withdrawals_sum: '1010101010110101001101010' });
const component = await render(<BeaconChainWithdrawals/>);
await expect(component).toHaveScreenshot();
});
......@@ -33,8 +33,8 @@ const Withdrawals = () => {
const countersQuery = useApiQuery('withdrawals_counters', {
queryOptions: {
placeholderData: {
withdrawal_count: '19091878',
withdrawal_sum: '4630710684332438',
withdrawals_count: '19091878',
withdrawals_sum: '4630710684332438',
},
},
});
......@@ -71,8 +71,8 @@ const Withdrawals = () => {
<Skeleton loading={ countersQuery.isPlaceholderData || isPlaceholderData } display="flex" flexWrap="wrap">
{ countersQuery.data && (
<Text lineHeight={{ base: '24px', lg: '32px' }}>
{ BigNumber(countersQuery.data.withdrawal_count).toFormat() } withdrawals processed
and { getCurrencyValue({ value: countersQuery.data.withdrawal_sum }).valueStr } { currencyUnits.ether } withdrawn
{ BigNumber(countersQuery.data.withdrawals_count).toFormat() } withdrawals processed
and { getCurrencyValue({ value: countersQuery.data.withdrawals_sum }).valueStr } { currencyUnits.ether } withdrawn
</Text>
) }
</Skeleton>
......
......@@ -43,9 +43,9 @@ const OptimisticL2TxnBatch = () => {
const batchTxsQuery = useQueryWithPages({
resourceName: 'optimistic_l2_txn_batch_txs',
pathParams: { number: String(batchQuery.data?.internal_id) },
pathParams: { number: String(batchQuery.data?.number) },
options: {
enabled: Boolean(!batchQuery.isPlaceholderData && batchQuery.data?.internal_id && tab === 'txs'),
enabled: Boolean(!batchQuery.isPlaceholderData && batchQuery.data?.number && tab === 'txs'),
placeholderData: generateListStub<'optimistic_l2_txn_batch_txs'>(TX, 50, { next_page_params: {
block_number: 1338932,
index: 1,
......@@ -56,9 +56,9 @@ const OptimisticL2TxnBatch = () => {
const batchBlocksQuery = useQueryWithPages({
resourceName: 'optimistic_l2_txn_batch_blocks',
pathParams: { number: String(batchQuery.data?.internal_id) },
pathParams: { number: String(batchQuery.data?.number) },
options: {
enabled: Boolean(!batchQuery.isPlaceholderData && batchQuery.data?.internal_id && tab === 'blocks'),
enabled: Boolean(!batchQuery.isPlaceholderData && batchQuery.data?.number && tab === 'blocks'),
placeholderData: generateListStub<'optimistic_l2_txn_batch_blocks'>(BLOCK, 50, { next_page_params: {
batch_number: 1338932,
items_count: 50,
......@@ -110,7 +110,7 @@ const OptimisticL2TxnBatch = () => {
<>
<TextAd mb={ 6 }/>
<PageTitle
title={ `Batch #${ batchQuery.data?.internal_id }` }
title={ `Batch #${ batchQuery.data?.number }` }
backLink={ backLink }
isLoading={ batchQuery.isPlaceholderData }
/>
......
......@@ -41,7 +41,7 @@ const OptimisticL2TxnBatches = () => {
<Box hideFrom="lg">
{ data.items.map(((item, index) => (
<OptimisticL2TxnBatchesListItem
key={ item.internal_id + (isPlaceholderData ? String(index) : '') }
key={ item.number + (isPlaceholderData ? String(index) : '') }
item={ item }
isLoading={ isPlaceholderData }
/>
......@@ -61,8 +61,8 @@ const OptimisticL2TxnBatches = () => {
return (
<Skeleton loading={ countersQuery.isPlaceholderData || isPlaceholderData } display="flex" flexWrap="wrap">
Txn batch
<Text fontWeight={ 600 } whiteSpace="pre"> #{ data.items[0].internal_id } </Text>to
<Text fontWeight={ 600 } whiteSpace="pre"> #{ data.items[data.items.length - 1].internal_id } </Text>
<Text fontWeight={ 600 } whiteSpace="pre"> #{ data.items[0].number } </Text>to
<Text fontWeight={ 600 } whiteSpace="pre"> #{ data.items[data.items.length - 1].number } </Text>
(total of { countersQuery.data?.toLocaleString() } batches)
</Skeleton>
);
......
......@@ -39,14 +39,14 @@ test.describe('search by name', () => {
test('search by address hash +@mobile', async({ render, mockApiResponse }) => {
const hooksConfig = {
router: {
query: { q: searchMock.address1.address },
query: { q: searchMock.address1.address_hash },
},
};
const data = {
items: [ searchMock.address1, searchMock.contract2 ],
next_page_params: null,
};
await mockApiResponse('search', data, { queryParams: { q: searchMock.address1.address } });
await mockApiResponse('search', data, { queryParams: { q: searchMock.address1.address_hash } });
const component = await render(<SearchResults/>, { hooksConfig });
......@@ -181,7 +181,7 @@ test.describe('with apps', () => {
next_page_params: {
address_hash: null,
block_hash: null,
holder_count: null,
holders_count: null,
inserted_at: null,
item_type: 'token' as const,
items_count: 1,
......
......@@ -11,7 +11,7 @@ import * as pwConfig from 'playwright/utils/config';
import Token from './Token';
const hash = tokenInfo.address;
const hash = tokenInfo.address_hash;
const chainId = config.chain.id;
const hooksConfig = {
......@@ -66,7 +66,7 @@ test('with verified info', async({ render, page, createSocket, mockApiResponse,
});
test('bridged token', async({ render, page, createSocket, mockApiResponse, mockAssetResponse, mockEnvs }) => {
const hash = bridgedTokenA.address;
const hash = bridgedTokenA.address_hash;
const hooksConfig = {
router: {
query: { hash, tab: 'token_transfers' },
......
......@@ -106,7 +106,7 @@ const TokenPageContent = () => {
useEffect(() => {
if (tokenQuery.data && !tokenQuery.isPlaceholderData && !config.meta.seo.enhancedDataEnabled) {
metadata.update({ pathname: '/token/[hash]', query: { hash: tokenQuery.data.address } }, tokenQuery.data);
metadata.update({ pathname: '/token/[hash]', query: { hash: tokenQuery.data.address_hash } }, tokenQuery.data);
}
}, [ tokenQuery.data, tokenQuery.isPlaceholderData ]);
......
......@@ -10,7 +10,7 @@ import * as pwConfig from 'playwright/utils/config';
import TokenInstance from './TokenInstance';
const hash = tokenMock.tokenInfo.address;
const hash = tokenMock.tokenInfo.address_hash;
const id = '42';
test.describe.configure({ mode: 'serial' });
......
......@@ -87,7 +87,7 @@ const TokenInstanceContent = () => {
React.useEffect(() => {
if (tokenInstanceQuery.data && !tokenInstanceQuery.isPlaceholderData && tokenQuery.data && !tokenQuery.isPlaceholderData) {
metadata.update(
{ pathname: '/token/[hash]/instance/[id]', query: { hash: tokenQuery.data.address, id: tokenInstanceQuery.data.id } },
{ pathname: '/token/[hash]/instance/[id]', query: { hash: tokenQuery.data.address_hash, id: tokenInstanceQuery.data.id } },
{ symbol: tokenQuery.data.symbol ?? '' },
);
}
......
......@@ -19,7 +19,7 @@ const allTokens = {
tokens.tokenInfoERC1155a, tokens.tokenInfoERC1155b, tokens.tokenInfoERC1155WithoutName,
],
next_page_params: {
holder_count: 1,
holders_count: 1,
items_count: 1,
name: 'a',
market_cap: '0',
......@@ -74,7 +74,7 @@ test.describe('bridged tokens', () => {
tokens.bridgedTokenC,
],
next_page_params: {
holder_count: 1,
holders_count: 1,
items_count: 1,
name: 'a',
market_cap: null,
......
......@@ -65,7 +65,7 @@ const Tokens = () => {
50,
{
next_page_params: {
holder_count: 81528,
holders_count: 81528,
items_count: 50,
name: '',
market_cap: null,
......
......@@ -31,7 +31,7 @@ const PoolInfo = ({ data, isPlaceholderData }: Props) => {
<TokenEntity
token={{
type: 'ERC-20',
address: data.base_token_address,
address_hash: data.base_token_address,
name: data.base_token_symbol,
symbol: data.base_token_symbol,
icon_url: data.base_token_icon_url,
......@@ -50,7 +50,7 @@ const PoolInfo = ({ data, isPlaceholderData }: Props) => {
<TokenEntity
token={{
type: 'ERC-20',
address: data.quote_token_address,
address_hash: data.quote_token_address,
name: data.quote_token_symbol,
symbol: data.quote_token_symbol,
icon_url: data.quote_token_icon_url,
......
......@@ -63,7 +63,7 @@ const SearchResultListItem = ({ data, searchTerm, isLoading, addressFormat }: Pr
<Flex alignItems="center" overflow="hidden">
<TokenEntity.Icon token={{ ...data, type: data.token_type }} isLoading={ isLoading }/>
<Link
href={ route({ pathname: '/token/[hash]', query: { hash: data.address } }) }
href={ route({ pathname: '/token/[hash]', query: { hash: data.address_hash } }) }
fontWeight={ 700 }
wordBreak="break-all"
loading={ isLoading }
......@@ -88,10 +88,10 @@ const SearchResultListItem = ({ data, searchTerm, isLoading, addressFormat }: Pr
case 'contract':
case 'address': {
const shouldHighlightHash = ADDRESS_REGEXP.test(searchTerm);
const hash = addressFormat === 'bech32' ? toBech32Address(data.address) : data.address;
const hash = addressFormat === 'bech32' ? toBech32Address(data.address_hash) : data.address_hash;
const address = {
hash: data.address,
hash: data.address_hash,
filecoin: {
robust: data.filecoin_robust_address,
},
......@@ -126,7 +126,7 @@ const SearchResultListItem = ({ data, searchTerm, isLoading, addressFormat }: Pr
<Flex alignItems="center">
<IconSvg name="publictags_slim" boxSize={ 6 } mr={ 2 } color="gray.500"/>
<Link
href={ route({ pathname: '/address/[hash]', query: { hash: data.address } }) }
href={ route({ pathname: '/address/[hash]', query: { hash: data.address_hash } }) }
fontWeight={ 700 }
wordBreak="break-all"
loading={ isLoading }
......@@ -259,7 +259,7 @@ const SearchResultListItem = ({ data, searchTerm, isLoading, addressFormat }: Pr
<EnsEntity.Container>
<EnsEntity.Icon protocol={ data.ens_info.protocol }/>
<Link
href={ route({ pathname: '/address/[hash]', query: { hash: data.address } }) }
href={ route({ pathname: '/address/[hash]', query: { hash: data.address_hash } }) }
fontWeight={ 700 }
wordBreak="break-all"
loading={ isLoading }
......@@ -284,7 +284,7 @@ const SearchResultListItem = ({ data, searchTerm, isLoading, addressFormat }: Pr
case 'token': {
const templateCols = `1fr
${ (data.token_type === 'ERC-20' && data.exchange_rate) || (data.token_type !== 'ERC-20' && data.total_supply) ? ' auto' : '' }`;
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address) : data.address);
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address_hash) : data.address_hash);
return (
<Grid templateColumns={ templateCols } alignItems="center" gap={ 2 }>
......@@ -332,7 +332,7 @@ const SearchResultListItem = ({ data, searchTerm, isLoading, addressFormat }: Pr
);
}
case 'label': {
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address) : data.address);
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address_hash) : data.address_hash);
return (
<Flex alignItems="center">
......@@ -385,7 +385,7 @@ const SearchResultListItem = ({ data, searchTerm, isLoading, addressFormat }: Pr
}
case 'ens_domain': {
const expiresText = data.ens_info?.expiry_date ? ` expires ${ dayjs(data.ens_info.expiry_date).fromNow() }` : '';
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address) : data.address);
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address_hash) : data.address_hash);
return (
<Flex alignItems="center" gap={ 3 }>
......
......@@ -58,7 +58,7 @@ const SearchResultTableItem = ({ data, searchTerm, isLoading, addressFormat }: P
switch (data.type) {
case 'token': {
const name = data.name + (data.symbol ? ` (${ data.symbol })` : '');
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address) : data.address);
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address_hash) : data.address_hash);
return (
<>
......@@ -66,7 +66,7 @@ const SearchResultTableItem = ({ data, searchTerm, isLoading, addressFormat }: P
<Flex alignItems="center">
<TokenEntity.Icon token={{ ...data, type: data.token_type }} isLoading={ isLoading }/>
<Link
href={ route({ pathname: '/token/[hash]', query: { hash: data.address } }) }
href={ route({ pathname: '/token/[hash]', query: { hash: data.address_hash } }) }
fontWeight={ 700 }
wordBreak="break-all"
overflow="hidden"
......@@ -111,7 +111,7 @@ const SearchResultTableItem = ({ data, searchTerm, isLoading, addressFormat }: P
const shouldHighlightHash = ADDRESS_REGEXP.test(searchTerm);
const addressName = data.name || data.ens_info?.name;
const address = {
hash: data.address,
hash: data.address_hash,
filecoin: {
robust: data.filecoin_robust_address,
},
......@@ -122,7 +122,7 @@ const SearchResultTableItem = ({ data, searchTerm, isLoading, addressFormat }: P
ens_domain_name: null,
};
const expiresText = data.ens_info?.expiry_date ? ` (expires ${ dayjs(data.ens_info.expiry_date).fromNow() })` : '';
const hash = addressFormat === 'bech32' ? toBech32Address(data.address) : data.address;
const hash = addressFormat === 'bech32' ? toBech32Address(data.address_hash) : data.address_hash;
return (
<>
......@@ -175,7 +175,7 @@ const SearchResultTableItem = ({ data, searchTerm, isLoading, addressFormat }: P
}
case 'label': {
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address) : data.address);
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address_hash) : data.address_hash);
return (
<>
......@@ -183,7 +183,7 @@ const SearchResultTableItem = ({ data, searchTerm, isLoading, addressFormat }: P
<Flex alignItems="center">
<IconSvg name="publictags_slim" boxSize={ 6 } mr={ 2 } color="gray.500"/>
<Link
href={ route({ pathname: '/address/[hash]', query: { hash: data.address } }) }
href={ route({ pathname: '/address/[hash]', query: { hash: data.address_hash } }) }
fontWeight={ 700 }
wordBreak="break-all"
loading={ isLoading }
......@@ -375,7 +375,7 @@ const SearchResultTableItem = ({ data, searchTerm, isLoading, addressFormat }: P
case 'ens_domain': {
const expiresText = data.ens_info?.expiry_date ? ` expires ${ dayjs(data.ens_info.expiry_date).fromNow() }` : '';
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address) : data.address);
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address_hash) : data.address_hash);
return (
<>
......@@ -383,7 +383,7 @@ const SearchResultTableItem = ({ data, searchTerm, isLoading, addressFormat }: P
<EnsEntity.Container>
<EnsEntity.Icon protocol={ data.ens_info.protocol }/>
<Link
href={ route({ pathname: '/address/[hash]', query: { hash: data.address } }) }
href={ route({ pathname: '/address/[hash]', query: { hash: data.address_hash } }) }
fontWeight={ 700 }
wordBreak="break-all"
loading={ isLoading }
......
......@@ -13,13 +13,13 @@ import PageTitle from '../PageTitle';
const DefaultView = () => {
const tokenData: TokenInfo = {
address: '0x363574E6C5C71c343d7348093D84320c76d5Dd29',
address_hash: '0x363574E6C5C71c343d7348093D84320c76d5Dd29',
circulating_market_cap: '117629601.61913824',
type: 'ERC-20',
symbol: 'SHAAAAAAAAAAAAA',
name: null,
decimals: '18',
holders: '1',
holders_count: '1',
exchange_rate: null,
total_supply: null,
icon_url: 'https://example.com/logo.png',
......
......@@ -13,11 +13,11 @@ import PageTitle from '../PageTitle';
const LongNameAndManyTags = () => {
const tokenData: TokenInfo = {
address: '0xa77A39CC9680B10C00af5D4ABFc92e1F07406c64',
address_hash: '0xa77A39CC9680B10C00af5D4ABFc92e1F07406c64',
circulating_market_cap: null,
decimals: null,
exchange_rate: null,
holders: '294',
holders_count: '294',
icon_url: null,
name: 'Ring ding ding daa baa Baa aramba baa bom baa barooumba Wh-wha-what&#39;s going on-on? Ding, ding This is the Crazy Frog Ding, ding Bem, bem! Ring ding ding ding ding ding Ring ding ding ding bem bem bem Ring ding ding ding ding ding Ring ding ding ding baa b',
symbol: 'BatcoiRing ding ding daa baa Baa aramba baa bom baa barooumba Wh-wha-what&#39;s going on-on? Ding, ding This is the Crazy Frog Ding, ding Bem, bem! Ring ding ding ding ding ding Ring ding ding ding bem bem bem Ring ding ding ding ding ding Ring ding ding ding',
......
......@@ -68,7 +68,7 @@ const TokenTransferListItem = ({
) }
</Flex>
{ total && 'token_id' in total && total.token_id !== null && token && (
<NftEntity hash={ token.address } id={ total.token_id } instance={ total.token_instance } isLoading={ isLoading }/>
<NftEntity hash={ token.address_hash } id={ total.token_id } instance={ total.token_instance } isLoading={ isLoading }/>
) }
{ showTxInfo && txHash && (
<Flex justifyContent="space-between" alignItems="center" lineHeight="24px" width="100%">
......
......@@ -74,7 +74,7 @@ const TokenTransferTableItem = ({
<TableCell>
{ total && 'token_id' in total && total.token_id !== null && token && (
<NftEntity
hash={ token.address }
hash={ token.address_hash }
id={ total.token_id }
instance={ total.token_instance }
isLoading={ isLoading }
......
......@@ -27,7 +27,7 @@ const NftTokenTransferSnippet = ({ value, token, tokenId, instance }: Props) =>
return (
<NftEntity
hash={ token.address }
hash={ token.address_hash }
id={ tokenId }
instance={ instance }
fontWeight={ 600 }
......
......@@ -25,7 +25,7 @@ function getRequestParams(token: TokenInfo, tokenId?: string): WatchAssetParams
return {
type: 'ERC20',
options: {
address: token.address,
address: token.address_hash,
symbol: token.symbol || '',
decimals: Number(token.decimals ?? '18'),
image: token.icon_url || '',
......@@ -40,7 +40,7 @@ function getRequestParams(token: TokenInfo, tokenId?: string): WatchAssetParams
return {
type: token.type === 'ERC-721' ? 'ERC721' : 'ERC1155',
options: {
address: token.address,
address: token.address_hash,
tokenId: tokenId,
},
} as never; // There is no official EIP, and therefore no typings for these token types.
......
......@@ -74,7 +74,7 @@ test.describe('proxy contract', () => {
test('without implementation name', async({ render, page }) => {
const component = await render(
<AddressEntity
address={{ ...addressMock.contract, implementations: [ { address: addressMock.contract.implementations?.[0].address as string } ] }}
address={{ ...addressMock.contract, implementations: [ { address_hash: addressMock.contract.implementations?.[0].address_hash as string } ] }}
/>,
);
......@@ -86,7 +86,11 @@ test.describe('proxy contract', () => {
test('without any name', async({ render, page }) => {
const component = await render(
<AddressEntity
address={{ ...addressMock.contract, name: undefined, implementations: [ { address: addressMock.contract.implementations?.[0].address as string } ] }}
address={{
...addressMock.contract,
name: undefined,
implementations: [ { address_hash: addressMock.contract.implementations?.[0].address_hash as string } ],
}}
/>,
);
......
......@@ -33,8 +33,8 @@ const AddressEntityContentProxy = (props: ContentProps) => {
<Flex flexWrap="wrap" columnGap={ 3 }>
{ implementations.map((item) => (
<AddressEntity
key={ item.address }
address={{ hash: item.address, filecoin: { robust: item.filecoin_robust_address } }}
key={ item.address_hash }
address={{ hash: item.address_hash, filecoin: { robust: item.filecoin_robust_address } }}
noLink
noIcon
noHighlight
......
......@@ -47,7 +47,7 @@ const Icon = (props: IconProps) => {
token={{
icon_url: props.pool.base_token_icon_url,
symbol: props.pool.base_token_symbol,
address: props.pool.base_token_address,
address_hash: props.pool.base_token_address,
name: '',
type: 'ERC-20',
}}
......@@ -67,7 +67,7 @@ const Icon = (props: IconProps) => {
token={{
icon_url: props.pool.quote_token_icon_url,
symbol: props.pool.quote_token_symbol,
address: props.pool.quote_token_address,
address_hash: props.pool.quote_token_address,
name: '',
type: 'ERC-20',
}}
......
......@@ -40,7 +40,7 @@ test('with logo, long name and symbol', async({ page, render }) => {
type: 'ERC-20',
name: 'This token is the best token ever',
symbol: 'DUCK DUCK DUCK',
address: tokenMock.tokenInfo.address,
address_hash: tokenMock.tokenInfo.address_hash,
icon_url: LOGO_URL,
}}
/>,
......
......@@ -16,7 +16,7 @@ import { distributeEntityProps, getIconProps } from '../base/utils';
type LinkProps = EntityBase.LinkBaseProps & Pick<EntityProps, 'token'>;
const Link = chakra((props: LinkProps) => {
const defaultHref = route({ pathname: '/token/[hash]', query: { ...props.query, hash: props.token.address } });
const defaultHref = route({ pathname: '/token/[hash]', query: { ...props.query, hash: props.token.address_hash } });
return (
<EntityBase.Link
......@@ -116,7 +116,7 @@ const Copy = (props: CopyProps) => {
return (
<EntityBase.Copy
{ ...props }
text={ props.token.address }
text={ props.token.address_hash }
/>
);
};
......@@ -124,7 +124,7 @@ const Copy = (props: CopyProps) => {
const Container = EntityBase.Container;
export interface EntityProps extends EntityBase.EntityBaseProps {
token: Pick<TokenInfo, 'address' | 'icon_url' | 'name' | 'symbol' | 'type'>;
token: Pick<TokenInfo, 'address_hash' | 'icon_url' | 'name' | 'symbol' | 'type'>;
noSymbol?: boolean;
jointSymbol?: boolean;
onlySymbol?: boolean;
......
......@@ -16,7 +16,7 @@ const TokenEntityL1 = (props: TokenEntity.EntityProps) => {
const defaultHref = rollupFeature.parentChain.baseUrl + route({
pathname: '/token/[hash]',
query: { hash: props.token.address },
query: { hash: props.token.address_hash },
});
return (
......
......@@ -23,7 +23,7 @@ const TokenEntityWithAddressFilter = (props: Props) => {
...props.query,
to_address_hashes_to_include: [ props.addressHash ],
from_address_hashes_to_include: [ props.addressHash ],
token_contract_address_hashes_to_include: [ props.token.address ],
token_contract_address_hashes_to_include: [ props.token.address_hash ],
token_contract_symbols_to_include: [ props.token.symbol ?? '' ],
},
});
......
......@@ -21,7 +21,7 @@ import TxEntity from 'ui/shared/entities/tx/TxEntity';
import { Section, Container, SectionHeader, SamplesStack, Sample, SectionSubHeader } from './parts';
const TOKEN = {
address: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
address_hash: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
circulating_market_cap: '139446916652.6728',
decimals: '6',
exchange_rate: '0.999921',
......@@ -170,11 +170,11 @@ const LinkShowcase = () => {
<SectionSubHeader>NFT link</SectionSubHeader>
<SamplesStack>
<Sample label="Default" vertical w="100%">
<NftEntity id="42" hash={ TOKEN.address }/>
<NftEntity id="42" hash={ TOKEN.address_hash }/>
<Box maxW="250px">
<NftEntity id="32925298983216553915666621415831103694597106215670571463977478984525997408266" hash={ TOKEN.address }/>
<NftEntity id="32925298983216553915666621415831103694597106215670571463977478984525997408266" hash={ TOKEN.address_hash }/>
</Box>
<NftEntity id="4200000" hash={ TOKEN.address } isLoading/>
<NftEntity id="4200000" hash={ TOKEN.address_hash } isLoading/>
</Sample>
</SamplesStack>
......
......@@ -68,9 +68,9 @@ test('search by tag +@mobile +@dark-mode', async({ render, page, mockApiRespons
test('search by address hash +@mobile', async({ render, page, mockApiResponse }) => {
const apiUrl = await mockApiResponse('quick_search', [
searchMock.address1,
], { queryParams: { q: searchMock.address1.address } });
], { queryParams: { q: searchMock.address1.address_hash } });
await render(<SearchBar/>);
await page.getByPlaceholder(/search/i).fill(searchMock.address1.address);
await page.getByPlaceholder(/search/i).fill(searchMock.address1.address_hash);
await page.waitForResponse(apiUrl);
await expect(page).toHaveScreenshot({ clip: { x: 0, y: 0, width: 1200, height: 300 } });
......
......@@ -17,12 +17,12 @@ type Props = ItemsProps<SearchResultAddressOrContract | SearchResultMetadataTag>
const SearchBarSuggestAddress = ({ data, isMobile, searchTerm, addressFormat }: Props) => {
const shouldHighlightHash = ADDRESS_REGEXP.test(searchTerm);
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address) : data.address);
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address_hash) : data.address_hash);
const icon = (
<AddressEntity.Icon
address={{
hash: data.address,
hash: data.address_hash,
is_contract: data.type === 'contract',
name: '',
is_verified: data.is_smart_contract_verified,
......
......@@ -13,7 +13,7 @@ import IconSvg from 'ui/shared/IconSvg';
const SearchBarSuggestDomain = ({ data, isMobile, searchTerm, addressFormat }: ItemsProps<SearchResultDomain>) => {
const icon = <EnsEntity.Icon protocol={ data.ens_info.protocol }/>;
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address) : data.address);
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address_hash) : data.address_hash);
const name = (
<Text
......
......@@ -28,13 +28,13 @@ const SearchBarSuggestItem = ({ data, isMobile, searchTerm, onClick, addressForm
const url = (() => {
switch (data.type) {
case 'token': {
return route({ pathname: '/token/[hash]', query: { hash: data.address } });
return route({ pathname: '/token/[hash]', query: { hash: data.address_hash } });
}
case 'contract':
case 'address':
case 'label':
case 'metadata_tag': {
return route({ pathname: '/address/[hash]', query: { hash: data.address } });
return route({ pathname: '/address/[hash]', query: { hash: data.address_hash } });
}
case 'transaction': {
return route({ pathname: '/tx/[hash]', query: { hash: data.transaction_hash } });
......@@ -54,7 +54,7 @@ const SearchBarSuggestItem = ({ data, isMobile, searchTerm, onClick, addressForm
return route({ pathname: '/blobs/[hash]', query: { hash: data.blob_hash } });
}
case 'ens_domain': {
return route({ pathname: '/address/[hash]', query: { hash: data.address } });
return route({ pathname: '/address/[hash]', query: { hash: data.address_hash } });
}
}
})();
......
......@@ -11,7 +11,7 @@ import IconSvg from 'ui/shared/IconSvg';
const SearchBarSuggestLabel = ({ data, isMobile, searchTerm, addressFormat }: ItemsProps<SearchResultLabel>) => {
const icon = <IconSvg name="publictags_slim" boxSize={ 5 } color="gray.500"/>;
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address) : data.address);
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address_hash) : data.address_hash);
const name = (
<Text
......
......@@ -15,7 +15,7 @@ const SearchBarSuggestToken = ({ data, isMobile, searchTerm, addressFormat }: It
const icon = <TokenEntity.Icon token={{ ...data, type: data.token_type }}/>;
const verifiedIcon = <IconSvg name="certified" boxSize={ 4 } color="green.500" ml={ 1 } flexShrink={ 0 }/>;
const certifiedIcon = <ContractCertifiedLabel iconSize={ 4 } boxSize={ 4 } ml={ 1 } flexShrink={ 0 }/>;
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address) : data.address);
const hash = data.filecoin_robust_address || (addressFormat === 'bech32' ? toBech32Address(data.address_hash) : data.address_hash);
const name = (
<Text
......
......@@ -40,7 +40,7 @@ const TokenHoldersContent = ({ holdersQuery, token, shouldRender = true, tabsHei
<ActionBar mt={ -6 }>
{ token && (
<AddressCsvExportLink
address={ token.address }
address={ token.address_hash }
params={{ type: 'holders' }}
isLoading={ holdersQuery.pagination.isLoading }
/>
......
......@@ -28,7 +28,7 @@ const TokenInventoryItem = ({ item, token, isLoading }: Props) => {
/>
);
const url = route({ pathname: '/token/[hash]/instance/[id]', query: { hash: token.address, id: item.id } });
const url = route({ pathname: '/token/[hash]/instance/[id]', query: { hash: token.address_hash, id: item.id } });
return (
<Box
......
......@@ -38,7 +38,7 @@ interface Props {
const TokenPageTitle = ({ tokenQuery, addressQuery, hash }: Props) => {
const appProps = useAppContext();
const addressHash = !tokenQuery.isPlaceholderData ? (tokenQuery.data?.address || '') : '';
const addressHash = !tokenQuery.isPlaceholderData ? (tokenQuery.data?.address_hash || '') : '';
const verifiedInfoQuery = useApiQuery('token_verified_info', {
pathParams: { hash: addressHash, chainId: config.chain.id },
......
......@@ -61,7 +61,7 @@ const TokenTransferListItem = ({
from={ from }
to={ to }
isLoading={ isLoading }
tokenHash={ token?.address }
tokenHash={ token?.address_hash }
tokenSymbol={ token?.symbol ?? undefined }
w="100%"
fontWeight="500"
......@@ -95,7 +95,7 @@ const TokenTransferListItem = ({
) }
{ total && 'token_id' in total && token && (NFT_TOKEN_TYPE_IDS.includes(token.type)) && total.token_id !== null && (
<NftEntity
hash={ token.address }
hash={ token.address_hash }
id={ total.token_id }
instance={ instance || total.token_instance }
noLink={ Boolean(tokenId && tokenId === total.token_id) }
......
......@@ -72,7 +72,7 @@ const TokenTransferTableItem = ({
isLoading={ isLoading }
mt="5px"
mode={{ lg: 'compact', xl: 'long' }}
tokenHash={ token?.address }
tokenHash={ token?.address_hash }
tokenSymbol={ token?.symbol ?? undefined }
/>
</TableCell>
......@@ -80,7 +80,7 @@ const TokenTransferTableItem = ({
<TableCell>
{ total && 'token_id' in total && token && total.token_id !== null ? (
<NftEntity
hash={ token.address }
hash={ token.address_hash }
id={ total.token_id }
instance={ instance || total.token_instance }
noLink={ Boolean(tokenId && tokenId === total.token_id) }
......
......@@ -14,7 +14,7 @@ import { MetadataUpdateProvider } from 'ui/tokenInstance/contexts/metadataUpdate
import TokenInstanceDetails from './TokenInstanceDetails';
const hash = tokenInfoERC721a.address;
const hash = tokenInfoERC721a.address_hash;
const addressMetadataQueryParams = {
addresses: [ hash ],
......
......@@ -28,7 +28,7 @@ interface Props {
}
const TokenInstanceDetails = ({ data, token, scrollRef, isLoading }: Props) => {
const appActionData = useAppActionData(token?.address, !isLoading);
const appActionData = useAppActionData(token?.address_hash, !isLoading);
const isMounted = useIsMounted();
const handleCounterItemClick = React.useCallback(() => {
......@@ -69,7 +69,7 @@ const TokenInstanceDetails = ({ data, token, scrollRef, isLoading }: Props) => {
</>
) }
<TokenInstanceCreatorAddress hash={ isLoading ? '' : token.address }/>
<TokenInstanceCreatorAddress hash={ isLoading ? '' : token.address_hash }/>
<DetailedInfo.ItemLabel
hint="This token instance unique token ID"
......@@ -86,11 +86,11 @@ const TokenInstanceDetails = ({ data, token, scrollRef, isLoading }: Props) => {
</Flex>
</DetailedInfo.ItemValue>
<TokenInstanceTransfersCount hash={ isLoading ? '' : token.address } id={ isLoading ? '' : data.id } onClick={ handleCounterItemClick }/>
<TokenInstanceTransfersCount hash={ isLoading ? '' : token.address_hash } id={ isLoading ? '' : data.id } onClick={ handleCounterItemClick }/>
<TokenNftMarketplaces
isLoading={ isLoading }
hash={ token.address }
hash={ token.address_hash }
id={ data.id }
appActionData={ appActionData }
source="NFT item"
......
......@@ -74,7 +74,7 @@ const TokenTransfersListItem = ({ item, isLoading }: Props) => {
<ListItemMobileGrid.Label isLoading={ isLoading }>Token ID</ListItemMobileGrid.Label>
<ListItemMobileGrid.Value overflow="hidden">
<NftEntity
hash={ item.token.address }
hash={ item.token.address_hash }
id={ item.total.token_id }
instance={ item.total.token_instance }
isLoading={ isLoading }
......
......@@ -66,7 +66,7 @@ const TokenTransferTableItem = ({ item, isLoading }: Props) => {
<TableCell>
{ item.total && 'token_id' in item.total && item.token && (NFT_TOKEN_TYPE_IDS.includes(item.token.type)) && item.total.token_id !== null ? (
<NftEntity
hash={ item.token.address }
hash={ item.token.address_hash }
id={ item.total.token_id }
instance={ item.total.token_instance }
isLoading={ isLoading }
......
......@@ -35,7 +35,7 @@ const Tokens = ({ query, onSortChange, sort, actionBar, description, hasActiveFi
{ description }
{ data.items.map((item, index) => (
<TokensListItem
key={ item.address + (isPlaceholderData ? index : '') }
key={ item.address_hash + (isPlaceholderData ? index : '') }
token={ item }
index={ index }
page={ pagination.page }
......
......@@ -31,11 +31,11 @@ const TokensTableItem = ({
}: Props) => {
const {
address,
address_hash: addressHash,
filecoin_robust_address: filecoinRobustAddress,
exchange_rate: exchangeRate,
type,
holders,
holders_count: holdersCount,
circulating_market_cap: marketCap,
origin_chain_id: originalChainId,
} = token;
......@@ -71,7 +71,7 @@ const TokensTableItem = ({
</Grid>
<Flex justifyContent="space-between" alignItems="center" width="150px" ml={ 7 } mt={ -2 }>
<AddressEntity
address={{ hash: address, filecoin: { robust: filecoinRobustAddress } }}
address={{ hash: addressHash, filecoin: { robust: filecoinRobustAddress } }}
isLoading={ isLoading }
truncation="constant"
linkVariant="secondary"
......@@ -95,7 +95,7 @@ const TokensTableItem = ({
) }
<HStack gap={ 3 }>
<Skeleton loading={ isLoading } textStyle="sm" fontWeight={ 500 }>Holders</Skeleton>
<Skeleton loading={ isLoading } textStyle="sm" color="text.secondary"><span>{ Number(holders).toLocaleString() }</span></Skeleton>
<Skeleton loading={ isLoading } textStyle="sm" color="text.secondary"><span>{ Number(holdersCount).toLocaleString() }</span></Skeleton>
</HStack>
</ListItemMobile>
);
......
......@@ -13,7 +13,7 @@ import TokensTableItem from './TokensTableItem';
const SORT_SEQUENCE: Record<TokensSortingField, Array<TokensSortingValue>> = {
fiat_value: [ 'fiat_value-desc', 'fiat_value-asc', 'default' ],
holder_count: [ 'holder_count-desc', 'holder_count-asc', 'default' ],
holders_count: [ 'holders_count-desc', 'holders_count-asc', 'default' ],
circulating_market_cap: [ 'circulating_market_cap-desc', 'circulating_market_cap-asc', 'default' ],
};
......@@ -54,8 +54,8 @@ const TokensTable = ({ items, page, isLoading, sorting, setSorting, top }: Props
</Link>
</TableColumnHeader>
<TableColumnHeader isNumeric w="15%">
<Link onClick={ sort('holder_count') } display="flex" justifyContent="end">
{ sorting?.includes('holder_count') && <IconSvg name="arrows/east-mini" boxSize={ 4 } transform={ sortIconTransform }/> }
<Link onClick={ sort('holders_count') } display="flex" justifyContent="end">
{ sorting?.includes('holders_count') && <IconSvg name="arrows/east-mini" boxSize={ 4 } transform={ sortIconTransform }/> }
Holders
</Link>
</TableColumnHeader>
......@@ -63,7 +63,7 @@ const TokensTable = ({ items, page, isLoading, sorting, setSorting, top }: Props
</TableHeaderSticky>
<TableBody>
{ items.map((item, index) => (
<TokensTableItem key={ item.address + (isLoading ? index : '') } token={ item } index={ index } page={ page } isLoading={ isLoading }/>
<TokensTableItem key={ item.address_hash + (isLoading ? index : '') } token={ item } index={ index } page={ page } isLoading={ isLoading }/>
)) }
</TableBody>
</TableRoot>
......
......@@ -32,11 +32,11 @@ const TokensTableItem = ({
}: Props) => {
const {
address,
address_hash: addressHash,
filecoin_robust_address: filecoinRobustAddress,
exchange_rate: exchangeRate,
type,
holders,
holders_count: holdersCount,
circulating_market_cap: marketCap,
origin_chain_id: originalChainId,
} = token;
......@@ -46,7 +46,7 @@ const TokensTableItem = ({
undefined;
const tokenAddress: AddressEntityProps['address'] = {
hash: address,
hash: addressHash,
filecoin: {
robust: filecoinRobustAddress,
},
......@@ -120,7 +120,7 @@ const TokensTableItem = ({
fontWeight={ 500 }
display="inline-block"
>
{ Number(holders).toLocaleString() }
{ Number(holdersCount).toLocaleString() }
</Skeleton>
</TableCell>
</TableRow>
......
......@@ -10,8 +10,8 @@ export const SORT_OPTIONS: Array<SelectOption<TokensSortingValue>> = [
{ label: 'Default', value: 'default' },
{ label: 'Price ascending', value: 'fiat_value-asc' },
{ label: 'Price descending', value: 'fiat_value-desc' },
{ label: 'Holders ascending', value: 'holder_count-asc' },
{ label: 'Holders descending', value: 'holder_count-desc' },
{ label: 'Holders ascending', value: 'holders_count-asc' },
{ label: 'Holders descending', value: 'holders_count-desc' },
{ label: 'On-chain market cap ascending', value: 'circulating_market_cap-asc' },
{ label: 'On-chain market cap descending', value: 'circulating_market_cap-desc' },
];
......
......@@ -26,7 +26,7 @@ const NovesActionSnippet: FC<Props> = ({ item, isLoaded }) => {
const token = {
name: name || '',
symbol: (symbol?.toLowerCase() === name?.toLowerCase() ? undefined : symbol) || '',
address: action.nft?.address || action.token?.address || '',
address_hash: action.nft?.address || action.token?.address || '',
icon_url: '',
type: action.nft ? 'ERC-721' as const : 'ERC-20' as const,
};
......@@ -34,7 +34,7 @@ const NovesActionSnippet: FC<Props> = ({ item, isLoaded }) => {
return token;
}, [ item.action ]);
const validTokenAddress = token.address ? HEX_REGEXP.test(token.address) : false;
const validTokenAddress = token.address_hash ? HEX_REGEXP.test(token.address_hash) : false;
const tooltipContent = (
<NovesTokenTooltipContent
......
......@@ -5,8 +5,9 @@ import type { TokenInfo } from 'types/api/token';
import { HEX_REGEXP } from 'toolkit/utils/regexp';
export interface NovesTokenInfo extends Pick<TokenInfo, 'address' | 'name' | 'symbol'> {
export interface NovesTokenInfo extends Pick<TokenInfo, 'name' | 'symbol'> {
id?: string | undefined;
address?: string;
}
export interface TokensData {
......
......@@ -12,12 +12,12 @@ interface Props extends TxAuthorization {
isLoading?: boolean;
}
const TxAuthorizationsListItem = ({ address, authority, chain_id: chainId, nonce, isLoading }: Props) => {
const TxAuthorizationsListItem = ({ address_hash: addressHash, authority, chain_id: chainId, nonce, isLoading }: Props) => {
return (
<ListItemMobile rowGap={ 3 } fontSize="sm">
<HStack gap={ 3 } w="100%">
<Skeleton loading={ isLoading } fontWeight={ 500 }>Address</Skeleton>
<AddressEntity address={{ hash: address }} isLoading={ isLoading } noIcon/>
<AddressEntity address={{ hash: addressHash }} isLoading={ isLoading } noIcon/>
</HStack>
<HStack gap={ 3 } w="100%">
<Skeleton loading={ isLoading } fontWeight={ 500 }>Authority</Skeleton>
......
......@@ -11,11 +11,11 @@ interface Props extends TxAuthorization {
isLoading?: boolean;
}
const TxAuthorizationsItem = ({ address, authority, chain_id: chainId, nonce, isLoading }: Props) => {
const TxAuthorizationsItem = ({ address_hash: addressHash, authority, chain_id: chainId, nonce, isLoading }: Props) => {
return (
<TableRow alignItems="top">
<TableCell>
<AddressEntity address={{ hash: address }} isLoading={ isLoading } noIcon/>
<AddressEntity address={{ hash: addressHash }} isLoading={ isLoading } noIcon/>
</TableCell>
<TableCell verticalAlign="middle">
<AddressEntity address={{ hash: authority }} isLoading={ isLoading } noIcon/>
......
......@@ -88,8 +88,8 @@ const TxDetailsWithdrawalStatusArbitrum = ({ data }: Props) => {
Originating L1 txn hash
</DetailedInfo.ItemLabel>
<DetailedInfo.ItemValue>
{ data.arbitrum.message_related_info.associated_l1_transaction ?
<TxEntityL1 hash={ data.arbitrum.message_related_info.associated_l1_transaction }/> :
{ data.arbitrum.message_related_info.associated_l1_transaction_hash ?
<TxEntityL1 hash={ data.arbitrum.message_related_info.associated_l1_transaction_hash }/> :
<Text color="text.secondary">Waiting for confirmation</Text>
}
</DetailedInfo.ItemValue>
......
......@@ -39,14 +39,14 @@ const TxDetailsAction = ({ action }: Props) => {
const amount1 = BigNumber(data.amount1).toFormat();
const [ text0, text1 ] = getActionText(type);
const token0 = {
address: data.symbol0 === 'Ether' ? '' : data.address0,
address_hash: data.symbol0 === 'Ether' ? '' : data.address0,
name: data.symbol0 === 'Ether' ? config.chain.currency.symbol || null : data.symbol0,
type: 'ERC-20' as const,
symbol: null,
icon_url: null,
};
const token1 = {
address: data.symbol1 === 'Ether' ? '' : data.address1,
address_hash: data.symbol1 === 'Ether' ? '' : data.address1,
name: data.symbol1 === 'Ether' ? config.chain.currency.symbol || null : data.symbol1,
type: 'ERC-20' as const,
symbol: null,
......@@ -97,7 +97,7 @@ const TxDetailsAction = ({ action }: Props) => {
case 'mint_nft' : {
const token = {
address: data.address,
address_hash: data.address,
name: data.name,
type: 'ERC-20' as const,
symbol: null,
......
......@@ -118,7 +118,7 @@ export function getStateElements(data: TxStateChange, isLoading?: boolean) {
if ('token_id' in data && data.token_id) {
return (
<NftEntity
hash={ data.token.address }
hash={ data.token.address_hash }
id={ data.token_id }
isLoading={ isLoading }
/>
......@@ -128,7 +128,7 @@ export function getStateElements(data: TxStateChange, isLoading?: boolean) {
}
}
return <TxStateTokenIdList items={ data.change } tokenAddress={ data.token.address } isLoading={ isLoading }/>;
return <TxStateTokenIdList items={ data.change } tokenAddress={ data.token.address_hash } isLoading={ isLoading }/>;
})();
return {
......
......@@ -58,7 +58,7 @@ const ArbitrumL2TxnBatchDetails = ({ query }: Props) => {
return null;
}
const blocksCount = data.end_block - data.start_block + 1;
const blocksCount = data.end_block_number - data.start_block_number + 1;
return (
<Grid
......@@ -172,9 +172,9 @@ const ArbitrumL2TxnBatchDetails = ({ query }: Props) => {
</DetailedInfo.ItemLabel>
<DetailedInfo.ItemValue flexWrap="nowrap" >
<Skeleton loading={ isPlaceholderData } overflow="hidden">
<HashStringShortenDynamic hash={ data.before_acc }/>
<HashStringShortenDynamic hash={ data.before_acc_hash }/>
</Skeleton>
<CopyToClipboard text={ data.before_acc } isLoading={ isPlaceholderData }/>
<CopyToClipboard text={ data.before_acc_hash } isLoading={ isPlaceholderData }/>
</DetailedInfo.ItemValue>
<DetailedInfo.ItemLabel
......@@ -185,9 +185,9 @@ const ArbitrumL2TxnBatchDetails = ({ query }: Props) => {
</DetailedInfo.ItemLabel>
<DetailedInfo.ItemValue flexWrap="nowrap">
<Skeleton loading={ isPlaceholderData } overflow="hidden">
<HashStringShortenDynamic hash={ data.after_acc }/>
<HashStringShortenDynamic hash={ data.after_acc_hash }/>
</Skeleton>
<CopyToClipboard text={ data.after_acc } isLoading={ isPlaceholderData }/>
<CopyToClipboard text={ data.after_acc_hash } isLoading={ isPlaceholderData }/>
</DetailedInfo.ItemValue>
{ (data.data_availability.batch_data_container === 'in_anytrust' || data.data_availability.batch_data_container === 'in_celestia') && (
......
......@@ -37,7 +37,7 @@ const OptimisticL2TxnBatchDetails = ({ query }: Props) => {
}
const increment = direction === 'next' ? +1 : -1;
const nextId = String(data.internal_id + increment);
const nextId = String(data.number + increment);
router.push({ pathname: '/batches/[number]', query: { number: nextId } }, undefined);
}, [ data, router ]);
......@@ -54,7 +54,7 @@ const OptimisticL2TxnBatchDetails = ({ query }: Props) => {
return null;
}
const blocksCount = data.l2_block_end - data.l2_block_start + 1;
const blocksCount = data.l2_end_block_number - data.l2_start_block_number + 1;
return (
<Grid
......@@ -71,14 +71,14 @@ const OptimisticL2TxnBatchDetails = ({ query }: Props) => {
</DetailedInfo.ItemLabel>
<DetailedInfo.ItemValue>
<Skeleton loading={ isPlaceholderData }>
{ data.internal_id }
{ data.number }
</Skeleton>
<PrevNext
ml={ 6 }
onClick={ handlePrevNextClick }
prevLabel="View previous txn batch"
nextLabel="View next txn batch"
isPrevDisabled={ data.internal_id === 0 }
isPrevDisabled={ data.number === 0 }
isLoading={ isPlaceholderData }
/>
</DetailedInfo.ItemValue>
......@@ -104,8 +104,8 @@ const OptimisticL2TxnBatchDetails = ({ query }: Props) => {
</DetailedInfo.ItemLabel>
<DetailedInfo.ItemValue>
<Skeleton loading={ isPlaceholderData }>
<Link href={ route({ pathname: '/batches/[number]', query: { number: data.internal_id.toString(), tab: 'txs' } }) }>
{ data.transaction_count.toLocaleString() } transaction{ data.transaction_count === 1 ? '' : 's' }
<Link href={ route({ pathname: '/batches/[number]', query: { number: data.number.toString(), tab: 'txs' } }) }>
{ data.transactions_count.toLocaleString() } transaction{ data.transactions_count === 1 ? '' : 's' }
</Link>
{ ' ' }in this batch
</Skeleton>
......@@ -119,7 +119,7 @@ const OptimisticL2TxnBatchDetails = ({ query }: Props) => {
</DetailedInfo.ItemLabel>
<DetailedInfo.ItemValue>
<Skeleton loading={ isPlaceholderData }>
<Link href={ route({ pathname: '/batches/[number]', query: { number: data.internal_id.toString(), tab: 'blocks' } }) }>
<Link href={ route({ pathname: '/batches/[number]', query: { number: data.number.toString(), tab: 'blocks' } }) }>
{ blocksCount.toLocaleString() } block{ blocksCount === 1 ? '' : 's' }
</Link>
{ ' ' }in this batch
......
......@@ -26,7 +26,7 @@ const OptimisticL2TxnBatchesListItem = ({ item, isLoading }: Props) => {
<ListItemMobileGrid.Label isLoading={ isLoading }>Batch ID</ListItemMobileGrid.Label>
<ListItemMobileGrid.Value>
<BatchEntityL2 number={ item.internal_id } isLoading={ isLoading }/>
<BatchEntityL2 number={ item.number } isLoading={ isLoading }/>
</ListItemMobileGrid.Value>
{ item.batch_data_container && (
......@@ -59,22 +59,22 @@ const OptimisticL2TxnBatchesListItem = ({ item, isLoading }: Props) => {
<ListItemMobileGrid.Label isLoading={ isLoading }>L2 blocks</ListItemMobileGrid.Label>
<ListItemMobileGrid.Value>
<Link
href={ route({ pathname: '/batches/[number]', query: { number: item.internal_id.toString(), tab: 'blocks' } }) }
href={ route({ pathname: '/batches/[number]', query: { number: item.number.toString(), tab: 'blocks' } }) }
loading={ isLoading }
minW="40px"
>
{ item.l2_block_end - item.l2_block_start + 1 }
{ item.l2_end_block_number - item.l2_start_block_number + 1 }
</Link>
</ListItemMobileGrid.Value>
<ListItemMobileGrid.Label isLoading={ isLoading }>Txn</ListItemMobileGrid.Label>
<ListItemMobileGrid.Value>
<Link
href={ route({ pathname: '/batches/[number]', query: { number: item.internal_id.toString(), tab: 'txs' } }) }
href={ route({ pathname: '/batches/[number]', query: { number: item.number.toString(), tab: 'txs' } }) }
loading={ isLoading }
minW="40px"
>
{ item.transaction_count }
{ item.transactions_count }
</Link>
</ListItemMobileGrid.Value>
......
......@@ -28,7 +28,7 @@ const OptimisticL2TxnBatchesTable = ({ items, top, isLoading }: Props) => {
<TableBody>
{ items.map((item, index) => (
<OptimisticL2TxnBatchesTableItem
key={ item.internal_id + (isLoading ? String(index) : '') }
key={ item.number + (isLoading ? String(index) : '') }
item={ item }
isLoading={ isLoading }
/>
......
......@@ -24,7 +24,7 @@ const OptimisticL2TxnBatchesTableItem = ({ item, isLoading }: Props) => {
return (
<TableRow>
<TableCell verticalAlign="middle">
<BatchEntityL2 number={ item.internal_id } isLoading={ isLoading }/>
<BatchEntityL2 number={ item.number } isLoading={ isLoading }/>
</TableCell>
<TableCell verticalAlign="middle">
{ item.batch_data_container ? <OptimisticL2TxnBatchDA container={ item.batch_data_container } isLoading={ isLoading }/> : '-' }
......@@ -45,22 +45,22 @@ const OptimisticL2TxnBatchesTableItem = ({ item, isLoading }: Props) => {
</TableCell>
<TableCell verticalAlign="middle" isNumeric>
<Link
href={ route({ pathname: '/batches/[number]', query: { number: item.internal_id.toString(), tab: 'blocks' } }) }
href={ route({ pathname: '/batches/[number]', query: { number: item.number.toString(), tab: 'blocks' } }) }
loading={ isLoading }
justifyContent="flex-end"
minW="40px"
>
{ item.l2_block_end - item.l2_block_start + 1 }
{ item.l2_end_block_number - item.l2_start_block_number + 1 }
</Link>
</TableCell>
<TableCell verticalAlign="middle" isNumeric>
<Link
href={ route({ pathname: '/batches/[number]', query: { number: item.internal_id.toString(), tab: 'txs' } }) }
href={ route({ pathname: '/batches/[number]', query: { number: item.number.toString(), tab: 'txs' } }) }
loading={ isLoading }
justifyContent="flex-end"
minW="40px"
>
{ item.transaction_count }
{ item.transactions_count }
</Link>
</TableCell>
</TableRow>
......
......@@ -53,7 +53,7 @@ const ScrollL2TxnBatchDetails = ({ query }: Props) => {
return null;
}
const blocksCount = data.end_block - data.start_block + 1;
const blocksCount = data.end_block_number - data.start_block_number + 1;
return (
<Grid
......@@ -123,7 +123,7 @@ const ScrollL2TxnBatchDetails = ({ query }: Props) => {
</DetailedInfo.ItemLabel>
<DetailedInfo.ItemValue>
<Link loading={ isPlaceholderData } href={ route({ pathname: '/batches/[number]', query: { number: data.number.toString(), tab: 'txs' } }) }>
{ data.transaction_count.toLocaleString() } transaction{ data.transaction_count === 1 ? '' : 's' }
{ data.transactions_count.toLocaleString() } transaction{ data.transactions_count === 1 ? '' : 's' }
</Link>
</DetailedInfo.ItemValue>
......
......@@ -100,7 +100,7 @@ const ScrollL2TxnBatchesListItem = ({ item, isLoading }: Props) => {
fontWeight={ 600 }
minW="40px"
>
{ (item.end_block - item.start_block + 1).toLocaleString() }
{ (item.end_block_number - item.start_block_number + 1).toLocaleString() }
</Link>
</ListItemMobileGrid.Value>
......@@ -112,7 +112,7 @@ const ScrollL2TxnBatchesListItem = ({ item, isLoading }: Props) => {
fontWeight={ 600 }
minW="40px"
>
{ item.transaction_count.toLocaleString() }
{ item.transactions_count.toLocaleString() }
</Link>
</ListItemMobileGrid.Value>
......
......@@ -83,7 +83,7 @@ const TxnBatchesTableItem = ({ item, isLoading }: Props) => {
href={ route({ pathname: '/batches/[number]', query: { number: item.number.toString(), tab: 'blocks' } }) }
loading={ isLoading }
>
{ (item.end_block - item.start_block + 1).toLocaleString() }
{ (item.end_block_number - item.start_block_number + 1).toLocaleString() }
</Link>
</TableCell>
<TableCell verticalAlign="middle" isNumeric>
......@@ -91,7 +91,7 @@ const TxnBatchesTableItem = ({ item, isLoading }: Props) => {
href={ route({ pathname: '/batches/[number]', query: { number: item.number.toString(), tab: 'txs' } }) }
loading={ isLoading }
>
{ item.transaction_count.toLocaleString() }
{ item.transactions_count.toLocaleString() }
</Link>
</TableCell>
</TableRow>
......
......@@ -58,7 +58,7 @@ const ZkEvmTxnBatchesListItem = ({ item, isLoading }: Props) => {
fontWeight={ 600 }
minW="40px"
>
{ item.transaction_count }
{ item.transactions_count }
</Link>
</ListItemMobileGrid.Value>
......
......@@ -51,7 +51,7 @@ const TxnBatchesTableItem = ({ item, isLoading }: Props) => {
my={ 1 }
loading={ isLoading }
>
{ item.transaction_count }
{ item.transactions_count }
</Link>
</TableCell>
<TableCell pr={ 12 } verticalAlign="middle">
......
......@@ -58,7 +58,7 @@ const ZkSyncL2TxnBatchDetails = ({ query }: Props) => {
return null;
}
const txNum = data.l2_transaction_count + data.l1_transaction_count;
const txNum = data.l2_transactions_count + data.l1_transactions_count;
return (
<Grid
......
......@@ -58,7 +58,7 @@ const ZkSyncTxnBatchesListItem = ({ item, isLoading }: Props) => {
fontWeight={ 600 }
minW="40px"
>
{ item.transaction_count }
{ item.transactions_count }
</Link>
</ListItemMobileGrid.Value>
......
......@@ -51,7 +51,7 @@ const ZkSyncTxnBatchesTableItem = ({ item, isLoading }: Props) => {
minW="40px"
my={ 1 }
>
{ item.transaction_count }
{ item.transactions_count }
</Link>
</TableCell>
<TableCell verticalAlign="middle">
......
......@@ -56,7 +56,7 @@ const ArbitrumL2TxnWithdrawalsClaimButton = ({ messageId, txHash, completionTxHa
const hash = await sendTransactionAsync({
data: response.calldata as `0x${ string }`,
to: response.outbox_address as `0x${ string }`,
to: response.outbox_address_hash as `0x${ string }`,
});
setClaimTxHash(hash);
......
......@@ -34,7 +34,7 @@ const ArbitrumL2TxnWithdrawalsListItem = ({ data, isLoading, txHash }: Props) =>
<ListItemMobileGrid.Label isLoading={ isLoading }>Receiver</ListItemMobileGrid.Label>
<ListItemMobileGrid.Value>
<AddressEntityL1 address={{ hash: data.token?.destination || data.destination }} isLoading={ isLoading }/>
<AddressEntityL1 address={{ hash: data.token?.destination_address_hash || data.destination_address_hash }} isLoading={ isLoading }/>
</ListItemMobileGrid.Value>
<ListItemMobileGrid.Label isLoading={ isLoading }>Value</ListItemMobileGrid.Label>
......
......@@ -24,7 +24,7 @@ const ArbitrumL2TxnWithdrawalsTableItem = ({ data, isLoading, txHash }: Props) =
<Skeleton loading={ isLoading }>{ data.id }</Skeleton>
</TableCell>
<TableCell verticalAlign="middle">
<AddressEntityL1 address={{ hash: data.token?.destination || data.destination }} isLoading={ isLoading }/>
<AddressEntityL1 address={{ hash: data.token?.destination_address_hash || data.destination_address_hash }} isLoading={ isLoading }/>
</TableCell>
<TableCell verticalAlign="middle" isNumeric>
<Skeleton loading={ isLoading }>
......
......@@ -26,7 +26,7 @@ const ArbitrumL2TxnWithdrawalsValue = ({ data }: Props) => {
...data.token,
decimals: String(data.token.decimals),
type: 'ERC-20',
holders: null,
holders_count: null,
exchange_rate: null,
total_supply: null,
circulating_market_cap: null,
......
......@@ -22,8 +22,8 @@ const ValidatorsCounters = () => {
<Box columnGap={ 3 } rowGap={ 3 } mb={ 6 } display="grid" gridTemplateColumns={{ base: '1fr', lg: 'repeat(2, 1fr)' }}>
<StatsWidget
label="Total validators"
value={ Number(countersQuery.data.validators_counter).toLocaleString() }
diff={ Number(countersQuery.data.new_validators_counter_24h).toLocaleString() }
value={ Number(countersQuery.data.validators_count).toLocaleString() }
diff={ Number(countersQuery.data.new_validators_count_24h).toLocaleString() }
isLoading={ countersQuery.isPlaceholderData }
/>
</Box>
......
......@@ -22,8 +22,8 @@ const ValidatorsCounters = () => {
<Box columnGap={ 3 } rowGap={ 3 } mb={ 6 } display="grid" gridTemplateColumns={{ base: '1fr', lg: 'repeat(2, 1fr)' }}>
<StatsWidget
label="Total validators"
value={ Number(countersQuery.data.validators_counter).toLocaleString() }
diff={ Number(countersQuery.data.new_validators_counter_24h).toLocaleString() }
value={ Number(countersQuery.data.validators_count).toLocaleString() }
diff={ Number(countersQuery.data.new_validators_count_24h).toLocaleString() }
isLoading={ countersQuery.isPlaceholderData }
/>
<StatsWidget
......
......@@ -53,7 +53,7 @@ const VerifiedAddressesListItem = ({ item, application, onAdd, onEdit, isLoading
const token = {
type: 'ERC-20' as const,
icon_url: application.iconUrl,
address: application.tokenAddress,
address_hash: application.tokenAddress,
name: item.metadata.tokenName,
symbol: '',
};
......
......@@ -54,7 +54,7 @@ const VerifiedAddressesTableItem = ({ item, application, onAdd, onEdit, isLoadin
const token = {
type: 'ERC-20' as const,
icon_url: application.iconUrl,
address: application.tokenAddress,
address_hash: application.tokenAddress,
name: item.metadata.tokenName,
symbol: '',
};
......
......@@ -68,7 +68,7 @@ const VerifiedContractsListItem = ({ data, isLoading }: Props) => {
<Flex columnGap={ 3 }>
<Skeleton loading={ isLoading } fontWeight={ 500 }>Txs count</Skeleton>
<Skeleton loading={ isLoading } color="text.secondary">
<span>{ data.transaction_count ? data.transaction_count.toLocaleString() : '0' }</span>
<span>{ data.transactions_count ? data.transactions_count.toLocaleString() : '0' }</span>
</Skeleton>
</Flex>
<Flex columnGap={ 3 }>
......
......@@ -69,7 +69,7 @@ const VerifiedContractsTableItem = ({ data, isLoading }: Props) => {
</TableCell>
<TableCell isNumeric>
<Skeleton loading={ isLoading } display="inline-block" my={ 1 }>
{ data.transaction_count ? data.transaction_count.toLocaleString() : '0' }
{ data.transactions_count ? data.transactions_count.toLocaleString() : '0' }
</Skeleton>
</TableCell>
<TableCell>
......
......@@ -19,7 +19,7 @@ const WatchListAddressItem = ({ item, isLoading }: { item: WatchlistAddress; isL
name: config.chain.currency.name || '',
icon_url: '',
symbol: '',
address: '',
address_hash: '',
type: 'ERC-20' as const,
}), [ ]);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment