이 페이지에서는 Optimism용 블록체인 분석 쿼리 예시를 제공합니다.
BigQuery 사용에 관한 안내는 BigQuery 문서를 참고하세요.
가장 먼저 색인이 생성된 블록과 가장 최근에 색인이 생성된 블록 보기
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
다음 쿼리가 편집기 필드에 로드됩니다.
SELECT
MIN(block_number) AS `First block`,
MAX(block_number) AS `Newest block`,
COUNT(1) AS `Total number of blocks`
FROM
bigquery-public-data.goog_blockchain_optimism_mainnet_us.blocks;
결과 예시:
| 첫 번째 차단 | 최신 블록 | 총 블록 수 |
|---|---|---|
| 0 | 109516624 | 109516625 |
Optimism Standard Bridge를 통해 Optimism으로 브리징된 L1 애셋 보기
이 쿼리는 공식 Optimism Standard Bridge를 사용하여 Optimism으로 브리징된 L1 애셋의 최종 입금 이벤트 로그를 찾는 방법을 보여줍니다. Optimism 표준 브리지는 Ethereum에서 Optimism으로 네이티브 Ether 및 특정 ERC-20 토큰의 브리징을 지원합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
다음 쿼리가 편집기 필드에 로드됩니다.
-- UDF for easier string manipulation.
CREATE TEMP FUNCTION ParseSubStr(hexStr STRING, startIndex INT64, endIndex INT64)
RETURNS STRING
LANGUAGE js
AS r"""
if (hexStr.length < 1) {
return hexStr;
}
return hexStr.substring(startIndex, endIndex);
""";
-- UDF to translate hex numbers into decimal representation.
CREATE TEMP FUNCTION HexToDec(hexStr STRING)
RETURNS BIGNUMERIC
LANGUAGE js
AS r"""
return parseInt(hexStr, 16)
""";
-- UDF to strip leading zeroes from 66 character addresses.
-- Optimism addresses as returned from the OP node are 66 characters long.
-- Format: "0x" prefix + 64 character (32-byte) address.
-- Strip the leading zeroes so that it's easier to look up addresses in block explorer.
CREATE TEMP FUNCTION StripLeadingZeroes(hex STRING, numZeroes INT64)
RETURNS STRING
LANGUAGE js
AS r"""
function _stripLeadingZeroes(addr, numZeroes) {
if (addr.length != 66) {
return addr;
}
return '0x'.concat(addr.substring(numZeroes));
}
return _stripLeadingZeroes(hex, numZeroes);
""";
-- Find finalized deposits into Optimism (L2) where assets were transferred
-- from the L1 (Ethereum) to the L2 (Optimism) via the Optimism Standard Bridge
-- at block X.
SELECT
block_number,
transaction_hash,
CONCAT("https://optimistic.etherscan.io/tx/", transaction_hash) AS txn_optimistic_etherscan,
StripLeadingZeroes(topics[OFFSET(1)], 26) AS L1Token,
StripLeadingZeroes(topics[OFFSET(2)], 26) AS L2Token,
StripLeadingZeroes(topics[OFFSET(3)], 26) AS from_address,
StripLeadingZeroes(ParseSubStr(l.data, 0, 66), 26) AS to_address,
HexToDec(ParseSubStr(l.data, 66, 130)) AS amount_deposited,
FROM
`bigquery-public-data.goog_blockchain_optimism_mainnet_us.logs` as l
WHERE
ARRAY_LENGTH(l.topics) > 0 -- Check for non-empty topics first to short-circuit boolean evaluation.
AND
-- DepositFinalized:
-- https://github.com/ethereum-optimism/optimism/blob/e24d77204ede3635d57253f5b6306be261e109b5/packages/contracts-ts/abis.json#L10319
l.topics[OFFSET(0)] = "0xb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89"
AND
block_number = 109223310;
결과 예시:
| 번호 차단 | Txn Hash | Txn Optimistic Etherscan | L1 토큰 | L2 토큰 | 보낸사람 주소 | 받는 사람 주소 | 입금액 |
|---|---|---|---|---|---|---|---|
| 109223310 | 0xec5885cdfe06809206d3898206e855b7fdac7c95792974f33462b90c7a91f126 | https://optimistic.etherscan.io/tx/0xec5885cdfe06809206d3898206e855b7fdac7c95792974f33462b90c7a91f126 | 0x0000000000000000000000000000000000000000 | 0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000 | 0x777a89166b1265ec9d2cab2df5db59d1f50621d1 | 0x777a89166b1265ec9d2cab2df5db59d1f50621d1 | 1000000000000000 |
| 109223310 | 0xa04d89f7a8cbbafd81fc315d3f76ca8d8dda4e0177225ff62d266b34b2530454 | https://optimistic.etherscan.io/tx/0xa04d89f7a8cbbafd81fc315d3f76ca8d8dda4e0177225ff62d266b34b2530454 | 0xd533a949740bb3306d119cc777fa900ba034cd52 | 0x0994206dfe8de6ec6920ff4d779b0d950605fb53 | 0x9e7f8d6e87ec1c783d01fcc90ebf6ec766b0036c | 0xcea806562b757aeffa9fe9d0a03c909b4a204254 | 1022823927640195072000 |