区块链加载解析方法

一.区块链加载解析

对于数据的下载主要包括三种方式:

1.实现比特币网络协议,通过该协议和其他比特币全节点建立联系,然后同步区块数据。

2.通过比特币节点提供的API服务下载区块链数据。

3.通过blickchain.com提供的rest服务下载区块数据。

1.搭建提供公链数据服务的全节点

全节点是拥有完整区块链帐本资料的节点,具备独立验证的能力来确认交易之有效性。具体来说全节点主要在处理下列四件事:

  • 储存所有历史交易信息,资料公开透明
  • 监测矿工挖出来的新区块,验证其合法性后同步该区块
  • 监测区块链网络中的新交易信息,验证每个交易的合法性
  • 将验证过的「交易/区块信息」广播给全网络节点

1.部署节点(参考ETH全节点搭建教程(2024) | 登链社区 | 区块链技术社区 )

选择要提供数据服务的公链,比如以太坊、比特币、波卡等。以以太坊为例:

  1. 服务器配置:系统:Linux CPU:16核 内存:128 GB 内存 带宽:1G以上 硬盘:大于4T固态SSD可用空间数据盘
  2. 系统环境:git、golang等
  3. 节点安装部署:
 # 安装ETH版本的prysmcd /		                #进入根目录mkdir eth	                #创建eth文件夹cd ethmkdir consensusmkdir executioncd consensusmkdir prysm && cd prysmcurl  https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh ./prysm.sh beacon-chain generate-auth-secret
# 安装ETH版本的gethcd /eth		                #进入eth目录git clone  https://github.com/ethereum/go-ethereum.git make geth cd go-ethereum/build/bin
# 启动ETH信标客户端
screen -S prysm   #创建prysm启动窗口
./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --jwt-secret=/eth/consensus/prysm/jwt.hex
# 启动ETH执行客户端
screen -S eth   #创建eth启动窗口./geth --cache 10240   --datadir ./node --ws --ws.port 8546 --ws.addr 0.0.0.0 --ws.origins '*' --authrpc.addr localhost --authrpc.port 8551 --authrpc.vhosts localhost --maxpeers=300 --authrpc.jwtsecret /eth/consensus/prysm/jwt.hex --state.scheme=path

d. 节点状态监听

geth attach  http://localhost:8545     #端口如果修改配置文件了,就填写配置文件的端口即可 
> eth.syncing	                      #查看当前区块情况,结果为false表示已同步最新区块# currentBlock: 14290861, #当前同步到区块高度 highestBlock: 14297354, #主网当前高度 knownStates:297473485, pulledStates: 297473485, startingBlock: 14270385# 同步到最高区块用了大概72小时左右就追到了最高区块。

2.拉取数据备份到本地。

3.使用数据分析服务。

(由于数据量过大暂未测试)

2.通过比特币节点提供的API服务下载区块链数据。

  1. 使用区块链浏览器(比如Blockchain Explorer)可以直观地查看特定地址的交易记录。你只需在区块链浏览器中输入地址,就能查看到相关的交易信息、交易金额、时间戳等。

Bitcoin:

在https://www.okx.com/zh-hans/web3/explorer/ 中记录了44个主流的虚拟货币网站,包括:

BTC、ETH、BNB Chain、Polygon、XL、TRON、Scroll、USDT、Solana、ArbitrumOne、OP Mainnet等

        2. 网站提供相关的API接口:

有些区块链提供了API接口,允许开发者通过编程方式查询特定地址的交易记录。你可以查阅该区块链的开发文档,了解如何使用他们的API接口。

按照地址查询交易列表,查询 BTC 、LTC、 Doge 、BCH、Cardano 等链,比如:

curl --location --request GET 'https://www.okx.com/api/v5/waas/wallet/post-transaction/transactions-by-address?accountId=44486e05-3235-2f8e-5fe2-a8ab46217863&chains=111,333&chainIndex=1&tokenAddress=xxx&cursor=1&limit=20&begin=168000021888"&end=168000031888 \
--header 'Content-Type: application/json' \
--header 'OK-ACCESS-PROJECT: 86af********d1bc' \
--header 'OK-ACCESS-KEY: 37c541a1-****-****-****-10fe7a038418' \
--header 'OK-ACCESS-SIGN: leaV********3uw=' \
--header 'OK-ACCESS-PASSPHRASE: 1****6' \
--header 'OK-ACCESS-TIMESTAMP: 2023-10-18T12:21:41.274Z' \
{"code": "0","data": [{"chainIndex": 3,  "orderId": "string", "txHash": "0xcbf411766d65f3cf92839ababa73c4afec69a83442e8b67a68b5104b50a04ejb","fromAddr": "0x5ffe4eabaf030jg7a1a75d309ead7ad31a0ef980","toAddr": "0x5ffe4eabaf03ff67a1a75d309ead7ad31a0ef817","txType": "2","txTime": "0","txStatus": "1","assetSummary": [{"tokenAmount": "5.5","tokenAmountNum": "5","direction":"1","precision": "8","tokenSymbol": "ETH","tokenName": "ETH","tokenLogoUrl": "http://","tokenAddress": ""}] }],"msg": "success"
}

按照钱包IP查找所有或某条链的交易历史:

curl --location --request GET 'https://www.okx.com/api/v5/waas/wallet/post-transaction/transactions?accountId=44486e05-3235-2f8e-5fe2-a8ab46217863&chains=111,333&chainIndex=1&tokenAddress=xxx&cursor=1&limit=20&begin=168000021888"&end=168000031888 \
--header 'Content-Type: application/json' \
--header 'OK-ACCESS-PROJECT: 86af********d1bc' \
--header 'OK-ACCESS-KEY: 37c541a1-****-****-****-10fe7a038418' \
--header 'OK-ACCESS-SIGN: leaV********3uw=' \
--header 'OK-ACCESS-PASSPHRASE: 1****6' \
--header 'OK-ACCESS-TIMESTAMP: 2023-10-18T12:21:41.274Z' \、

响应体

{"code": "0","data": [{"chainIndex": "3",  "orderId": "string", "txHash": "0xcbf411766d65f3cf92839ababa73c4afec69a83442e8b67a68b5104b50a04ejb","fromAddr": "0x5ffe4eabaf030jg7a1a75d309ead7ad31a0ef980","toAddr": "0x5ffe4eabaf03ff67a1a75d309ead7ad31a0ef817","txType": "2","txTime": "0","txStatus": "1","assetSummary": [{"tokenAmount": "5.5","tokenAmountNum": "5","direction":"1","precision": "8","tokenSymbol": "ETH","tokenName": "ETH","tokenLogoUrl": "http://","tokenAddress": ""}] }],"msg": "success"
}

3.通过blickchain.com提供的rest服务下载区块数据。

第一个接口:通过区块高度查询区块哈希。我们以创世区块(Genesis Block,高度为0)为例,调用这个接口:https://blockchain.info/block-height/0?format=json,下面是返回的数据(JSON格式,省略了大部分无关内容):

{"blocks": [{"hash": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f","ver": 1,"prev_block":"0000000000000000000000000000000000000000000000000000000000000000",...}]
}

第二个接口:通过区块哈希查询区块原始数据。我们还是以创世区块为例,调用这个接口:https://blockchain.info/rawblock/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f?format=hex,下面是返回的数据(16进制字符串,换行是为了方便展示而人为添加的):​​​​​​

0100000000000000000000000000000000000000000000000000000000000000
000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa
4b1e5e4a29ab5f49ffff001d1dac2b7c01010000000100000000000000000000
00000000000000000000000000000000000000000000ffffffff4d04ffff001d
0104455468652054696d65732030332f4a616e2f32303039204368616e63656c
6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f75742066
6f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe554827
1967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4
f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000

解析:

区块头是前面 80 个字节,最开始第一个字节是版本号,往后 32 个字节是前一个区块的哈希值,由于这是第一个区块,它的前面没有区块,所以 32 个字节都是 0,再往后 32 个字节是交易列表的哈希树,再往后 4 个字节是时间,内容是 29 AB 5F 49,转换成后的时间戳是 1231006505,再往后是当前难度,最后 4 个字节是随机数,如下表:

字段

含义

长度

内容

Version

版本号

4

01

PreviousBlockHash

前一个区块头的哈希值

32

0000000000000000000000000000000000000000000000000000000000000000000000

MerkleRoot

交易列表的哈希树

32

3ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a

Time

时间戳

4

29ab5f49

Bits

挖矿难度

4

ffff001d

Nonce

随机数

4

区块体:第 81 个字节开始是区块体,区块体第一个字节是交易的数量,内容是 01,说明只有一笔交易。往后的字节是交易体,交易体字段如下表,有一个需要注意的地方,Value 字段是 BTC 的数据,这里是小端格式,内容是十六进制值 0x00f2052a01000000 转化为大端格式十六进制值0x000000012a05f200,再转化为十进制值为 5000000000,比特币最小单位是聪,表示该交易输出比特币是 50 亿聪,也就是挖出该区块得到的 50 个比特币奖励。

字段

含义

长度

内容

Version

版本号

4

01000000

InputCount

输入的条数

1

01

UTXOHash

UTXO交易哈希值

32

0000000000000000000000000000000000000000000000000000000000000000

outputIndex

输出索引

4

ffffffff

ScriptLen

脚本长度

1

十六进制 4D,十进制 77

Script

脚本内容

不定

��EThe Times 03/Jan/2009 Chancellor on brink of second bailout for banks

Sequence

字节序列号

4

ffffffff

outputCount

输出索引

1

01

Value

BTC数值

8

00f2052a01000000,转换为 5000000000

lockScriptLen

锁定脚本长度

1

十六进制 43,十进制 67

lockScriptBody

锁定脚本长度

不定

lockScriptTime

锁定时间

4

00000000

ÿÿETime 03/Jan/2009 Chancellor on brink of second bailout for banks这是比特币的创世区块中coinbase交易的文本部分,按照ASCII编码解码后的内容。

为了说明清晰的说明交易内容,可以查看最新的一个区块链的数据块https://blockchain.info/rawblock/00000000000000000001d1ddded79928d137b52784731b17b70ad56a21f7e666

选取其中一笔交易:

{"hash": "1b7fc239d4c7d04356a90e274a328bb06fb8e32f540bab79778072af1ee27a6a","ver": 2,"vin_sz": 1,"vout_sz": 1,"size": 219,"weight": 465,"fee": 2206,"relayed_by": "0.0.0.0","lock_time": 0,"tx_index": 3746432390917712,"double_spend": false,"time": 1719985042,"block_index": 850489,"block_height": 850489,"inputs": [{"sequence": 4294967295,"witness": "0340d1811e193217f655131d151c436e9896767101d39812500865f87889261b539951bfb12ca9a609abbdc3d80d6816ecb198914cd5c1f6f16f6d91197262534dbf220063036f7264510a746578742f706c61696e000d3835303438392e6269746d61706821c1c72952c171396617fbb3a4e0dbb8f4e92eb5835738b3ba0a4c6f0c11ef0c920b","script": "","index": 0,"prev_out": {"type": 0,"spent": true,"value": 2500,"spending_outpoints": [{"tx_index": 3746432390917712,"n": 0}],"n": 404,"tx_index": 3166247195096694,"script": "5120f11de4ecaf49d876598ab136dc86d978449dda0af7aa53bea4ad63b2febdc0c6","addr": "bc1p7yw7fm90f8v8vkv2kymdepke0pzfmks27749804y443m9l4acrrqau96l9" //这里看到交易from的地址}}],"out": [{"type": 0,"spent": false,"value": 294,"spending_outpoints": [],"n": 0,"tx_index": 3746432390917712,"script": "00143c8c5b36c1500321291b25b5612f5d8cdb40dba8","addr": "bc1q8jx9kdkp2qpjz2gmyk6kzt6a3nd5pkagrd79fx"   //这里看到交易to的地址}]},

结束语:大家参考引用本文时注意加入来源引用

参考

  • api查询区块统计数据 https://www.okx.com/zh-hans/web3/build/docs/waas/walletapi-api-transaction-list
  • api查询区块统计数据 OKLink API接入指南 | OKLink技术对接 | 欧科云链
  • 钱包:Web3通识课2-助记词、钱包地址、资产的关系-钱包的分类-巴比特从0到1极速通关Web3.0系列课程_哔哩哔哩_bilibili
  • 钱包助记词规范: BIP39 钱包助记词规范 - 编程宝库
  • 下载区块数据: blog/articles/btc/2021_07_25_mybtc1_download_blocks.md at main · zxh0/blog · GitHub
  • ETH全节点搭建教程 ETH全节点搭建教程(2024) | 登链社区 | 区块链技术社区
  • 区块链架构之美:GitHub - Ice-Storm/structure-and-interpretation-of-blockchain: 区块链的构造和解释(structure-and-interpretation-of-blockchain)
  • 解读比特币区块链的数据结构: 解读比特币区块链的数据结构 – exchen's blog
  • 区块信息:https://www.kg.com/article/507675167221223424

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/40075.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《后端程序猿 · Caffeine 本地缓存》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻一周,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

EE架构大跃进:特斯拉、小鹏引领舱驾融合,从域控融合走向单SoC

作者 |肖恩 编辑 |德新 智能汽车发展到今天,整车电气架构已经从分布式架构逐渐迈向中央集成式架构,传统的小控制器被集成到按功能划分的大域控里,下一个阶段将是跨域的融合,通过不同功能域的集成实现中央计算平台的最终目标。 …

Visual Studio 中的键盘快捷方式

1. Visual Studio 中的键盘快捷方式 1.1. 可打印快捷方式备忘单 1.2. Visual Studio 的常用键盘快捷方式 本部分中的所有快捷方式都将全局应用(除非另有指定)。 “全局”上下文表示该快捷方式适用于 Visual Studio 中的任何工具窗口。 生成&#xff1…

[leetcode hot 150]第四百五十二题,用最少数量的箭引爆气球

题目: 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。…

[leetcode hot 150]第三题,无重复字符的最长子串

题目: 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串的长度。 可以使用"滑动窗口"的方法来解决这个问题。基本思路如下: 使用两个指针(start和end)来定义一个窗口移动end指针来扩大窗口,直到遇到重复字符如果遇到重复字符,移动s…

Vite: 插件流水线之核心编译能力

概述 Vite 在开发阶段实现了一个按需加载的服务器,每一个文件请求进来都会经历一系列的编译流程,然后 Vite 会将编译结果响应给浏览器。在生产环境下,Vite 同样会执行一系列编译过程,将编译结果交给 Rollup 进行模块打包这一系列…

什么是 URL ?

统一资源定位符(URL)是一个字符串,它指定了一个资源在互联网上的位置以及如何访问它。URL 是由几部分组成的,每部分都有其特定的作用: 协议/方案:这是 URL 的开头部分,表明了用于访问资源的协议…

antfu/ni 在 Windows 下的安装

问题 全局安装 ni 之后,第一次使用会有这个问题 解决 在 powershell 中输入 Remove-Item Alias:ni -Force -ErrorAction Ignore之后再次运行 ni Windows 11 下的 Powershell 环境配置 可以参考 https://github.com/antfu-collective/ni?tabreadme-ov-file#how …

Java---Mybatis详解二

雄鹰展翅凌空飞, 大江奔流不回头。 壮志未酬心未老, 豪情万丈任遨游。 巍巍高山攀顶峰, 滔滔黄河入海流。 风云变幻凭君舞, 踏遍天涯尽逍遥。 目录 一,环境准备 二,删除 三,删除(预编译SQL) 为什…

Celery入门教程

一.Celery介绍 1.Celery架构 Celery架构基于可插拔组件(pluggable components)和根据选择的消息传输(代理)(message transport(broker))协议实现的消息交换机制。 2.Celery模块 (1)任务模块 Task 包含异…

2024中国西安科博会暨硬科技产业博览会11月召开

2024第18届中国西安国际科学技术产业博览会暨硬科技产业博览会 时间:2024年11月3日-5日 地点:西安国际会展中心 主办单位:中国国际科学技术合作协会 陕西省科技资源统筹中心 协办单位:西安市科学技术协会 西安市中小企业协会、…

昇思25天学习打卡营第3天|yulang

今天主要学习03-张量Tensor,主要包含了处理创建张量、张量的属性、张量索引和张量运算,稀疏张量,有点看不太懂,感觉要开始入门到放弃了?张量在构建和训练深度学习模型中的实际应用,如卷积神经网络。 张量&a…

Django学习第三天

python manage.py runserver 使用以上的命令启动项目 实现新建用户数据功能 views.py文件代码 from django.shortcuts import render, redirect from app01 import models# Create your views here. def depart_list(request):""" 部门列表 ""&qu…

一键获取:Win11笔记本系统下载地址!

在笔记本电脑操作中,用户想安装一款适合笔记本电脑使用的Win11系统,但不知道在哪里可以下载到?接下来系统之家小编给大家分享Win11笔记本系统下载地址,有需要的小伙伴一键点击即可获取,快速安装系统,即可体…

<电力行业> - 《第15课:电力领域(一)》

1 电网 发电厂与最终用电用户(负荷)往往相距很远,因此电力需要由电厂”输送“到最终用户,即“输电环节“,电流的输送往往导致因线路发热造成损耗,所以在输送的时候都是通过变电升高电压,让电流…

计算机网络 | 期末复习

物理层: 奈氏准则:带宽(w Hz),在不考虑噪音的情况下,最大速率(2W)码元/秒 信噪比S/N:以分贝(dB)为度量单位。信噪比(dB)…

C++初学者指南-3.自定义类型(第一部分)-异常

C初学者指南-3.自定义类型(第一部分)-异常 文章目录 C初学者指南-3.自定义类型(第一部分)-异常简介什么是异常?第一个示例用途:报告违反规则的行为异常的替代方案标准库异常处理 问题和保证资源泄露使用 RAII 避免内存泄漏!析构函数:不要让异…

SpringBoot源码阅读3-启动原理

SpringBootApplication public class DistApplication {public static void main(String[] args) {// 启动入口SpringApplication.run()SpringApplication.run(DistApplication.class, args);} }1、服务构建 这里"服务"指的是SpringApplication对象,服务…

2024年港澳台联考考生成绩数据分析来啦

分数线 出炉 2024年的港澳台联考正式出分!根据考生成绩,全国联招划档线如下: 一、本科批次 (一)普通类院校(专业):文史类365分、理工类390分(部分院校执行高分线&#…

持续直击WCCI 2024:金耀初教授、台湾省台北分会等获殊荣 横滨夜景美不胜收

持续直击WCCI 2024:金耀初教授、台湾省台北分会等获殊荣!横滨夜景美不胜收! 会议之眼 快讯 会议介绍 IEEE WCCI(World Congress on Computational Intelligence)2024,即2024年IEEE世界计算智能大会&…