前言
随着区块链技术的不断发展和应用落地,大众逐步加深了对区块链技术的认识。我们都知道,区块链具有可追溯、不可篡改等技术特点,那么链上的数据如何查询、溯源呢?这就是我们今天要分享的主角—区块链浏览器。
区块链浏览器:是链上数据可视化的主要窗口,是提供用户浏览与查询区块链所有信息的工具。借助这一窗口,如区块信息、交易信息、账户信息等重要的加密数据得以直观呈现。因此,区块链浏览器对于区块链使用者而言至关重要。以目前国外开源区块链项目以太坊为例,其社区开源浏览器Etherscan承载大量用户流量,是分析链上行为最便捷的工具。
本文将从区块链浏览器研发实操经验切入,与大家交流如何快速构建一个区块链浏览器。
浏览器可以呈现什么?
通过分析一些开源浏览器,我们总结出区块链浏览器展示的典型区块链信息如下几类:
-区块高度
-交易数
-交易趋势
-区块列表
-最近交易列表等
浏览器数据可以直接获取吗?
通常,区块链提供必要的链SDK信息,用以帮助开发者获取链上区块和交易数据,但是其提供的接口往往是基础性的,例如如何获取区块高度、获取某个区块详情、获取某个交易详情等,这些数据直接对应了页面上的区块列表、区块详情、交易详情等基础数据,无法直接通过链SDK获取浏览器所需的的全量信息。
奥地利计划将现金支付纳入宪法以反对施行数字欧元:金色财经报道,奥地利政府计划将现金使用权写入宪法,以解决反对党对数字货币的热议话题。维也纳政府成立了一个特别工作组,负责确定如何将实物货币支付作为一项宪法权利。这将确保商店继续接受现金,并保证所有居民都能使用自动取款机。
OGM研究机构6月份发布的一项调查显示,奥地利大约54%的人仍然使用银行卡支付杂货费用,而使用银行卡的比例为37%。极右翼自由党广泛开展反对现金限制的活动,这是其反对欧洲央行建立数字欧元举措的一部分。尽管旅游业是经济的主要组成部分,但许多奥地利餐馆和咖啡馆(大部分在首都以外)仍然不接受数字支付。[2023/8/4 16:19:05]
为此,一个好的区块浏览器是需要支持在本地进行链上数据的加工与处理。
首先,通过对不同区块链底层的区块和交易数据等进行监听,当链上产生新区块时,监听系统可通过链SDK第一时间获取该区块的信息;随后,系统将相关数据进行缓存入库,按需设计多种统计逻辑以完成数据的加工统计。因此,区块链浏览器页面上的数据并非直接通过链上SDK直接请求获取,而是源于本地的列表数据和统计数据。
较于通用的直接通过链SDK获取的模式,我们更需要的是一个通过本地缓存区块数据并且加工链上数据的方式来显著提升前端对区块链浏览器数据获取速度,但对于这一方案读者可能会产生两个质疑:
组件是定时获取链上SDK数据的,那就意味着本地数据与链上数据存在时差,这会影响使用体验么?
Jack Dorsey旗下支付公司Block计划构建比特币挖矿开发工具包:3月8日消息,Jack Dorsey旗下支付公司Block在官方博客上表示,其正在考虑构建比特币挖矿开发工具包或MDK,目前设想的MDK将包括:1.强大、可靠、工业级的比特币挖矿算力板;2.专为与算力板配合使用而设计的定制控制器板;3.开源固件、软件API和Web前端;3.丰富的参考资料和支持文档,方便算力板的轻松定制。Block将在接下来的几周和几个月内进一步更新其挖矿硬件计划。
文章表示:“MDK旨在是为开发人员提供一套工具,以帮助释放比特币挖矿硬件的创造力和创新。我们预计MDK对专注于将比特币挖矿集成到各种新用例(如加热解决方案、离网挖矿、家庭挖矿或间歇性电力应用)的开发项目非常有用,以及为传统商业挖矿操作优化比特币挖矿硬件。通过MDK,我们看到了增加比特币挖矿硬件的可访问性和开放性的重大机会,以加速该领域的创新。”[2023/3/8 12:48:43]
由于不是链上直接获取,那如何保障本地缓存内的数据真实有效性呢?
针对质疑一,显然这个时差主要源于本地定时获取链上数据的频率,因此通过控制频率范围在合理范围内,就可以实现极短的延时,基本不会影响用户使用浏览器的性能体验。而针对质疑二是本方案中研发设计人员需要重点关注并解决的。
如何保障数据真实有效?
实际上,为了确保数据浏览器数据的真实性,区块浏览器需要增加数据校验模块,即用户可以通过简单的接口调用与区块链进行交互,快速验证数据的真实性。例如,上述校验模块中接口主要包括如下功能:
美国加密货币监管法案的部分内容可能会在六个月内通过:金色财经报道,美国两位参议员Kirsten Gillibrand和Cynthia Lummis周五表示,在未来六个月内,一项全面的加密货币监管法案中的一部分可能会提交给总统拜登供其签署。Lummis说:“我认为从现在起的六个月内,我们将看到至少它的一部分会出现在总统的办公桌上。”
Gillibrand说,该法案的一个部分将赋予美国商品期货交易委员会(CFTC)对被视为商品的数字资产的监管权力,该部分已“准备好”向前推进。
Gillibrand补充说,她预计数字资产的监管框架将在两党的广泛支持下在参议院通过。(The Block)[2022/10/15 14:28:21]
??区块证明:用于证明特定区块是否在区块链的账本数据中存在;
??交易证明:用于证明特定交易或者交易执行结果是否在区块链账本数据中存在;
??账户证明:用于证明特定账户数据是否在区块链账本数据中存在;
因此通过上述分解,我们可以将整个浏览器的数据获取、加工、校验的流程理解如下:
区块链浏览器设计实操
前面已初步介绍了区块链浏览器的设计思路以及整体运作流程。下面我们以趣链BaaS区块链浏览器为例,详细介绍该区块浏览器的具体设计,如何实现不同区块链的区块及交易数据采集和存储。如下所示,整个自研浏览器组件整体架构如下:
自研浏览器组件架构图
对冲基金Winton Group正在招聘加密货币量化研究员:9月7日消息,总部位于伦敦的对冲基金Winton Group在LinkedIn上发布的招聘页面显示,其正在招聘一名加密货币量化研究员,以“支持公司的加密货币系统交易策略的发展”。这或暗示它将加入其他重量级投资者的行列,希望在快速增长的数字资产市场中站稳脚跟。据悉,Winton Group由亿万富翁量化投资者David Harding于2007年成立。[2022/9/7 13:14:28]
为便于大家理解,我们首先对架构图中的各模块功能进行简单描述:
???数据公共处理层:负责数据存储优化等功能,将在下一篇推文中着重介绍相关的功能设计;
???采集适配层:负责不同区块链数据的采集适配;
???定时服务:负责定时触发采集和统计逻辑,采集器主要通过趣链BaaS的自研链驱动功能实现与不同的区块链底层进行交互并且获取最新的区块和交易数据。其中:
???■采集模块:负责定时主动触发采集逻辑,包括数据处理等功能;
????■统计模块:
??????1)统计模块也是定时服务,定时判断是否有新数据入库;
??????2)若产生新数据则会触发统计逻辑,如区块数、交易数、合约数、合约调用数等指标统计;
??????3)统计数据将直接入库或者更新已有数据;
现在有了这些介绍,我们就可以将目光聚焦在趣链自研浏览器组件是如何在一个服务里面获取不同区块链的数据。首先,我们对其设计了一个抽象采集层,在具体调用时只需传入趣链BaaS自研的链驱动即可。
5月份OpenSea交易量近26亿美元,环比下降25%:6月5日消息,Dune Analytics数据显示,5 月份OpenSea基于以太坊上的交易量为25.96亿美元,较四月份(34.88亿美元)下降约25%,月活用户数为 42.23万,与1月份月活用户数(47.52万)相比下降约11%。[2022/6/5 4:03:19]
例如,以下示例展示了如何获取最新区块接口:
//?Collector?collector?definitiontype?Collector?interface?{??//?GetLatestBlock?获取最新的区块??GetLatestBlock()?(*Block,?error。
随后,通过如何实现趣链区块链平台的区块数据采集代码来实际演示如何运作,
*自建项目`hpc`,创建目录
*进入hpc目录
cd?hpcgo?mod?init?hpctouch?main.go
*成功目录结构如下
.├──?go.mod└──?main.go
*go.mod引入依赖
module?hpc?go?1.17?require?(????git.hyperchain.cn/blocface/chainsdk?v0.0.1)
*main.go编辑,可关注代码注释的补充描述:首先,将自定义实现接口Collector的对象注册进执行器,引入采集器执行器,执行即可;
*注意:若链上没有区块,此方法返回&bs.Block{},nil,各种不同的区块链可通过自定义实现方式来达到采集效果;
package?main?import?(????bs?"git.hyperchain.cn/blocface/chainsdk/pkg/collect/base"??????"git.hyperchain.cn/blocface/chainsdk/pkg/collect/collectinter")?func?main()?{????err?:=?collectinter.Register(mockImp{})????if?err?!=?nil?{????????panic(err)????}????collectinter.Execute(。?type?mockImp?struct?{}??func?(m?mockImp)?GetLatestBlock()?(*bs.Block,?error)?{????panic("自定义实现获取最新区块"。
*工具包中提供信息对象,如提供节点或者链的相关信息
type?Base?struct?{????node?string?????Node?struct?{????????Name?????????????string?????????Type?????????????string?????????Host?????????????string????????Ports????????????string?????????UniqueName???????string?????}??????????????????????????Channel????????string??}
*编译打包(平台GOOS=linux架构GOARCH=amd64)
??GOOS=linux?GOARCH=amd64?go?build?-ldflags="-w?-s"?-gcflags="all=-N?-l"?-o?hpc?.
通过上述步骤,我们实现了趣链区块链平台的区块数据采集,随后,我们只需在趣链自研浏览器组件中调用引入相关的客户端包,根据驱动二进制的路径新建客户端即可。
//NewChainClientnewchainclientfuncNewChainClient(tool,channel,cfgRootPathstring,nodebase.Node,opts...ClientOpt)(*ChainClient,error){?abs,err:=filepath.Abs(tool)?iferr!=nil{??returnnil,errors.Wrap(err,"getabsolutepath")?}?marshal,err:=json.Marshal(node)?iferr!=nil{??returnnil,errors.Wrap(err,"marshalnode")?}?c:=&ChainClient{??tool:?????abs,??node:?????string(marshal),??channel:????channel,??configRootPath:cfgRootPath,??timeout:????10*time.Second,?}?for_,opt:=rangeopts{??opt(c)?}?returnc,nil}
调用逻辑获取最新区块示例
func?(c?ChainClient)?GetLatestBlock()?(*base.Block,?error)?{??command?:=?fmt.Sprintf("%s?-p?'%s'??-m?GetLatestBlock?",?c.tool,?c.configRootPath)??out,?err?:=?util.NewDefaultCMD(command,?string{},?util.WithTimeout(int(c.timeout.Seconds())),?util.WithForceKill(true),?util.WithErrPrint(false)).Run()??if?err?!=?nil?{????return?nil,?errors.Wrap(err,?"call?GetLatestBlock")??}??out?=?strings.TrimSuffix(out,?"n")??var?b?=?base.Block{}??err?=?deocde(byte(out),?&b)??if?err?!=?nil?{????return?nil,?errors.Wrapf(err,?"decode?resp?",?out)??}??return?&b,?nil}
以下是趣链BaaS的区块链浏览器前端页面,只需调取内部接口就可以直接从数据库中获取所需的信息,我们从区块、交易、合约、账户等多个维度为用户提供直观的链上数据呈现,便于用户更好的洞悉链上业务运行全貌。
总结
趣链自研浏览器组件通过上述模式实现无差异化的调用逻辑,达到对不同区块链底层数据的统一支持,并充分预留了新区块链底层的灵活扩展性。通过上述核心功能模块设计,基本实现了区块链浏览器的最小化产品MVP。
当然,实际在搭建区块链浏览器时,还有很多挑战,最典型的挑战之一就是如何应对大数据量,相信细心的读者已经看到前面的架构介绍中提到了数据公共处理层,这一模块主要就是进行数据存储相关的优化,保证数据存储不会随时间的增加而不断增加,充分减轻服务器存储部分的压力,我们将在后续推文中着重介绍~
来源:金色财经
标签:区块链LOCBLOBLOC区块链dapp开发教程SealBlock TokenBlockNoteXSolidblock
稳定币市场目前占1.07万亿美元加密市场总额的14.2%。然而,整个稳定币市场的90%($1409亿)由3个法币支持的中心化项目主导:USDT、USDC和BUSD.
1900/1/1 0:00:00稳定币USDT发行商Tether宣布和全世界第五大会计师事务所BDO?进行合作,未来会负责审计该公司的储备金保证与证明报告。该公司并且预告其未来的审计报告将会从每季一次改变成每月发布.
1900/1/1 0:00:00模块化链代表着更合理的多链结构趋势。原文标题:《链的解构主义:9大模块化链解读》撰文:BreezeTL;DR相比于以太坊背负着沉重的历史数据包袱,模块化链代表着更合理的多链结构趋势.
1900/1/1 0:00:00自2022年年初以来,加密市场始终笼罩在熊市的阴影之下,时至今日,几乎可以说是全面落入冰点。回顾2021年的加密市场,则是一片渐行渐远的繁荣景象.
1900/1/1 0:00:00这篇文章站在一个VC的视角,尽量用明白话向大家讲解一下最近一年各个赛道发生的变化。近期的主旋律用几个词语来概括可能就是:合规合规合规,降低使用门槛吸引圈外用户,ZK,衍生品,游戏,新公链,DID.
1900/1/1 0:00:00橡树资本:对公司\"拟折价收购硅谷银行资产\"消息不予置评:金色财经报道,日前消息称橡树资本等对冲基金拟折价收购硅谷银行资产。对此,橡树资本北京时间3月13日晚间回应记者,“不予置评”.
1900/1/1 0:00:00