来源:网络,HashKey Capital 整理 但是要是将这些数据变成可用的数据,就是将这写数据变成可用的查询字段,比如 Blockheader 包含的字段,Block Body 包含的字段,智能合约的 Log 的字段等,交易的 Trsaction 字段等,不同字段对应着不同类型。 Dune Analytics 提供的以太坊可查询数据字段 Log 是非常重要的数据,因为以太坊的智能合约运行在 EVM 中,与外界隔离,EVM 发生的事件就是通过 Log 传输到外面并记录在区块链上。实际上,像 Etherscan 这样的浏览器就是用过 Parity 客户端回放 EVM,拿到智能合约交易的记录(内部交易)。 许多区块链的结构也可以存储非交易数据,但是容量有限。比如比特币的 output 中的 OP_RETURN 字段就可以存储不超过 40 字节的数据。限制的原因在于放大增加这部分会影响区块链的性能。以太坊的区块头也有 Extra 字段可以用来写入数据,如这样的: 来源:https://etherscan.io/block/12912176 区块链并不合适进行文件的存储,以 IPFS 作为存储底层和区块链结合的方式是比较认可的,比如数据储存在 IPFS 中,但是数据的 Hash 值存在以太坊的状态数据库中。 缓存除了上链的交易外,以太坊还有一个保存在缓存中的数据,即 mempool 里面的排队数据。各个节点提交的交易都会被放入 mempool 交易池中,经过序列化、交易验证、过滤等步骤,最终选择合适的交易被矿工打包。交易池中有 Queue 和 Pending 两个 map,用来存储未验证交易和已验证交易。Queue 和 Pending 清理结束后,根据不同节点提交的交易,交易池要进行重构(由于分布式的原因),防止出现分叉。 以前交易池的数据没有那么重要,但是随着智能合约的交易占比提升,交易的排序有了更多的经济意义,所以已经有项目开始做类似的工作。
访问如何访问以太坊上的数据呢?一般是两种方式 : 远程访问以太坊的节点 使用 web3 或者是 JSON-RPC 的方式。JSON-RPC 是无状态的轻量级跨语言远程调用协议,文本传输的数据是 JSON 格式,传入和传回都是 JSON 格式。使用 JSON-PRC, 客户端发送 PRC 请求,就可以直接通过以太坊客户端,传回相应数据,比如使用对应字段,eth_gasPrice, eth_blocknumber 等。 (责任编辑:admin) |