区块链的组织结构,区块,账户,交易,节点和矿池等

发布于 2025年9月24日
0 次浏览
40 分钟阅读

三. 区块链的组织结构,区块,账户,交易,节点和矿池等

1. 区块的组织结构

区块链由一个一个的区块组成,区块里面有区块头和区块体, 英文 block header 和 block body

图片描述图片描述

(1). 区块头
  • Hash
  • PrevHash
  • Nonce
  • Diffculty
  • ...
(1.1) 使用 RPC 接口查看以太坊区块头信息
  • Request
curl --location 'https://eth-holesky.g.alchemy.com/v2/z6tD5j7LUK6goAKXptpdYHCvrk9cwVth' \
--header 'Content-Type: application/json' \
--header 'Cookie: _cfuvid=zWR7HY.ZrBmM3bMmOizS3ef0PJiKfOLtoQY6cqPsap0-1758684370492-0.0.1.1-604800000' \
--data '{
    "jsonrpc":"2.0",
    "method":"eth_getBlockByNumber",
    "params":["0x161ee", false],
    "id":83
}'
  • Reponse
{
    "jsonrpc": "2.0",
    "id": 83,
    "result": {
        "hash": "0x2475e729ed87aa0ab7808344b50075dd69377d072e9400a2b548ef57ee34f4fc",
        "parentHash": "0x82f738bf72d4e01c86ccb00ec694c7b0dff49c0338c28e36b892b4202df0c2c4",
        "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
        "miner": "0x670b24610df99b1685aeac0dfd5307b92e0cf4d7",
        "stateRoot": "0xd14fae37cf308a961dd2cc96550ab7efd660f01ff25d194786c4683b120bd24d",
        "transactionsRoot": "0x0fe11afc437a004233bc24548489912e5da758f59ccbde5ef788fa0c255391a0",
        "receiptsRoot": "0x9d852eb4b9bf2b4e89248b9438398a2174e69d0f9342d6f753e559f4dc455e69",
        "logsBloom": "0x10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000",
        "difficulty": "0x0",
        "number": "0x161ee",
        "gasLimit": "0x1c9c380",
        "gasUsed": "0xc5ca",
        "timestamp": "0x6527bfa4",
        "extraData": "0x4e65746865726d696e64",
        "mixHash": "0x723b7f810a1b2d627f13ef6480e171e9c9091161ad6e303837e7e008ad643ff0",
        "nonce": "0x0000000000000000",
        "baseFeePerGas": "0x7",
        "withdrawalsRoot": "0x90a8ac565f4028f2c6dfd947b349f7b7aef896717150c2f31118a4dae150e8e0",
        "size": "0x66c",
        "uncles": [],
        "transactions": [
            "0x1b242bf76c4d6837db8cdd29f58a2afd23fb75738fbfd62cb8c5daaf627872cd"
        ],
        "withdrawals": [
    
        ]
    }
}
(1.2) 使用 RPC 接口查看比特币区块头信息
  • Request

    curl --location 'https://go.getblock.io/487797fdc3664a3cade5cbe5813ddcc7' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic b2JqZWN0aXZlLWNvbGRlbjpwbGFuay1zY29yZWQtbHlpbmctZHV0eS1sYXppbHktc211ZGdl' \
    --data '{
      "jsonrpc": "1.0",
      "id": "someid",
      "method": "getblock",
      "params": ["00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09"]
    }'
  • Response

    {
        "result": {
            "hash": "00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09",
            "confirmations": 915124,
            "height": 1000,
            "version": 1,
            "versionHex": "00000001",
            "merkleroot": "fe28050b93faea61fa88c4c630f0e1f0a1c24d0082dd0e10d369e13212128f33",
            "time": 1232346882,
            "mediantime": 1232344831,
            "nonce": 2595206198,
            "bits": "1d00ffff",
            "target": "00000000000000000001fa380000000000000000000000000000000000000000",
            "difficulty": 1,
            "chainwork": "000000000000000000000000000000000000000000000000000003e903e903e9",
            "nTx": 1,
            "previousblockhash": "0000000008e647742775a230787d66fdf92c46a48c896bfbc85cdc8acc67e87d",
            "nextblockhash": "00000000a2887344f8db859e372e7e4bc26b23b9de340f725afbf2edb265b4c6",
            "strippedsize": 216,
            "size": 216,
            "weight": 864,
        },
        "error": null,
        "id": "someid"
    }
(2). 区块体
  • 交易列表, 以以太坊为例子

     "transactions": [
        {
            "type": "0x0",
            "chainId": "0x4268",
            "nonce": "0xdf",
            "gasPrice": "0x3b9aca00",
            "gas": "0x7a120",
            "to": "0x4242424242424242424242424242424242424242",
            "value": "0x1bc16d674ec800000",
            "input": "0x22895118000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001206989ffed8aed45fb7f34bda678e9d83392e48bff4466d5dce8ffc3a977b06e260000000000000000000000000000000000000000000000000000000000000030b1d6a21d2448dd9aae81bd98a0b1fa5f11b19990ef9f8545a08627b158f0fc00f183eeec5c051a674b14053bfddb805400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000036448086e6a5d7ea90b2d620a16798aa995e68a69113b8e4fc80c26cb6d9c0000000000000000000000000000000000000000000000000000000000000060a69c7f384e2e4ecc058541b29de16d970c4d13454d4fe407b529a5e5d3da3bfe9c173934d7d21bd9052f20d619e359cd10067978a23a9aa3ec616498edc5eb62d8d267ed9f612d6259ca98687b97aee85e44bc913b6ff13133d8e6620421d250",
            "r": "0xa9dcbbe4fb28b119c45fd1f1c1e2b57dfe84ae99b59cf20a814f50a086b7a246",
            "s": "0x7db2d37ded447f065500bb296a6ed35453491c8510b760420cd8013b609467e9",
            "v": "0x84f3",
            "hash": "0x1b242bf76c4d6837db8cdd29f58a2afd23fb75738fbfd62cb8c5daaf627872cd",
            "blockHash": "0x2475e729ed87aa0ab7808344b50075dd69377d072e9400a2b548ef57ee34f4fc",
            "blockNumber": "0x161ee",
            "transactionIndex": "0x0",
            "from": "0x548ca64e4b0aa42ea59adbdd84495a4a16c2a234"
        },
        {},
        {},
        {},
    ],
(3) 区块链浏览器

查询链上交互过程数据的应用,包括区块,交易,Gas, 地址标签, 统计数据,Token, NFT 等信息(后面介绍)

etherScan:https://etherscan.io/

2. 账户

​ 区块体里面是交易,交易又有转入转出的账户. 区块链账户就像一个银行账户,它是你在区块链网络中的身份标识和资产载体

  • 区块链里面的账户

账户(地址)账户(地址)

区块链账户的核心是地址,它通常由一个公钥通过数学计算派生(编码)而来。而能够控制这个账户的,是与之对应的私钥。谁拥有私钥,谁就拥有账户的绝对控制权。所以,“账户”的本质是公私钥密码学体系的一个表现层面。

3. 账户模型

“账户模型”指的是区块链用来追踪和记录用户资产状态的主要方式。主要有两种主流模型:

(1)账户余额模型(像使用“银行账户”)

核心思想: 网络直接维护一个全球状态,明确记录每个账户地址的当前余额。

如何交易

  • 你要支付 40 元给朋友。
  • 银行(区块链网络)直接从你的账户余额中减去40元,然后在朋友的账户余额中加上40元。
  • 结果
    • 你的账户余额变为 60 元。
    • 朋友的账户余额增加 40 元。
    • 没有“找零”的概念,因为余额是全局状态。

特点

  • 直观易懂:和我们日常使用的银行账户完全一样。
  • 需要Nonce(随机数):为了防止重放攻击(比如重复支付一次交易),每个账户都有一个交易计数器(Nonce)。每发起一笔交易,Nonce就加1,确保每笔交易唯一。
  • 天然支持复杂状态:非常适合智能合约。合约本身也是一个账户,可以有自己的余额和存储状态,便于管理持续的交互和数据。
  • 状态爆炸:所有账户的状态都需要全球节点共同维护,随着用户增多,状态数据会变得非常庞大。

代表:以太坊

(2)UTXO 模型(像使用“现金”)

核心思想: 网络不记录每个人的总余额,只记录一笔笔分散的、未被花费的“零钱”(即 UTXO)。

如何交易

  • 你要支付 40 元给朋友。
  • 你不能撕开50元的钞票。你必须拿出一张或多张钞票,其总面额 ≥ 40元(比如拿出那张50元)。
  • 你把这50元给朋友,朋友需要找你10元。
  • 结果
    • 旧的50元钞票被销毁(已花费)。
    • 产生两张新钞票:一张40元的给朋友(新的UTXO),一张10元的找零给你(新的UTXO)。

特点

  • 无账户概念:系统没有“账户A”和“账户B”的列表,只有遍布各地的UTXO。
  • 并行性好:因为不同的UTXO是独立的,处理它们互不干扰。
  • 隐私性相对高:通过找零机制可以创建新地址,增加追踪难度。
  • 难以支持复杂状态:对于需要持续存储状态的智能合约来说,这种模型比较笨拙。

代表:比特币

4. 交易, 节点和 矿池

(1)区块链里面的交易

传统交易:从某一个账户转账到某一个账户,这是一笔交易

区块链里面

  • 从某一个地址转账到某一个地址,这是一笔交易
  • 创建合约,也是一笔交易,不涉及转账
  • 我去 call 合约往区块链写入数据,也是一笔交易
  • 比特币矿工挖矿也是一笔交易
  • 我一次 call n 个合约也可能是一笔交易,内部调用交易
(2)节点

**validator 节点:**交易发到区块链网络,需要人来打包执行,打包执行交易的这些服务就叫节点,这种节点叫 validator 节点。validator 要么需要提供算力去挖矿,要么需要质押 token 参与出块。

**普通节点:**在我们一些 Dapp 或者钱包开发里面,需要同步链上数据和转发交易,这样节点叫做普通节点,不参与网络交易执行与验证,只是同步数据使用和转发交易到网络中。

(3)矿池:

有 validator 节点群组成的 n 个节点叫矿池,矿池专门执行打包交易的一揽子的节点群

(4)图解整个流程:

流程流程

最后更新: 2025年9月24日

评论区

发表评论

请先 登录 后再发表评论

请遵守相关法律法规,文明发言。评论将在审核后显示。

评论

还没有评论,来做第一个评论者吧!