区块链的组织结构,区块,账户,交易,节点和矿池等
三. 区块链的组织结构,区块,账户,交易,节点和矿池等
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)图解整个流程:
流程
评论区
发表评论
请先 登录 后再发表评论
评论
还没有评论,来做第一个评论者吧!