基于区块链的毕业设计eth-crawl – eth爬行

本文提供基于区块链的毕业设计国外最新区块链项目源码下载,包括solidity,eth,fabric等blockchain区块链,基于区块链的毕业设计eth-crawl – eth爬行 是一篇很好的国外资料

eth-crawl

BigQuery, ElasticSearch 을 사용하여 이더 데이터를 크롤링/저장하는 컴포넌트.

  1. 개요

    • BigQuery의 Blocks, Transactions, Logs, Tokens (+ Contracts) 데이터를 가져온 뒤, 이를 ElasticSearch에 Insert하는 크롤러 컴포넌트.
  2. 세부 로직 및 이슈사항

    • Blocks, Tokens

      • BigQuery에 날짜별로 쿼리하여 (2015-07-30 ~ 현재) 데이터를 긁어온다.
      • 긁어온 즉시 바로 ElasticSearch에 삽입한다.
    • Transactions, Logs

      • 시간 계산 결과 기한 내에 데이터 크롤링이 힘든 관계로, 아래와 같은 절차로 소스 데이터를 확보한 뒤 ES에 삽입한다.
        • BigQuery UI 상에서 용량이 허락하는 한도 내의 기간별 데이터를 쿼리한다
        • BigQuery 상에서 임의의 테이블을 만든 뒤, 쿼리 결과물을 삽입한다.
        • 이를 Google Cloud Storage(이하 GCS)에 CSV 형태로 저장한다.
        • GCS에 담긴 CSV들을 일괄 저장한다. 이를 반복한다.
      • 이렇게 다운받은 CSV 파일들을 로컬에서 파싱하여, ES에 삽입한다.
    • Transactions, Logs (deprecated, ~2021-08-17)

      • 위처럼 동일하게 BigQuery에서 날짜별로 쿼리하여 가져올 시, 데이터 양이 많아 (심지어 청크로 나눈다 할지라도) ElasticSearch.bulk로 데이터를 삽입할 수가 없다.
      • 고로 먼저 긁어온 Blocks ES를 활용하여, 먼저 날짜별 생성된 블록 넘버 리스트를 가져온 뒤, 이를 청크로 나누어 BigQuery에 WHERE DATE(block_timestamp) AND IN (block_number[]) 쿼리를 반복하는 이중 반복문 크롤링을 수행한다.
      • 이를 통해 한 번에 삽입하는 데이터의 양도 줄일 수 있고, BigQuery 처리 용량도 최소화할 수 있다.
        • Transaction
          • 이더, 가스 등의 값들은 Range 검색을 위하여, AnyBlock을 참고하여 raw 데이터 및 number형 데이터를 같이 삽입한다.
          • receipt에 contract_address를 가지고 있는 tx는 deploy tx 임으로 (ES 처리 용량을 아끼기 위하여) input을 제외하여 받는다.
          • tx 양이 많아지기 시작하는 2016년 5월 즈음부터 crawl-txlog.ts 로 크롤링을 시작하였다. (그전까진 crawl.tsblocks, tokens와 동일하게 데이터를 추출하였다.)
          • 중간에 키바나가 제대로 작동을 안하는 이슈가 있었는데, 도커에 할당된 최대 용량을 늘려줌으로서 해결되었다. 용량을 늘려주고 나서, 블록을 풀어줘야하기 때문에 index.blocks.read_only_allow_delete: false 로 블록 상태를 해제할 수 있다.
  3. 마이그레이션

  • [2021-08-20]:
    • Reindex API로 데이터를 migrate하려고 했으나, Reindex가 새 ES에서 기존 ES의 데이터를 끌어다 가져오는 방식으로 설계되어있다보니, Cloud에서 로컬에 접근할 수 있는 방법이 없으므로 해당 방법을 사용할 수 없었다. 그러므로 로컬에서 일일히 데이터를 꺼내서 Cloud에 집어넣는 방식을 채택하기로 결정하였다.
    • 10000개 이상의 데이터를 쿼리하기 위해서 Scroll API를 사용 + pagination 적인 call을 수행하기 위해 search/_pit 을 사용하기로 하였으나, 두개를 양립하여 쓸 수 없고, pit만으로 10000개 이상의 데이터를 페이지네이션적으로 call할 수 있음을 확인하여 _pit만을 사용하기로 결정하였다.
  1. 참고) 처리 중인 데이터
  • Blocks: hash, timestamp, number, miner
  • Transactions: hash, from_address, to_address, value, gas_price, gas, input, receipt_cumulative_gas_used, receipt_gas_used, receipt_contract_address, receipt_status, block_hash, block_timestamp
  • Logs: transaction_hash, address, data, topics, block_timestamp
  • Tokens: address, name, symbol, decimals
  • Contracts: address, is_erc20, is_erc721

eth-crawl

BigQuery,ElasticSearch을 사용하여 이더 데이터를 크롤링/저장하는 컴포넌트.

  1. 개요 大查询의 块、事务、日志、令牌(+合同)데이터를 가져온 뒤, 이를 弹性搜索에 插入하는 크롤러 컴포넌트.
  2. 세부 로직 및 이슈사항 块、令牌和查询에 날짜별로 쿼리하여 (2015-07-30 ~ 현재) 데이터를 긁어온다. 긁어온 즉시 바로 弹性搜索에 삽입한다. 事务、日志시간 계산 결과 기한 내에 데이터 크롤링이 힘든 관계로, 아래와 같은 절차로 소스 데이터를 확보한 뒤 锿에 삽입한다. BigQueryUI상에서 용량이 허락하는 한도 내의 기간별 데이터를 쿼리한다 大查询상에서 임의의 테이블을 만든 뒤, 쿼리 결과물을 삽입한다. 이를 谷歌云存储(이하 地面军事系统)에 CSV형태로 저장한다. 地面军事系统에 담긴 CSV들을 일괄 저장한다. 이를 반복한다. 이렇게 다운받은 CSV파일들을 로컬에서 파싱하여, 锿에 삽입한다. 事务、日志(已弃用,~2021-08-17)위처럼 동일하게 大查询에서 날짜별로 쿼리하여 가져올 시, 데이터 양이 많아 (심지어 청크로 나눈다 할지라도) 弹性体로 데이터를 삽입할 수가 없다. 고로 먼저 긁어온 阻塞를 활용하여, 먼저 날짜별 생성된 블록 넘버 리스트를 가져온 뒤, 이를 청크로 나누어 大查询에 其中日期(块时间戳)和IN(块编号[])쿼리를 반복하는 이중 반복문 크롤링을 수행한다. 이를 통해 한 번에 삽입하는 데이터의 양도 줄일 수 있고, 大查询처리 용량도 최소화할 수 있다. 交易이더, 가스 등의 값들은 范围검색을 위하여, 任意块을 참고하여 未经加工的데이터 및 数형 데이터를 같이 삽입한다. 收据에 合约地址를 가지고 있는 德克萨斯州는 部署tx임으로 (锿처리 용량을 아끼기 위하여) 输入을 제외하여 받는다. 德克萨斯州양이 많아지기 시작하는 2016년 5.월 즈음부터 crawl-txlog.ts로 크롤링을 시작하였다. (그전까진 爬虫로 块、代币와 동일하게 데이터를 추출하였다.) 중간에 키바나가 제대로 작동을 안하는 이슈가 있었는데, 도커에 할당된 최대 용량을 늘려줌으로서 해결되었다. 용량을 늘려주고 나서, 블록을 풀어줘야하기 때문에 index.blocks.readu onlyu allowu delete:false로 블록 상태를 해제할 수 있다.
  3. 마이그레이션

  • [2021-08-20]:
    • Reindex API로 데이터를 migrate하려고 했으나, Reindex가 새 ES에서 기존 ES의 데이터를 끌어다 가져오는 방식으로 설계되어있다보니, Cloud에서 로컬에 접근할 수 있는 방법이 없으므로 해당 방법을 사용할 수 없었다. 그러므로 로컬에서 일일히 데이터를 꺼내서 Cloud에 집어넣는 방식을 채택하기로 결정하였다.
    • 10000개 이상의 데이터를 쿼리하기 위해서 Scroll API를 사용 + pagination 적인 call을 수행하기 위해 search/_pit 을 사용하기로 하였으나, 두개를 양립하여 쓸 수 없고, pit만으로 10000개 이상의 데이터를 페이지네이션적으로 call할 수 있음을 확인하여 _pit만을 사용하기로 결정하였다.
  1. 참고) 처리 중인 데이터
  • Blocks: hash, timestamp, number, miner
  • Transactions: hash, from_address, to_address, value, gas_price, gas, input, receipt_cumulative_gas_used, receipt_gas_used, receipt_contract_address, receipt_status, block_hash, block_timestamp
  • Logs: transaction_hash, address, data, topics, block_timestamp
  • Tokens: address, name, symbol, decimals
  • Contracts: address, is_erc20, is_erc721

部分转自网络,侵权联系删除区块链源码网

www.interchains.cc

https://www.interchains.cc/24300.html

区块链毕设网(www.interchains.cc)全网最靠谱的原创区块链毕设代做网站 部分资料来自网络,侵权联系删除! 最全最大的区块链源码站 ! QQ3039046426
区块链知识分享网, 以太坊dapp资源网, 区块链教程, fabric教程下载, 区块链书籍下载, 区块链资料下载, 区块链视频教程下载, 区块链基础教程, 区块链入门教程, 区块链资源 » 基于区块链的毕业设计eth-crawl – eth爬行

提供最优质的资源集合

立即查看 了解详情