区块链加载解析方法

news2024/10/5 18:31:55

一.区块链加载解析

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

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版本的prysm
 cd /		                #进入根目录
 mkdir eth	                #创建eth文件夹
 cd eth
 mkdir consensus
 mkdir execution
 cd consensus
 mkdir prysm && cd prysm
 curl  https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh 
 ./prysm.sh beacon-chain generate-auth-secret
# 安装ETH版本的geth
 cd /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.coloradmin.cn/o/1890117.html

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

相关文章

windows 屏幕录制录屏;gif工具推荐;滑动截屏

1、gif工具推荐gif123 参考:https://gif123.aardio.com/ 很小,很简洁 2、滑动截屏 参考:https://shipinzan.com/ll-gd-jp.html 通过google、edge浏览器 3、windows 屏幕录制录屏 1)WinG 2)笔记本 prtsc 按键 可以截图&…

ResNet50V2

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、ResNetV1和ResNetV2的区别 ResNetV2 和 ResNetV1 都是深度残差网络(ResNet)的变体,它们的主要区别在于残差块的设计和…

如何对低代码平台进行分类?

现在市面上的低代码平台就像雨后春笋一样冒出来,而且源源不绝,但总结下来,大致的也就以下三类。 一、 aPaaS多引擎类(有很多成熟引擎、做好东西要一起用) 这类产品包括:织信Informat(国内&…

多模态图像生成的突破:Image Anything一种无需训练的智能框架

多模态图像生成是内容创作领域的热点技术,尤其在媒体、艺术和元宇宙等领域。该技术旨在模拟人类的想象力,将视觉、文本和音频等多种模态属性相关联,以生成图像。早期的方法主要侧重于单一模态输入的图像生成,例如基于图像、文本或…

C++部分复习笔记下

7. C11 范围for 使用格式 vector<int> v { 1,2,3,4,5 }; for (auto e : v) {cout << e << " "; } cout << endl;底层原理&#xff0c;使用迭代器 vector<int> v { 1,2,3,4,5 }; auto it v.begin(); while (it ! v.end()) {cout…

项目2:API Hunter 细节回顾 -1

一. 接口调用 对于开发者来说&#xff0c;接口的调用应当是方便快捷的&#xff0c;而且出于安全考虑&#xff0c;通常会选择在后端调用第三方 API&#xff0c;避免在前端暴露诸如密码的敏感信息。 若采用 HTTP 调用方式&#xff1a; HttpClientRestTemplate第三方库&#xf…

kaggle量化赛金牌方案(第七名解决方案)(下)

— 无特征工程的神经网络模型&#xff08;得分 5.34X&#xff09; 比赛进入最后阶段&#xff0c;现在是时候深入了解一些关于神经网络模型的见解了。由于 Kaggle 讨论区的需求&#xff0c;我在这里分享两个神经网络模型。第一个是 LSTM 模型&#xff0c;第二个是卷积网络&…

PyPDF2指定范围拆分PDF文件为单个页面

本文目录 前言一、指定范围拆分PDF1、过程讲解2、拆分效果图3、完整代码二、其他问题1、更改页码索引值前言 上一篇文章讲解了怎么讲一个PDF文档分割为多个单页面PDF,本文来讲解一下进阶,就是指定范围拆分PDF页面,有的时候,我们只想把PDF文档中的某几页拆分出来,而不是全…

【论文解读】iSDF: Real-Time Neural Signed Distance Fields for Robot Perception

《iSDF: Real-Time Neural Signed Distance Fields for Robot Perception》提出了一种用于实时签名距离场&#xff08;SDF&#xff09;重建的持续学习系统。 论文&#xff1a;https://arxiv.org/abs/2204.02296https://arxiv.org/abs/2204.02296 项目&#xff1a;iSDFhttps:/…

QT创建地理信息shp文件编辑器shp_editor

空闲之余创建一个简单的矢量shp文件编辑器&#xff0c;加深对shp文件的理解。 一、启动程序 二、打开shp文件 三、显示shp文件的几何图形 四、双击右边表格中的feature&#xff0c;主窗体显示选中feature的各个节点。 五、鼠标在主窗体中选中feature的节点&#xff0c;按鼠标左…

【坚果识别】果实识别+图像识别系统+Python+计算机课设+人工智能课设+卷积算法

一、介绍 坚果识别系统&#xff0c;使用Python语言进行开发&#xff0c;通过TensorFlow搭建卷积神经网络算法模型&#xff0c;对10种坚果果实&#xff08;‘杏仁’, ‘巴西坚果’, ‘腰果’, ‘椰子’, ‘榛子’, ‘夏威夷果’, ‘山核桃’, ‘松子’, ‘开心果’, ‘核桃’&a…

Python爬虫实战案例——王者荣耀皮肤抓取

大家好&#xff0c;我是你们的老朋友——南枫&#xff0c;今天我们一起来学习一下该如何抓取大家经常玩的游戏——王者荣耀里面的所有英雄的皮肤。 老规矩&#xff0c;直接上代码&#xff1a; 导入我们需要使用到的&#xff0c;也是唯一用到的库&#xff1a; 我们要抓取皮肤其…

使用ref定义响应式数据变量

Ref 使用 Ref 可以方便地创建和管理Vue组件中的响应式数据。例如&#xff0c;如果你有一个计数器组件&#xff0c;你可以使用 Ref 来创建一个响应式的计数器变量&#xff0c;然后在组件内部或外部修改这个变量的值&#xff0c;而不需要手动触发视图更新。 先声明一个变量&…

数据结构初阶 堆的问题详解(三)

题目一 4.一棵完全二叉树的节点数位为531个&#xff0c;那么这棵树的高度为&#xff08; &#xff09; A 11 B 10 C 8 D 12 我们有最大的节点如下 假设最大高度为10 那么它的最多节点应该是有1023 假设最大高度为9 那么它的最多节点应该是 511 所以说这一题选B 题目二 …

昇思25天学习打卡营第11天|基于MindSpore通过GPT实现情感分类

学AI还能赢奖品&#xff1f;每天30分钟&#xff0c;25天打通AI任督二脉 (qq.com) 基于MindSpore通过GPT实现情感分类 %%capture captured_output # 实验环境已经预装了mindspore2.2.14&#xff0c;如需更换mindspore版本&#xff0c;可更改下面mindspore的版本号 !pip uninsta…

【深海王国】小学生都能玩的语音模块?ASRPRO打造你的第一个智能语音助手(4)

Hi~ (o^^o)♪, 各位深海王国的同志们&#xff0c;早上下午晚上凌晨好呀~ 辛勤工作的你今天也辛苦啦(/≧ω) 今天大都督继续为大家带来系列——小学生都能玩的语音模块&#xff0c;帮你一周内快速学会语音模块的使用方式&#xff0c;打造一个可用于智能家居、物联网领域的语音助…

01 Docker 概述

目录 1.Docker简介 2.传统虚拟机 vs 容器 3.Docker运行速度快的原因 4.Docker基本组成三要素 5.Docker 平台架构 入门版 架构版 1.Docker简介 Docker是基于Go语言实现的云开源项目。 Docker的主要目标是&#xff1a;Build, Ship and Run Any App, Anywhere&#xff0c…

抖音常用的视频剪辑软件有哪些,变速视频如何制作?

抖音是一款当下流行的短视频软件。很多人都想在上面发表自己的作品&#xff0c;但是也还有人因为不会剪辑&#xff0c;找不到合适的视频制作软件&#xff0c;一直没能行动。今天就为大家解答抖音常用的制作视频软件有哪些&#xff0c;如何调整抖音制作视频的速度。 希望大家看完…

AzureDataFactory 实体间的关联如何处理(Lookup)

使用ADF从外部数据源(例如Sql Server)往D365推数时&#xff0c;实体间的Lookup一定是要做的&#xff0c;本篇以我项目中的设备为例&#xff0c;设备表中有产品的lookup字段 设备表结构如下 msdyn_customerasset 表名ID 设备表guidSerialNumber设备序列号ProductCode设备对应的…

Hadoop3:NameNode和DataNode多目录配置(扩充磁盘的技术支持)

一、NameNode多目录 1、说明 NameNode多目录&#xff0c;需要在刚搭建Hadoop集群的时候&#xff0c;就配置好 因为&#xff0c;配置这个&#xff0c;需要格式化NameNode 所以&#xff0c;如果一开始没配置NameNode多目录&#xff0c;后面&#xff0c;就不要配置了。 2、配置…