对于区块链,所有的数据都是开放的,但不是每个人都能写代码去查看链上的交易,大多数人会通过一个公开的窗口来查看数据。这个公开的窗口就是区块链浏览器。区块链上的数据会持续增加,对于数据的持久化和查询是浏览器的关键。本文会说明一种区块链浏览器的设计思路。
1. 系统设计当一笔交易上链之后,就会存储到链上的账本中,但是账本中的数据无法直接展示。所以需要对这些账本数据进行解析,并存储,然后再从不同的维度去做对数据进行展示。系统本身并不会很复杂
2、基本区块链浏览器的产品设计要则:原始数据、衍生数据、链核心指标区块链浏览器首先需要摸清你所设计的区块链想要解决的问题,找到能够衡量区块链的核心指标。
3、区块链浏览器的产品架构为:chain - block - Tx - contract - address,依据该产品架构,我们可以获得在链上的原始数据。区块链浏览器在展示原始数据的同时,也必须找到这些数据能够衍生的其他数据,并根据自身建构的核心数据指标向用户有层次地展示。综上所述,一个基本区块链浏览的本质是是根据链核心指标,合理地向各类用户展示原生数据与衍生数据。
什么是Erc20?
在真正的交易结构中,我们是无法发现任何的地址信息、交易费用信息等。这里需要我们对交易有更加深入的理解。在浏览器的开发中,我们不能够将交易数据直接展示给用户,我们是需要对某些数据进行加工的。譬如:地址:在比特币网络中,一般都会遵循 私钥 - 公钥 - 地址 这样简单的推导过程,而在交易的数据结构中往往只需要使用到公钥即可。随意地展示公钥并不合理(也有人称:当时中本聪认为展示公钥可能导致私钥被破解,在量子计算的情况下)。目前的情况下,地址已经成为了区块链的必备条件。ContractInfoContractInfo 属于另一种交易,ContractInfo 主要代表了智能合约的各类信息展示。伴随着以太坊等图灵完备的区块链平台出现,智能合约的信息展示越来越重要。咱们已 token 为例来展示智能合约页面的各类问题。token 往往以 ERC20 协议的标准发布,ERC 20 协议的伪代码如下:
function name() public view returns (string)
function symbol() public view returns (string)
function decimals() public view returns (uint8)
function totalSupply() public view returns (uint256)
function balanceOf(address _owner) public view returns (uint256 balance)
function transfer(address _to, uint256 _value) public returns (bool success)
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
function approve(address _spender, uint256 _value) public returns (bool success)
function allowance(address _owner, address _spender) public view returns (uint256 remaining)
event Transfer(address indexed _from, address indexed _to, uint256 _value)
event Approval(address indexed _owner, address indexed _spender, uint256 _value)
留言
發佈留言